Media > AI活用ユースケース > 経営企画 > 事業計画の前提に使った外部データの更新を毎月追って、前提のずれを知らせる

事業計画の前提に使った外部データの更新を毎月追って、前提のずれを知らせる

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

中期経営計画や年度予算の前提に使った外部データを台帳にし、その出どころを毎月エージェントに見に行かせます。更新があった前提と、ずれが許容の幅を超えたものだけを知らせます。

サマリー
利用ツール
ChatGPT/Claude/Gemini/Google Apps Script/Make/n8n/Python/Zapier
対象業界
その他/保険/商社/製造/金融
対象部門
経営企画/財務
対象業務
情報検索/集計・分析
主な課題
データ分析に時間がかかる/人手が足りない/情報が見つからない
AIで行う処理
エージェント
主な効果
判断支援/工数削減/機会損失防止
導入難易度
★★☆☆☆
実装レベル
半自動化
費用感
API連携(中)
人間の確認
条件付き
現在工数
13.3h/月
AI導入後
3.3h/月
想定削減
75%
年間削減
120h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 四半期の報告や次年度の計画づくりの時期に、前提を書いたシートを開く
  2. 前提の名前を手がかりに、当時どこから取った数字かを思い出す。URLが残っていないものは検索し直す
  3. 出どころのページを開き、新しい公表が出ていないかを見る
  4. 出ていれば、表や本文から現在の値を読み取る
  5. 計画で使った値と見比べ、差が大きいかどうかをその場で判断する
  6. 気になったものだけを手元のメモに残す
  7. 次の計画を作るときに、そのメモを見る
導入後(After)
  1. 人前提データ台帳に、前提の名前、使った値、出どころのURL、公表時期、効く先、許容の幅を書く(最初の1回)
  2. 自動毎月1日、ワークフローが台帳を読み、今月の確認対象の行だけを取り出す
  3. 自動URLが生きているかを先に確かめ、消えている行は巡回せずに印を付ける
  4. 自動1行ずつエージェントに渡し、出どころを開かせて現在の値と公表時期を取らせる
  5. 自動値、公表時期、根拠にした文字列、参照したURLを決まった形のJSONで受け取る
  6. 自動前回の値と公表時期を比べ、差を計算する
  7. 自動台帳の許容の幅と比べ、超えた行に印を付ける
  8. 自動台帳から「計画のどの数字に効くか」を引き、その行に添える
  9. 自動台帳に確認日、今回の値、公表時期、根拠を書き戻す
  10. 自動幅を超えた行と、読めなかった行だけを知らせにまとめる
  11. 人新しい値を前提として採るか、計画を直すか、次の確認まで待つかを決める
各工程の詳しい説明を読む
  1. 四半期の報告や次年度の計画づくりの時期に、前提を書いたシートを開く
  2. 前提の名前を手がかりに、当時どこから取った数字かを思い出す。URLが残っていないものは検索し直す
  3. 出どころのページを開き、新しい公表が出ていないかを見る
  4. 出ていれば、表や本文から現在の値を読み取る
  5. 計画で使った値と見比べ、差が大きいかどうかをその場で判断する
  6. 気になったものだけを手元のメモに残す
  7. 次の計画を作るときに、そのメモを見る

(a)そもそも定期的には見ていません。 3番と4番は、計画を作る時期にしか行われません。毎月見ることになっている前提は、50件のうち数件です。 決算説明の資料に使う数字だけが更新され、残りは据え置かれます。

(b)出どころが残っていません。 2番でつまずく行が半分あります。検索し直すと、似た名前の統計が複数出てきて、当時どれを見たのかが分からなくなります。 ここで20分かかる行と、URLが残っていて3分で終わる行の差が大きく、平均すると1件16分になります。

(c)差が大きいかどうかの線が人によって違います。 5番は担当者の感覚です。成長率が年5%から年4.6%に変わったとき報告するかどうかは、その人がその前提をどれくらい重く見ているかで決まります。 引き継ぐと基準が変わります。

(d)計画のどの数字に効くかは、作った人しか知りません。 前提が変わったと分かっても、それが売上計画のどの行に入っているのかを追うのに時間がかかります。担当が代わると、この対応関係がいちばん先に失われます。

  1. 【人】 前提データ台帳に、前提の名前、使った値、出どころのURL、公表時期、効く先、許容の幅を書く(最初の1回)
  2. 【自動】 毎月1日、ワークフローが台帳を読み、今月の確認対象の行だけを取り出す
  3. 【自動】 URLが生きているかを先に確かめ、消えている行は巡回せずに印を付ける
  4. 【自動】 1行ずつエージェントに渡し、出どころを開かせて現在の値と公表時期を取らせる
  5. 【自動】 値、公表時期、根拠にした文字列、参照したURLを決まった形のJSONで受け取る
  6. 【自動】 前回の値と公表時期を比べ、差を計算する
  7. 【自動】 台帳の許容の幅と比べ、超えた行に印を付ける
  8. 【自動】 台帳から「計画のどの数字に効くか」を引き、その行に添える
  9. 【自動】 台帳に確認日、今回の値、公表時期、根拠を書き戻す
  10. 【自動】 幅を超えた行と、読めなかった行だけを知らせにまとめる
  11. 【人】 新しい値を前提として採るか、計画を直すか、次の確認まで待つかを決める

11番目が、この設計の目的地です。 人が行うのは判断だけで、巡回も比較も記録も手を動かしません。代わりに、判断の材料は必ず人のところへ届きます。

7番目と8番目を規則の側に置いているのは、意図してのことです。 差が問題かどうかの線は台帳の幅で決め、効く先は台帳の列から引きます。どちらもAIに推測させません。 推測させると、同じ前提について毎月違う答えが返り、知らせを読む側が「今月の答え」を信じられなくなります。

3番目でURLの生死を先に確かめるのは、費用の話でもあります。 消えているページを開かせても何も取れません。先にHTTPで叩き、消えている行は人に回します。

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

構成図
【トリガー】毎月1日 09:00(Make のスケジュール)
   ▼
Make ── 前提データ台帳(スプレッドシート)を読む
   │      今月の対象行を絞り、Iterator で1行ずつのバンドルにする
   ├──▶ URLの生死をHTTPで確認(消えている行はここで分岐)
   ▼
OpenAI API(エージェント)
   │   ① Web検索ツールで台帳の出どころを開く
   │   ② locator を手がかりに値と公表時期を取る
   │   ③ Structured Outputs で決まった形のJSONを返す
   ▼
Make ── Array Aggregator で全件を1つにまとめる
   ▼
Python ── 前回の値との差を計算し、許容の幅と比べる
   │        plan_refs(効く先)を台帳から引いて添える
   ▼
前提データ台帳へ書き戻し(確認日・今回の値・公表時期・根拠)
   ▼
幅を超えた行と読めなかった行だけ ──▶ 経営企画への知らせ
   ▼
【人】前提を採るか、計画を直すかを決める
役割想定する製品代替候補
処理OpenAI APIClaude API、Gemini API
集計PythonGoogle Apps Script
連携MakeZapier、n8n

計画の数値表(Excelのブック)は、この構成につなぎません。 読むのも書くのも台帳だけで、計画との対応は plan_refs 列に「売上計画シートの何行目」と書いておきます。つなぐと、巡回の誤りが計画の数字に直接届きます。

出どころを開かせるのは、OpenAI API のWeb検索ツールです。 tools 配列に { "type": "web_search" } を入れると使えるとされています。応答には、行った操作を示す web_search_call と、URL・タイトル・位置を持つ url_citation の注記が付きます。参照した全URLは sources に返るので、どこを見て答えたかを確かめられます。

この構成でいちばん効く設定は、ドメインを絞れることです。 許可するドメインと遮断するドメインを、それぞれ最大100件まで指定できるとされています。台帳の出どころのドメインだけを許可すれば、別のサイトの似た数字を拾う経路をふさげます。 検索結果の量は low / medium / high から選べ、文脈の窓は128kまでで、モデル側の文脈の広さにかかわらずここで頭打ちになるとされています。

返り値の形をそろえるのが Structured Outputs です。 JSONスキーマに沿った応答を保証する仕組みとされており、必須のキーの欠落を防げます。Make は巡回の段取りを担います。 台帳の配列を1行ずつのバンドルに変える Iterator と、結果を1つに戻す Array Aggregator を使います。

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

Step1

処理の起点を決める

毎月1日の朝に動かします。 Make のスケジュールには、一定間隔(分単位)、毎日1回、平日、週単位、月単位、日付の指定、オンデマンドがあるとされています。使うのは月単位(毎月の指定日)です。既定は15分ごとで、最小の間隔は契約プランによるとされていますが、月次ではこの下限は関係しません。

