Media > AI活用ユースケース > 品質管理 > 建物・設備の法定点検の要否と期限を、根拠付きで答えられるようにする

建物・設備の法定点検の要否と期限を、根拠付きで答えられるようにする

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

「この建物は定期報告が要るのか」「次はいつまでか」という社内からの照会に、制度の考え方と、点検台帳に残っている実績と、根拠のページの3点をそろえた回答案を返します。適用の可否は断定させません。

サマリー
利用ツール
Amazon Kendra/Azure AI/ChatGPT/Claude/Gemini/Make/n8n/OpenSearch/Power Automate
対象業界
不動産/介護/医療/宿泊/自治体
対象部門
品質管理/総務
対象業務
問い合わせ対応/情報検索
主な課題
問い合わせが多い/属人化している/情報が見つからない
AIで行う処理
検索(RAG)
主な効果
属人化解消/工数削減/検索時間短縮
導入難易度
★★☆☆☆
実装レベル
半自動化
費用感
API連携(中)
人間の確認
必須
現在工数
21h/月
AI導入後
6h/月
想定削減
71%
年間削減
180h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 現場からメールまたはチャットで照会が届く
  2. 文面を読み、どの建物のどの設備の話かを読み取る。書かれていなければ聞き返す
  3. 点検台帳の表計算ファイルを開き、該当する棟のシートを探す
  4. 前回の実施日と実施者を見る。台帳に無ければ共有フォルダの報告書PDFを探す
  5. 制度の側を確かめる。所在地の自治体のページや、過去の案内を開く
  6. 過去に同じ質問に答えたメールを探し、そのときの書きぶりを見る
  7. 「一般的にはこうです」「前回はいつでした」「詳しくは窓口へ」という形で返信を書く
  8. 判断がつかないものは、所管の窓口か委託先へ問い合わせてから返す
導入後(After)
  1. 人現場が照会フォームに、建物名・設備の種類・聞きたいことを入力する
  2. 自動必須項目の不足をその場で確かめ、足りなければ入力欄に戻す
  3. 自動点検台帳、保存した公開資料、過去の照会記録を横断して検索する
  4. 自動照会を切り分ける。どの建物か、何を聞かれているか、台帳に行があるか
  5. 自動関係しそうな制度の考え方を、根拠にした箇所の引用つきで書く
  6. 自動3点セット(制度の説明/台帳の実績/根拠のページと取得日)に組み立てる
  7. 自動`answer_with_source` / `needs_check` / `out_of_scope` を機械の規則で決める
  8. 人総務が回答案を開き、引用と台帳の値を確かめて送る
  9. 人`needs_check` のものは、所管の窓口・委託先・有資格者に確かめてから返す
  10. 自動照会と回答を記録に追記する
  11. 自動月次で公開資料を取り直し、本文が変わったものを総務に知らせる
各工程の詳しい説明を読む
  1. 現場からメールまたはチャットで照会が届く
  2. 文面を読み、どの建物のどの設備の話かを読み取る。書かれていなければ聞き返す
  3. 点検台帳の表計算ファイルを開き、該当する棟のシートを探す
  4. 前回の実施日と実施者を見る。台帳に無ければ共有フォルダの報告書PDFを探す
  5. 制度の側を確かめる。所在地の自治体のページや、過去の案内を開く
  6. 過去に同じ質問に答えたメールを探し、そのときの書きぶりを見る
  7. 「一般的にはこうです」「前回はいつでした」「詳しくは窓口へ」という形で返信を書く
  8. 判断がつかないものは、所管の窓口か委託先へ問い合わせてから返す

(a)探す時間が、答える時間より長い。 5番と6番で、台帳と報告書と過去のメールと自治体のページを行き来します。答えは3行で済むのに、その根拠をそろえるのに十数分かかります。

(b)根拠が過去のメールになっている。 6番が実質的な情報源です。前に誰かが調べた結果がメールの本文に残っており、それを写して返しています。元のページが更新されても、メールは更新されません。

