支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • JSONを使うことで何ができるか

はじめに

JavaScriptはWebサイトやWebアプリをはじめ、ゲームやスマホアプリの開発にも利用できるプログラミング言語で、Webシステムのフロントエンドの開発にはHTMやCSSと共に欠かせない要素の一つとなっています。JavaScriptは1990年代中盤にリリースされて以来ライブラリやフレームワークも充実してきているため、今もなお人気のある言語です。近年のプログラミング言語の需要を見ても、JavaやPHPといった長年利用されているものと肩を並べる程であり、サーバーサイドの開発でも利用されるようになる等、活用の範囲も広がっています。

今回はそんなJavaScriptの便利な機能の一つ「JSON(JavaScript Object Notification)」の概要や、基本的な利用方法について紹介していきます。JSONというワードは聞いたことがあるものの活用方法がわからないという方、現在JavaScriptを勉強し始めたばかりという方はぜひご覧ください。

JSONは何のために開発されたか

JSONはプログラムの中で利用される様々な値を設置する際のドキュメント規格(データ交換フォーマット)の一つです。もっと簡単に言うと、データを扱う際のルールです。初めはJavaScriptの開発でのみ利用されていたJSONですが、PHP、Python、Ruby、Javaといった他のプログラミング言語でも利用可能となっています。そのためJavaScriptで開発されているとは言っても、JavaScriptとは異なるJSON独自の記述ルールがあることには注意が必要です。

JSONのようにデータ形式を扱う機能としてはエクセル、CSV、XML、YAMLといったものがあり、特にXML(Extensible Markup Language)はHTMLと同様のマークアップ言語としてHTMLの記法に沿ったデータ定義方法であり、Web開発で幅広く利用されていました。しかしタグを利用してCSV等よりも複雑な構造を扱えるというメリットがあったものの、人間が理解しづらい内容になりやすく、テキスト量も多くなって通信量が増える、パフォーマンスが低下するというデメリットがありました。そのため次第にXMLの役割は、簡素で高速な通信が可能、JavaScriptと相性が良い、多くの言語で汎用的に利用できる等の理由でJSONにとって変わられるようになりました。なおその他のCSVやXMLはMicrosoft製の製品との相性が良い形式で、YAMLはJSONに似た表記に切り替えることもできるデータ形式です。

JSONは何に活用できるのか

これまでXMLを使ったことがある方はすでにJSONの概要は把握できることと思いますが、全く利用したことがないと概要がわかったところで実際に何に使うのかがイメージしづらいことでしょう。これらのドキュメント規格は、例えばJavaScriptで構築されたプログラム内で、ユーザーによって入力されたデータを保持したい場合に利用されます。

またフロントエンドとサーバーサイド間や、サーバー間での通信や連携する際の「API」として利用されます。APIはIT業界にいると多くの場面で耳にする用語ですが、「Application Programming Interface」の略で、それぞれ異なるソフトやサービス、アプリケーションを連携させるための仕組みのことを指しています。

さらに単純に文字データを保存する役割としても活用されます。特に近年利用されることの多いNoSQLというデータベースには、JSON形式のままドキュメント単位でデータを保存する仕組みもあります。NoSQLの一つである「MongoDB」は、それまでのRDBMSで困難であったJSONの定義をし易くする目的で開発されたと言われています。これらの状況を見ると、JSONは近年のAPIにおけるデファクトスタンダードとなっているという見方ができます。

JSONを利用する

ここまではJSONの概要について紹介してきましたが、ここからは実際に利用する方法についてJSONでのコーディング方法やルールを中心に解説していきます。

基本的なコーディング方法

JSONの記述例は以下のように非常にシンプルな形式となります。

{
  "key": “value”,
  "key": “value”
}

実際に以下のように値を当てはめてみるとわかりやすいでしょう。

{
  “id": “10”,
  "name": “sasaki”
}

なおこれをXMLで記述すると以下のようになります。今回の例では取り扱う要素が少ないので差が出づらいですが、JSONを利用することで記述するタグの量が減っていることはわかっていただけるでしょう。



  
    10
    sasaki
  

ここで、JSONの記述で守べきルールについて四つ紹介します。一つ目は、項目名(key)と値(value)の間に区切りとして「:(コロン)」を利用し、ペアとして扱うということです。二つ目は、項目名を「””(ダブルクオーテーション)」で囲むということです。ただし囲むのは文字列で、数値は囲む必要はありません。数値を囲んだ場合は文字列の扱いとなります。また日本語含め、「\(バックスラッシュ)」以外の文字は全て使用可能です。