1つの設定に複数の実行時刻を入れられます。 50件を一度に流すとアクセスが集中するので、午前と午後に分けられます。また、詳細設定で開始日と終了日を指定できるとされており、計画の期間に合わせて自動で止められます。

毎月にするのは粒度の問題です。 四半期だと気づくのが遅く、毎週だと年1回しか動かない統計を50件も見続けることになります。前提ごとに周期を変えたい場合も、スケジュールは1つのままにし、台帳の確認の周期の列で対象行を絞ります。

Step2

入力データを集める

データ中身取得元
前提データ台帳前提の名前、使った値と単位、出どころのURL、公表時期、locator、plan_refs、許容の幅、確認の周期、行の持ち主スプレッドシート
前回の確認結果前回の値、公表時期、根拠にした文字列、確認日、判定台帳の履歴シート
出どころのページ公表されているページの本文と表外部サイト

locator が、この台帳のいちばん大事な列です。 「ページのどこに書かれていたか」を、位置ではなく語で書きます。「上から3つ目の表」ではなく「『年度別の出荷実績』という見出しの表の、右端の列」と書きます。位置は作りが変わればずれますが、見出しの語はしばらく残ります。

計画側の数字そのものは入力に入れません。 plan_refs は「売上計画シート12行目(国内売上)」のような行の名前だけです。

Step3

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

台帳の読み取りは、Make のスプレッドシートのモジュールで足ります。取り出した行の配列は Iterator に渡します。 Iterator は配列を次々のバンドルに変えるモジュールで、各要素が1つのバンドルになるとされています。50行が50回の処理になります。

外部ページは、エージェントの側に取りに行かせます。tools 配列は関数・カスタム・名前空間といった種類の定義を並べる形で、Web検索は組み込みのツールとして用意されています。 自前の処理を呼ばせる場合は、種類・名前・説明・引数のJSONスキーマ・strict を書いた関数の定義を同じ配列に足します。

取るものどこから何に使うか
台帳の行スプレッドシート巡回の対象と、比べる相手
ページの本文と表Web検索ツール現在の値と公表時期
参照したURLの一覧sources台帳の出どころを見たかの確認
引用の注記url_citation(URL・タイトル・位置)根拠の所在

3行目を必ず保存してください。 指定したドメインの外を見ていないかを、後から確かめられます。

Step4

AIへ渡す前に整形する

  1. 今月の対象行を絞る … 台帳の確認の周期の列を見て、今月に当たる行だけを残します
  2. URLの生死を確かめる … Make のHTTPモジュールで先に叩きます。404の行はエージェントを呼びません
  3. PDFの扱いを決める … PDFでしか公表されない行は、テキストにできるかを確かめます。できないものは手で見る行にします
  4. 長いページを切る … 文脈の窓は128kまでです。年報のような資料は locator の語の周辺だけを渡します
  5. 前回の根拠を添える … 同じ場所を見ているかの手がかりになります
  6. 表記をそろえる規則を渡す … 単位、年度と暦年、全角の数字。そろえるのは受け取った後の処理で行い、AIには換算させません

2番目を省かないでください。 消えたページをエージェントに探させると、似た名前の別のページを開いて値を持ち帰ります。 いちばん気づきにくい誤りです。

Step5

AIに処理させる

させるのは、台帳の1行について「出どころを開き、いまの値と公表時期を取り、根拠を写す」ことだけです。

させること中身
出どころを開く台帳のURL。許可したドメインの外は見ない
公表時期を取る年月または年度。版が新しければ値が同じでも更新
現在の値を取るlocator の語の近くにある値を1つだけ
根拠を写す値を取った文字列を、画面にあるまま写す
読めないことを言う見つからない、複数ある、単位が違う → unreadable / ambiguous
させないこと理由
計画側の数字を直す採るかどうかは人が決める
影響の大きさの推測効く先は plan_refs から引く。推測させると毎月変わる
単位や期間の換算換算した瞬間に、値が変わったかが分からなくなる
出どころの乗り換え指定したURLに無ければ unreadable。他所から持ってこない
差が問題かの判断許容の幅との比較は後段の規則
消えたURLの推測での補完それらしいURLを組み立てない。gone として人へ

