使い方
「変更前(古い定義)」に古い SDL、「変更後(新しい定義)」に新しい SDL を貼るか、「ファイルを開く」で schema.graphql を読み込みます。「サンプルで試す」でも確かめられます。
1 つだけ確かめたいときは「スキーマを確認」を押します(左の欄を読みます)。2 つを比べるときは「差分を調べる」を押します(Ctrl または ⌘ + Enter も使えます)。
確認では、型の一覧・入口から辿れる型の木・行番号つきの指摘が出ます。差分では、破壊的変更の候補と安全な変更の件数と一覧が出ます。
「Markdown をコピー」で PR の説明に貼れる表にできます。「JSON を保存」では、判定・件数・変更の一覧を保存します。
できること
型の一覧と入口からの木
type・interface・union・enum・input・scalar・schema・extend を読み、Query・Mutation・Subscription から辿れる型を木で示します。
行番号つきの指摘
未定義の型、名前の重複、interface のフィールドの実装漏れ、空の enum、input に出力用の型を使った箇所などを、行番号つきで出します。
破壊的変更の候補を分ける
フィールド・型の削除、引数の必須化、nullable から non-null への変更、enum 値の削除などを候補として示し、追加などの安全な変更と分けます。
判定の理由を各行に
どの規則でその区分にしたかを行ごとに書きます。規則の一覧も画面で読めるので、レビューの根拠にできます。
ブラウザの中だけで処理
SDL は送信せず、ブラウザの中だけで解析します。URL からスキーマを取りに行くことはしません。
こんなときに
- GraphQL の schema.graphql を PR に出す前に、既存のクライアントを壊す変更がないかを確かめたい
- 未定義の型や名前の重複を、コードを動かす前に行番号つきで見つけたい
- 入口(Query・Mutation)から辿れる型を一覧して、スキーマの全体像をつかみたい
- 社内の GraphQL スキーマを外部に送らずに、旧新の差を調べたい
対応形式
入力
出力
対応状況
| 機能 | 対応 | 補足 |
|---|---|---|
| SDL の読み込み(type・interface・union・enum・input・scalar・schema・extend) | 対応 | — |
| フィールド・引数・型(! と [ ])・description("..." と """...""")・@deprecated | 対応 | — |
| 入口(Query・Mutation・Subscription)から辿れる型の木 | 対応 | — |
| 指摘: 未定義の型・名前の重複・interface の実装漏れ・空の enum・input に出力型 | 対応 | 仕様の全項目を検証するわけではありません。読んだ範囲の指摘です |
| 旧新の比較と、破壊的変更の候補・安全な変更の区分 | 対応 | 候補です。API ごとの方針や利用状況は分からないため、一般的な規則で示します |
| 解析できない構文 | 一部対応 | 読めない行は行番号で示し、その定義は読み飛ばします。読めた部分だけで判定します |
| ディレクティブの定義の差分 | 非対応 | 比べません |
| introspection の結果(JSON)から SDL への変換 | 非対応 | 対応していません。SDL を貼ってください |
| クエリの実行・検証、サーバーへの接続 | 非対応 | 通信しません |
| 別ファイル・URL からの import や取得 | 非対応 | 取得せず、読めない参照として扱います |
| 判定の規則を変える設定 | 非対応 | 規則は画面で読めますが、区分を変える設定はありません |
| オフラインでの利用 | 対応 | 一度開いたあとは通信なしで動作します |
制限・注意事項
- 1 つの SDL は 30 万文字まで。ファイルは 1 MB まで読み込みます。
- 型の木は深さ 12 段・2,000 件まで。超えた部分は省略して示します。
- 指摘と変更の一覧は、件数を全件数えたうえで画面に出します。
- 判定は一般的な規則によるもので、API ごとの方針によって変わります。
プライバシーと安全性
SDL はお使いのブラウザの中だけで解析し、送信も保存もしません。ページを閉じると内容は消えます。analytics には、入力の中身や件数を含まない実行の記録だけを送ります。
よくある質問
GraphQL の破壊的変更とは何ですか?
introspection の結果(JSON)は貼れますか?
スキーマの定義が正しいかを完全に検証できますか?
REST の OpenAPI の差分とどう使い分けますか?
SDL はどこから書き出せばよいですか?
関連ツール
OpenAPI ビューア・検証(OpenAPI Studio)
OpenAPI 3.0 / 3.1・Swagger 2.0 の定義を貼り付けるだけで、タグ別のエンドポイント一覧とスキーマのツリーを表示し、公式スキーマと照らして誤りを行・列つきで示します。API の呼び出しや外部ファイルの取得はせず、定義は端末の外へ送信しません。
JSON→型・Schema生成(Schema Codegen)
JSON のサンプル・JSON Schema・OpenAPI を貼ると、10 種類の形式の型定義を生成します。複数のサンプルを並べると、省略されるキーや型の違いも推論します。データは端末の外へ送信しません。
JSON 整形・検証(JSON Studio)
JSON を貼り付けるだけで整形・1 行化・構文チェック。エラーは「何行目の何が悪いか」まで表示し、コメントや末尾カンマは自動修復できます。データは端末の外へ送信しません。
AsyncAPI 確認・イベント API 差分チェック
AsyncAPI の YAML・JSON を貼るだけで、サーバー・チャンネル・操作・メッセージの一覧と、解決できない $ref や使われていない components の指摘を行番号つきで出します。旧と新を比べると、チャンネルや操作の削除、payload の項目の削除や必須化などの候補を示します。定義はブラウザの外へ送りません。
proto ファイル確認・protobuf 互換性チェック
.proto の内容を貼るだけで、メッセージ・フィールドの番号・型・ラベル・enum・rpc の一覧と、番号の重複や範囲外などの指摘を行番号つきで出します。旧と新の 2 つを比べると、フィールド番号の変更や型の変更など、互換性を壊すおそれのある変更を、注意や安全な変更と分けて示します。定義はブラウザの外へ送りません。
テキスト・コード Diff
変更前と変更後を貼り付けるかファイルをドロップするだけで、追加・削除された行と、行の中で変わった単語まで色分けして表示します。結果は unified 形式のパッチとしてコピー・保存でき、入力はブラウザの外へ出ません。
最終更新: