Media > AI活用ユースケース > 経営企画 > 市役所に届く「市民の声」を分類して担当課の候補と要旨を付け、毎月の傾向と未回答の滞留をまとめる

市役所に届く「市民の声」を分類して担当課の候補と要旨を付け、毎月の傾向と未回答の滞留をまとめる

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

Webフォーム・メール・手紙で届く「市民の声」を1通ずつAIに読ませ、分野と種別を付けて、所管表から担当課の候補を選ばせます。要旨と回答方針のたたき台も添え、広聴担当の仕事を「読んで回付先を決める」から「候補を確かめる」に変えます。

サマリー
生成AI
Azure OpenAI Service/ChatGPT/Claude
対象業界
教育/自治体
対象部門
経営企画/総務
対象業務
分類・仕分け/集計・分析
主な課題
人手が足りない/問い合わせが多い/期限・対応漏れが起きる
AIで行う処理
分類
主な効果
品質標準化/対応スピード向上/工数削減
導入難易度
★★★☆☆
実装レベル
本格構成
費用感
API連携(中)
人間の確認
条件付き
現在工数
120h/月
AI導入後
40h/月
想定削減
67%
年間削減
960h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. Webフォームとメールの声を、台帳に1件ずつ転記する。手紙は職員が入力してから転記する
  2. 1通ずつ読み、分野(道路、子育て、学校、ごみ、税など)と種別(要望・苦情・提案・問い合わせ・お礼)を判断する
  3. 事務分掌を思い出し、または調べて、回付する課を決める
  4. 回付票に要旨を書き、回答の要否と回答の期限を書き添える
  5. 庁内メールで担当課に回付し、台帳に回付日と回付先を書く
  6. 月末に、台帳を分野別・課別に数えて、月次の報告を作る
  7. 回答が遅れている案件を、台帳の回付日から拾い出して各課に催促する
導入後(After)
  1. 【人/自動】 Webフォームとメールの声は受付の仕組みから台帳に取り込む。手紙は職員が入力画面に入力する
  2. 自動取り込みをきっかけに、本文から電話番号・メールアドレス・郵便番号・住所の番地を伏せ字にする
  3. 自動Azure OpenAI に本文と所管表を渡し、論点ごとの分野・種別・担当課の候補・要旨・回答方針のたたき台を受け取る
  4. 自動返ってきた課コードが所管表にあるかを確かめ、無ければ `no_candidate` とする
  5. 自動安全に関わる内容や、要配慮個人情報を含む可能性がある声には印を付け、広聴担当に即時通知する
  6. 人広聴担当が候補を確かめ、回付先を決める。要旨と回答方針を直す
  7. 人回付票を担当課に送る
  8. 自動回答期限の3営業日前と、期限を過ぎた日に、台帳から未回答の案件を抜き出して一覧にする
  9. 自動月末に台帳を分野別・課別に集計し、その表をもとにAIが傾向の文章のたたき台を作る
  10. 人広聴担当が月次の報告を仕上げる
各工程の詳しい説明を読む
  1. Webフォームとメールの声を、台帳に1件ずつ転記する。手紙は職員が入力してから転記する
  2. 1通ずつ読み、分野(道路、子育て、学校、ごみ、税など)と種別(要望・苦情・提案・問い合わせ・お礼)を判断する
  3. 事務分掌を思い出し、または調べて、回付する課を決める
  4. 回付票に要旨を書き、回答の要否と回答の期限を書き添える
  5. 庁内メールで担当課に回付し、台帳に回付日と回付先を書く
  6. 月末に、台帳を分野別・課別に数えて、月次の報告を作る
  7. 回答が遅れている案件を、台帳の回付日から拾い出して各課に催促する

(a)回付先の判断が人によって違う。 同じ「児童クラブの申込み」の声でも、担当者によって回付先が変わります。回付された課が「うちではない」と差し戻すと、そこで数日が失われます。 差し戻しの多さは、判断を支える資料が無いことの表れです。

(b)1通に論点が複数あると、2つ目が漏れる。 急いで読むと、最初に書かれた論点の課にだけ回付してしまいます。残りの論点は、どの課にも届かないまま回答が作られます。 市民から「後半に書いたことへの返事がない」と再度の声が届いて、初めて分かります。