3行目がいちばん起きやすい失敗です。 「市場規模は3年で15%成長」としか書かれていないページを年率の前提と比べさせると、年5%弱に直した数字を返し、次の月には別の直し方をします。 単位や期間が違うものは ambiguous にします。

Step6

指示内容を固定する

あなたは、事業計画の前提に使った外部データが更新されていないかを確かめる担当です。
指定されたURLのページに書かれていることだけを見て答えてください。
ページに無いことを、知識や推測で補わないでください。

【今回確認する前提】
- 前提の名前:          {name}
- 計画で使った値:      {used_value} {unit}
- その値の公表時期:    {published_at}
- 出どころ:            {source_url}
- ページのどこにあるか:{locator}
- 前回、値を取った文字列: {last_evidence}

【やること】
1. 指定されたURLを開く。{allowed_domain} の外のページは見ない
2. {locator} を手がかりに、同じ性質の値がいま何になっているかを1つだけ取る
3. その値が公表された時期(年月または年度)を取る
4. 値を取った文字列を、画面にあるまま evidence に写す

【value_status の選び方】
- unchanged ... 公表時期も値も、前回と同じ
- updated ..... 新しい公表が出ている、または値が前回と違う
- unreadable .. ページは開けたが、その値が見つからない、数値として読めない
- ambiguous ... 同じ名前の値が複数あり、1つに決められない
                (年度が複数ある、速報値と確報値が並ぶ、単位が違う)
迷ったときに unchanged を選ばないでください。

【厳守事項】
- 値の計算をしないでください。年率への直し、単位の換算、複数年の平均を
  とらないでください。換算しないと比べられないものは ambiguous です。
- 出どころを乗り換えないでください。指定したURLに値が無いとき、他のサイトの
  似た数字を代わりに取らず、unreadable にしてください。
- 計画をどう直すべきかも、影響の大きさも書かないでください。
- 値が前回と同じでも、公表時期が新しくなっていれば updated です。
- ページが見つからない、別のページに移っている場合は、値を取らずに
  source_status に gone または moved を入れ、note に移動先のURLを書いて
  ください。それらしいURLを組み立てないでください。
- evidence は、読みやすく直さずにそのまま写してください。

「公表時期が新しければ値が同じでも updated」を書いておかないと、見落とします。 版が上がっても、その年の値が据え置かれることはあります。そこで「変わっていない」と出すと、次の版で数字が動いたときに前提のずれが一気に表に出ます。

Step7

出力形式を固定する

Structured Outputs で、次の形のJSONを受け取ります。 text.format に種類(json_schema)、strict、schema、名前を指定する形とされています。

{
  "name": "assumption_check",
  "strict": true,
  "schema": {
    "type": "object",
    "additionalProperties": false,
    "required": ["... properties の9項目すべてを並べる ..."],
    "properties": {
      "assumption_id":  { "type": "string" },
      "source_status":  { "type": "string", "enum": ["reachable", "moved", "gone"] },
      "value_status":   { "type": "string",
                          "enum": ["unchanged", "updated", "unreadable", "ambiguous"] },
      "new_value":      { "type": ["number", "null"] },
      "new_value_text": { "type": "string" },
      "unit":           { "type": "string" },
      "published_at":   { "type": "string" },
      "evidence":       { "type": "string" },
      "note":           { "type": "string" }
    }
  }
}

strict を真にするときの決まりが3つあります。 additionalProperties を偽にすること、properties の項目をすべて required に並べること、任意の項目は型に null を足して表すこと(["number", "null"])とされています。値が読めなかったときに new_value を空にできるのは、この書き方のおかげです。

new_value と new_value_text を分けるのは、書かれ方を残すためです。 前者は差を計算する数値、後者は「約1.2兆円」「1,234千戸」という表記そのものです。読み取れなければ前者は空のまま後者だけが残り、その行は人へ渡します。

安全上の理由で応じない場合は refusal の欄が返るとされています。 機械的に見分けて unreadable と同じ扱いにできます。

Step8

システムへ連携する

つなぎ先方式内容
前提データ台帳Make のスプレッドシートの読み書き確認日・今回の値・公表時期・根拠を書き戻す
外部の公表ページWeb検索ツール許可したドメインの中だけを開く
OpenAI APIAPI呼び出し値と公表時期の取得、決まった形での返却
差の計算Python前回との差、許容の幅との比較、効く先の引き当て
知らせ先Make の通知幅を超えた行と読めなかった行だけ
計画の数値表つながない台帳の plan_refs に行の名前を書くだけ

