🧩 AIとアプリの共通言語「JSON」【AI起業ラボ⑦】

 

ほんねくんがパソコンを操作し、返信案と確認事項のカードでJSONの役割を考える。第7話。

♪♪ きほん|返信案と確認事項を、迷わず受け取るために

「APIでAIに依頼して、結果を受け取る。そこまではわかった!」

第6話を終えた、ほんねくん。返信支援アプリの画面に「顧客向けの返信案」と「社内向けの確認事項」を分けて表示しようと考えます。

でも、AIの回答が毎回長い文章で返ってくると、どこまでが返信案なのか、プログラムはどう判断すればよいのでしょうか。

「人には読めても、アプリには取り出しにくいんだね」

そこで登場するのが、JSONです。今回も、架空の研修会社「まなびサポート」を例に考えます。😊

結論:情報に名前を付けて、決めた形で渡す

JSONはJavaScript Object Notationの略で、構造のあるデータを表すテキスト形式です。JavaScript以外の言語でも使われ、Webアプリのデータ交換などで利用されます。[1]

このシリーズで「共通言語」と呼ぶのは、AIとアプリが同じ項目名と形式で情報を受け渡す、という意味です。JSONそのものが、AIの考え方や正しさを保証するものではありません。

返信案に「reply_draft」、確認事項に「check_items」と名前を付ければ、アプリ側は対応する値を取り出して、別々の欄に表示できます。

返信案、確認事項、追加確認の目印を、JSONのキーと値に分けて受け取る。

① 「キー」と「値」を読んでみよう

まず、次の例を見てください。これは説明用に作成したデータで、APIで得た実測結果ではありません。

{
  "reply_draft": "お問い合わせありがとうございます。研修料金は現在未定です。",
  "check_items": [
    "料金の確定時期を社内で確認する"
  ],
  "needs_confirmation": true
}

コロンの左側にある「reply_draft」などがキー、右側にある文章や配列などが値です。

キー受け取る値画面での使い方
reply_draft返信案の文字列顧客向け下書き欄に表示
check_items確認事項の配列社内向け欄に一覧表示
needs_confirmationtrueまたはfalse追加確認の目印に使う

キー名はアプリの設計で決めます。英語でなければならないわけではありませんが、今回は上の名前で統一します。

「needs_confirmation」が表すのは、追加の確認事項があるかです。falseでも、人の確認を省いて自動送信してよい、という意味にはしません。

② 最初に覚えたい、書き方のルール

JSONでは、次の記号と値をよく使います。[1]

  • { }:キーと値をまとめるオブジェクト。
  • [ ]:複数の値を並べる配列。
  • " ":キーや文字列を囲む、半角のダブルクォーテーション。
  • true・false:真偽値。文字列と区別し、引用符を付けない。

項目はカンマで区切りますが、最後の項目の後にカンマは付けません。JSONの中にコメントを書くこともできません。

ほかに数値やnullも扱えます。null、空文字列、項目そのものがない状態は別なので、必要に応じて意味を決めます。今回の確認事項がなければ、文字列の「なし」ではなく、空の配列 [ ] を返す約束にします。

なお、画面に表示した例の見出しやコード枠は説明用です。JSONデータとして読む対象は、波かっこから始まる中身だけです。

③ JSONの文字列と、プログラム内のデータは別

見た目が似ていても、通信などで受け取ったJSONのテキストと、プログラム内で項目を扱うデータは区別します。

JavaScriptでは、JSONのテキストを読み取るときにJSON.parse()、データをJSONのテキストにするときにJSON.stringify()を使えます。[1][2]

受け取った文字列をそのまま実行するのではなく、JSONとして解析してから項目を取り出します。構文に誤りがあれば、解析に失敗することがあります。

ただし、ライブラリや通信方法によっては、すでに解析されたデータが返ります。何を受け取ったか確認せず、毎回parseするわけではありません。

「文章から『確認事項』を探すより、決まった名前の項目を読む方が扱いやすいね!」

④ 「JSONで返して」と頼むだけで大丈夫?

指示だけでJSONを求めると、前置きが付いたり、項目名が変わったりする可能性があります。文章の見出しをそろえるだけよりも、アプリが期待する形式を明確にしておくことが大切です。

対応するAPIでは、構造化出力を使って、出力の形式を指定できます。Gemini APIにもJSON Schemaに基づく構造化出力があり、対応する仕様の範囲は公式資料で確認します。[3]

スキーマは、どんな項目や型を持つデータにするかを定めるルールです。今回なら「reply_draftは文字列」「check_itemsは文字列の配列」「needs_confirmationは真偽値」と決めます。

さらに、3項目を必須にするか、長さをどこまで許すかなども設計します。ただし、指定した形式に合っていても、内容が正しいとは限りません。[3]

資料にない料金を、それらしい返信文として文字列に入れてしまえば、JSONの形が正しくても業務上は不合格です。

⑤ 受け取った後は、3段階で確かめる

ほんねくんのアプリでは、次の3段階で確認する設計にします。

  • 構文:JSONとして読み取れるか。
  • 項目と型:必要なキーがあり、文字列・配列・真偽値が約束どおりか。
  • 内容:研修案内と一致し、根拠のない料金や約束がないか。

形式の検査はプログラムで行い、内容は第4話の合格基準でも確認します。足りない項目や型の違いがあったら、正常な返信案として扱わず、確認用の案内を出します。

JSONの構文、項目と型、内容を順に確認する。形式の正しさは内容の正しさを保証しない。

AIの文章を画面に出すときも、下書きは文字列として扱います。HTMLとしてそのまま挿入せず、表示の安全性を考えることも、実装時の確認点です。

「形をそろえることと、仕事として合格すること。両方が必要なんだ!」

今日の実践:確認事項がない場合を作ってみよう

5分ほどで、同梱のJSON例を見ながら、次の状態へ書き換えてみてください。

  • 返信案を「研修はオンライン開催で、所要時間は90分です。」にする。
  • 確認事項を空の配列にする。
  • 追加確認の目印をfalseにする。

これは、第4話の架空の研修案内に合わせた練習です。人の送信前確認は残します。

さらに、falseを "false" にしたら何が違うか考えてみましょう。どちらもJSONの構文としては有効ですが、後者は真偽値ではなく文字列です。今回のスキーマでは、型の検査で止める対象になります。

🍀 今日の理解

JSONは、情報に名前を付け、決めた形式で渡すためのテキスト形式。受け取った後は、構文・型・内容を確認する。

🔍 ほんねチェック

JSONとして読めたからといって、そのまま送信や保存へ進めないこと。型や必要項目を確認し、内容には人の確認も残しましょう。

📝 会社づくりメモ⑦

  • 返信支援で受け取る項目名は?
  • 各項目の型と、空の場合の表し方は?
  • 不正な形式のときは、どう止める?
  • 顧客向けの返信案と、社内向け情報をどう分ける?

次回:GAS+AIで、問い合わせの返信案を作ろう

画面、API、JSONをつなぎ、担当者が確認できる小さな試作品へ進みます。


シリーズ案内:全24話。原則1日1話、休みを挟みながら進めます。

前回:第6話「APIはAIへの窓口!鍵と利用制限を知ろう」

第1話から読む

参考資料(2026年10月19日確認)