(c)自治体の違いが毎回問題になる。 3県にまたがっているため、報告の時期や対象が同じとは限りません。調べ直すのが面倒なので、いちばん件数の多い自治体の説明を他にも当ててしまうことが起きます。

(d)台帳に無い建物が、いちばん時間を食う。 賃借の店舗や途中で取得した棟は、台帳の行そのものがありません。「無いから対象外」なのか「記録していないだけ」なのかが分からず、確かめるところから始まります。

(e)答えが人に付いている。 担当1名の頭の中に、棟ごとの経緯と委託先と過去のやり取りが入っています。台帳には、その半分も書かれていません。

  1. 【人】 現場が照会フォームに、建物名・設備の種類・聞きたいことを入力する
  2. 【自動】 必須項目の不足をその場で確かめ、足りなければ入力欄に戻す
  3. 【自動】 点検台帳、保存した公開資料、過去の照会記録を横断して検索する
  4. 【自動】 照会を切り分ける。どの建物か、何を聞かれているか、台帳に行があるか
  5. 【自動】 関係しそうな制度の考え方を、根拠にした箇所の引用つきで書く
  6. 【自動】 3点セット(制度の説明/台帳の実績/根拠のページと取得日)に組み立てる
  7. 【自動】 answer_with_source / needs_check / out_of_scope を機械の規則で決める
  8. 【人】 総務が回答案を開き、引用と台帳の値を確かめて送る
  9. 【人】 needs_check のものは、所管の窓口・委託先・有資格者に確かめてから返す
  10. 【自動】 照会と回答を記録に追記する
  11. 【自動】 月次で公開資料を取り直し、本文が変わったものを総務に知らせる

8番目を省かないのが、この設計の前提です。 回答案は下書きで、送信は人が行います。自動で送ると、制度の説明が断定として現場に届きます。

7番目を機械の規則に置いているのにも理由があります。 台帳に行があるか、資料から区分を示せるかという事実の記録はAIにさせますが、それを「答えてよい」と決めるのは規則の側です。

11番目は、この構成を持たせ続けるための工程です。 取得したときの本文を保存し、変わったら知らせるまでを入れておかないと、第3章の(b)が形を変えて戻ってきます。

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

構成図
社内ポータルの照会フォーム / チャット
   ▼【トリガー】フォームの送信
Power Automate ── 必須項目の確認(建物 / 設備の種類 / 聞きたいこと)
   ▼            └─ 不足があればその場で聞き返す
Azure AI Search ── ハイブリッド検索(BM25 と ベクトル を RRF で統合)
   │                  └ セマンティックランカーで上位の並びを付け直す
   │   ① 点検台帳(建物・設備・前回実施日・実施者・次回の目安)
   │   ② 所管の窓口が公開している資料(取得日と本文を保存したもの)
   │   ③ 過去の照会と回答の記録
   ▼
Claude API ①(構造化出力)── 照会の切り分けと台帳の突合
   ▼
Claude API ②(引用)── 制度の考え方を、根拠にした箇所つきで書く
   │   ※ 引用と構造化出力は同時に使えない。呼び出しを2つに分ける
   ▼
Power Automate ── 3点セットに組み立てる
   │   ① 制度の説明(引用つき)② 台帳の実績 ③ 根拠のページと取得日
   ▼
【人】総務が確認して送る ──▶ 照会記録へ追記
   ▼
needs_check / out_of_scope ──【人】所管の窓口・有資格者へ
役割想定する製品代替候補
処理Claude APIOpenAI API、Gemini API
検索基盤Azure AI SearchAmazon Kendra、OpenSearch
連携Power AutomateMake、n8n

点検台帳と社内ポータルは、新しく足すものではありません。 台帳は表計算ソフトのまま置き、検索基盤へ取り込みます。書き込みはこの構成から行いません。 実施日や実施者を機械が書き換えると、台帳が根拠として使えなくなります。

