Skip to content
Latchkey

JSON Schemaとは? JSONの検証の解説

JSON Schemaは、JSONドキュメントの許可される構造を記述して自動的に検証できるようにするための語彙です。

JSON Schemaは、他のJSONを記述するJSONです。どのフィールドが必須か、どの型でなければならないか、どの値が許可されるかを宣言でき、validatorがドキュメントをルールに対してチェックできます。YAMLはJSONのsupersetなので、同じschemaがworkflowファイルで得られるエディタの補完と検証を支えています。

JSON Schemaとは

JSON Schema自体が、制約を定義するJSONドキュメントです: 必須プロパティ、許可される型、値の範囲、列挙、ネストしたオブジェクトの形。validatorにschemaとドキュメントを渡すと、ドキュメントが適合しているか、そしてどこで適合していないかを正確に教えてくれます。

schemaが重要な理由

schemaは"この設定は正しいと思う"を、機械が検証可能な保証に変えます。ツールがファイルを使おうとする前に、フィールド名のタイプミス、欠落した必須値、間違った型を捕まえます。また、期待される形を正確で実行可能な形で文書化します。

エディタの補完と検証

エディタはJSON Schemaを使って補完とインラインのエラー波線を支えます。エディタがGitHub Actionsのworkflowやpackage.jsonの有効なキーを知っている理由は、公開されたschemaがそれらのファイルを記述しており、エディタが入力中に検証しているからです。

CIにおけるJSON Schema

CIでは、実際の作業をする前に設定ファイルをそのschemaに対してチェックする検証stepを追加できます - 不正なworkflow、マニフェスト、アプリ設定で早期に失敗させます。これは、悪い設定がすり抜けて後の遅いstageを壊すことに対する安価な保険です。

Schema validation as a CI gate
# Validate a config file against a schema in CI
steps:
  - run: npm install -g ajv-cli
  - run: ajv validate -s schema.json -d config.json

Latchkeyについての注記

schema検証のstepは単なるCLIの実行であり、小さなnpmやpipのパッケージを取得します。Latchkeyではこれらの依存関係が実行間でcacheされるため、高速な"設定を検証する"ゲートはpushのたびに高速なままです。

重要なポイント

  • JSON Schemaはドキュメントの必須の構造、型、許可される値を記述するJSONです。
  • workflowやpackage.jsonのようなファイルのエディタ補完と検証を支えます。
  • CIのschema検証stepは、遅いstageが動く前に、不正な設定を早期に捕まえます。

関連ガイド