(c)滞留に気づくのが月末になる。 回答の期限を過ぎた案件は、月末に台帳を数えるときに見つかります。その時点で、期限から2週間以上過ぎている案件が混ざっています。

(d)月次の報告に丸2日かかる。 分野の付け方が担当者ごとに違うため、月末に付け直してから数えます。付け直す作業が、毎月いちばん時間を取ります。

  1. 【人/自動】 Webフォームとメールの声は受付の仕組みから台帳に取り込む。手紙は職員が入力画面に入力する
  2. 【自動】 取り込みをきっかけに、本文から電話番号・メールアドレス・郵便番号・住所の番地を伏せ字にする
  3. 【自動】 Azure OpenAI に本文と所管表を渡し、論点ごとの分野・種別・担当課の候補・要旨・回答方針のたたき台を受け取る
  4. 【自動】 返ってきた課コードが所管表にあるかを確かめ、無ければ no_candidate とする
  5. 【自動】 安全に関わる内容や、要配慮個人情報を含む可能性がある声には印を付け、広聴担当に即時通知する
  6. 【人】 広聴担当が候補を確かめ、回付先を決める。要旨と回答方針を直す
  7. 【人】 回付票を担当課に送る
  8. 【自動】 回答期限の3営業日前と、期限を過ぎた日に、台帳から未回答の案件を抜き出して一覧にする
  9. 【自動】 月末に台帳を分野別・課別に集計し、その表をもとにAIが傾向の文章のたたき台を作る
  10. 【人】 広聴担当が月次の報告を仕上げる

6番目が、この設計の分かれ目です。 候補がそろっていても、回付先を決めるのは人です。 回付が誤っていれば市民への回答が遅れ、候補の出来にかかわらず責任は市にあるからです。

8番目と9番目にAIを使っていないのも意図してのことです。 滞留の判定は日付の比較で、集計は数え上げです。機械的に決まるものを生成AIにさせると、数え違いの説明がつきません。

02今回想定するシステム構成

構成図
市民の声(Webフォーム・メール・手紙の入力)
   │
   ▼【受付】台帳へ取り込み(受付番号・受付日・経路)
   │
   ▼【前処理】連絡先の伏せ字化、長文の確認
   │
Azure OpenAI(Microsoft Foundry)── 構造化出力
   │   論点ごとに ① 分野 ② 種別 ③ 担当課の候補(所管表の課コード)
   │           ④ 要旨 ⑤ 回答方針のたたき台 ⑥ 要注意の印
   ▼
課コードの照合(所管表にあるか)
   ▼
【広聴担当が候補を確かめ、回付先を決める】
   ├──▶ 回付票を担当課へ(庁内メール)
   └──▶ 台帳に回付先・回答期限を記録
            ├──▶ 期限前・期限超過の一覧(日付の比較)
            └──▶ 月次の集計 → Azure OpenAI で傾向の文章のたたき台
役割想定する製品代替候補
生成AIAzure OpenAI(Microsoft Foundry)(分類・要旨・回答方針・月次の文章)OpenAI API、Claude API
受付自団体のWebフォーム、代表メールアドレス、手紙の入力画面電子申請システムの問い合わせ様式
保管市民の声の台帳(庁内のデータベースまたは表計算)既存の広聴システム
通知庁内メール・グループウェア庁内チャット

受付・台帳・庁内メールは新しく足すものではありません。 足すのは、台帳に取り込んだ声を Azure OpenAI に渡し、結果を台帳の列に書き戻す処理と、事務分掌から作る所管表です。所管表の整備が最初の準備作業になります。

Azure OpenAI を選ぶ理由は、データの扱いが文書で示されていることです。 Microsoft Learn では、プロンプトと応答は他の顧客や OpenAI に提供されず、基盤モデルの学習に使われないとされています。モデルはステートレスで、プロンプトや応答はモデルに保存されないとも説明されています。

処理する場所も選べます。 プロンプトと応答は、Global や DataZone のデプロイでない限り、顧客が指定した地域(geography)内で処理されるとされています。Global では、そのモデルがデプロイされている任意の地域で処理されうるとされているため、市民の声を扱うこの構成では、指定した地域内で処理されるデプロイの種類を選びます。