ハイブリッド検索を使う理由は、聞き方と台帳の書き方がそろわないためです。 現場は「非常灯の点検」と書き、台帳には「非常用の照明装置」と入っています。逆ランク融合(RRF)は、並列で実行した複数のクエリのランク付けをマージして1つの結果セットにする仕組みで、スコアは 1/(rank + k)、k は60のような小さな値がよいとされています。複数の方法で上位に出たものが上に来るので、言い換えに強くなります。

そのうえにセマンティックランカーを重ねます。 BM25またはRRFでスコア付けされた初期の結果セットに二次のランク付けを加える機能です。ここで効くのが上限で、上位50件だけが再ランクに進みます。 48棟分を丸ごと投げると、目的の棟が50件に入りません。建物で先に絞る理由が、ここにあります。

セマンティックキャプションも使います。 要約するフィールドからの逐語的な文とフレーズの抽出で、新しい内容を作る生成AIモデルは含まれないとされています。根拠を示すのに向いています。

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

Step1

処理の起点を決める

社内ポータルの照会フォームの送信を起点にします。 メールとチャットで受けている今の形では、建物名も設備の種類も書かれていない照会が半分近くを占め、聞き返すところから始まります。

フォームで必ず取るのは3つです。建物(台帳の一覧から選ぶ)、設備の種類(建築/防火設備/建築設備/昇降機等/消防/分からない)、聞きたいこと(要否/期限/誰がやれるか/手続き/その他)。 自由記述はそのあとです。

「分からない」を選べるようにしてください。 現場は設備の区分を知りません。埋めさせると適当に選ばれ、検索が外れます。分からないと書かれていれば、自由記述から拾う経路へ回せます。 メールとチャットの窓口も残し、総務がフォームに転記します。

Step2

入力データを集める

データ中身取得元
照会の本文建物、設備の種類、聞きたいこと、自由記述、送信者照会フォーム
点検台帳の行建物、用途、階数、延べ面積、所在地、設備、前回実施日、実施者、次回の目安点検台帳
建物の別名通称、旧名称、住所、館内での呼び方台帳の別名列
公開資料所管の窓口が公開している資料の本文、URL、取得日、ハッシュ保存した資料
過去の照会記録質問、回答、参照した資料のID、人が直した箇所照会記録

質を決めるのは、上から3行目と4行目です。 別名列が無いと「本館」「◯◯寮」といった呼び方で台帳が引けません。取得日が無いと、いつ時点の説明なのかを回答に書けません。

点検台帳には、判定のための列を足します。 用途、階数、延べ面積、所在地の自治体。要否の話は、この4つに毎回ぶつかります。 過去の照会記録は、人がどこを直したかを見るために持ちます。

Step3

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

台帳は日次で読み、1行を1つの文書として索引に入れます。1行の中に「棟の名称・別名・用途・所在地・設備の区分・前回実施日・実施者・次回の目安」を1つの文として持たせます。 値だけを並べた行は、意味での検索にかかりません。

公開資料は月次で取り直して索引に入れます。保存するのは本文とURLと取得日、そして本文のハッシュです。 ハッシュが変われば更新されたということなので、その資料を根拠にした回答を一覧にします。

検索は、建物で先に絞り、そのうえでハイブリッド検索をかけます。 取るのは、台帳の該当行(実績)、公開資料の制度の記述(考え方と頻度の文言)、セマンティックキャプション(根拠として示す逐語の箇所)、過去の回答(人が直した箇所)の4つです。

@search.rerankerScore は0.00から4.00で返り、@search.score とは別に報告されます。 この値で足切りをするなら、しきい値を細かくしすぎないでください。 分布は環境やモデルの更新で変動しうるとされています。

Step4

AIへ渡す前に整形する

  1. 必須項目の確認 … 建物・設備の種類・聞きたいことがそろっているか。不足はその場で聞き返す
  2. 建物名の正規化 … 別名列と突き合わせ、台帳の建物IDに変換する。複数に当たれば候補を出す
  3. 台帳の行の取得 … その建物の全設備の行を取る。区分が「分からない」でも全行を持つ
  4. 公開資料の絞り込み … 所在地の自治体の資料を優先し、無ければ一般的な説明を使う
  5. 取得日の確認 … 3か月以上前なら、回答に「この時点の資料です」と添える
  6. 文字数の調整 … 台帳の行と資料の抜粋をあわせて、渡す量の上限に収める
  7. 重複の確認 … 同じ建物・設備の照会が直近にあれば、前回の回答を添える