Array Aggregator で1つに戻してから集計します。 複数のバンドルを1つにまとめるモジュールで、まとめ先の構造やグループ分けを指定でき、空のときに後続の処理を止める選択肢があるとされています。この「空なら止める」が、そのまま知らせの制御になります。 幅を超えた行が無かった月は通知を送りません。

最後の行が、この構成の線引きです。 事実と効く先の名前までを人に渡し、そこで止めます。

Step9

人が確認する

人が開くのは、幅を超えた行と unreadable / ambiguous / gone の行だけです。 残りは確認日が進むだけで、一覧を眺める必要もありません。

  1. gone と moved を先に見る … 消えたか移ったかを確かめ、台帳のURLを人が直します
  2. unreadable の行の locator を見直す … 作りが変わったのか、前提そのものが公表されなくなったのかを分けます
  3. 幅を超えた行の根拠を読む … evidence と公表時期を見て、本当に新しい版の値かを確かめます
  4. 採るか待つかを決める … 新しい値を前提として採るか、次の版まで待つかを決めます
  5. 計画を直すかを決める … plan_refs の行を見て、直す範囲を決めます。ここは月次の会議に持っていきます

4番目と5番目は別の決めごとです。 前提の値を更新することと、計画の数字を動かすことは同じではありません。前提だけ更新して計画は据え置く、という選択が最も多くなります。

目標は、50件をならして1件4分です。 幅を超える行が月に5件前後という想定で、それより多い月は、許容の幅が狭すぎます。

Step10

例外に対処する

起きること対応
出どころのページが消えているHTTPの確認で先に検知し、gone として人へ。エージェントを呼ばない
別のURLに移っているmoved。note の移動先を人が確かめ、台帳のURLを人が直す
ページの作りが変わり locator が当たらないunreadable。2回続いた行は locator を書き直す
値が画像やPDFの中にしか無いテキストにできなければ台帳から外し、手で見る行にする
速報値と確報値が並んでいるambiguous。どちらを採るかを locator に書き足す
単位や基準年が変わったambiguous。差を計算せずに人へ渡す
ページが長すぎて入りきらない文脈の窓は128kまで。locator の周辺に切る
応答が拒否されたrefusal が返る。値を空にして要確認へ
外部サイトが応答しない確認日を更新せず、未確認のまま翌月に持ち越す
ログインしないと見られない巡回の対象にしない。台帳の行に「手で見る」と書く

上から3行目が、この構成でいちばん多い例外です。 AIの誤りではなく、相手のページが変わったという事実です。 直すのは locator で、プロンプトではありません。

Step11

記録を残す

  • 各行の履歴(確認日、公表時期、値、value_status、source_status)
  • 根拠にした文字列 … 次の月に「同じ場所を見ているか」を比べる材料です
  • 参照した全URLの一覧(sources)と、引用の注記
  • 差の計算の結果と、そのとき参照した許容の幅(幅は後から変わります)
  • 人が判定を覆した記録 … どの行を、どちらに変えたか
  • 確認できていない行の一覧 … 何日見に行けていないか

4つ目で「そのときの幅」を残すのは、幅を後から狭めるからです。 当時の幅が無いと、過去に知らせなかった理由が分からなくなります。

最後の行が、この構成の目的そのものです。 削減時間よりも、「見に行っていない前提が何件あるか」を毎月数えられることのほうが重要です。

04実装レベルの3段階

最小構成:10件の前提について、URLと locator を手でAIに渡し、現在の値と公表時期を取らせる / 1件ごとの更新の確認
半自動化:上記+台帳を Make から月次で読み、50件を巡回し、差と許容の幅の比較、台帳への書き戻しまで行う / 巡回・比較・記録と、幅を超えた行の知らせ
本格構成:上記+計画の数値表と台帳を行単位でつなぎ、前提が変わったときの影響額の試算の入り口まで出す / 影響範囲の提示

推すのは半自動化で、本記事の想定もここです。 巡回・比較・記録が自動になり、人には判断だけが残ります。この段階で、第10章の1件4分に届きます。 本格構成へ急がないでください。 計画の数値表と台帳を行単位でつなぐには、計画のブックの構造が固まっている必要があります。 多くの企業では計画の数値表は毎年作り直され、行の並びが変わります。対応表を作り直す仕事が増えると、巡回が止まります。 半自動化でも影響範囲は示せます。 plan_refs に「売上計画シート12行目(国内売上)」と書いておけば、知らせを読む人はどこを見ればよいか分かります。 金額の試算まで自動で出すかは、運用が1年続いてから決めてください。

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

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

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

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