出力の形は構造化出力で固定します。 指定した JSON スキーマに従って応答させる機能で、Chat Completions API と Responses API の両方で使えるとされています。有効な JSON だけを保証していた従来の JSON モードとは違い、スキーマへの準拠まで求められるのが要点です。対応するモデルは一覧で示されており、gpt-4.1 や gpt-5-mini などが含まれます。API バージョンは 2024-08-01-preview が最初の対応版で、GA の v1 でも対応するとされています。

所管表は、検索の仕組みにつながず、毎回の指示に入れます。 構造化出力は、自分のデータを接続する「持ち込みデータ」のシナリオや Foundry Agents Service では現時点でサポートされていないとされています。約40課の表なら指示に収まる長さで、選択肢を列挙型で縛れることのほうが、この構成では大事です。

03どうやって実装するのか

Step1

処理の起点を決める

台帳に新しい声が取り込まれたことを起点にします。 Webフォームとメールは受付の仕組みから取り込まれ、手紙は職員が入力画面で入力し終えた時点で取り込まれます。1日1回にまとめて処理しません。 安全に関わる声が夕方に届いて翌朝まで誰も読まない、という状態を作らないためです。

入る経路は3つですが、そこから先は区別しません。 経路は台帳の列に残し、分類の処理は同じものを通します。経路ごとに処理を分けると、手紙だけが分類されない月ができます。

処理が終わった声には、台帳の「分類済み」の列に印を付けます。 印を付けるのは、結果を書き戻せたときだけです。印の付いていない行の数が、そのまま未処理の数になります。

月次の傾向は、毎月1日に前月分を対象に動かします。 滞留の一覧は、毎朝の始業前に作ります。

Step2

入力データを集める

データ中身取得元
市民の声の本文件名と本文。連絡先を伏せ字にしたもの台帳
受付の情報受付番号、受付日、経路、回答の希望の有無台帳
所管表課コード、課名、所管する事務の説明、よく届く声の例、所管しない事務の例事務分掌から作る一覧
分野と種別の一覧分野コードと定義、種別の定義自団体で決める一覧
過去の回付の例迷いやすい声と、実際に回付した課台帳から選んだもの

質を決めるのは所管表です。 事務分掌の条文をそのまま貼っても、「児童クラブ」という言葉は出てきません。市民が使う言葉で「よく届く声の例」を書き、「所管しない事務の例」も並べます。 境界に近い2つの課のどちらにも、相手の課の事務を「所管しない」と書いておくと、候補の取り違えが減ります。

氏名・住所・電話番号は、AIに渡すデータに入れません。 フォームの入力欄として分かれているものは、そもそも渡しません。本文の中に書かれた連絡先は、前処理で伏せ字にします。

Step3

データの取得方法を決める

台帳から、分類済みの印が無い行を取り出します。取り出すのは件名・本文・受付番号・経路だけです。 氏名や住所の列は、この処理の側からは読めないようにしておきます。

取るものどこから何に使うか
件名・本文台帳の該当行分類と要旨の材料
受付番号台帳の該当行結果を書き戻す先
所管表所管表の最新版担当課の候補の選択肢
分野・種別の一覧一覧の最新版分類の選択肢

所管表は、呼び出しのたびに最新版を読みます。 4月の組織改正で課が統合されると、古い課コードが候補に出続けます。所管表に版と適用開始日を持たせ、受付日に有効な版を使います。

Step4

AIへ渡す前に整形する

  1. 連絡先の伏せ字化 … 電話番号、メールアドレス、郵便番号、番地までの住所を、決まった形の文字列に置き換えます
  2. 署名と定型文の除去 … メールの署名や、フォームが自動で付ける文言を外します
  3. 引用の除去 … 返信メールの場合、過去のやり取りの引用部分を外し、新しく書かれた部分だけを残します
  4. 長さの確認 … 極端に長いものは段落で分け、論点の抽出を2回に分けます
  5. 重複の検知 … 同じ受付経路から同じ本文が短時間に届いたものに印を付けます
  6. 言語の確認 … 日本語以外で書かれたものは、分類の前に印を付けて人へ回します

1番目は、機械の規則で行います。 伏せ字にするかどうかをAIに判断させると、伏せ字にする前の文字列をAIに渡すことになります。規則で拾えない氏名などは、AIに「個人を特定できそうな記載がある」という印だけを付けさせ、人が確かめます。

