他の自治体の条例・規則・要綱を集めた例規データから起案中の条例案に近い規定例を探し、条文の書きぶりと施行時期を比べる
各課が起案した条例・規則・要綱の条文案を入れると、他の自治体の例規データから内容の近い条を探し出します。見つかった規定例を、対象の範囲・義務の強さ・罰則・委任の書きぶりと、公布から施行までの期間で並べた比較表にして、法制の担当に返します。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 対象業界
- 士業/自治体
- 対象部門
- 法務/総務
- 対象業務
- 情報検索/比較検討
- 主な課題
- 判断に時間がかかる/属人化している/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 判断支援/属人化解消/検索時間短縮
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 起案課から条文案と起案の理由が届く
- 担当者が、参考になりそうな自治体を思い浮かべ、その自治体の例規集のサイトを開く
- 例規の名前や言葉で検索し、見つかった例規を開いて、該当する条を探す
- 次の自治体のサイトを開き、同じことを繰り返す。5〜10自治体ほど見る
- 見つかった条を表計算に貼り、条文案と読み比べて、違いをメモする
- 附則を開き、公布日と施行日を書き写して、周知の期間を数える
- 比較の結果を起案課への審査意見にまとめる
- 人担当者が、起案課から届いた条文案を検索の画面に貼り、例規の種別(条例・規則・要綱)と分野を選ぶ
- 自動条文案を条ごとに分け、それぞれを言葉と意味の両方で検索する
- 自動検索基盤が、他の自治体の例規の条を、似ている順に返す
- 自動同じ例規の条をまとめ、自治体ごとに上位の条をそろえる
- 自動生成AIが、条文案と見つかった条を観点ごとに比べ、比較表の下書きを作る
- 自動プログラムが、附則から公布日と施行日を取り出し、期間を計算する
- 人担当者が比較表を読み、参考にする規定例を選ぶ
- 人選んだ規定例を、その自治体の公開の例規集で現在の版か確かめる
- 人審査意見をまとめ、起案課に返す
各工程の詳しい説明を読む
- 起案課から条文案と起案の理由が届く
- 担当者が、参考になりそうな自治体を思い浮かべ、その自治体の例規集のサイトを開く
- 例規の名前や言葉で検索し、見つかった例規を開いて、該当する条を探す
- 次の自治体のサイトを開き、同じことを繰り返す。5〜10自治体ほど見る
- 見つかった条を表計算に貼り、条文案と読み比べて、違いをメモする
- 附則を開き、公布日と施行日を書き写して、周知の期間を数える
- 比較の結果を起案課への審査意見にまとめる
(a)探すのに時間の大半が消える。 例規集のサイトは自治体ごとに違い、同じ言葉で検索しても当たり方が違います。1つの自治体で該当する条にたどり着くまでに数分かかり、それを5〜10回繰り返します。
(b)言葉が違うと見つからない。 自分の条文案の言葉で検索すると、同じ趣旨を別の言葉で書いた自治体は出てきません。見つからなかったのか、その自治体には規定が無いのかが区別できません。
(c)比べる観点が人によって違う。 ある担当者は罰則の有無を見て、別の担当者は委任の書き方を見る。同じ起案でも、誰が審査したかで審査意見の中身が変わります。
(d)施行時期の比較が後回しになる。 公布から施行までの期間は、附則を開かないと分かりません。書きぶりの比較に時間を取られ、施行時期は見ないまま審査意見を出すことがあります。
(e)調べた結果が残らない。 比べた表は担当者の手元の表計算に残り、翌年に同じ分野の改正が来ても、前回どの自治体を見たかが分かりません。 同じ探し方を毎回最初からやり直しています。
- 【人】 担当者が、起案課から届いた条文案を検索の画面に貼り、例規の種別(条例・規則・要綱)と分野を選ぶ
- 【自動】 条文案を条ごとに分け、それぞれを言葉と意味の両方で検索する
- 【自動】 検索基盤が、他の自治体の例規の条を、似ている順に返す
- 【自動】 同じ例規の条をまとめ、自治体ごとに上位の条をそろえる
- 【自動】 生成AIが、条文案と見つかった条を観点ごとに比べ、比較表の下書きを作る
- 【自動】 プログラムが、附則から公布日と施行日を取り出し、期間を計算する
- 【人】 担当者が比較表を読み、参考にする規定例を選ぶ
- 【人】 選んだ規定例を、その自治体の公開の例規集で現在の版か確かめる
- 【人】 審査意見をまとめ、起案課に返す
8番目が、この設計の分かれ目です。 検索の対象は、集めた時点の例規の写しです。その後に改正・廃止されていれば、比較表は古い条文を並べていることになります。 起案に引用する前に、原典で確かめる手順を外しません。
5番目で生成AIにさせるのは、観点ごとの違いを書き出すところまでです。 どの書きぶりを採るかは、法制の担当と起案課が決めます。
02今回想定するシステム構成
他の自治体の例規の写し(条例・規則・要綱。取得日・公布日・施行日付き) ▼ 取り込み(条ごとに分割、附則は別に保持) Amazon Titan Text Embeddings V2 ── 条ごとにベクトルを作る ▼ Amazon OpenSearch Service(Sudachi で日本語を分かち書き、ベクトルと全文の両方を持つ) ▲ │【トリガー】担当者が条文案を貼って検索 AWS Lambda ── 条文案を条ごとに分け、検索を呼ぶ ▼ hybrid クエリ(言葉の一致+意味の近さ)+ 正規化の処理 │ 種別・分野・取得日で絞り込み ▼ Claude API ── 条文案と見つかった条を観点ごとに比べる │ ① 対象の範囲 ② 義務の強さ ③ 罰則・過料・公表 ④ 委任 ⑤ 施行期日 ▼ 比較表の下書き(自治体・例規名・条番号・原文・取得日・施行までの期間) ▼ 【担当者が原典で確かめて審査意見へ】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Amazon OpenSearch Service(hybrid クエリ、normalization-processor、Sudachi) | Azure AI Search、Vertex AI Search(Agent Search) |
| 埋め込み | Amazon Titan Text Embeddings V2(Amazon Bedrock) | Cohere Embed、OpenAI の埋め込みモデル |
| 生成AI | Claude API(観点ごとの比較と比較表の下書き) | Gemini API、OpenAI API |
| 連携 | AWS Lambda(取り込み、検索の呼び出し、附則の日付の計算) | AWS Step Functions |
| 保管 | Amazon S3(例規の写し、取得日の記録、検索と比較の記録) | ― |
自分の市の例規集のシステムは、そのまま使います。 この構成が持つのは、他の自治体の例規の写しだけです。最初の準備は、参考にする60自治体の例規から、起案の多い分野のものを集め、自治体名・例規名・種別・公布日・施行日・最終改正日・取得日を付けて保管することです。
検索基盤に Amazon OpenSearch Service を選ぶのは、日本語の分かち書きとベクトル検索を同じ所で扱えるからです。 公式の一覧では、Sudachi の分析プラグインが日本語に推奨とされ、OpenSearch 1.3 以上で使えます。ニューラル検索(Neural Search)は 2.9 以上、k-NN は 1.0 以上です。Sudachi は任意のプラグインとしてドメインに関連付けて使います。
この題材で効くのは、hybrid クエリです。 最大5つの検索を組み合わせ、それぞれの点数を検索パイプラインで正規化して1つの順位にまとめます。言葉の一致の検索(「管理不全」「勧告」を含む条)と、意味の近さの検索(同じ趣旨を別の言葉で書いた条)を並べ、どちらかで当たった条を1つの表に出せます。
03どうやって実装するのか
処理の起点を決める
起案課から条文案が届き、担当者が検索の画面に貼ったときに動かします。 検索は審査の作業の中で行うもので、定時の一括処理にはしません。 担当者が種別と分野を選んで検索を押すと、AWS Lambda が条文案を受け取ります。
例規の写しの取り込みは、これとは別に動かします。担当者が新しく集めた例規をS3の取り込みフォルダに保存したことを起点に、条ごとの分割、ベクトルの作成、索引への登録を行います。月に1回、参考にする自治体の例規集で改正の有無を確かめ、改正されたものを取り直します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 条文案 | 起案課が作った条例・規則・要綱の案の本文 | 担当者が検索の画面に貼る |
| 例規の写し | 他の自治体の例規の本文(題名・目次・本則・附則) | 各自治体の公開の例規集から担当者が保存したもの |
| 例規の属性 | 自治体名、例規名、種別、公布日、施行日、最終改正日、取得日 | 保存のときに付ける |
| 分野の一覧 | 空き家、環境、福祉、手数料など、例規に付ける分野 | 法制課が用意する一覧 |
| 自治体の属性 | 人口規模、都道府県、中核市などの区分 | 法制課が用意する一覧 |
質を決めるのは、取得日と最終改正日です。 この2つが無ければ、比較表の条文がいつの時点のものかを示せません。取得日の古い例規は検索の結果に印を付けて出し、原典での確認を促します。
例規の写しは、担当者が参考にする例規を選んで保存します。 著作権法第13条は、憲法その他の法令や、地方公共団体の機関が発する告示・訓令・通達などを、権利の目的とならない著作物としています。一方で、例規集のサイトの解説や検索の仕組み、民間の事業者が作った編集物は別です。 サイトの利用条件を確かめ、機械的に一括で取得することはしません。
データの取得方法を決める
取り込みでは、例規の本文を条ごとに分けます。見出し(括弧書き)、条番号、項・号を1つの塊として持ち、附則は本則と分けて別の項目に置きます。
| 持つ項目 | 中身 | 何に使うか |
|---|---|---|
text | 条の本文(見出しを含む) | Sudachi で分かち書きした言葉の一致の検索 |
embedding | 条の本文から作ったベクトル(1,024次元) | 意味の近さの検索 |
municipality / pref / size_class | 自治体名、都道府県、規模の区分 | 絞り込みと、自治体ごとのまとめ |
reiki_title / article_no | 例規名、条番号 | 比較表の見出しと原典への戻り先 |
kind / field | 条例・規則・要綱の種別、分野 | 絞り込み |
promulgated / effective / retrieved | 公布日、施行日、取得日 | 施行時期の比較と、版の古さの判断 |
supplementary | 附則の本文 | 施行期日と経過措置の確認 |
ベクトルは Amazon Titan Text Embeddings V2 で作ります。入力は最大8,192トークン・50,000文字で、出力は既定で1,024次元です。公式は、長い文書でも段落や節のような論理的な単位に分けることを勧めています。 条ごとに分けるのは、この勧めにも合います。日本語は多言語対応の言語の一覧に含まれています。
Sudachi の辞書には、法令用語を足します。 「管理不全空家等」「特定空家等」のような複合語が分割されると、言葉の一致の検索で当たり方が崩れます。辞書を差し替えても、すぐにはドメインに反映されません。 次の構成変更の時点か、新しいパッケージで索引を作り直して入れ替えるかのどちらかで、公式は索引の別名を使って切り替える方法を示しています。
AIへ渡す前に整形する
- 条文案を条ごとに分ける … 「第○条」の行で区切り、見出しと項・号を1つの塊にします
- 定義規定を別に扱う … 「この条例において、次の各号に掲げる用語の意義は」で始まる条は、定義語の一覧として取り出します
- 自分の市に固有の言葉を外す … 市の名前、課の名前、市の計画の名前は、検索の言葉から外します
- 例規の写しの取得日を確かめる … 取得から1年を超えたものには
staleの印を付けます - 廃止された例規を外す … 写しを取り直したときに廃止と分かったものは、索引から外さずに
repealedの印を付けます - 附則を分ける … 公布日と施行期日の書き方(「公布の日から施行する」「○年○月○日から施行する」「規則で定める日」)を取り出しやすいよう、附則を本則から分けて保持します
5番目で索引から消さないのには理由があります。 他の市が廃止した規定は、「なぜやめたのか」を調べる手がかりになります。 比較表では、廃止されたことが分かるように出します。
AIに処理させる
させるのは、条文案の1条と、検索で見つかった他の自治体の条を、決まった観点ごとに比べて違いを書き出すことだけです。
| 観点 | 何を見るか | 書かれていないときの扱い |
|---|---|---|
| 対象の範囲 | 誰・何が対象か(所有者、管理者、事業者、市民など) | not_stated |
| 義務の強さ | 「しなければならない」「努めなければならない」「ものとする」の別 | not_stated |
| 罰則・過料・公表 | 罰則・過料・氏名の公表の有無と、その前の手続(勧告・命令) | none |
| 委任 | 「規則で定める」「市長が別に定める」など、細目の委任先 | none |
| 施行期日 | 附則に書かれた施行期日の書き方 | not_stated |
比べた結果には、根拠にした原文を必ず写させます。 比較表を読む担当者は、AIのまとめではなく、写された原文で違いを確かめます。 写した原文が本当に検索結果の本文にあるかは、プログラムで文字列を突き合わせて確かめます。
| させないこと | 理由 |
|---|---|
| どの書きぶりを採るべきかの推奨 | 判断は法制の担当と起案課が行う |
| 条文案が法令に違反しないかの判断 | 法令の解釈は人が行う |
| 公布から施行までの期間の計算 | 日付から機械的に決まる。プログラムが計算する |
| 検索結果に無い自治体の例の補足 | 「多くの市では」のような書き方は、根拠の無い一般論になる |
| 条文の言い換え・要約による原文の置き換え | 比べるのは書きぶりそのもの。言い換えると違いが消える |
4行目がいちばん起きやすい失敗です。 検索の結果が3自治体しか無いときでも、AIは「他の多くの自治体でも同様の規定が見られます」と書き足しがちです。検索結果に無い例は、無いと書かせます。 見つからないこと自体が、その書きぶりが少ないという情報です。
指示内容を固定する
あなたは市の法制課の職員として、条例案の1条と、他の自治体の例規の条を比べます。
渡された【条文案】と【検索結果】だけを見て比べてください。推測で埋めないでください。
【比べる観点】
1. scope ............ 対象の範囲(誰・何が対象か)
2. obligation ....... 義務の強さ(しなければならない/努めなければならない/ものとする)
3. sanction ......... 罰則・過料・氏名の公表の有無と、その前の手続(勧告・命令)
4. delegation ....... 細目の委任先(規則で定める、市長が別に定める など)
5. effective_clause . 附則の施行期日の書き方
【厳守事項】
- 検索結果ごとに、観点ごとの違いを書いてください。
- 各観点の quote には、根拠にした原文を一字一句そのまま写してください。
言い換え・要約・句読点の変更をしないでください。
- 原文に書かれていない観点は "not_stated"、罰則や委任が無ければ "none" としてください。
- どの書きぶりを採るべきか、どれが望ましいかを書かないでください。
- 条例案が法令に適合するかを書かないでください。
- 公布から施行までの期間を計算しないでください。附則の文言を写すだけにしてください。
- 検索結果に無い自治体について書かないでください。
「多くの自治体では」「一般的には」のような表現を使わないでください。
- 検索結果に stale または repealed の印があれば、note にそのことを書いてください。
【条文案】{draft_article}
【検索結果】{search_results}
「言い換えをしない」と「句読点を変えない」を分けて書いているのには理由があります。 言い換えだけを禁じると、読点の位置や「及び」「並びに」を整えて写します。法令の文では、その違いが意味の違いです。 写しの正しさは、プログラムが文字列の一致で確かめます。
出力形式を固定する
次の形のJSONで受け取ります。 Claude API の構造化出力(output_config.format に type: "json_schema" とスキーマを指定)を使い、形の崩れた応答を比較表に流さないようにします。
{
"draft_article_no": "第5条",
"comparisons": [
{
"municipality": "",
"reiki_title": "",
"article_no": "",
"flags": ["stale", "repealed"],
"scope": { "summary": "", "quote": "" },
"obligation": { "value": "must | effort | shall | not_stated", "quote": "" },
"sanction": { "value": "penalty | fine | publication | none", "procedure": "", "quote": "" },
"delegation": { "value": "", "quote": "" },
"effective_clause": { "quote": "" },
"note": ""
}
]
}
1つ目の理由は、観点がそろった表にできることです。 obligation を must・effort・shall の3つに分けておけば、「義務とした市」「努力義務とした市」を数えて並べられます。 担当者の手で表を作り直す必要がありません。
2つ目は、quote を検証できることです。 プログラムが quote を検索結果の本文と突き合わせ、一致しないものは比較表に出す前に赤の印を付けます。
施行時期の比較は、プログラムが次の形で付け足します。
| 項目 | 中身 |
|---|---|
promulgated | 公布日(例規の属性から) |
effective | 施行日(例規の属性から。「規則で定める日」なら空欄) |
lead_days | 公布から施行までの日数(プログラムが計算) |
effective_clause | 附則の文言(AIが写したもの) |
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 検索の画面 | 社内のWeb画面から AWS Lambda を呼ぶ | 条文案・種別・分野を受け取る |
| Amazon Bedrock | API呼び出し | 条文案と例規の条のベクトルを作る |
| Amazon OpenSearch Service | hybrid クエリと検索パイプライン | 言葉と意味の両方で条を探す |
| Claude API | API呼び出し | 観点ごとの比較と比較表の下書き |
| Amazon S3 | 保存 | 例規の写し、検索と比較の記録 |
| 文書管理の仕組み | 担当者が手で添付 | 審査意見の資料として比較表を残す |
文書管理の仕組みへは自動で書き込みません。 比較表は審査の途中の資料で、担当者が原典を確かめて選んだものだけを審査意見に添えます。
検索の絞り込みは、hybrid クエリの filter で行います。filter はすべての検索に同じように効くため、種別・分野・規模の区分の条件は1つの bool クエリにまとめて渡します。点数の正規化は normalization-processor を使い、既定の min_max と arithmetic_mean から始めます。言葉の一致と意味の近さの重み(weights)は、合計が1.0になるように決め、試しの検索の結果を見て調整します。
検索の形は、おおむね次のとおりです(値は例)。
{
"query": {
"hybrid": {
"queries": [
{ "match": { "text": "条文案の本文" } },
{ "knn": { "embedding": { "vector": [0.012, -0.034], "k": 50 } } }
],
"filter": {
"bool": {
"filter": [
{ "term": { "kind": "条例" } },
{ "term": { "field": "空き家" } }
]
}
}
}
},
"size": 30
}
重みは、最初は言葉の一致を重くします。 条文は決まった言い回しが多く、言葉の一致で当たる例が多いためです。試しの検索で、別の言葉で書かれた例が落ちていると分かったら、意味の近さの重みを少しずつ上げます。 重みを変えた日と値は、検索の記録に残します。
人が確認する
担当者は、比較表のすべての行を読みます。 検索の結果は1つの条文案につき10〜20条ほどで、件数が少ないので全件を見ます。
- 赤の印(
quoteの不一致)を先に見る … 原文と写しが違う行は、検索結果の本文で読み直します staleとrepealedの印を見る … 古い写し、廃止された例規は、それと分かったうえで読みます- 参考にする規定例を選ぶ … 観点ごとの違いを見て、審査意見に挙げる例を決めます
- 選んだ例を原典で確かめる … その自治体の公開の例規集で、現在の版と一致するかを見ます。一致しなければ写しを取り直します
- 見つからなかった観点を記録する … 「罰則を置いた例は検索の範囲に無かった」ことも審査意見の材料にします
4番目を省かないでください。 写しを取った後に改正されていれば、審査意見に古い条文を挙げることになります。 起案課がそれをもとに条文を直すと、誤りが条例案にまで届きます。
例外に対処する
| 起きること | 対応 |
|---|---|
| 条文案が条に分かれていない(要綱の箇条書きなど) | 段落ごとに分けて検索する。分けられなければ全文で1回検索する |
| 検索結果が0件 | 意味の近さの重みを上げて再検索し、それでも無ければ「例が見つからない」と返す |
| 同じ例規の条ばかりが上位に並ぶ | 例規ごとに上位3条までにまとめ、自治体の数を確保する |
quote が検索結果の本文と一致しない | 比較表に赤の印を付け、人が読み直す |
| 附則の施行期日が「規則で定める日」 | effective を空欄にし、施行日を定めた規則を確かめるよう印を付ける |
| 取得日が古い例規しか見つからない | stale の印を付けて出し、原典での確認を求める |
| Sudachi の辞書を更新した | すぐには反映されない。新しい索引を作り、別名で切り替える |
| 生成AIが応答しない | 検索結果だけを比較表の形で出し、観点の欄を空けて返す |
上から2行目が、この構成の価値の出るところです。 「例が見つからない」は、その書きぶりを採る自治体が少ないという情報です。 0件を隠さず、検索の条件とあわせて審査意見の材料にします。
記録を残す
- 検索に使った条文案と、選んだ種別・分野・絞り込みの条件
- hybrid クエリの結果(条ごとの点数と順位)と、そのときの重み
- 生成AIの比較の結果(
comparisons)と、quoteの検証の結果 - 担当者が選んだ規定例と、原典で確かめた日
- 例規の写しの取得日と、取り直しの履歴
- 「例が見つからない」と返った検索の記録
4つ目で原典を確かめた日を残すのは、審査意見の根拠の時点を示すためです。 後から「この市の条文と違う」と指摘されたとき、いつの版を見たのかを答えられるようにします。
04実装レベルの3段階
最小構成では、探す作業は減りません。 貼る条を人が選ぶので、①の35分はそのまま残ります。比較の質を確かめるための段階です。 半自動化で、1件75分が45分程度になります。 言葉の一致の検索で多くの例が出ますが、別の言葉で書いた自治体の例は落ちます。本格構成で24分になり、この段階が本記事の想定です。 差が大きいのは、言葉の違う規定例を拾えるかどうかで、担当者が追加で例規集のサイトを開く回数が変わるからです。 段階を飛ばさないでください。 半自動化の検索を1か月使うと、分かち書きで崩れる法令用語が先に分かります。辞書に足してから本格構成に進むほうが、言葉の一致の検索の当たり方が安定します。
05工数削減シミュレーション
導入後 40件 × 24分 ÷ 60 = 16 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 法制・文書の担当課が、各課から届く条例・規則・要綱の起案を毎月数十件審査し、そのたびに他の自治体の例規集のサイトを1つずつ開いて似た規定を探している市・区・町。新しい政策の条例や国の法改正に合わせた条例の改正で、「他の市はどう書いているか」を条文の単位で比べる必要がある場合。他の自治体の例の探し方が、経験の長い職員に偏っている場合。
- 起案のほとんどが自分の例規集の中の定型の改正(引用条項の追随や字句の修正)で、他の自治体の例を見る必要が少ない場合。参考にする自治体の例規を集めて保管する手間をかけられない場合。なお、条例案が法令に違反しないか、どの書きぶりを採るかの判断は法制の担当と起案課が行うもので、この構成では代替できません。検索で見つかった他の自治体の例規が、いまも有効な最新の版かは、その自治体の公開の例規集で確かめる必要があります。
07最小構成で試す方法
- 過去半年の審査で、他の自治体の例を調べた起案から5件を選ぶ(当時の比較の表が残っているもの)
- その5件で参考にした自治体と、参考にしなかった近い自治体の例規を合わせて30ほど集め、条ごとに分けたテキストにする
- 手元のAIサービスに条文案の1条と、集めた条のうち関係しそうな5〜6条を貼り、「観点ごとに違いを書き、根拠の原文をそのまま写してください。どれが望ましいかは書かないでください」と指示する
- 出てきた比較を、当時の担当者が作った表と突き合わせる
5件は必ずやってください。 検索基盤を組む前に、「観点ごとの比較が、審査に使える形で出るのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時の表と同じ違いが出た | 検索基盤を組み、探す部分を自動にする |
| 原文を言い換えて写した | 指示の書き方と文字列の検証で直る。構成は有効 |
| 当時の担当者が見落とした違いが出た | 比べる観点の一覧を法制課で見直す |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 古い写しの条文を審査意見に挙げる | 取得日を比較表に必ず出し、原典での確認を手順から外さない |
| 法令用語が分かち書きで崩れる | Sudachi の辞書に足す。反映には索引の作り直しが要る |
| 同じ例規の条ばかりが上位に並ぶ | 例規ごとにまとめ、自治体の数を確保する |
| 「勧告」と「命令」の違いを取り違える | 言葉の一致の検索を残し、意味の近さだけに頼らない |
| 原文を言い換えて写す | 指示で禁じ、quote を文字列の一致で検証する |
| 「多くの自治体では」と書き足す | 検索結果に無い例について書かせない |
| hybrid クエリを別のクエリで包む | 最上位に置かないと、正規化が効かないことがある |
| 例規集のサイトから一括で取得する | 利用条件を確かめ、担当者が選んで保存する |
上の2行が、この構成の失敗のほとんどです。 1行目は検索の外の問題、2行目は検索の中の問題ですが、どちらも「当たっているように見えて、実は違う」結果を出します。
下から2行目は、公式の注意に沿っています。 hybrid クエリは最上位のクエリとして使う必要があり、function_score などで包むと、実行時のエラーになるか、正規化のパイプラインが黙って飛ばされることがあるとされています。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 他の自治体が公開している例規の写しと、起案課が作った公表前の条例案です。条例案は意思形成の途中の情報で、議会への提出前に外へ出ることを想定していません。
- 条文案を外部のAIに送る前に、庁内の規程を確かめる … 生成AIと埋め込みのサービスに条文案を送ります。情報セキュリティポリシーで、公表前の情報を外部のクラウドで扱えるかを確かめてから始めます
- 検索の記録を外へ出さない … どの分野の条文案を、いつ検索したかの記録は、政策の検討の動きそのものです
- 比較表を審査の根拠として単独で使わない … 比較表は下書きです。審査意見に挙げる規定例は、原典で確かめたものに限ります
- 例規集のサイトの利用条件を守る … 法令や告示などの本文と、サイトの解説・編集物は扱いが違います。一括取得をせず、担当者が選んで保存します
- AIに書きぶりの推奨をさせない … どの書きぶりを採るかは、法制の担当と起案課の判断です
- 他の自治体の例規の写しを、外へ再配布しない … 写しは審査のために集めたものです。比較表を起案課に渡すときも、原典の所在(例規集のURLと確認日)を添え、写しそのものを配る運用にしません
誤りが起きた場合のリスクは、古い条文や写し違いの条文を審査意見に挙げることと、公表前の条例案が外に漏れることの2つです。 前者は原典での確認と quote の検証で、後者は送る先の確認と記録の管理で守ります。
10まず何から始めるか
1週目:参考にする自治体と分野を決める
過去1年の審査で参考にした自治体を洗い出し、起案の多い分野の上位5つを決めます。60自治体のすべてを最初から集める必要はありません。分野を絞って集めます。
2週目:5件で試す
過去の起案から5件を選び、関係する例規の条を手元のAIサービスに貼って、観点ごとの比較をさせます。原文を言い換えていないか、どれが望ましいかを書いていないかを最優先で見ます。
3週目:例規の写しを集め、条ごとに分ける
上位5分野の例規を、取得日・公布日・施行日を付けて保存し、条ごとに分けます。附則を分けて持つ形を、この時点で決めます。
4週目:言葉の一致の検索を作る
Amazon OpenSearch Service に Sudachi を関連付け、条ごとの索引を作り、言葉の一致の検索を試します。崩れる法令用語を書き出し、辞書に足す候補にします。
2か月目: 意味の近さの検索を足して hybrid クエリにし、重みを調整します。観点ごとの比較と quote の検証を組み込みます。3か月目以降: 施行時期の計算を足し、1件75分が何分になったかを実測します。写しの取り直しの周期が分野ごとに決まり、4名が同じ比較表で審査意見を書けるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 著作権法第13条が、憲法その他の法令、地方公共団体の機関等が発する告示・訓令・通達その他これらに類するもの等を権利の目的とならない著作物とし、そのうち翻訳物・編集物は国や地方公共団体の機関等が作成するものに限ること | e-Gov 法令API: 著作権法 | 2026-10-08 |
| Sudachi の分析プラグインが日本語に推奨とされ OpenSearch 1.3 以上で使えること。Neural Search が 2.9 以上、k-NN が 1.0 以上。Sudachi の辞書の再関連付けがすぐには反映されず、次の blue/green デプロイか、新しいパッケージでの索引の作り直しと別名の切り替えで反映すること | AWS: Plugins by engine version in Amazon OpenSearch Service | 2026-10-08 |
hybrid クエリが最大5つの検索を組み合わせ、検索パイプラインで点数をまとめること。filter がすべての検索に効くこと。最上位のクエリとして使う必要があり、function_score などで包むとエラーになるか正規化が飛ばされうること | OpenSearch Documentation: Hybrid query | 2026-10-08 |
正規化の手法(min_max が既定、l2、z_score)と組み合わせの手法(arithmetic_mean が既定ほか)。weights の合計が1.0であること | OpenSearch Documentation: Normalization processor | 2026-10-08 |
| Titan Text Embeddings V2 の入力が最大8,192トークン・50,000文字、出力が既定1,024次元であること。長い文書は段落や節に分けることが勧められていること。多言語対応の一覧に日本語が含まれること | AWS: Amazon Titan Text Embeddings models | 2026-10-08 |
構造化出力を output_config.format(type: "json_schema")で指定すること | Claude: Structured outputs | 2026-10-08 |
条例案の内容や書きぶりの判断は、法制の担当と起案課で行ってください。 本記事は公開仕様と著作権法の条文で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1071)についてのご相談はこちらから。
