自治体の情報公開の担当が、新しい開示請求を受けたときに、過去の開示決定・不開示の理由・審査会の答申から似た請求を探し、当時の判断と理由を根拠付きで返す
新しい開示請求を受けたときに、過去の開示決定・不開示の理由・審査会の答申から似た請求を探し、当時どこを不開示にし、どの号を理由にしたかを決定番号付きで返します。所管課への助言のメモに使います。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 対象業界
- 自治体
- 対象部門
- 法務/総務
- 対象業務
- 内容確認・チェック/情報検索
- 主な課題
- 判断に時間がかかる/属人化している/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 判断支援/品質標準化/属人化解消/検索時間短縮
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 開示請求書を受け付け、決定簿に請求の内容と所管課を記録する
- 似た請求が過去に無かったかを、担当の記憶と決定簿の文字の検索で探す
- 見つかった請求の決定通知書と不開示の理由を開いて読む。審査請求があったものは答申も読む
- 所管課に回すときに、過去の判断を助言のメモに書いて添える
- 所管課の決定の案が届いたら、メモと照らして確かめる
- 自動決定簿の新しい決定と、決定通知書・不開示の理由の文書を読み込む
- 自動Claude が不開示の理由の文書を、不開示とした部分ごとに「部分の種類」「理由の号」「理由の説明」に分ける
- 自動審査会の答申があれば、対象の決定に「答申の結論(妥当/一部取消し/取消し)」を付ける
- 人担当が、新しく付いた部分の種類を週に1回まとめて確かめる
- 自動決定ごとに1件として、不開示とした部分を `nested` で持たせて検索基盤に登録する
- 人担当が、決定簿の画面で請求の内容を入れて「過去の判断を見る」を押す
- 自動請求の文に似た過去の請求を探し、不開示とした部分と理由の号を、決定ごとに並べる
- 自動Claude が、似た決定から助言のメモを書き、各行に決定番号を付ける。取り消された決定は別の欄に分ける
- 人担当が助言のメモを読み、決定通知書で確かめてから、所管課に添えて回す
各工程の詳しい説明を読む
- 開示請求書を受け付け、決定簿に請求の内容と所管課を記録する
- 似た請求が過去に無かったかを、担当の記憶と決定簿の文字の検索で探す
- 見つかった請求の決定通知書と不開示の理由を開いて読む。審査請求があったものは答申も読む
- 所管課に回すときに、過去の判断を助言のメモに書いて添える
- 所管課の決定の案が届いたら、メモと照らして確かめる
(a)決定簿の文字の検索では、似た請求が見つからない。 「〇〇地区の道路工事の設計書」と「〇〇線の改良工事の積算資料」は、同じ種類の文書を求めています。言葉が違うと、決定簿の検索には出てきません。
(b)覆された判断を前例にしてしまう。 3番目で見つけた決定が、後に審査会の答申で取り消されていても、決定通知書だけを読むと、それが分かりません。 答申は別のフォルダにあります。
(c)異動で判断の積み重ねが消える。 担当は2〜3年で替わります。「この種類の文書は前にこう判断した」という記憶が、異動のたびに薄れます。
(d)所管課ごとに不開示の範囲がぶれる。 助言のメモが無いまま所管課が判断すると、同じ種類の文書で、課によって不開示の範囲が違うことが起きます。請求者は複数の課に同じ種類の請求を出すことがあり、ぶれはそのまま比べられます。
取り込み(毎晩)
- 【自動】 決定簿の新しい決定と、決定通知書・不開示の理由の文書を読み込む
- 【自動】 Claude が不開示の理由の文書を、不開示とした部分ごとに「部分の種類」「理由の号」「理由の説明」に分ける
- 【自動】 審査会の答申があれば、対象の決定に「答申の結論(妥当/一部取消し/取消し)」を付ける
- 【人】 担当が、新しく付いた部分の種類を週に1回まとめて確かめる
- 【自動】 決定ごとに1件として、不開示とした部分を
nestedで持たせて検索基盤に登録する
請求の受付の後
- 【人】 担当が、決定簿の画面で請求の内容を入れて「過去の判断を見る」を押す
- 【自動】 請求の文に似た過去の請求を探し、不開示とした部分と理由の号を、決定ごとに並べる
- 【自動】 Claude が、似た決定から助言のメモを書き、各行に決定番号を付ける。取り消された決定は別の欄に分ける
- 【人】 担当が助言のメモを読み、決定通知書で確かめてから、所管課に添えて回す
3番目で答申の結論を決定に結びつけるのが、この設計の分かれ目です。 答申は決定とは別の文書で、結びつけておかないと、取り消された決定がそのまま前例として出てきます。
9番目で担当が確かめるのは、助言のメモが過去の判断の材料にすぎないためです。 同じ種類の文書でも、今回の文書に書かれている内容が違えば、不開示の範囲も違います。
02今回想定するシステム構成
【取り込み】決定簿/決定通知書・不開示の理由(共有フォルダ)/審査会の答申 ▼【トリガー】毎晩 AWS Lambda ── 新しい決定と答申の読み込み、個人名の置き換え ▼ Claude API ── 不開示とした部分ごとに、種類・号・説明へ分ける ▼【人】部分の種類の確認(週1回) Amazon OpenSearch Service(決定の索引:請求の文、文書名、所管課、答申の結論、不開示の部分は nested) 【請求の受付の後】担当が「過去の判断を見る」を押す ▼ Amazon OpenSearch Service ├─ more_like_this:請求の文に似た過去の請求 ├─ nested + inner_hits:不開示とした部分のうち、条件に合うもの └─ nested の集計:似た決定で使われた号の内訳 ▼ Claude API ── 助言のメモ(各行に決定番号、取り消された決定は別欄) ▼ 決定簿(助言のメモの欄)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Amazon OpenSearch Service(more_like_this、nested クエリと inner_hits、nested の集計) | Azure AI Search、Vertex AI Search(Agent Search) |
| 生成AI | Claude API(不開示の理由の分解と、助言のメモの作成) | Gemini API、OpenAI API |
| 連携 | AWS Lambda(取り込み、検索と集計の呼び出し、決定簿への返却) | AWS Step Functions |
| 保管 | Amazon S3(取り込みの記録と、助言のメモの版) | ― |
| 台帳 | 既存の決定簿と共有フォルダ | ― |
決定簿には、助言のメモの欄にだけ返します。 決定通知書や、開示の対象の文書には触れません。
似た請求は、more_like_this で探します。 公式のドキュメントでは、more_like_this は入力した文や文書を解析して、それを最もよく特徴づける語を選び、その語を含む他の文書を探すとされています。入力には自由な文も、索引の中の文書も使えます。請求の文をそのまま入れれば、言い回しが違っても、特徴的な語が重なる請求が上に来ます。
03どうやって実装するのか
処理の起点を決める
取り込みと検索で、起点が2つあります。
取り込みは毎晩です。 決定は所管課が行い、決定通知書の写しが総務課に届きます。翌日以降の請求の判断に載れば足ります。 決定簿で決定日が付いた請求の文書を読み、不開示の理由の文書が無ければ担当に知らせます。
答申は、届いた日に担当が決定簿に結びつけます。 答申の数は年に十数件なので、対象の決定番号を担当が入れ、取り込みで結論を付けます。 答申の結論をAIに推測させると、「一部取消し」と「取消し」の取り違えが起きます。
検索は、担当が決定簿の画面で「過去の判断を見る」を押したときに動きます。 請求の内容を決定簿に入れた後に押します。請求者と話して請求の内容を特定し直したときは、もう一度押します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 決定簿 | 請求番号、受付日、請求の内容、所管課、決定の種類(全部開示・部分開示・不開示・不存在)、決定日 | 決定簿 |
| 不開示の理由 | 不開示とした部分、理由の号、理由の説明 | 決定通知書(共有フォルダ) |
| 審査会の答申 | 答申番号、対象の決定番号、結論、開示すべきとされた部分 | 答申(共有フォルダ) |
| 部分の種類の一覧 | 個人の氏名、印影、法人の単価、警備の配置、審議の途中の意見 など | 総務課で用意する一覧 |
質を決めるのは、いちばん下の部分の種類の一覧です。 理由の説明は所管課ごとに書き方が違い、「職員以外の個人の氏名」「関係者の氏名」「個人名」が別の言葉で書かれます。 種類の一覧にそろえないと、部分の組み合わせで検索できません。
決定の種類に「不存在」を含めるのは、文書が無いという判断も前例になるためです。 同じ種類の文書を前回は「作成していない」と答えたのに、今回は開示すると、前回の判断の正しさが問われます。
データの取得方法を決める
決定通知書と不開示の理由の文書は、Lambda が共有フォルダから読みます。理由の文書の書き方は所管課ごとに違うので、Claude で部分ごとに分けます。
索引の項目は、次のように持たせます。
| 項目 | 型 | 使いどころ |
|---|---|---|
decision_id | keyword | 決定番号。助言のメモの根拠 |
request_text | text | 請求の内容。more_like_this の対象 |
doc_titles | text | 対象となった文書の名前 |
section | keyword | 所管課 |
decision_type | keyword | 全部開示・部分開示・不開示・不存在 |
decided_on | date | 決定日 |
appeal_outcome | keyword | 答申の結論(なし/妥当/一部取消し/取消し) |
withheld | nested | 不開示とした部分(part_type、clause、reason) |
withheld を nested にするのは、部分の組み合わせを崩さないためです。 公式のドキュメントでは、オブジェクトの配列は既定で平らにされ、各項目の値が配列ごとにまとめて保存されるとされています。平らにすると、「氏名を個人の情報の号で」と「単価を法人の情報の号で」が混ざり、「単価を個人の情報の号で」不開示にした決定のように誤って当たります。
検索は、次のように組みます。
GET /foi_decisions/_search
{
"size": 8,
"query": { "bool": {
"must": [ { "more_like_this": {
"fields": ["request_text", "doc_titles"],
"like": ["〇〇線道路改良工事の設計書と積算の資料一式"],
"min_term_freq": 1, "min_doc_freq": 2, "max_query_terms": 20 } } ],
"should": [ { "nested": { "path": "withheld",
"query": { "term": { "withheld.part_type": "法人の単価" } },
"inner_hits": { "size": 3 } } } ],
"filter": [ { "range": { "decided_on": { "gte": "now-8y/d" } } } ]
} },
"aggs": { "parts": { "nested": { "path": "withheld" },
"aggs": { "by_clause": { "terms": { "field": "withheld.clause" } } } } }
}
must に more_like_this、should に nested を置くのは、似た請求であることを条件にし、部分の種類が重なる決定を上に寄せるためです。 部分の種類を must にすると、今回は何を不開示にするかがまだ決まっていない段階で、決め打ちの検索になります。 担当が画面で部分の種類を選ばないときは、should を外して引きます。
min_term_freq を1にしているのは、請求の文が短いためです。 公式のドキュメントでは、入力の中の出現が min_term_freq より少ない語は無視され、既定は2です。1行の請求の文では、ほとんどの語が1回しか出ないので、既定のままでは語が選ばれません。min_doc_freq は既定で5で、扱いの少ない種類の文書の請求を拾えるよう2に下げます。
AIへ渡す前に整形する
- 部分ごとに分ける … 1つの決定に複数の不開示の部分があれば、部分ごとに1要素にします
- 部分の種類を付ける … 総務課の部分の種類の一覧から選びます
- 号をそろえる … 「第7条第2号」「7条2号」「法人等情報」を、条例の号の表記に機械的にそろえます
- 不開示とした中身を入れない … 索引に入れるのは、部分の種類と理由の説明だけです。不開示とした情報そのものは入れません
- 個人名を置き換える … 請求の内容や理由の説明に出てくる個人名は、記号に置き換えます。請求者の氏名は索引に入れません
- 答申の結論を付ける … 担当が結びつけた答申の結論を
appeal_outcomeに入れます
4番目が、この構成でいちばん外せない線です。 理由の説明に「〇〇の住所が記載されているため」と書かれていれば、その住所は索引に入れません。索引から不開示にした情報が読めたら、決定そのものを無にします。 取り込みで理由の説明を読み、具体的な値が書かれていれば置き換えます。
5番目で請求者の氏名を入れないのは、助言のメモで請求者が分かると、請求者ごとに判断を変えたように見えるからです。 開示の判断は、誰が請求したかによりません。
AIに処理させる
AIの仕事は2か所です。 取り込みで不開示の理由を部分ごとに分けることと、検索の結果から助言のメモを書くことです。探すことと数えることは検索基盤が行います。
| させること | 中身 |
|---|---|
| 理由の分解 | 部分ごとに、部分の種類・理由の号・理由の説明に分ける。種類は一覧から選ぶ |
| 助言のメモの作成 | 似た決定で、どの部分をどの号で不開示にしたか、全部開示にしたものは何かを並べる |
| 根拠の添付 | 各行に、根拠の決定番号と決定日を付ける |
| 取り消された決定の分離 | appeal_outcome が取消し・一部取消しの決定を別の欄に書き、答申で開示すべきとされた部分を写す |
| させないこと | 理由 |
|---|---|
| 今回の請求で開示するかの判断 | 実施機関の決定。文書の中身を見ないと決まらない |
| 不開示の範囲の提案 | 今回の文書に何が書かれているかで決まる |
| 号の当てはめの解釈 | 条例の解釈は担当と所管課が行う |
| 根拠の無い前例の追加 | 一般的な情報公開の知識で埋めない |
| 請求者についての記述 | 判断は請求者によらない |
最初の2行が、いちばん外せない線です。 助言のメモに「今回も法人の単価を不開示にする」と書かれると、所管課はそのまま決定の案にしたくなります。過去に不開示にしたことは、今回の文書を不開示にする理由になりません。
指示内容を固定する
あなたは市の総務課で、開示請求を所管課に回すときに添える助言のメモを作る係です。
渡された検索結果だけを根拠にしてください。一般的な情報公開の知識で補わないでください。
【今回の請求】{request_text}
【検索結果】似た過去の決定ごとに、決定番号、決定日、所管課、決定の種類、対象の文書、
不開示とした部分(部分の種類・号・理由の説明)、答申の結論
【集計】似た決定で使われた号の内訳
【助言のメモに書くこと】
1. 似た決定ごとに1行。対象の文書、決定の種類、不開示とした部分の種類と号
2. 各行に根拠の決定番号と決定日
3. 答申で取り消された決定(一部取消しを含む)は「取り消された判断」の欄に分け、
答申で開示すべきとされた部分を写す
4. 似た決定の間で、同じ部分の種類の扱いが分かれていれば、その旨を書く
【厳守事項】
- 今回の請求で開示するか、どこを不開示にすべきかを書かないでください。
- 号の当てはめが正しいかを評価しないでください。
- 取り消された決定を、前例として示さないでください。
- 検索結果に無い決定を足さないでください。根拠の決定番号の無い行は書かないでください。
- 請求者について書かないでください。個人名を書かないでください。
「取り消された決定を前例として示さない」を明記しないと、AIは似ている順に並べます。 取り消された決定が一番似ていることは珍しくありません。同じ種類の文書だからこそ、審査請求を受けたのです。
4番目の「扱いが分かれていれば書く」は、所管課ごとのぶれを見つけるためです。 同じ部分の種類を、ある課は開示し、別の課は不開示にしていれば、今回の判断の前に総務課で整理すべき論点です。
検索結果は、Claude の検索結果ブロックで渡します。 決定1件を1つの search_result にし、source に決定番号を入れます。引用を有効にすると、答えの文にどの決定を引いたかが付きます。引用は既定で無効で、1つのリクエストの検索結果はすべて同じ設定にします。
出力形式を固定する
nested の検索で inner_hits を付けると、決定ごとに、条件に当たった部分だけが添えて返ります。 公式のドキュメントでは、inner_hits の _nested がどの要素から来たかと、その位置を示します。決定通知書のどの部分かを、担当がすぐ見つけられます。
決定簿に返す形は、次のJSONです。
{
"request_id": "R-2026-1008-03",
"similar": [
{ "decision_id": "D-2024-0412", "decided_on": "2024-06-20",
"section": "道路課", "decision_type": "部分開示",
"withheld": [ { "part_type": "法人の単価", "clause": "第7条第3号" },
{ "part_type": "個人の印影", "clause": "第7条第2号" } ],
"appeal_outcome": "なし" }
],
"overturned": [
{ "decision_id": "D-2021-0877", "appeal_outcome": "一部取消し",
"to_be_disclosed": "工事の総額と工種ごとの金額" }
],
"clause_counts": { "第7条第2号": 9, "第7条第3号": 5 },
"divergence": ["法人の単価:道路課は不開示、公園課は開示(D-2023-0215)"]
}
1つ目の理由は、overturned を similar と別の配列にできることです。 画面でも別の枠に出し、取り消された判断が前例の一覧に紛れません。
2つ目は、clause_counts で号の内訳を数字で見せられることです。 公式のドキュメントでは、nested の集計は nested の各要素を別の隠れた文書として集計し、要素の中の項目の関係を保つとされています。似た決定で、どの号がどれだけ使われたかが分かります。
3つ目は、divergence で所管課ごとのぶれを示せることです。 総務課で整理する論点の一覧として、そのまま使えます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 決定簿 | 毎晩の読み取り/画面からの呼び出し | 決定と請求の内容を読み、助言のメモを返す |
| 共有フォルダ | 毎晩の読み取り | 決定通知書、不開示の理由、答申 |
| Amazon OpenSearch Service | 索引への登録と検索・集計 | 決定の索引、more_like_this、nested |
| Claude API | Lambda からの呼び出し | 理由の分解、助言のメモ |
人が確認する
この構成の確認は、必須です。 開示の決定は、住民の知る権利と、文書に書かれた個人や法人の利益の両方に関わります。
- 部分の種類を週に1回確かめる … 担当が、新しい種類の候補と自信の低いものを直します
- 助言のメモを決定通知書で確かめる … 根拠の決定番号から通知書を開き、部分と号が合っているかを見ます
- 取り消された判断を答申で確かめる …
overturnedの決定は、答申の本文で開示すべきとされた範囲を読みます - 所管課に回す … 助言のメモを添えて回し、判断は所管課が今回の文書を見て行います
1件あたり12分を目安にします。 似た決定が数件で、取り消された判断が無ければ数分で終わり、取り消された判断や所管課ごとのぶれがある請求は20分を超えます。
3番目を省かないでください。 「一部取消し」の答申は、決定のどの部分を開示すべきとしたかが本文にしか書かれていません。to_be_disclosed はAIが答申から写したもので、写し漏れがあると、取り消されなかった部分まで前例のように読めてしまいます。 答申の本文と1度は突き合わせます。
助言のメモを所管課に回すときは、決定番号を残したまま渡します。 所管課が自分で決定通知書を開けるようにするためで、メモの要約だけで判断させないための工夫です。
例外に対処する
| 起きること | 対応 |
|---|---|
| 似た決定が見つからない | 「似た決定なし」と出し、文書名だけで引いた結果を参考として出す |
| 理由の文書が部分ごとに分けられない | 取り込みで止め、担当が決定通知書から書き直す |
| 種類の一覧に無い部分 | 「新しい種類の候補」として週1回の確かめに回す |
| 条例の改正の前の決定 | 改正日より前の決定に印を付け、号の番号の読み替えを表示する |
| 理由の説明に具体的な値が残っていた | その決定を索引から外し、置き換えをやり直してから入れ直す |
| 答申の対象の決定番号が分からない | 担当が答申の本文から特定するまで、その答申を結びつけない |
| Claude の呼び出しに失敗した | 似た決定の一覧と号の内訳をそのまま出す |
| 文書の存否を答えずに拒否した決定 | 似た決定の一覧には「存否を答えなかった」とだけ出し、対象の文書名を出さない |
| 請求の対象が複数の所管課にまたがる | 所管課ごとに分けて検索し、課ごとの前例を別の表にする |
5行目は、見つかった時点で必ず止めます。 不開示にした情報が索引から読める状態は、その決定を出した意味を失わせます。
8行目も同じ理由です。 文書があるかどうかを答えること自体が不開示の情報を明かす場合に、存否を答えずに拒否しています。過去の決定の一覧に文書名が出れば、その文書があったことが庁内に広まります。
記録を残す
- 取り込みの件数、止めた決定とその理由、置き換えの結果
- AIが付けた部分の種類と、担当が直した種類
- 請求ごとの検索の条件、返ってきた決定番号、助言のメモの版
- 助言のメモを確かめた担当と日時、所管課に回した日
- その後の決定が、助言のメモの前例と同じ範囲だったか
助言のメモの版を残すのは、審査請求に備えるためです。 審査請求を受けたとき、決定の前に総務課がどの前例を示していたかを、弁明書を書く担当が確かめられます。
最後の行は、所管課ごとのぶれが減ったかを見る材料です。 前例と違う範囲で決定したときは、その理由を決定簿に残しておくと、次に同じ種類の請求が来たとき、違いの理由ごと前例になります。
04実装レベルの3段階
半自動化で、①の探す時間は大きく減ります。 ただし決定通知書と答申を読んで助言のメモを書く作業は人が行います。本格構成で1件12分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化を1か月使うと、部分の種類の一覧の足りないところと、号の表記のぶれが先に見つかります。そこを直してから助言のメモを足すほうが、担当がメモを信用しやすくなります。
05工数削減シミュレーション
導入後 60件 × 12分 ÷ 60 = 12 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 開示請求が月に数十件あり、情報公開の担当が所管課の不開示の判断を確かめている市区町村・都道府県。過去の開示決定と不開示の理由、審査会の答申を記録として残しているが、似た請求を探すのが担当の記憶頼みになっている場合。人事異動で担当が2〜3年ごとに替わり、判断の積み重ねが引き継がれにくい場合。
- 開示請求が年に数件で、過去の決定を探す必要がほとんど無い場合。過去の決定の記録が紙の決定簿だけで、不開示の理由が残っていない場合。なお、開示するか、どこを不開示にするかの決定は実施機関が条例に照らして行うもので、この構成はそれを代わりに行いません。
07最小構成で試す方法
- 請求の多い所管課を1つ選び、その課の過去3年の部分開示の決定を20件集める(個人名は消す)
- 手元のAIサービスに不開示の理由を貼り、「不開示とした部分ごとに、次の種類の一覧から1つを選び、号と一緒に書き出してください」と指示する
- 部分の種類と号の組み合わせを表計算で数える
- 同じ種類の部分を、決定によって開示したり不開示にしたりしていないかを見る
- 審査会の答申があった決定に、表で印を付ける
| 出てきた内容 | 判断 |
|---|---|
| 同じ種類の部分の扱いが、決定ごとにそろっている | 索引と検索の構築に進む |
| 同じ種類の部分の扱いが分かれている | 構成の効き目そのもの。所管課と整理する論点が見つかった |
| 理由の説明に、不開示とした部分が書かれていない | 決定通知書の書き方を決めるのが先。 検索の問題ではない |
2行目が出ることは珍しくありません。 失敗ではなく、第3章の(d)が実際に起きていたということです。 その場合は、どちらの扱いに寄せるかを所管課と決め、決定簿に残します。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 言い回しの違う請求が見つからない | more_like_this で、請求の文の特徴的な語で探す |
| 短い請求の文で語が選ばれない | min_term_freq を1に下げる |
| 部分の種類と号の組み合わせが混ざって当たる | 不開示の部分を nested で持たせる |
| 取り消された決定を前例として示す | 答申の結論を決定に結びつけ、別の欄に分ける |
| 同じ部分が別の種類に散る | 種類を一覧から選ばせ、週1回人が直す |
| 号の表記がばらばらで集計できない | 取り込みで条例の号の表記にそろえる |
| 不開示にした情報が索引に入る | 理由の説明の具体的な値を置き換え、残っていれば取り込みで止める |
| AIが今回の不開示の範囲を提案する | 判断と提案を禁じる指示と、担当の確認 |
4行目が、この構成を作る理由そのものです。 似ている順に並べるだけなら、決定簿の検索の改良で足ります。取り消された判断を分けて示せることが、過去の判断を使う仕組みとしての価値です。
3行目は、作ってから気づくことが多い失敗です。 テストの数件では、平らなまま保存しても結果が正しく見えます。部分の多い決定が増えたころに、組み合わせの誤りが混ざり始めます。 索引を作る最初の段階で nested にしておきます。
7行目は、取り込みの規則だけでは防ぎきれません。 置き換えの漏れは、運用の中で担当が見つけることになります。見つけたら、その型を取り込みの規則に足すことを、担当の手順に入れておきます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 開示請求の内容、開示の決定と不開示の理由、審査会の答申です。不開示の理由には、不開示にした情報の手がかりが含まれることがあります。
- 不開示にした情報を索引に入れない … 索引に入れるのは部分の種類と理由の説明だけで、具体的な値は置き換えます
- 請求者の情報を扱わない … 請求者の氏名と連絡先は索引にも助言のメモにも入れません
- 見られる範囲を絞る … 索引と助言のメモは総務課の担当だけが使い、所管課には助言のメモだけを渡します
- 判断をAIに書かせない … 開示の決定は実施機関が条例に照らして行い、助言のメモは過去の判断の材料にとどめます
- 使えるネットワークを決める … 外部のAIとクラウドの検索基盤を、庁内のどの業務の端末から使えるかを、情報政策の担当と先に決めます
- 外部のAIに渡す範囲を絞る … Claude に渡すのは、置き換え済みの請求の内容と、部分の種類・号・理由の説明だけです
国の審査会の答申も、参考にできます。 総務省の情報公開・個人情報保護関係の答申・判決データベースでは、審査会の答申を用語や諮問庁、答申番号で検索できます。令和7年1月から答申書の読点が「,」から「、」に変わったとされ、用語で検索するときは両方で試します。 市の索引に入れるかは担当が決め、入れる場合も市の決定とは別の種類として持たせます。
誤りが起きた場合のリスクは、不開示にした情報を索引から漏らすことと、取り消された判断を前例として繰り返すことの2つです。 前者は取り込みの置き換えと止める規則で、後者は答申の結論の結びつけと別欄の表示で防ぎます。
10まず何から始めるか
1週目:決定通知書の中身を数える
過去3年の部分開示の決定から50件を選び、不開示の部分と号が書き分けられている割合と、具体的な値が書かれている割合を数えます。
2週目:部分の種類の一覧を作る
総務課の担当と、過去の決定でよく出る部分を見ながら、部分の種類を20〜30個決めます。似た言葉をどの種類にまとめるかも、ここで決めます。
3週目:1つの所管課で試す
最小構成で、1つの所管課の決定を部分の種類に分け、扱いのぶれが無いかを見ます。
4週目:答申を結びつける
過去8年分の市の審査会の答申を1件ずつ読み、対象の決定番号に結びつけます。取り消された決定の一覧が、この時点でできあがります。
2か月目: 決定の索引と検索を作り、総務課で使います。3か月目以降: 助言のメモを足して所管課に添え、決定が前例と同じ範囲だったかを毎月数えます。担当が替わっても、請求を受けた当日に過去の判断と取り消された判断を所管課に示せるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 情報公開法第5条で不開示情報が記録されている場合を除き開示しなければならず、不開示情報が号ごとに定められていること。第6条の部分開示。第9条で開示・不開示の決定を書面で通知すること。第10条で開示決定等を請求から30日以内に行うこと。第19条で審査請求があったときに情報公開・個人情報保護審査会に諮問すること。第25条で地方公共団体がこの法律の趣旨にのっとり情報公開の施策を策定し実施するよう努めること | e-Gov法令API: 行政機関の保有する情報の公開に関する法律 | 2026-10-08 |
| 情報公開・個人情報保護関係の答申・判決データベースで、答申を用語、諮問庁、答申番号等で検索できること。令和7年1月以降、答申書の読点が「,」から「、」に変わったこと | 総務省: 情報公開・個人情報保護審査会 答申状況 | 2026-10-08 |
more_like_this が入力を解析して特徴的な語を選び、その語を含む文書を探すこと。入力に自由な文と索引の文書を使えること。min_term_freq の既定が2、min_doc_freq の既定が5、max_query_terms の既定が25であること | OpenSearch Documentation: More like this | 2026-10-08 |
nested クエリで inner_hits を付けると当たった要素が返り、_nested が要素と位置を示すこと。オブジェクトの配列が既定で平らに保存されること | OpenSearch Documentation: Nested query | 2026-10-08 |
| nested の集計が、nested の各要素を別の隠れた文書として集計し、要素の中の項目の関係を保つこと | OpenSearch Documentation: Nested aggregation | 2026-10-08 |
検索結果ブロック(source・title・content)で引用付きの答えが返ること。引用が既定で無効で、1つのリクエストの検索結果はすべて同じ設定にすること | Claude Docs: Search results | 2026-10-08 |
開示の決定と不開示の範囲の判断は、実施機関が各自治体の情報公開条例に照らして行ってください。 本記事は公開仕様と法令で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0872)についてのご相談はこちらから。