3番目を軽く見ないでください。 引用を残すと、前回の回答文に書かれた課名に引っぱられ、同じ課ばかりが候補に出ます。

Step5

AIに処理させる

させるのは、1通を論点に分け、論点ごとに選択肢から選ぶことと、要旨と回答方針のたたき台を書くことだけです。

見るものさせること判断できないときの扱い
論点1通の中の論点を分け、それぞれの本文の該当箇所を示す論点が読み取れなければ topics を空にし needs_review
分野分野の一覧から1つ選ぶ当てはまらなければ other
種別要望・苦情・提案・問い合わせ・お礼・その他から1つ選ぶ決められなければ other
担当課の候補所管表の課コードから最大3つ、順位を付けて選ぶ当てはまる課が無ければ空にする
要旨論点ごとに、市民が求めていることを1〜2文で書く本文に無いことを書かない
回答方針のたたき台回答の要否、担当課が確かめるべき事実、回答で触れる観点を書く結論は書かない
要注意の印生命・安全に関わる、虐待や危険の訴え、要配慮個人情報を含む可能性迷ったら印を付ける

担当課の候補に順位を付けるのは、境界の事務のためです。 1位と2位が境界にある2課なら、広聴担当はその2課のどちらかを選ぶだけで済みます。候補が1つしか出ない設計にすると、外れたときに一から調べ直すことになります。

回答方針は「方針」までです。 「現地を確認したうえで、補修の予定の有無を回答する」は書かせますが、「補修します」とは書かせません。 何をするかは担当課が決めることです。

させないこと理由
回付先の決定所管の判断は市の責任。候補を出すまでにする
市民への回答文の作成回答の内容は担当課が事実を確かめて作る
所管表に無い課の提案組織に無い課に回付されると、誰も受け取らない
件数の集計数え上げは台帳の集計で行う
投稿者の推測誰が書いたか、どんな人かを推測させない

4行目が起きやすい失敗です。 月次の文章を書かせるときに生の台帳を渡すと、AIが自分で数え、台帳の集計と違う件数を文章に書きます。 渡すのは集計済みの表だけにします。

Step6

指示内容を固定する

あなたは市役所の広聴担当として、市民から届いた声を担当課に回付する準備をします。
回付先を決めるのは職員です。あなたは候補を出すところまでを行います。

【手順】
1. 本文を読み、市民が求めていることを論点ごとに分けてください。
   1つの声に複数の論点があれば、それぞれを別の topic にしてください。
2. 論点ごとに、分野を【分野の一覧】から、種別を【種別の一覧】から選んでください。
3. 論点ごとに、担当課の候補を【所管表】の課コードから最大3つ選び、
   ふさわしい順に並べてください。
4. 論点ごとに、要旨を1〜2文で書いてください。
5. 論点ごとに、回答方針のたたき台を書いてください。

【厳守事項】
- 課コードは【所管表】にあるものだけを使ってください。
  当てはまる課が無ければ、候補を空にしてください。課を作らないでください。
- 所管表の「所管しない事務の例」に当たる場合は、その課を候補にしないでください。
- 要旨には、本文に書かれていないことを書かないでください。
  市民の意図を補って書き足さないでください。
- 回答方針には、担当課が確かめるべき事実と、回答で触れる観点を書いてください。
  「対応します」「できません」などの結論は書かないでください。
- 誰が書いたか、どのような立場の人かを推測しないでください。
- 生命・身体の安全に関わる訴え、虐待や危険の訴え、病歴・障害など
  配慮が必要な個人の情報が含まれる可能性があれば、urgent_flags に書いてください。
  迷ったときは印を付けてください。
- 伏せ字([電話][住所]など)の中身を推測しないでください。
- 市民の声でないもの(広告、空の送信など)は、topics を空にし、
  document_type に種類を書いてください。

【分野の一覧】{categories}
【種別の一覧】{types}
【所管表】{jurisdiction_table}
【本文】{body}

「結論を書かない」を明記しないと、回答方針が回答文になります。 何も言わなければ、AIは丁寧に「ご不便をおかけし、早急に対応いたします」と書きます。担当課がそれを下敷きにすると、確かめる前に約束したことになります。

