JSON Schemaの意味や書き方を理解してバリテーションをかけよう!

みなさんこんにちは!今日はJSON Schemaについて話していこうと思います!

JSON Schemaとは何か?

みなさん、そもそもJSON Schemaが何か、どういうものかということは知っていますか?JSON Schemaとは名前の通りJSON形式で書かれたSchemaのことです。

Schemaとはデータベースを扱うときによく出てくる単語ですが、簡単に言えば文書をある構造の元、定義したもののことです。Railsであれば、schema.rbに決まった構造でDBの内容を書いてあげれば読み込むことでDBを再現できます。

JSON SchemaにはJSON Hyper-SchemaとJSON Schema2つ種類があるので次項で紹介していきます。また、公式ドキュメントはこちらです。

JSON Schemaの特徴

公式ページをみてみると、JSON Schemaの特徴は、

  • 既存のデータを読み取ってくれる
  • 全てJSONで記述
  • 人間と機械が読みやすい
  • 送信するデータや、自動テストでのバリテーションが便利

とありますね。タイトルにもありますが、バリテーションとは入力内容にミスが無いかどうかチェックする行為のことを指します。

JSON Hyper-Schemaの特徴

JSON Hyper-Schemaと特徴は、

  • インスタンスデータとURI Templatesが共用できる
  • JSONスキーマからクライアントデータが記述できる

などですね。ここらへんについては詳しく理解する必要はありませんが、JSON Schemaを使うときは使うことによってどのようなメリットがあるのかを考えるようにしましょう。

JSON Schemaのメリット・デメリット

ここで、JSON Schemaのメリットとデメリットをまとめてみます。まずメリットですが、

  • バリテーションをかけることができる
  • テストを自動化できる
  • テスト用のサーバとして使える
  • APIドキュメントを作成できる

デメリットは、

  • JSONを書くのがだるい

といったところでしょうか。JSONをそのまま書くのは、ミスにつながり消耗するので、ymlで書いたものを変換するという方法が一般的です。

メリットは色々ありますが、全ては紹介しきれないので今日はまず最初に思いつくであろうバリテーションをかけるといったことを実際に行ってみましょう!

JSON Schemaを用意しよう!

まずは、JSON Schemaを用意していきましょう。テスト用にJSONデータは、こちらのサイトものを題材にしていきます。このサイトでサンプルのJSONデータをJSON Schemaにしていきましょう。

JSON

JSON Scheme

少し長くてみにくいので、スッキリさせます。

それではこちらのJSON Schemaを題材にバリテーションをかけていきましょう!

JSON Schemaにバリテーションをかけてよう!

さて、実際にバリテーションをかけていくわけですが、今回はPythonを使います!JSONで書かれたバリテーションを行う場合、かなり面倒ですよね。

ただでさえ情報量が多く可読性が低いJSONでネストされていたりいたらもう最悪ですよね。なので、今日はこの面倒な作業を簡単にしてくれるjsonschemaというPythonのパッケージを使っていきます。まずは、インストールしましょう。

次は、コードをみていきましょう。

origin_dataにJSON Schemaに格納し、check_dataにチェックするためのデータを導入します。6行目に”required”されている内容が書いてあるので、その内容を含むチェックデータを導入します。実行すると、何も起きませんのでこれで正常です。

では、”price"がrequiredされているのにチェックデータに導入しなかったらどうなるでしょうか。

このように、priceを消して実行すると、

このようにpriceがないよ、とバリテーションしてくれていますね。

まとめ

いかがでしたか。今日は、

  • JSON Schemaとは何か
  • どんなメリットがあるのか
  • JSON SchemaのバリテーションをPythonで書く

ということを行いました。JSON Schemaは現代のコンテナブームを考えると使えるようになっておくスキルですので是非マスターしておきましょう!それでは!!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

かい

かい

日向徹かこよすぎか

[email protected]

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説