2番目を軽く見ないでください。 建物名の表記ゆれが、この構成で最も多い失敗です。「◯◯ビル」「◯◯ビルディング」「旧△△ビル」が同じ棟を指していることが、48棟もあれば必ず起きます。

6番目の上限には根拠があります。 要約モデルが1文書あたり最大2,000トークンを受け取り、トークンは約10文字とされています。超えた分は無視されるので、行を長くしすぎると末尾の「次回の目安」が落ちます。

Step5

AIに処理させる

させるのは、照会を切り分けて台帳と突き合わせ、関係しそうな制度を並べることまでです。 具体的には、①照会の分類、②建物の特定(名称・別名・住所との突合)、③実績の書き写し(前回実施日・実施者・次回の目安をそのまま写す)、④関係しそうな制度(資料の区分名と頻度の文言、資料のID)、⑤確認すべき点(用途・階数・延べ面積・所在地の窓口)、⑥経路の判定材料の6つです。

ここに applies: true / false のような欄を置きません。 欄があれば埋まり、埋まれば回答に出ます。適用の可否を書く場所を作らないのが設計です。

させないこと理由
個別の建物が対象に当たるかの結論判断するのは所管の窓口(特定行政庁・消防)と有資格者
条文の解釈資料に書かれた文言を超える。罰則にも触れない
期限の断定台帳の「次回の目安」は実績からの目安。期限は窓口の通知で決まる
台帳に無い建物の推測一般論から実績を作らない。無いことは無いと書く
自治体差の吸収「一般にはこう」までにとどめ、所在地の窓口へ回す

3行目がいちばん起きやすい失敗です。 「毎年」と書かれた資料と前回実施日があれば、1年後の日付を出せてしまいます。その日付は期限ではありません。 目安として出すのと期限として出すのとでは、現場の動きが変わります。

Step6

指示内容を固定する

1つ目の呼び出し(切り分けと突合)です。

あなたは総務部門で、建物と設備の法定点検についての社内照会を切り分ける立場です。
渡された資料と台帳の行に書かれていることだけを使ってください。推測で補わないでください。

【してはいけないこと】
- 個別の建物が制度の対象に当たる/当たらないという結論を書かないでください。
- 条文の解釈を書かないでください。罰則に触れないでください。
- 台帳に行が無い建物について、一般論から実績や日付を作らないでください。
- 「次回の目安」を期限として書かないでください。台帳の値をそのまま写してください。
- 所在地の自治体の資料が無いときに、他の自治体の資料をその建物に当てないでください。

【すること】
1. 照会が何を聞いているかを asked_about に入れる
2. 建物名を台帳の名称・別名・住所と突き合わせ building.match を決める
   複数に当たるときは ambiguous にし、候補を building.candidates に並べる
3. 台帳に行があれば、前回実施日・実施者・次回の目安を ledger_record にそのまま写す
   行が無ければ found を false にし、他の値は空のままにする
4. 関係しそうな制度を regime_candidates に並べる
   name は資料の区分名、frequency_text は頻度の文言をそのまま、
   source_id は根拠にした資料のID、why_it_may_apply は
   「〜であれば対象になりうる」という条件の形で書く
5. 確かめるべき点を points_to_confirm に並べる
   (主要用途、階数、延べ面積、所在地の特定行政庁、前回の報告書の有無など)
6. route を決める
   - answer_with_source … 台帳に行があり、関係しそうな制度も資料から示せる
   - needs_check ......... 台帳に行が無い、建物が複数に当たる、
                          資料からは制度の区分を絞れない
   - out_of_scope ........ 法定点検の照会ではない
   迷ったときに answer_with_source を選ばないでください。

