パブリックコメントに寄せられた意見を論点ごとに分けて同じ趣旨のものをまとめ、市の考え方の案を作る
パブリックコメントに寄せられた意見を論点ごとに分け、計画案のどの箇所への意見かを付けたうえで、同じ趣旨のものをまとめて要旨と市の考え方の案を作ります。担当課は、一覧表の下書きから読み始められます。
- 生成AI
- Azure OpenAI Service/Claude/Gemini
- 連携・自動化
- Google Apps Script/Power Automate/Python
- 対象業界
- 自治体
- 対象部門
- 経営企画/総務
- 対象業務
- 書類作成/要約
- 主な課題
- 人手が足りない/属人化している/書類作成に時間がかかる
- AIで行う処理
- 要約
- 主な効果
- 品質標準化/対応スピード向上/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 意見募集の期間中、届いた意見を受付簿に記録する。紙とファクスのものは担当者が文字に起こす
- 締め切り後、1通ずつ読み、論点ごとに切り分けて一覧表の行にする
- 論点ごとに、計画案のどの章・節への意見かを探して書き込む
- 似た趣旨の論点を探して並べ替え、まとめるものを決める
- まとめたものごとに、意見の要旨を書く
- 担当課の中で、要旨ごとに計画案を直すかどうかと市の考え方を話し合い、回答の文を書く
- 政策企画課が様式と書き方を確認し、決裁を経て公表する
- 【人/自動】 届いた意見を受付簿に記録する。フォームとメールの意見は自動で取り込み、紙は文字に起こして入れる
- 自動毎晩、その日に届いた意見から氏名・住所・連絡先を外し、論点ごとに切り分ける
- 自動論点ごとに、計画案の章・節の候補と、原文の該当箇所を付ける
- 自動締め切りの翌朝、全論点の埋め込み(ベクトル)を作り、似たものを候補としてまとめる
- 自動まとめの候補ごとに、要旨と、まとめに含めた論点どうしの違いを書かせる
- 自動要旨ごとに、計画案の該当箇所と、担当課が用意した「考え方のメモ」から回答の文案を書かせる
- 人担当課が、まとめの候補を確かめ、分けるべきものを分け、要旨を原文と並べて直す
- 人担当課が、計画案を直すかどうかと市の考え方を決め、回答の文案を直す
- 人政策企画課が様式と書き方を確認し、決裁を経て公表する
各工程の詳しい説明を読む
- 意見募集の期間中、届いた意見を受付簿に記録する。紙とファクスのものは担当者が文字に起こす
- 締め切り後、1通ずつ読み、論点ごとに切り分けて一覧表の行にする
- 論点ごとに、計画案のどの章・節への意見かを探して書き込む
- 似た趣旨の論点を探して並べ替え、まとめるものを決める
- まとめたものごとに、意見の要旨を書く
- 担当課の中で、要旨ごとに計画案を直すかどうかと市の考え方を話し合い、回答の文を書く
- 政策企画課が様式と書き方を確認し、決裁を経て公表する
(a)1通に論点がいくつもある。 「第3章の施策の目標値が低い。あわせて、説明会の開催が平日の昼だけなのは困る。それから、駅前の駐輪場についても」のように、1通の中に計画案への意見と、手続への意見と、案と関係のない要望が並びます。 2番目の切り分けを丁寧にするほど、一覧表の行は通数の2〜3倍になります。
(b)まとめ方が人によって違う。 「公共交通の充実を」と「バスの本数を増やして」と「免許を返納した後の移動が心配」を1つにまとめる人もいれば、3つに分ける人もいます。どこまでを同じ趣旨とするかが決まっていないので、同じ市の一覧表でも案件ごとに粒度が違います。
(c)1件だけの意見が埋もれる。 似た意見を寄せていくと、数の多いまとめに、少しだけ違う論点が吸収されます。 「バスの本数」のまとめに「バス停の屋根」が入ってしまうと、その論点への回答がどこにも書かれません。
(d)締め切りから公表までが長い。 2番から5番までが手作業なので、数百通の案件では整理だけで数週間かかります。 そのあいだ、担当課は6番目の「中身の検討」に時間を割けません。
- 【人/自動】 届いた意見を受付簿に記録する。フォームとメールの意見は自動で取り込み、紙は文字に起こして入れる
- 【自動】 毎晩、その日に届いた意見から氏名・住所・連絡先を外し、論点ごとに切り分ける
- 【自動】 論点ごとに、計画案の章・節の候補と、原文の該当箇所を付ける
- 【自動】 締め切りの翌朝、全論点の埋め込み(ベクトル)を作り、似たものを候補としてまとめる
- 【自動】 まとめの候補ごとに、要旨と、まとめに含めた論点どうしの違いを書かせる
- 【自動】 要旨ごとに、計画案の該当箇所と、担当課が用意した「考え方のメモ」から回答の文案を書かせる
- 【人】 担当課が、まとめの候補を確かめ、分けるべきものを分け、要旨を原文と並べて直す
- 【人】 担当課が、計画案を直すかどうかと市の考え方を決め、回答の文案を直す
- 【人】 政策企画課が様式と書き方を確認し、決裁を経て公表する
7番目が、この設計の分かれ目です。 AIのまとめは候補で、確定ではありません。担当課はまとめの一覧を見て、違う論点が混ざっていないか、1件だけの論点が吸収されていないかを確かめます。ここを省くと、第3章の(c)がそのまま一覧表に載ります。
8番目は、最初から最後まで人の仕事です。 AIの文案は、計画案の記載と担当課のメモを根拠に書いたたたき台です。案を直すかどうかの判断を文案に任せると、検討しないまま「既に盛り込まれています」という回答が並びます。
02今回想定するシステム構成
意見(電子申請のフォーム/メール/紙・ファクスを文字に起こしたもの) │【トリガー】毎晩の取り込み(期間中)+ 締め切りの翌朝 ▼ Python(前処理) │ ・氏名・住所・連絡先を外し、意見番号を振る │ ・計画案を章・節の単位に分けて番号を付ける ▼ Azure OpenAI(Microsoft Foundry) │ ・意見を論点ごとに切り分け、原文の範囲を示す │ ・論点ごとに計画案の章・節の候補を付ける ▼ Python(集計)── 埋め込みの類似度で、同じ趣旨の候補をまとめる ▼ Azure OpenAI(Microsoft Foundry) │ ・まとめごとの要旨と、含めた論点どうしの違い │ ・計画案と考え方のメモを根拠にした回答の文案 │ ・structured outputs(strict)でスキーマどおりのJSONを返させる ▼ 意見の整理表(論点・まとめ・要旨・回答の文案) ▼ 【人】担当課が確かめ、市の考え方を決める ── 政策企画課の確認と決裁 ── 公表
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 生成AI | Azure OpenAI(Microsoft Foundry) | Claude API、Gemini API |
| 集計 | Python(埋め込みの類似度による同趣旨の候補のまとめ、件数の集計) | Google Apps Script |
| 連携 | Python(フォームとメールの取り込み、整理表への書き出し) | Power Automate |
| 保管 | 文書管理システム(意見の原本と整理表) | 庁内のファイルサーバー |
電子申請のフォームと文書管理システムは、今のものを使います。 この構成は意見を読み、整理表の下書きを作るところまでです。公表する一覧表は、担当課が整理表から作ります。
最初の準備作業は、計画案に番号を振ることです。 章・節・項に番号が付いていれば、論点ごとに「第3章2節への意見」と付けられます。番号の無い案に対する意見は、該当箇所を探す作業が人に残ります。
同じ趣旨の候補をまとめるのに、埋め込みを使います。 埋め込みは文章の意味を表す数値の並び(ベクトル)で、似た文章ほど近いベクトルになるため、分類やクラスタリングに使えるとされています。現在の埋め込みモデルの入力は1件あたり8,192トークンまで、1回の要求で送れる入力の配列は2,048件までで、1回の要求の合計が300,000トークンを超えると失敗します。 論点は1件が短いので、数百件の案件でも数回の要求に分ければ足ります。
Azure OpenAI を選ぶのは、データの取り扱いが明示されているためです。 意見には、提出者の暮らしや家族、健康の事情が書かれることがあります。公開されている説明では、プロンプトと出力は他の顧客にも OpenAI などのモデルの提供元にも提供されず、提供元のモデルの改善や、許可のない学習に使われないとされています。
出力は structured outputs で受け取ります。 指定したJSON Schemaに従わせる機能で、すべての項目を required にし、オブジェクトに additionalProperties: false を付ける必要があります。
03どうやって実装するのか
処理の起点を決める
動かすきっかけは2つです。 意見募集の期間中は毎晩、その日に届いた意見を取り込んで論点に切り分けます。締め切りの翌朝に、全論点をまとめて同じ趣旨の候補を作り、要旨と回答の文案を書かせます。
論点の切り分けを期間中に済ませておくのは、締め切り後の時間を担当課の検討に回すためです。 意見は締め切り間際に集中するので、締め切り後に全件を一度に切り分けると、最初の一覧が出るまでに時間がかかります。まとめは全件がそろってからでないと意味がないので、締め切りの翌朝に一度だけ行います。
締め切り後に郵送で届いた意見も、消印などで期間内と確認できれば受け付ける運用があります。 その場合は、受付簿に追加された時点でもう一度まとめ直します。まとめ直しても、担当課がすでに確定させたまとめは動かしません。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 意見の本文 | 受付番号、受付日、受付の経路、本文(紙・ファクスは文字に起こしたもの) | 電子申請のフォーム、メール、受付簿 |
| 計画案 | 章・節・項の番号と本文 | 担当課が作った案の文書 |
| 考え方のメモ | 論点になりそうな事項ごとの、担当課の方針と根拠の箇所 | 担当課が締め切り前に用意する |
| 過去の一覧表 | 同じ分野の過去の意見募集の要旨と市の考え方 | 市のホームページで公表済みのもの |
| 書き方の手引き | 要旨の長さ、敬体・常体、回答の区分の付け方 | 政策企画課の手引き |
質を決めるのは、3つ目の考え方のメモです。 メモが無いと、回答の文案は計画案の文を言い換えるだけになり、「計画案に記載のとおりです」という答えが並びます。 担当課は意見募集の前に、出そうな論点(目標値、財源、対象地域、スケジュール)について、方針と根拠の箇所を数行ずつ書いておきます。
過去の一覧表は、文体と粒度をそろえるために使います。 根拠としては使いません。過去の回答を根拠にすると、今回の案で方針が変わった点まで過去の答えで書いてしまいます。
データの取得方法を決める
| 取るもの | どこから | 何に使うか |
|---|---|---|
| フォームの回答 | 電子申請のフォームの回答データ(CSVの出力) | 意見の本文と受付日 |
| メールの意見 | 意見受付用のメールボックス | 本文と添付ファイルの文字 |
| 紙・ファクスの意見 | 担当者が文字に起こして受付簿に入れたもの | 本文 |
| 計画案 | 案の文書を章・節・項で分けたもの | 該当箇所の候補と、回答の根拠 |
| 考え方のメモ | 担当課の共有フォルダ | 回答の文案の根拠 |
メールの添付ファイルは、文字を取り出してから本文に足します。 文書ファイルやPDFで意見を送る人がいるためです。画像だけのPDFで文字が取れないものは、人が文字に起こす側に回します。
計画案は、番号ごとの塊に分けて持ちます。 論点に該当箇所の候補を付けるとき、AIには計画案の全文ではなく、章・節の番号と見出しの一覧を先に渡し、候補になった節の本文だけを回答の文案のときに渡します。全文を毎回渡すと、要求が大きくなるうえ、関係の薄い節を根拠にした文案が出やすくなります。
埋め込みを作るのは、論点の原文の範囲です。 AIが書いた論点の言い換えを埋め込むと、言い換えの段階で似た表現にそろえられ、本来は違う論点どうしの類似度が上がります。 まとめの候補は、提出者が実際に書いた言葉の近さで作ります。類似度の基準の値は最初は高めに置き、担当課が「つなぐべきだった」と直した件数を見て下げていきます。
AIへ渡す前に整形する
- 個人の情報を外す … 氏名、住所、電話番号、メールアドレスを本文から外し、受付番号で管理します
- 定型の文を外す … メールの署名、フォームの設問の文、「以下、意見です」のような前置きを外します
- 重複の確認 … 同じ人が同じ本文をフォームとメールの両方で送った場合を、本文の一致で見つけて印を付けます
- 同文の意見の確認 … 違う人が同じ文面で送った意見は、重複ではなく同文として1件ずつ残します
- 計画案の番号付け … 章・節・項の番号と見出しの一覧を作ります
- 長さの確認 … 極端に長い意見(添付の資料を含むもの)は、段落で分けて論点の切り分けに渡します
3番目と4番目を分けるのが大事です。 同じ人の二重送信は1件として数えますが、違う人が同じ文面で送ったものは、それぞれが1件の意見です。 まとめて1件に減らすと、受け付けた意見の数が実際より少なく公表されます。逆に、同文の意見が多いことを理由に重く扱うこともしません。数は数として正しく残し、考慮は内容で行います。
1番目で外した情報は、受付簿にだけ残します。 公表する一覧表に提出者の名前は載せず、整理の作業にも要りません。
AIに処理させる
させるのは、3段階の作業です。 論点の切り分け、まとめの要旨、回答の文案で、それぞれを別の要求に分けます。
| 段階 | させること | 判断できないときの扱い |
|---|---|---|
| 論点の切り分け | 1通を論点ごとに分け、原文の範囲と、案への意見か・手続への意見か・案と関係のない要望かを付ける | どちらとも取れれば unclear |
| 該当箇所の候補 | 論点ごとに計画案の章・節の候補を最大3つ | 候補が無ければ none |
| まとめの要旨 | まとめの候補ごとに要旨を書き、含めた論点どうしの違いを書き出す | 違いが大きければ split_suggested |
| 回答の文案 | 計画案と考え方のメモを根拠に文案を書き、根拠の箇所を示す | 根拠が無ければ文案を書かず needs_policy |
3行目の「違いを書き出す」が、この構成でいちばん大事な指示です。 埋め込みの類似度でまとめた候補には、言葉が似ているだけで論点の違うものが入ります。要旨だけを書かせると、違いを丸めた要旨が出ます。違いを別の欄に書かせれば、担当課はその欄を見て、分けるかどうかを決められます。
4行目で根拠が無いときに文案を書かせないのも、意図してのことです。 計画案にも考え方のメモにも答えが無い論点は、担当課が新しく考えるべき論点です。そこにAIがもっともらしい回答を書くと、検討されないまま公表されます。
| させないこと | 理由 |
|---|---|
| 計画案を直すかどうかの判断 | 考慮した結果とその理由は、案を作った担当課が決める |
| 回答の区分(反映する・しない等)の確定 | 区分は担当課が付ける。文案は区分の候補を示すまで |
| 件数による重み付け | 考慮は意見の内容で行う |
| 提出者の属性の推測 | 年齢・地域・立場を本文から推し量らない |
| 意見の言い換えによる趣旨の変更 | 要旨は原文の範囲にひも付けて書く |
| 案と関係のない要望への回答 | 担当の課へ回す候補として印を付けるまで |
3行目は、要旨の書き方にも出ます。 「多くの方から〜とのご意見」と書かせると、それだけで数の多さを強調する文になります。要旨に件数を入れず、件数は一覧表の別の欄に機械で数えて入れます。
指示内容を固定する
あなたは市の職員として、パブリックコメントに寄せられた意見の整理を手伝う立場です。
(まとめの要旨と回答の文案の段階の指示です)
【やること】
1. 【まとめの候補】に含まれる論点を読み、共通する趣旨を要旨として書いてください。
2. 含めた論点どうしで、求めていること・対象・理由が違う点を differences に書き出してください。
3. 違いが大きく、1つの要旨では一方の趣旨が伝わらないと判断したら、
split_suggested を true にし、分け方の案を書いてください。
4. 【計画案の該当箇所】と【考え方のメモ】だけを根拠に、市の考え方の文案を書いてください。
【厳守事項】
- 要旨は、提出された意見の趣旨を変えずに書いてください。
意見に書かれていない理由や評価を足さないでください。
- 要旨に件数や「多くの方」「一部の方」などの量を表す言葉を入れないでください。
- 要旨の各文について、根拠にした論点の point_id を示してください。
- 回答の文案は、計画案とメモに書かれていることだけを根拠にしてください。
根拠が無い場合は文案を書かず、answer_status を needs_policy にしてください。
- 計画案を修正する・しないを、あなたが決めないでください。
stance_candidate には、メモに書かれた方針から読み取れる候補だけを入れてください。
- 案と関係のない要望には回答を書かず、scope を out_of_scope にしてください。
- 文体は【書き方の手引き】に従ってください(敬体、要旨は100字程度)。
- 提出者の年齢、住所、立場を推測して書かないでください。
【まとめの候補】{group_points}
【計画案の該当箇所】{plan_sections}
【考え方のメモ】{policy_memo}
【書き方の手引き】{style_guide}
「量を表す言葉を入れない」を明記しないと、ほぼ必ず入ります。 まとめの候補に20件の論点が入っていれば、AIは「多くの市民から」と書き始めます。数の多さを要旨の言葉にしない、という市の方針を、指示の側で守ります。
「方針を決めない」と書いても、文案は方針を含みます。 回答の文は「〜します」「〜は考えていません」で終わるからです。そこで、文案の方針は考え方のメモから読み取れる範囲に限り、メモに無い方針は needs_policy で返させます。 メモが充実するほど、文案が使えるようになります。
出力形式を固定する
次の形のJSONで受け取ります。
{
"group_id": "",
"summary": "",
"summary_sources": [
{ "sentence_no": 1, "point_ids": [""] }
],
"differences": [
{ "point_id": "", "what_differs": "" }
],
"split_suggested": false,
"split_plan": "",
"scope": "plan | procedure | out_of_scope",
"answer_status": "drafted | needs_policy",
"stance_candidate": "reflect | already_included | future_reference | not_reflect | other | none",
"answer_draft": "",
"answer_basis": [
{ "source": "plan | memo", "ref": "" }
]
}
論点の切り分けの段階は、別のスキーマで point_id、quote_range(原文の範囲)、scope、plan_ref_candidates を返させます。原文の範囲は、本文の文字の位置で返させ、Python で本文から切り出します。 AIに原文を写させると、写すときに言い換えが混ざるためです。
1つ目の理由は、要旨の各文を論点にさかのぼれることです。 summary_sources があれば、担当課は要旨の1文ずつについて、どの意見の原文から来たかを開けます。趣旨が変わっていないかを、原文と並べて確かめられます。
2つ目は、1件だけの論点の行方を機械で追えることです。 Python で、すべての point_id が、どこかのまとめの summary_sources か differences に出てくるかを照合します。どこにも出てこない論点は、要旨から落ちたものとして一覧の先頭に出します。
3つ目は、回答の区分を担当課の欄と分けられることです。 stance_candidate は候補で、一覧表の「区分」の欄は担当課が埋めます。整理表では両方を並べ、候補と確定が違った件数を数えます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 電子申請のフォーム | 回答データの出力を毎晩取り込む | 意見の本文と受付日 |
| 意見受付用のメールボックス | メールの取り込み(読み取りのみ) | 本文と添付ファイル |
| Azure OpenAI | API呼び出し(論点の切り分け、要旨、文案) | structured outputs で受け取る |
| Azure OpenAI | API呼び出し(埋め込み) | 論点ごとのベクトル |
| 意見の整理表 | 表計算のファイルへの書き出し | 担当課が確かめて直す作業用の表 |
| 文書管理システム | 人が登録 | 確定した一覧表と決裁 |
公表する一覧表は、整理表から人が作ります。 整理表には point_id、類似度、候補の区分など、公表しない列が多くあります。整理表をそのままホームページに載せる経路は作りません。
計画案の文書は読むだけです。 意見を受けて計画案を直すのは担当課で、この構成から案の文書へは書き込みません。
人が確認する
担当課が見る順番を、整理表の並びで決めておきます。
- どのまとめにも出てこない論点を先に見る … 要旨から落ちた論点です。どこかのまとめに入れるか、単独の行にします
split_suggestedのまとめを見る … 違いの欄を読み、分けるかどうかを決めます- 要旨を原文と並べて読む …
summary_sourcesから原文を開き、趣旨が変わっていないかを確かめます needs_policyの論点を検討する … メモに無い論点です。ここが担当課の本来の検討の中心になります- 文案を直し、区分を付ける … 文案は根拠の箇所と並べて読み、市の考え方として確定させます
- 政策企画課が様式と書き方を確かめる … 要旨に量を表す言葉が残っていないか、個人の情報が残っていないかも見ます
3番目を省かないでください。 要旨の誤りは、提出者から見ればすぐ分かります。自分の意見が違う意味でまとめられた一覧表は、意見募集そのものへの信頼を損ないます。
4番目に時間が残ることが、この構成の目的です。 並べ直す作業が減った分、新しい論点の検討と、関係課との調整に時間を使います。
例外に対処する
| 起きること | 対応 |
|---|---|
| 紙・ファクスの意見の文字が読めない | 担当者が原本を見て文字に起こす。読めない箇所は「判読不能」と記録する |
| 添付ファイルが画像だけで文字が取れない | 人が文字に起こす側へ回す |
| 1通に案と関係のない要望だけが書かれている | out_of_scope として受け付け、担当の課へ回す候補に印を付ける |
| 同じ人の二重送信 | 本文の一致で1件にまとめ、受付簿に両方の受付番号を残す |
| 違う人の同文の意見 | 1件ずつ残す。まとめの中では同じ論点として扱う |
| 特定の個人を中傷する内容が含まれる | 整理表で印を付け、公表の扱いを政策企画課と決める |
| 締め切り後に期間内の郵送が届く | 受付簿に追加し、確定していないまとめだけをまとめ直す |
| 計画案の番号が途中で変わった | 意見募集で示した版の番号で付ける。修正後の版の番号は別の列に持つ |
| AIの応答が途中で終わる・拒否される | その論点を人の整理に回し、整理表に印を付ける |
6行目は、AIで判断させません。 公表する一覧表から除くかどうかは、市の要綱と個別の事情で決まります。AIには「個人を名指ししている可能性がある」という印を付けさせるまでにします。
8行目は、公表の段階で効いてきます。 一覧表の「該当箇所」は、意見を寄せた人が見た案の番号で書かないと、提出者が自分の意見を探せません。
記録を残す
- 意見の原本(フォームの回答、メール、紙・ファクスのスキャン)と受付簿
- 前処理で外した個人の情報は受付簿にだけ残し、整理の作業のデータには残さない
- 論点の切り分けの結果(
point_id、原文の範囲、scope、該当箇所の候補) - 埋め込みの類似度と、まとめの候補の構成
- AIが返したJSONの全文と、使ったモデルのデプロイ名
- 担当課がまとめを分けた・つないだ記録と、要旨と文案をどう直したか
- 確定した一覧表と、決裁の記録
6つ目は、次の意見募集の質を上げる材料になります。 担当課がどのまとめを分けたかを数えると、類似度でまとめる基準の値が粗すぎるか細かすぎるかが分かります。基準の値は分野ごとに変えてかまいません。
整理表と確定した一覧表の両方を残すのは、後から問い合わせがあったときのためです。 「自分の意見がどこに入ったか」と聞かれたら、受付番号から point_id、まとめ、一覧表の行までをたどれます。
04実装レベルの3段階
最小構成では、数百通の案件はさばけません。 貼り付けられる量に限りがあり、まとめの粒度も試すたびに変わります。確かめるための段階です。 半自動化で、1通30分が20分程度になります。 論点の切り分けと該当箇所の候補は自動になりますが、まとめと要旨と文案が手作業で残ります。本格構成で10分になり、この段階が本記事の想定です。 差が大きいのは、同じ趣旨のものを探す作業が、論点の数の2乗で重くなるからです。 段階を飛ばさないでください。 半自動化で論点の切り分けを数案件見ると、どの程度の細かさで切るのが市の一覧表に合うかが分かります。そこが決まってからまとめに進むほうが、まとめ直しが減ります。
05工数削減シミュレーション
導入後 240件 × 10分 ÷ 60 = 40 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 計画・条例・方針の案について、市全体で毎月のように意見募集(パブリックコメント)を行い、締め切りのたびに担当課が数十件から数百件の意見を読み、論点ごとに分けて要旨と市の考え方の一覧表を作っている市区町村。1通の意見に複数の論点が書かれ、同じ趣旨の意見をまとめる作業と、計画案のどの箇所への意見かを探す作業に時間がかかっている場合。担当者によって要旨の書き方やまとめ方がばらつく場合。
- 意見募集が年に数回で、1回あたりの意見が数件にとどまる場合(目視で足ります)。意見の大半が紙の手書きで、文字に起こす体制が無い場合。市の考え方の内容そのものを決める作業を自動化したい場合、この構成では代替できません。意見を考慮した結果の判断と、その理由を書くのは、案を作った担当課です。
07最小構成で試す方法
- 過去の意見募集から1件を選ぶ(意見が50通前後で、公表済みの一覧表があるもの)
- 50通から氏名などを外し、手元のAIサービスの画面に10通ずつ貼り付ける
- 「それぞれの意見を論点ごとに分け、計画案の章・節を付けてください。原文の範囲を示してください」と指示する
- 全部の論点を貼り付け、「同じ趣旨のものをまとめ、要旨を書いてください。まとめた論点どうしの違いも書いてください。要旨に件数や量を表す言葉を入れないでください」と指示する
- 出てきた論点とまとめを、公表済みの一覧表と突き合わせる
1件は必ず最後までやってください。 システムを組む前に、「論点の切り分けとまとめが、職員の整理と同じ粒度になるか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 公表済みの一覧表とほぼ同じ論点が出た | 取り込みと埋め込みの連携に進む |
| 論点が細かすぎる・粗すぎる | 書き方の手引きに粒度の例を足せば直る。構成は有効 |
| 一覧表に無い論点が出てきた | 当時の整理で落ちた論点かもしれない。 原文で確かめる |
3行目が出ることがあります。 失敗ではなく、第3章の(c)が実際に起きていたかどうかが分かったということです。 その論点が当時どこにも回答されていなければ、それがこの構成を入れる理由になります。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 1件だけの論点がまとめに吸収される | 全 point_id がどこかに出てくるかを照合し、落ちたものを先頭に出す |
| 要旨に「多くの方から」と入る | 量を表す言葉を禁じ、件数は別の欄に機械で数える |
| 似た言葉の違う論点が1つにまとまる | 違いの欄を書かせ、split_suggested で人に判断させる |
| 同文の意見を1件に減らしてしまう | 二重送信と同文を分ける。同文は1件ずつ数える |
| 根拠の無い回答の文案が並ぶ | 根拠が無ければ needs_policy で返させる |
| 「計画案に記載のとおり」ばかりになる | 考え方のメモを締め切り前に用意する |
| 原文を写させると言い換えが混ざる | 原文は文字の位置で返させ、Python で切り出す |
| 計画案の番号が無い | 意見募集の前に章・節・項の番号を振る |
| 中傷の扱いをAIに任せる | 印を付けるまでにし、公表の扱いは政策企画課が決める |
| 整理表をそのまま公表する | 公表する一覧表は人が作る。整理表には公表しない列がある |
上の2行が、この構成の失敗のほとんどです。 どちらも、まとめることで意見の数と重さが歪む失敗です。考慮は内容で行うという原則を、照合の仕組みと指示の両方で守れるかどうかで、運用に乗るかが決まります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 意見の本文と、受付簿に残る提出者の氏名・住所・連絡先です。本文には、提出者の暮らしや家族、健康の事情が書かれることがあります。
- 個人の情報を外してから渡す … 整理に要るのは意見の中身で、提出者の名前は要りません。外した情報は受付簿にだけ残します
- 処理する場所を決める … Global または DataZone のデプロイでは、指定した地理の外で処理されることがあるとされています。意見の本文をどこで処理してよいかを、庁内の規程と照らして先に決めてください
- この構成は意見の考慮を代替しません … 意見を受けて案を直すかどうか、その理由をどう書くかは担当課が決めます。この構成が出すのは、意見の並べ直しと、たたき台の文案だけです
- 件数で重み付けしない … まとめは読みやすくするためのものです。要旨にも回答にも、数の多さを判断の理由として書かないでください
- 公表する一覧表を自動で作らない … 要旨の誤りや個人の情報の残りが、そのまま公表されるのを防ぎます
- 提出者の属性を推測しない … 本文から年齢や立場を推し量って分類すると、意見の扱いに偏りが入り込みます
誤りが起きた場合のリスクは、意見の趣旨を変えて公表することと、論点を落として回答しないことの2つです。 前者は要旨を原文と並べずに確定させると起き、後者はまとめの照合を省くと起きます。どちらも、論点を point_id で最後まで追えるようにしておくことで防ぎます。
10まず何から始めるか
1週目:過去の1案件で試す
公表済みの一覧表がある過去の意見募集から1件を選び、意見から氏名などを外して手元のAIサービスに貼り付けます。論点の切り分けとまとめを、当時の一覧表と突き合わせ、落ちていた論点が無いかを最優先で見ます。
2週目:書き方の手引きを整える
政策企画課の手引きに、論点を切る細かさの例、要旨の長さ、量を表す言葉を使わないことを書き足します。あわせて、担当課が締め切り前に書く考え方のメモの様式を決めます。
3週目:処理する場所と個人の情報の扱いを決める
意見の本文をどのネットワークの区分で扱い、どの地理のデプロイで処理するかを、情報政策の担当課と決めます。個人の情報を外す規則も、このときに決めます。
4週目:取り込みと論点の切り分けをつなぐ
次に意見募集を行う案件で、フォームとメールの意見を毎晩取り込み、論点に切り分けて整理表に書き出すところまで作ります。この時点ではまとめと文案を出さず、論点の一覧だけを担当課に見てもらいます。
2か月目: 埋め込みによるまとめの候補と要旨を足し、担当課がまとめを分けた・つないだ件数を数えます。3か月目以降: 回答の文案と、要旨から落ちた論点の検出を足し、1通30分が何分になったかを実測します。類似度の基準の値を分野ごとに決め、担当課が考え方のメモを締め切り前に書くのが当たり前になった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 国の意見公募手続(行政手続法)で、意見提出期間が案の公示の日から起算して30日以上であること。提出意見の考慮は提出意見の内容に着目して行うもので、提出意見の多寡に着目するものではないこと。結果の公示で、命令等の題名、案の公示日、提出意見、提出意見を考慮した結果及びその理由を公示すること。公示がe-Govを用いて行われること | 総務省: 意見公募手続(いわゆるパブコメ)の概要 | 2026-10-06 |
structured outputs が指定したJSON Schemaに従わせる機能で、すべての項目を required にし、additionalProperties: false を付ける必要があること | Microsoft Learn: How to use structured outputs with Azure OpenAI | 2026-10-06 |
| 埋め込みが文章の意味を表すベクトルで、似た文章ほど近くなり、分類やクラスタリングに使えること。入力が1件あたり8,192トークンまで、配列が2,048件まで、1回の要求の合計が300,000トークンを超えると失敗すること | Microsoft Learn: Generate embeddings with Azure OpenAI | 2026-10-06 |
| プロンプトと出力が他の顧客や OpenAI などのモデルの提供元に提供されず、モデルの改善や許可のない学習に使われないこと。Global または DataZone のデプロイでは指定した地理の外で処理されることがあること | Microsoft Learn: Data, privacy, and security for Foundry Models sold by Azure | 2026-10-06 |
市区町村の意見募集の手続は、各自治体の条例や要綱で定められます。 本記事は総務省のページで確認できた国の手続の考え方を参考にしており、一覧表の様式、回答の区分、公表から除く意見の扱いは、各自治体の定めを確認してください。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0447)についてのご相談はこちらから。
