「国会で何が決まったの?」と思ったとき、僕たちはだいたいニュースを読む。でも一次情報はもっと簡単に手に入る。国会の議事録は、1947年の第1回国会からぜんぶ、国立国会図書館のAPIで検索できる。APIキーもログインもいらない。本会議も委員会も、誰のどの発言でも。しかも宮沢賢治は、国会で69回も言及されていた(発言本文検索、2026-10-05実測)。
起: 60万件の発言が、1回のリクエストで
試しに「国会」という単語で発言を検索したら、608,506件ヒットした。国会は自分のことをよく話す。「憲法」は184,094件、「消費税」は62,552件(うち参議院は26,932件)。検索対象は第1回国会(1947年)からの全会議録で、本会議だけでも8,886会議ある。各発言にはspeechIDが付いていて、121704080X00920250411_169 のように回次と日付が埋まっている。発言への一意の参照が、最初から用意されているのだ。
承: エンドポイントは3つ、使い分けが本質
APIには「発言単位」「会議単位」「会議一覧」の3つの入口がある。発言単位(speech)はヒットした発言の本文だけを最大100件。会議単位(meeting)は会議の全発言をまるごと、ただし最大10会議。会議一覧(meeting_list)は発言本文なしで軽い。知りたいことが「誰が何を言ったか」ならspeech、「あの日の委員会の流れ」ならmeeting、「何回開かれたか」ならmeeting_list。ひとつだけ注意で、既定の返却形式はXML。JSONが欲しければ recordPacking=json を必ず付ける。忘れると静かにXMLが返ってくる。
転: 罠は、親切な顔をして待っていた
ひとつめ。最大件数がエンドポイントで違う。speechとlistは100まで、meetingは10まで。101を指定すると即座にHTTP 400。ただしエラーの中身が親切で、「maximumRecordsには1~100の値を指定してください」と日本語で返ってくる。公共APIのエラーメッセージとしては模範生だ。
ふたつめ。キーワードのスペースの意味が、パラメータで逆になる。発言本文の any=北海道 青森 はAND(両方を含む発言、実測3,867件)なのに、会議名の nameOfMeeting=文部 文教 はOR。同じAPIの中でルールが違う。みっつめ。any が見るのは発言本文だけ。発言者は speaker、会議名は nameOfMeeting と別パラメータだ。speaker=山田 は部分一致で50,286件も返ってきた。フルネームで渡そう。
そして一番大事な罠。収録には1か月以上のラグがある。実測日(10/5)時点で最新の発言は8月26日、最新の本会議は7月24日だった。「昨日の国会で何が言われたか」は、まだAPIにはない。載っていないのは仕様である。
結: 一次情報は、思っているより近い
-
議事録はAPIで直に取れる。 1947年から全部、キーなしで。ニュースの要約を待たなくていい。
-
AND/ORのルールはAPIごとに違う。 ドキュメントを読むか、小さく実測する。今回は同じAPIの中ですら逆だった。
-
「まだ載ってない」は時点つきで答える。 1か月以上の収録ラグ。エージェントは「2026年8月26日時点の収録では」と言ってから話す。
スキル名はkokkai。発言検索・会議取得・一覧の3モードを1本のlookup.pyにまとめた。kurashi-skillは公開開発中。リポジトリはここ → https://github.com/tahodev/kurashi-skill
ちなみに賢治への言及の中身は、「銀河鉄道の夜」と「雨ニモマケズ」と、岩手の誇りだった。国会は意外と文学を読んでいる。