初心者でもできる！JSON Schemaを使った簡単データ検証

## はじめに
Webアプリの開発中に、よく[JSON Schema](http://apidog.com/jp/blog/what-is-json-schema/)の検証を行う必要があります。JSONデータを目で一々検証するのに時間がかかりますので、より効率的な対策がありますか？本文では、JSON Schema検証の基本情報を詳しく紹介した上、自動的で効率的にJSON Schemaのバリデーションを行う方法を皆さんに紹介します。

:::note info
もし、APIやアプリケーションを開発しており、強力なAPIツールとのシームレスな統合が必要であれば、ぜひ無料でApidogをお試しください！[Apidog](http://www.apidog.com/jp/?utm_source=opr&utm_medium=a2takuya)は、洗練されたユーザーインターフェースの構築に集中しながら、APIのスムーズな連携を実現するための理想的なツールです。
:::

## JSON Schemaの検証とは
JSON schema検証とは、JSONデータの構造や内容を定義したJSON schemaに対して、実際のJSONデータがその定義に沿っているかを検証することです。

JSON schemaはJSONデータの形式を定義するための仕様です。JSON schemaにはデータ型や必須項目、値の範囲などを指定でき、これに基づいてJSONデータの validation(検証) を行うことができます。

http://apidog.com/jp/blog/what-is-json-and-how-differ-with-json-schema/

### JSON Schema検証はなぜか必要？
Webアプリ開発の中、JSON schemaによる検証を必要とする場面が様々あります。次は、JSONデータの検証、いわゆるバリデーションを行う主な理由を紹介します。

**1.入力データの妥当性を保証するため**

外部から入力されるJSONデータには、想定外の形式や値が含まれている可能性があります。これを検証せずに処理を進めると、エラーが発生する原因となります。検証によりデータの整合性を確認できます。

**2.データ仕様のドキュメントとして機能するため**

JSON schemaはJSONデータの構造を定義しています。これはデータ仕様書としても機能します。Schemaがあればデータの意味が明確になり、ドキュメント作成の手間が省けます。

**3.コード中のバリデーションロジックを省くため**

検証ロジックをアプリケーションコードに埋め込むと、複雑で読みにくいコードになります。JSON schemaを使えばこれを避けられます。

**4.信頼性と安全性を高めるため**

妥当なデータ型や値の範囲をSchemaで定義して検証することは、予期せぬエラーを抑制しアプリケーションの信頼性を高めます。また、データの整合性が保証されセキュリティも向上します。

このように、JSONデータを適切に処理するには検証は必須と言えます。JSON schema検証は、受け取ったJSONが適切かvalidatorによって検証することで、予期せぬデータエラーを未然に防ぐことができます。Web APIなどでJSONを入出力する場合に利用されることが多いです。

## APIとJSON Schema検証
APIでは入力と出力をJSON形式で定義するのが一般的ですが、JSON Schemaを使うことでその入出力データ構造を明確に定義できます。クライアントはこのSchemaに沿ったデータをAPIに送信する必要があり、サーバーもリクエストを受け取った際にSchemaに対して検証を行い、データが適切かどうかをチェックします。同様にレスポンスもSchemaでフォーマットを定義して整合性を担保できます。

ということで、JSON Schemaによる定義と検証は[API設計](http://apidog.com/jp/blog/what-is-json-schema/)において重要な機能となり、APIの信頼性と安全性を高めるのに役立ちます。

### APIでJSON Schema検証のメリット
APIできちんとJSON Schemaの検証を行うと、たくさんのメリットもあると考えられています。具体的な利点は以下のようなことがあげられます。

- クライアントが送信可能なデータ形式が明確になる
- サーバー側のバリデーションコードが省略でき、処理がシンプルになる
- ドキュメントから自動的に検証コードが生成できる
- データ仕様の変更がSchemaだけの修正で済む
- 入力データのエラーチェックが可能になる

それでは、JSON Schema検証を行うために、どうしたらいいですか？次は、一番使いやすいツールを使って、JSON Schemaのバリデーションを自動的に行える方法を皆さんに紹介します。

## Apidog：JSON Schemaの検証を自動的に行う
JSON Schemaの最も一般的な利用シーンは、APIの入出力データの定義と検証です。REST APIやWeb APIなどJSONベースのAPIが主流となっている今、JSON Schemaによる入出力の定義は開発効率と信頼性を高める上で非常に有用な手法と言えます。

そこで、APIでJSON Schemaのバリデーションは、APIの正確性と可用性を保証する効果的な手段だと思います。[Apidog](http://www.apidog.com/jp/?utm_source=opr&utm_medium=a2takuya)では、JSON Schemaを活用して、APIリクエストとレスポンスを定義したりすることもできますし、サーバーから返されたデータに対して自動的にJSON Schema検証を行うこともできますので、開発者にとって非常に重宝なツールになるのでしょう。

**ステップ⒈** Apidogでは、Json Schemaを繰り返して利用することができますので、それをレスポンスの定義で利用することもできますし、APIリクエストを送信する時にも利用できます。

![apidog-validation-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3877124/bed3fc82-1614-082e-6894-d08c955b2f3f.png)

**ステップ⒉** Apidogでリクエストを送信して、サーバーからレスポンスを取得できた場合、取得したデータを事前定義されたJson Schema構造に一致しているかを自動的に検証します。この機能を利用するには、「Responseを検証する」をスイッチオンしてください。この機能を有効にすると、レスポンスのデータがJson Schemaの定義に一致しない場合は、エラーメッセージが表示されます。

![apidog-validation-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3877124/aeedccae-7813-989a-1772-25f12f60943e.png)

## 終わりに
この記事では、Webアプリ開発においてJSON Schemaの検証が重要である理由について説明しています。JSON Schemaによる検証は入力データの妥当性確保、データ仕様のドキュメント化、コードの簡素化、アプリの信頼性向上などの目的で非常に必要なことになり、APIではJSON Schemaで入出力データ構造を定義し、クライアント/サーバーがそれに沿って検証することでメリットが得られます。

また、[Apidog](http://www.apidog.com/jp/?utm_source=opr&utm_medium=a2takuya)というツールを使えば、JSON Schemaに基づいてAPIのリクエスト/レスポンスを定義し、レスポンスデータの自動検証が可能になるので、Apidogのようなツールを活用することでJSON Schemaの検証を効率的に実現することができます。

**最後まで読んでくださり、ありがとうございました！
この記事を読んで少しでも理解を深めていただければ幸いです！**