「所管しない事務の例」を条件として読ませるのは、境界の2課のためです。 所管表に書くだけでは、似た言葉のある課を候補に入れます。除外の条件として指示の側でも読ませます。

Step7

出力形式を固定する

構造化出力で、次の形のJSONを受け取ります。

{
  "receipt_no": "",
  "document_type": "citizen_voice | spam | empty | other",
  "topics": [
    {
      "excerpt": "",
      "category": "road | childcare | school | waste | tax | other",
      "voice_type": "request | complaint | proposal | inquiry | thanks | other",
      "dept_candidates": ["D101", "D205"],
      "summary": "",
      "reply_needed": true,
      "response_plan": { "facts_to_check": "", "points_to_address": "" }
    }
  ],
  "urgent_flags": ["safety | abuse | sensitive_info | personal_identifiable"],
  "needs_review": false
}

1つ目の理由は、選択肢を列挙型で縛れることです。 構造化出力は列挙型(enum)に対応しているとされています。category と voice_type に加え、dept_candidates の要素も所管表の課コードの列挙型にします。 所管表から、呼び出しのたびにスキーマを組み立てます。

2つ目は、スキーマの制約を先に知っておけることです。 Microsoft Learn では、すべてのフィールドを必須にすること、オブジェクトには常に additionalProperties: false を設定することが求められています。省略してよい項目は null との共用体型で表します。オブジェクトのプロパティは最大100個、入れ子は最大5レベルとされています。

3つ目は、スキーマで縛れないものを後段で確かめることです。 配列の minItems と maxItems、文字列の maxLength はサポートされていないキーワードとされています。「候補は最大3つ」「要旨は1〜2文」はスキーマでは強制できないため、書き戻す前に処理の側で数えます。4つ以上返ってきたら上位3つに切り、要旨が長すぎれば needs_review にします。

後段で確かめること満たさないときの扱い
dept_candidates が3つ以内上位3つに切る
課コードが受付日に有効な所管表にあるno_candidate として人へ
topics が1つ以上あるdocument_type を見て、人へ回すか除外する
urgent_flags が空でない即時に通知し、通常の順番を待たせない

出力の順序はスキーマの順に従うとされているため、excerpt を先頭に置きます。本文のどこを根拠にした論点かを先に書かせてから、分類させる並びです。

Step8

システムへ連携する

つなぎ先方式内容
台帳行の読み取りと列への書き戻し本文を取り出し、分類・候補・要旨・印を書き戻す
所管表・分野の一覧読み取りのみ選択肢とスキーマの列挙型を作る
Azure OpenAIAPI呼び出し(構造化出力)論点ごとの分類と候補、月次の文章のたたき台
庁内メール送信要注意の印の即時通知、期限前・期限超過の一覧

担当課への回付は、この処理からは送りません。 回付票を送るのは、広聴担当が回付先を決めた後です。候補のまま自動で送ると、外れた課で数日止まります。

台帳の列は、AIが書く列と人が書く列を分けます。 dept_candidates はAIの列、「回付先」は人の列です。同じ列を上書きすると、どこまでがAIの判断だったかが分からなくなります。

月次の文章は、集計済みの表だけを渡して書かせます。渡す表と、書かせることは次のとおりです。

渡す表中身書かせること
分野別の件数分野ごとの当月件数、前月件数、前年同月件数増えた分野と減った分野の上位3つ
種別の内訳分野ごとの要望・苦情・提案の件数苦情の割合が高い分野
課別の未回答課ごとの未回答件数、期限超過の件数、最長の経過日数滞留が目立つ課と、その件数
覆した件数候補を覆した件数と、課の組み合わせ所管表の見直しが要りそうな境界

「表に無い数字を書かない」「原因を推測しない」を指示に入れます。 苦情が増えた理由は、表からは分かりません。理由を書くのは、担当課に聞いた広聴担当です。

Step9

人が確認する

広聴担当は、すべての声について候補を確かめます。 回付先を決めるのは人なので、確認を省く声はありません。ただし、読む量は変わります。 要旨と候補がそろっているので、本文を全部読むのは迷うものだけです。

  1. urgent_flags のある声を先に見る … 安全や虐待に関わる訴えは、分類の順番を待たずに担当課と連絡を取ります
  2. 候補の1位で良いかを確かめる … 要旨と excerpt を読み、1位の課で良ければそのまま回付先にします
  3. 迷うものは本文を読む … 1位と2位が境界の2課のとき、no_candidate のとき
  4. 要旨と回答方針を直す … 回付票に載るのは人が確かめた文です
  5. 候補を覆したら記録する … どの候補を、どの課に変えたかを台帳に残します