AI活用について相談する

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

向いている
  1. 3か年の中期経営計画や年度予算を持ち、その前提に外部の統計・業界団体の公表値・官公庁の見通しを数十件使っている企業。経営企画が1〜3名で、前提の見直しが年1回の計画づくりの時期に偏っている場合。前提データの出どころのURLを台帳に書き出せる体制がある場合。計画の数値表が行単位で整理されており、どの前提がどの行に効くかを人が指定できる場合。
向いていない
  1. 前提に使っている外部データが数件しかなく、担当者が日常的に見ている場合。前提が為替や市況のように日次・週次で動くもの中心の場合(別の仕組みが要ります)。出どころが会員制サイトや有償データベースで、ログインしないと本文が見られない場合。なお、新しい値を採るかどうか、計画をどう直すかという経営判断は、この構成では代替できません。

07最小構成で試す方法

  1. 直近の計画の前提から10件を選ぶ(うち2件は、更新されていると分かっているものを入れる)
  2. その10件について、前提の名前、使った値と単位、出どころのURL、公表時期、ページのどこに書かれていたかを紙に書き出す
  3. 手元のAIサービスに1件ずつ貼り、「このURLを開き、◯◯の現在の値と公表時期を取り、値を取った文字列をそのまま写してください。見つからなければ『要確認』としてください。計算や換算はしないでください」と指示する
  4. 返ってきた値と公表時期を、計画で使った値と見比べる
  5. 何件が読み取れ、何件が「要確認」になり、何件が別のサイトの数字だったかを数える

2番目にかかった時間を必ず測ってください。 ここが本体です。10件のURLを書き出すのにかかった時間が、50件の台帳を作る見積もりになります。

出てきた内容判断
10件中8件以上で値と公表時期が取れたMake との連携に進む
URLを書き出すのに時間がかかった台帳の整備が本体。 AIの問題ではない
値は取れたが公表時期が分からないlocator に「公表時期がどこにあるか」を足す
別のサイトの数字を持ってきたドメインを絞る設定で防げる。構成は有効

2行目が出るのが普通です。 失敗ではなく、前提の更新を追えなかった理由が1つ分かったということです。

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

問題対策
出どころのページの作りが変わって読めなくなるこの構成の最大の運用リスク。 locator を位置ではなく見出しや列名の語で持ち、unreadable が2回続いた行を毎月数えて人が直す
出どころのURLが台帳に無い最初の整備がいちばん重い。効きが大きい上位20件から埋める
許容の幅を決めずに始める50件すべてが並ぶ知らせになり、2か月で読まれなくなる
値が同じで版だけ新しいのを見落とす公表時期も比較の対象に入れ、指示にも明記する
別のサイトの数字を持ってくる許可するドメインを台帳の出どころだけに絞る(最大100件)
単位をそろえて計算してしまう換算を禁じ、単位や期間が違えば ambiguous にする
効く先をAIに推測させる台帳の plan_refs から引く。 推測させると毎月答えが変わる
計画の数値表に書き込んでしまう書き込み先を台帳に限る。計画のブックにはつながない
長いPDFや年報で値が取れない文脈の窓は128kまで。locator の周辺に切るか、手で見る行にする
月1回では追いつかない前提を混ぜる為替や市況は別の仕組み(UC-0179)。月次で足りる前提だけを置く
台帳の行の持ち主が決まっていない行ごとに持ち主を置く。持ち主のいない行は、結局だれも見ない

上から1行目と2行目で、この構成の成否がほぼ決まります。 どちらもAIの精度の話ではなく、台帳を作って直し続けられるかという運用の話です。 巡回そのものは動きます。

下から2行目も早く効いてきます。 月次の前提と日次で動く前提を同じ台帳に入れると、毎月「変わりました」と出続ける行が数件できて、知らせ全体が信用されなくなります。

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