【台帳から引いた行】{ledger_rows}
【公開資料(IDつき)】{source_docs}
【照会の本文】{inquiry_text}

2つ目の呼び出し(制度の説明)です。資料を文書として渡し、引用を有効にします。

渡した資料に書かれている範囲だけで、制度の考え方を3文から4文で説明してください。
この建物が対象に当たるかどうかは書かないでください。
「一般にはこうとされています」という書き方にし、資格に触れるときは
資料に書かれた資格の名称をそのまま使ってください。最後に次の一文を必ず添えてください。
「報告の時期と対象は所在地の特定行政庁によって異なります。
 {municipality}の窓口でご確認ください。最終的な判断は所管の窓口と有資格者が行います。」

「迷ったときに answer_with_source を選ばない」を書かないと選びます。 資料に制度の説明があり、台帳にも似た名前の行があるからです。「他の自治体の資料を当てない」も同じで、 東京都の資料しか無い状態で別の県の建物を聞かれると、手元にあるもので答えようとします。

Step7

出力形式を固定する

1つ目の呼び出しは、次の形のJSONで受け取ります。

{
  "inquiry_id": "",
  "asked_about": "requirement | deadline | qualification | procedure | other",
  "building": {
    "ledger_id": "",
    "name": "",
    "match": "matched | ambiguous | not_found",
    "candidates": [""]
  },
  "equipment_category": "building | fire_door | building_equipment | elevator | amusement | fire_service | unknown",
  "ledger_record": {
    "found": true,
    "last_done_on": "",
    "performed_by": "",
    "next_due_guide": ""
  },
  "regime_candidates": [
    { "name": "", "frequency_text": "", "source_id": "", "why_it_may_apply": "" }
  ],
  "points_to_confirm": [""],
  "route": "answer_with_source | needs_check | out_of_scope",
  "route_reason": ""
}

構造化出力は output_config.format(type に json_schema、schema にスキーマ本体)で指定します。 オブジェクトでは additionalProperties を false にする必要があり、再帰的なスキーマ、minimum などの数値の制約、minLength などの文字列の制約は非対応です。配列の minItems は0と1のみ。points_to_confirm の件数をスキーマで縛れないのは、このためです。

2つ目の呼び出しでは、構造化出力を使いません。引用と構造化出力は併用できないからです。 渡した文書(document ブロックや search_result ブロック)で引用を有効にし、あわせて output_config.format を指定すると、APIは400エラーを返します。 引用は引用ブロックとテキスト出力を交互に挟む必要があり、構造化出力の厳密なJSONスキーマの制約と両立しないためです。

1回で済ませようとすると、根拠の箇所を示せない説明文か、形の定まらない切り分け結果のどちらかを諦めることになります。 なお引用の粒度は文書の種類で変わり、PDFはページ番号の範囲(1始まり)、プレーンテキストは文字インデックスの範囲(0始まり)です。資料をプレーンテキストで持てば、引用箇所を文字位置で残せます。

Step8

システムへ連携する

つなぎ先方式内容
照会フォームPower Automate のトリガー送信を受け、必須項目を確かめる
点検台帳日次の読み取り索引へ取り込む。書き込みはしない
Azure AI SearchAPI呼び出し建物で絞ったうえで検索と再ランク
Claude API ①②API呼び出し切り分けと突合(構造化出力)、制度の説明(引用)
照会記録追記照会、回答案、人が直した箇所、資料のID
公開資料の保管月次の取得本文・URL・取得日・ハッシュを保存

台帳へ書き込まないことを、設計の線として引きます。 「前回実施日が空だったのでPDFから読んで埋めた」という処理を足したくなりますが、機械が埋めた値と人が入れた値が混ざると、台帳を根拠として示せなくなります。

Step9

人が確認する

総務が全件の回答案を開きます。 月60件なので、開かないという選択にはしません。見る順番と深さを変えます。

  1. needs_check と out_of_scope を先に見る … 台帳に行が無い、建物が複数に当たる、区分を絞れないもの。ここは調べ直しになります
  2. answer_with_source の引用を確かめる … 説明が引用された箇所の範囲を超えていないか
  3. 台帳の値を確かめる … 前回実施日と実施者が、台帳の行と一致しているか
  4. 断定になっていないかを見る … 「対象です」「期限は◯月◯日です」が混じっていないか
  5. 直したら記録する … どこを、どう直したかを照会記録に残します