5番目を省かないでください。 覆した記録は、所管表の「よく届く声の例」と「所管しない事務の例」を書き足す材料になります。記録が無いと、同じ取り違えが毎月続きます。

目標は、600件をならして1件4分です。 1位の候補で良い声は1〜2分、本文を読み直す声は10分前後という想定です。本文を読み直す割合が増えた月は、所管表が組織の実態に追いついていません。

Step10

例外に対処する

起きること対応
候補が空(no_candidate)広聴担当が所管を調べる。決めた課を所管表の例に書き足す
課コードが所管表に無い書き戻さずに no_candidate にする
市民の声でないもの(広告、空の送信)document_type を見て、台帳で除外の印を付ける
日本語以外の声前処理で印を付け、人へ回す
同じ人から同じ内容が繰り返し届く重複の印を付け、既存の受付番号にまとめるかは人が決める
返信メールで引用が外れないneeds_review にし、本文を人が読む
API が応答しない、拒否(refusal)が返る分類済みの印を付けずに残す。翌回の処理で再度試し、続けば人へ
所管表の版が切り替わる受付日に有効な版で分類する。切り替え前に受け付けた声は古い版のまま
回答期限を過ぎた毎朝の一覧に載せ、担当課と広聴担当に送る

上から2行目までが、運用の初めに多く出ます。 どちらもAIの問題ではなく、所管表の書き方の問題です。 覆した記録から所管表を直すほうが、指示を工夫するより効きます。

Step11

記録を残す

  • 元の本文(伏せ字にする前)と、AIに渡した伏せ字後の本文
  • AIの出力の全文と、そのとき使った所管表の版
  • 広聴担当が決めた回付先と、候補を覆した記録
  • 回付日、回答期限、回答日、催促した日
  • 月次の集計表と、AIが書いた傾向の文章のたたき台、人が仕上げた報告

2つ目で所管表の版を残すのは、組織改正で課が変わるためです。 版が残っていないと、昨年の声が「無い課」に回付されたように見えます。

伏せ字にする前の本文は、AIの処理とは別の場所で、閲覧できる職員を限って保管します。 保存期間は、自団体の文書の保存期間の定めに合わせます。

04実装レベルの3段階

最小構成:本文と所管表を手でAIの画面に貼り、候補と要旨を出させる / 1件ごとの分類と候補の提示
半自動化:上記+台帳から本文を取り出してAPIを呼び、結果を台帳の列に書き戻す / 分類・候補・要旨の一覧化
本格構成:上記+連絡先の伏せ字化、要注意の即時通知、滞留の毎朝の一覧、月次の集計と傾向の文章まで出す / 回付の準備と、滞留・傾向の把握の全体

最小構成では件数がさばけません。 1件ずつ貼り付けるので、600件には使えません。確かめるための段階です。 半自動化で、1件12分が7分程度になります。 分類と候補は自動になりますが、伏せ字化と月末の集計が手作業で残ります。本格構成で4分になり、この段階が本記事の想定です。 差が大きいのは、月末の付け直しと滞留の拾い出しが丸ごと無くなるからです。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、候補を覆した声が特定の課の組み合わせに集まっていることが分かります。そこで所管表を直してから本格構成に進みます。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
3 名
月間件数
600 件
1件あたり現在時間
12 分
1件あたり導入後時間
4 分
現在  600件 × 12分 ÷ 60 = 120 時間/月
導入後 600件 × 4分 ÷ 60 = 40 時間/月
月間削減時間
80h
削減率
67%
年間削減時間
960h
年間金額換算(時間単価3,000円)
288万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. Webフォーム・メール・手紙で市民の意見や要望を受け付け、広聴担当が1通ずつ読んで担当課へ回付している市区町村。月に数百件が届き、回付先の判断が担当者の経験に頼っている場合。回答の期限を過ぎた案件を後から探している場合。教育委員会や外郭の窓口にも声が届き、所管の切り分けに時間がかかる場合。
向いていない
  1. 届く声が月に数十件で、担当者が読めば足りる場合。受付から回付・回答までを管理する広聴システムがすでにあり、分類の基準が安定して運用されている場合。事務分掌の対応表を作れない、または頻繁に組織が変わって保守できない場合。なお、どの課が所管するか、どのように回答するかの決定は、この構成では代替できません。