この構成で扱うデータ: 外部の公開ページの本文と、自社の中期経営計画の前提値です。後者は未公表の経営情報で、上場企業であれば開示前の情報を含みます。

  1. 計画側の数字をAIに渡さない … 渡すのは、前提の名前、使った値、出どころのURL、locator までです。売上計画や設備投資の金額そのものは渡しません。 効く先は行の名前だけを台帳に持ちます
  2. 外部サイトへの巡回は、そのサイトの利用条件に従う … robots.txt、利用規約、データの再配布の可否を、台帳を作る段階で1件ずつ確かめてください。月1回・50件という頻度は軽いほうですが、軽いことは条件に反してよい理由になりません。 会員登録が要るページ、有償のデータベースは対象にしません
  3. 取った値には必ず出どころと公表時期を添える … 社内資料に使うときも、URLと公表時期を切り離さないでください。 数字だけが一人歩きすると、いまの計画と同じ問題が繰り返されます
  4. 新しい値を自動で反映しない … 出すのは「更新があった」「値が変わった」「出どころが消えた」までです。採用も、計画の修正も、人が決めます
  5. 「読めなかった」を「変わっていない」に混ぜない … unreadable を unchanged として処理すると、確認したことになっているのに実際は見ていない行ができます。 確認日は、値が取れた行だけ更新します
  6. 知らせの配布先を限る … 前提の変更の一覧は、そのまま計画の弱点の一覧でもあります。経営企画と財務の中で閉じます

誤りが起きた場合のリスクは、更新を見落として古い前提のまま走ることと、誤って取った値で計画を動かすことの2つです。 前者は unreadable の扱いから、後者は出どころの乗り換えから起きます。どちらも「どこを見たか」を記録していれば追えます。

10まず何から始めるか

1週目:台帳の器を作り、上位20件を埋める

前提の名前、計画で使った値と単位、出どころのURL、公表時期、locator、plan_refs、許容の幅、確認の周期、行の持ち主。この9つの列を持つシートを作ります。 50件すべてを一度に埋める必要はありません。計画への効きが大きい上位20件から埋めます。

2週目:10件で試す

手元のAIサービスに1件ずつ貼り、現在の値と公表時期が取れるかを確かめます。換算や計算をしていないか、別のサイトを見ていないかを最優先で見てください。

3週目:許容の幅を決める

前提ごとに「これくらいの差なら計画は動かない」という幅を決めます。ここは経営企画だけで決められません。 計画を作った担当と、財務と、一緒に決めてください。決まらない行は、いったん幅を広めにして始めます。

4週目:月次の巡回をつなぐ

Make で毎月1日に台帳を読み、エージェントに巡回させ、台帳へ書き戻すところまで作ります。この時点では知らせを出さず、台帳の確認日が全行で進むかだけを見ます。

2か月目: 差の計算と許容の幅の比較を足し、幅を超えた行だけの知らせを出します。件数が多すぎないかを毎週見て、幅を調整します。 3か月目以降: unreadable が続く行の locator を書き直し、台帳を50件に広げます。「見に行けていない行」が毎月ゼロに近づいた時点で、この構成は完成です。


11関連ユースケース

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

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

技術仕様確認日:2026-09-25/最終更新:2026-09-25
確認した内容情報源確認日
JSONスキーマに沿った応答を保証すること。text.format に種類(json_schema)・strict・schema・名前を指定すること。strict では additionalProperties を偽にし、全項目を required に並べ、任意の項目の型に null を足すこと。拒否が refusal で返ることOpenAI: Structured Outputs2026-09-25
tools 配列に関数・カスタム・名前空間の定義を並べること。関数の定義が種類・名前・説明・引数のJSONスキーマ・strict から成ること。組み込みのツールにWeb検索があることOpenAI: Function calling2026-09-25
tools に web_search を入れて使うこと。応答に web_search_call と url_citation が付き、全URLが sources に返ること。許可・遮断のドメインを各最大100件まで指定でき、検索結果の量を low / medium / high から選べ、文脈の窓が128kで頭打ちになることOpenAI: Web search2026-09-25
一定間隔(分単位)・毎日1回・平日・週単位・月単位・日付の指定・オンデマンドがあること。既定が15分ごとで最小の間隔が契約プランによること。複数の実行時刻と開始日・終了日を指定できることMake: Schedule a scenario2026-09-25
Iterator が配列を次々のバンドルに変えること。Array Aggregator が複数のバンドルを1つにまとめ、構造とグループ分けを指定でき、空のときに後続を止める選択肢があることMake: Flow control2026-09-25

統計や業界団体の公表の周期については、出どころごとに事情が異なるため扱っていません。

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

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

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

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