4番目を毎回見てください。 指示で禁じていても、文の流れで断定に寄ることがあります。「一般にはこうとされています」が「こうなります」に変わっているだけで、現場は決まったものとして動きます。 目標は60件をならして1件4分で、needs_check のものは別に時間を取ります(第10章では2分)。

Step10

例外に対処する

起きること対応
建物名が台帳に無いnot_found。対象外とは書かない。 台帳に載せるところから人が確かめる
建物名が複数に当たるambiguous。候補を示して現場に選び直してもらう
設備の区分が「分からない」全設備の行を持ち、資料側から区分の候補を並べる
所在地の自治体の資料が無い一般的な説明までにとどめ、その自治体の窓口へ案内する
資料の本文が更新されていたその資料を根拠にした過去の回答を一覧にし、総務が読み直す
台帳の前回実施日が空found は true、last_done_on は空のまま。推測で埋めない
引用が返らない制度の説明を出さず、needs_check に落とす
API が応答しない照会を未処理のまま残す。記録へ追記するのは回答案ができたときだけ

上の2行が最も多くなります。 どちらも台帳の整備で減ります。AIの精度の話ではありません。

Step11

記録を残す

  • 照会の原文(入力値と自由記述)、送信者と所属、受付日時
  • 検索の結果(採った文書のID、@search.rerankerScore、キャプション)
  • 1つ目の呼び出しのJSONと、2つ目の呼び出しの本文および引用された箇所
  • そのとき参照した資料のURL・取得日・ハッシュ
  • 人が直した箇所(どの文を、どう直したか)と、送った回答
  • needs_check になった理由の分類と、その後どこへ確かめたか

4つ目が、後からいちばん効きます。 資料が更新されたときに、どの回答がどの版を根拠にしていたかを引けるのは、これを残している場合だけです。

最後の行は、台帳に足す列を決める材料です。 「延べ面積が分からないので絞れない」が続くなら、その列を足す。答えるたびに、次から答えられる範囲が広がります。

04実装レベルの3段階

最小構成:資料と台帳の行を手でAIの画面に貼り、3点セットの形で回答案を書かせる / 1件ごとの回答案の作成
半自動化:上記+台帳と資料を検索基盤に載せ、フォームからの照会で引いて回答案を出す / 台帳の照会と回答案の作成
本格構成:上記+引用つきの根拠、出典の更新確認、照会記録の集計まで自動で動かす / 一次回答の全体と、根拠の維持

本記事が想定するのは半自動化の段階です。 第10章の6.0時間はこの段階で置いています。検索基盤から回答案までが自動で動き、送るのは総務という形です。最小構成では1件ごとに貼り付けるので、件数がさばけません。確かめるための段階です。 本格構成へ進むのは、半自動化を2、3か月動かしてからにしてください。 needs_check の理由が集まらないうちに出典の更新確認まで組むと、何を監視すればよいかが決まりません。

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

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

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

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

AI活用について相談する

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

向いている
  1. 用途の違う建物を十数棟以上持ち、総務や管理部門の数名が点検の窓口を兼務している会社。点検の記録は残っているのに、どこに何があるかを知っているのが特定の担当者だけになっている場合。所在地が複数の自治体にまたがり、報告の時期や対象の違いを毎回調べ直している場合。点検台帳を表計算ソフトででも持っている、または作れる場合。
向いていない
  1. 建物が1棟だけで、点検の予定も実績も1枚の表に収まっている場合。建物の管理を管理会社へ全面的に委託しており、要否も期限も委託先が管理している場合。点検台帳そのものが無く、前回いつ誰が実施したかの記録が社内に残っていない場合は、台帳を作るほうが先です。なお、個別の建物が制度の対象に当たるかどうかの判断は、この構成では代替できません。