07最小構成で試す方法

  1. 先月の台帳から50件を選ぶ(うち10件は、回付先を差し戻されたもの、論点が複数あったものを入れる)
  2. 所管表の試作を、よく回付する上位15課だけで作る。課名、所管する事務、よく届く声の例、所管しない事務の例の4列
  3. 50件の本文から連絡先を手で消し、所管表とあわせて、庁内で利用が認められた生成AIの画面に1件ずつ貼り付ける
  4. 「論点ごとに分け、分野・種別・担当課の候補を所管表から最大3つ、要旨を1〜2文で出してください。所管表に無い課は出さないでください。結論は書かないでください」と指示する
  5. 出てきた候補を、実際に回付した課と突き合わせる

50件は必ずやってください。 仕組みを組む前に、「所管表があれば候補が当たるのか」を確かめます。

出てきた内容判断
1位か2位に実際の回付先が入った台帳との連携に進む
所管表に無い課を出した、結論を書いた指示の書き方で直る。構成は有効
境界の2課を取り違える所管表の「所管しない事務の例」が先。 AIの問題ではない

3行目が出ることは珍しくありません。 失敗ではなく、回付の判断が職員の頭の中にしか無かったことが分かったということです。取り違えた声を所管表の例に書き足し、同じ50件で取り直してください。

08実装時につまずきやすいポイント

問題対策
所管表に無い課を候補に出す課コードを列挙型で縛る。 後段でも所管表と照合する
境界の2課を取り違える両方の課に「所管しない事務の例」を書く
1通の2つ目の論点が漏れる論点ごとに topics を分けさせる
回答方針が回答文になる「結論を書かない」を明記する
候補が4つ以上返るmaxItems はサポートされていない。後段で上位3つに切る
引用に引っぱられて同じ課ばかり出る前処理で引用を外す
月次の文章の件数が台帳と合わない集計済みの表だけを渡す
組織改正の後に古い課が出る所管表に版と適用開始日を持たせる
候補のまま自動で回付される回付票の送信は人が行う
覆した記録が残らない回付先の列を人の列として分け、変更を記録する

上の2行が、この構成の失敗のほとんどです。 どちらも、所管の判断を支える資料が職員の頭の中にしか無いことから来ています。所管表を資料として外に出せるかどうかで、運用に乗るかが決まります。

下の2行も同じくらい早く効きます。 候補を確かめずに回付すると、差し戻しが今より増えます。覆した記録が所管表に戻る流れを作らないと、候補は良くなりません。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 市民の氏名・住所・連絡先、そして本文に書かれた家族の事情、健康状態、近隣とのトラブルなどです。自団体が保有する個人情報として扱います。

  1. 利用目的の範囲で、必要最小限に渡す … 個人情報保護委員会の注意喚起では、行政機関等が生成AIサービスに個人情報を含むプロンプトを入力する場合は、特定された利用目的のための必要最小限の利用又は提供であることを十分に確認することとされています。氏名と連絡先は渡さず、本文の連絡先も伏せ字にします
  2. 機械学習に利用されないことを確かめる … 同じ注意喚起では、保有個人情報が応答結果の出力以外の目的で取り扱われる場合は法の規定に違反することとなる可能性があり、提供事業者が機械学習に利用しないこと等を十分に確認することとされています。Azure OpenAI では基盤モデルの学習に使われないとされていますが、契約と設定を情報政策の担当と確かめてください
  3. 不正使用の監視を知っておく … Microsoft Learn では、不正使用の兆候が検出された場合にプロンプトと応答の一部が確認の対象になりうること、管理対象の顧客は不正使用監視の変更を申請できることが示されています。市民の声を扱う前に、申請の要否を決めます
  4. 保存を伴う機能を使わない … Responses API の履歴や Stored completions などはサービス内にデータを保存するとされています。1件ごとに完結する呼び出しにし、保存を伴う機能は使いません
  5. 保存期間とアクセス権を決める … 伏せ字にする前の本文は、閲覧できる職員を広聴担当に限ります。保存期間は文書の保存期間の定めに合わせ、AIの出力も同じ期間で消します
  6. 庁内のガイドラインに合わせる … 総務省は「自治体におけるAI活用・導入ガイドブック<導入手順編>(第4版)」を令和7年12月16日に公表し、自治体が作成する生成AIシステム利用ガイドラインのひな形を別添として追加しています。自団体のガイドラインに照らして、利用の範囲を決めてください
  7. 回付先と回答は職員が決める … この構成が出すのは候補とたたき台だけです。どの課が所管するか、何を回答するかは市の判断で、AIの出力を理由にできません