三つ目は複数の項目名(key)と値(value)のペアを指定する際は「,(カンマ)」で区切るということです。なお最初の例では、多数の要素がある場合に見やすい記述方法としてインデントを利用して複数行に渡って記述しましたが、以下のように一行で記述することも可能です。

{“id": “10” , "name": “sasaki”}

四つ目はJSONでデータを書き始める最初と最後は「{ }」もしくは「[ ]」の括弧で囲むということです。以上の4つを守るだけでJSONの記述は可能です。

JSONの仕様

続いてJSONで扱えるデータ型について解説しておきます。JSONで扱えるデータ型は文字列、数値(0〜9、符号、小数点、指数記号)、null、bool値、オブジェクト、配列の六種類となります。なおbool値のtrue、falseやnullは小文字での記述をします。またbool値の「true」「false」は文字列の扱いではないので「””」が不要となります。オブジェクトにおいてはオブジェクト指向プログラミングと同じような利用ができ、入れ子(ネスト)にすることも可能です。配列を利用する際は、以下のように配列部分を「[ ]」で囲むことになります。

{
    "id": 10,
    "name": "sasaki",
    "result": [
        105,
        90,
        120,
    ]
}

JSON文字列とオブジェクト間の相互変換

JSON文字列をオブジェクトに変換する場合は「JSON.parse( )」というメソッドを利用し、オブジェクトをJSON文字列に変換する場合は「JSON.stringify( )」というメソッドを利用します。サーバーサイド とのデータのやり取りをする場合は後者のメソッドを利用してデータを転送しましょう。

JSON文字列をオブジェクトに変換する際のメソッドの記述例は以下となります。変数「json_str」でJSON文字列のデータを受け取ったことを前提としたメソッドです。

var obj = JSON.parse(json_str)

オブジェクトをJSON文字列に変換する際のメソッドの記述例は以下となります。なお実際に文字列になっているか確認したい場合は「console.log(typeof json_str)」を追記することで「string」という結果が出力されます。

vvar json_str = JSON.stringify(obj)

JSON専用のエディタについて

JSONは単純なテキストデータなのでWindowsやMacOSに備わっているテキストエディタを使えば作成可能です。ただし複雑な記述が必要となる場合は専用のエディタを利用すると便利です。例えばWindowsでJSONを扱えるエディタとしてはNotepad++やJSONeditといったエディタがあります。MacOSにはグラフィカルで使いやすいJaysonという有償のエディタがあります。またWindows、MacOSのどちらでも利用可能で、LinuxOS上でも動作可能なエディタとしてはVisual Studio Code(VSCode)があります。エディタ名にあるようにIDE(統合開発環境)のエディタなので、様々なプログラミング言語に対応しているうえ高機能です。

各言語でのファイル作成と読み込み方法

JSONを利用することの多いJavaScript、Python、PHP、JavaにおけるJSONファイルの作成方法と読み込み方法を簡単に紹介します。

JavaScriptの場合

JavaScriptはJSONとの相性が良いこともあり他の言語と比べ取り扱いが簡単で、オブジェクト等をJSONの形式で定義すると自動的にJSONとして読み込んでくれます

Pythonの場合

Pythonでは、作成時にJSONライブラリ(API)をインポートする必要があります。インポートは冒頭に「import json」を記述することで可能です。読み込みの際には「readline( )」というメソッドを利用し、オブジェクトにしたい場合は「json.loads( )」メソッドを利用します。

PHPの場合

PHPにもJSONを扱える機能が備わっているため、「json_decode」「json_encode」にてJSON文字列とPHPオブジェクト間の相互変換が可能となっています。読み込み時には「fread( )」「fgets( )」というメソッドを利用します。

Javaの場合

作成時にはJSONObjectクラスのライブラリをインポートする必要があります。なおJavaにはJSONを扱えるライブラリが複数存在し、それぞれの記述方法に従って利用することになりますが、代表的なライブラリとしては「Jackson」や「Gson」があります。読み込みの際にはPythonと同様の「readline( )」というメソッドを利用し、オブジェクトにしたい場合は「JSONObject.get( )」メソッドを利用します。

まとめ

JSONはJavaScriptとは異なるルールが多少存在するので覚えるまでは時間がかかる可能性がありますが、覚えてしまえば記述がシンプルなのでXML等を利用するより格段に早く作成できるようになることでしょう。またJavaScriptと同様に利用される幅も広くなってきているため、JSONの利用方法を覚えたらエンジニアとして活躍できる場面も増える可能性があります。ぜひ開発で必要となったもののJSONの基本を忘れてしまったということがあれば、この記事に立ち返っていただけると幸いです。