07最小構成で試す方法

  1. 先月の照会から20件を選ぶ(台帳に無い建物と、自治体をまたぐ照会を必ず入れる)
  2. その20件について、当時どこを探し、何分かかり、何と返したかを聞き取る
  3. 所管の窓口が公開している資料を保存し、該当する台帳の行を抜き出す
  4. 手元のAIサービスに、資料と台帳の行と照会の本文を貼り付ける
  5. 「この資料の範囲で、制度の考え方と確認すべき点を書いてください。この建物が対象に当たるかどうかは書かないでください。台帳の前回実施日と実施者はそのまま写してください」と指示する
  6. 出てきた回答案を、当時の返信と突き合わせる

20件は必ずやってください。 検索基盤を組む前に、「資料と台帳があれば一次回答が書けるのか」を確かめます。

出てきた内容判断
当時の返信と同じ内容が、根拠つきで出た検索基盤とフォームの用意に進む
対象に当たると断定した指示の書き方で直る。構成は有効
台帳に無い建物を「対象外」と書いた指示に not_found の扱いを足す。ここを直さずに進めない
資料に無いことを書いた資料の範囲を超えている。渡す資料を増やすより、範囲の指示を強める

3行目は必ず一度は出ます。 台帳に行が無いことと、制度の対象でないことは別なのに、手元の情報だけで答えようとすると同じものとして扱われます。 この区別が付くまで次に進まないでください。

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

問題対策
引用と構造化出力を1回で取ろうとする400エラーが返る。 呼び出しを2つに分け、要るものを分ける
JSONに「対象に当たるか」の欄を作ってしまう欄があれば埋まる。欄そのものを作らない
台帳に無い建物を「対象外」と答えるnot_found と「制度の対象でない」を分ける。指示にも明記する
「次回の目安」を期限として返す目安と期限を別の語で書く。期限は窓口の通知で決まる
自治体の違いを機械で吸収しようとする「所在地の窓口でご確認ください」を回答の型に固定する
建物名の表記ゆれで台帳が引けない通称・旧名称・住所・館内の呼び方を別名列に入れる
目的の棟が再ランクの上位に出ない上位50件しか再ランクに進まない。 建物で先に絞る
台帳の行が短くて検索にかからない1行を1つの文として索引に入れる
資格の話を一般論で答える台帳の「実施者」と、資料の資格の名称を分けて返す
資料が更新されて根拠がずれる取得日とハッシュを保存し、月次で取り直して差分を知らせる
回答が自動で送信される下書きまでにする。 送信は総務が行う

上の2行が、この構成の核心にあたる失敗です。 1行目は動かないという形で分かりますが、2行目は動いてしまいます。 断定を避けたいのに断定が出る原因は、たいてい指示の書き方ではなく、断定を書く場所を用意してしまったことにあります。

下の2行も早く効きます。 資料の更新に気づけない仕組みは、第3章の(b)を機械の側で再現しているだけです。 自動送信も最初から作らないでください。

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

この構成で扱うデータ: 建物の所在地、設備の構成、点検の実施日と実施者、委託先の名称、そして点検が行われていない期間の記録です。

  1. この構成は法令の適用の判断を代替しません … 個別の建物が制度の対象に当たるか、いつまでに何をすべきかは、所管の窓口(特定行政庁・消防)と有資格者が判断することです。 出すのは、資料にあった制度の考え方と、台帳の実績と、根拠のページの3点だけです
  2. 未実施が分かったときの扱いを先に決める … 台帳を引くと、記録が無い設備が必ず出ます。その事実を隠さず、是正の記録として残す運用を先に決めてください。仕組みが不都合を見つける道具になると、記録自体が止まります
  3. 外部へ渡す範囲を絞る … AIへ渡すのは、検索で引いた台帳の行と資料の抜粋だけです。48棟分を丸ごと渡さないでください。 所在地と設備構成の一覧は、それ自体が守るべき情報です
  4. 回答を自動で送らない … 制度の説明が断定として現場に届くと、工事や届出の判断がそれに従って動きます
  5. 根拠のページの取得日を回答に書く … いつ時点の資料かが無い説明は、確かめようがありません。更新されたら過去の回答を読み直す動線まで含めて設計してください
  6. 照会記録の扱いを決める … 誰が何を聞いたかが蓄積します。現場の管理者を評価する材料に使わないことを決めてください