誤りが起きた場合のリスクは、誤った課への回付で回答が遅れることと、安全に関わる声が埋もれることの2つです。 前者は回付を人が決めることで、後者は urgent_flags を「迷ったら付ける」にし、即時に通知することで防ぎます。

10まず何から始めるか

1週目:所管表を作る

事務分掌から、課コード・課名・所管する事務・よく届く声の例・所管しない事務の例の5列の表を作ります。約40課を一度に埋める必要はありません。回付の多い上位15課から埋めます。 この15課で月の声の大半が埋まります。

2週目:50件で試す

先月の声から50件を選び、連絡先を消して、所管表とあわせてAIに貼り付けます。実際の回付先が1位か2位に入るか、所管表に無い課を出していないかを最優先で見ます。

3週目:分野と種別の定義を決める

分野の一覧と種別の定義を、広聴担当の3名でそろえます。 ここが決まらないうちに仕組みを組むと、月次の集計が今と同じく付け直しになります。あわせて、情報政策の担当と、個人情報の取扱いと庁内ガイドラインとの整合を確かめます。

4週目:台帳から分類までをつなぐ

台帳から本文を取り出し、Azure OpenAI の構造化出力で分類させ、結果を台帳の列に書き戻すところまで作ります。この時点では回付先の決定に使わず、候補の一覧だけを見ます。

2か月目: 伏せ字化と要注意の即時通知を足し、候補を回付の準備に使い始めます。候補を覆した件数を毎週数えます。3か月目以降: 滞留の毎朝の一覧と月次の集計を足し、1件12分が何分になったかを実測します。覆した記録から所管表を直す流れが回り始めた時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-09-29/最終更新:2026-09-29
確認した内容情報源確認日
構造化出力が指定した JSON スキーマに従わせる機能で、Chat Completions API と Responses API の両方で使えること。従来の JSON モードは有効な JSON だけを保証していたこと。列挙型に対応すること。すべてのフィールドを必須にし、additionalProperties: false を設定する必要があること。プロパティは最大100個、入れ子は最大5レベルであること。minItems・maxItems・maxLength などがサポートされていないこと。出力がスキーマの順序に従うこと。対応モデルと最初の対応 API バージョン。持ち込みデータと Foundry Agents Service では未対応であることMicrosoft Learn: Azure OpenAI で構造化出力を使用する方法2026-09-29
プロンプトと応答が他の顧客や OpenAI に提供されず、基盤モデルの学習に使われないこと。モデルがステートレスであること。Global・DataZone 以外では指定した地域内で処理されること。Responses API や Stored completions がデータを保存すること。不正使用の監視と、その変更を申請できることMicrosoft Learn: Data, privacy, and security for Foundry Models sold by Azure2026-09-29
行政機関等(地方公共団体の機関を含む)が生成AIサービスに個人情報を含むプロンプトを入力する場合の注意点(必要最小限の利用又は提供であることの確認、機械学習に利用しないこと等の確認)個人情報保護委員会: 生成AIサービスの利用に関する注意喚起等2026-09-29
「自治体におけるAI活用・導入ガイドブック<導入手順編>(第4版)」が令和7年12月16日に公表され、生成AIシステム利用ガイドラインのひな形が別添として追加されたこと総務省: 報道資料2026-09-29

個人情報の取扱いと庁内での利用の範囲は、自団体の個人情報保護の担当・情報政策の担当と決めてください。 本記事は上記の公的情報と公開仕様で確認できた範囲だけを扱っています。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-0293)についてのご相談はこちらから。

AI活用について相談する
目次