誤りが起きた場合のリスクは、要るものを要らないと答えることと、要らないものを要ると答えることの2つです。 前者は台帳に行が無いことを「対象外」と読み替えると起き、後者は他の自治体の資料を当てると起きます。どちらも「手元にある情報だけで答えようとした」という同じ原因から出ています。

10まず何から始めるか

1週目:台帳に列を足す

点検台帳に、用途・階数・延べ面積・所在地の自治体・別名の列を足します。48棟すべてを一度に埋める必要はありません。照会の多い上位15棟から埋めます。

2週目:20件で試す

先月の照会から20件を選び、資料と台帳の行を手元のAIサービスに貼り付けて回答案を書かせます。台帳に無い建物を「対象外」と書いていないか、対象に当たると断定していないかを見ます。

3週目:答え方の型を決める

3点セットの並びと、「所在地の特定行政庁によって異なります」「最終的な判断は所管の窓口と有資格者が行います」を添える位置を決めます。ここが決まらないうちに組むと、回答の体裁が人ごとに分かれます。あわせて資料を保存し、取得日を記録します。

4週目:フォームから回答案までをつなぐ

照会フォームを作り、Power Automate で受けて検索基盤を引き、2つの呼び出しで回答案を出すところまで作ります。この時点では経路の判定を出さず、切り分けの結果と制度の説明だけを見ます。

2か月目: 経路の判定を足し、needs_check の件数と理由を毎週数えます。3か月目以降: 資料の更新確認を足し、1件21分が何分になったかを実測します。needs_check の理由を台帳の列に反映する作業を月次の仕事にした時点で、この構成は回り始めます。


11関連ユースケース

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

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

技術仕様確認日:2026-09-25/最終更新:2026-09-25
確認した内容情報源確認日
制度の対象(不特定多数の人が利用する特定建築物、国等の建築物を除く)と毎年又は3年ごとの調査。防火設備・建築設備・昇降機等は毎年、遊戯施設等は半年ごとの検査。報告義務者が所有者(異なる場合は管理者)で、特定行政庁に報告すること。調査・検査ができるのが一級建築士若しくは二級建築士又は資格者証の交付を受けている者であること東京都都市整備局2026-09-25
構造化出力を output_config.format(type に json_schema)で指定すること。オブジェクトの additionalProperties を false にする必要があること。数値・文字列長の制約と再帰的なスキーマが非対応で、配列の minItems が0と1のみであることClaude Docs: Structured outputs2026-09-25
引用を有効にして output_config.format を指定すると400エラーが返り、併用できないこと。理由が引用ブロックとテキストを交互に挟む仕組みにあること。引用の粒度(PDFはページ番号、プレーンテキストは文字インデックス)Claude Docs: Citations2026-09-25
RRFが並列実行した複数クエリのランク付けをマージすること。スコアが 1/(rank + k) で、k は60のような小さな値がよいとされること。@search.rerankerScore(0.00から4.00)がRRFのあとに付くことMicrosoft Learn: ハイブリッド検索 (RRF)2026-09-25
二次のランク付けに進むのが上位50件のみであること。要約モデルが1文書あたり最大2,000トークン(約10文字で1トークン)で、超えた分が無視されること。しきい値を細かくしすぎないこと。キャプションが逐語的な抽出であること。Free レベルの制限内は無料で、search=* では課金されないことMicrosoft Learn: セマンティック ランキング2026-09-25

個別の建物が制度の対象に当たるかどうかは、所管の窓口(特定行政庁・消防)と有資格者にご確認ください。 本記事は東京都都市整備局のページで確認できた範囲を、制度の考え方の紹介として扱っています。

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

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

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

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