月次の業績報告に各部門が書くコメントを、表記と数値の言い方の決まりに沿って校正し、数値表と食い違う箇所を洗い出す
各部門が月次の業績報告の様式に書いたコメントを、社内の表記と数値の言い方の決まりに照らして校正し、直す箇所の一覧を作ります。文中の数値は項目に分けて書き出し、数値表と食い違うものをプログラムで洗い出します。
- 生成AI
- Azure OpenAI Service/ChatGPT/Claude
- 連携・自動化
- Power Automate/Python
- 対象業界
- IT・SaaS/商社/物流/製造
- 対象部門
- 経営企画
- 対象業務
- 内容確認・チェック
- 主な課題
- 属人化している/書類作成に時間がかかる/確認ミスが多い
- AIで行う処理
- 校正
- 主な効果
- 品質標準化/属人化解消/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 経営企画が、締めた月の数値表を部門ごとに配る
- 各部門が、コメントの様式に6つの欄を書き、共有のフォルダに置く
- 経営企画の担当が、部門ごとにコメントと数値表を左右に並べて開く
- 欄ごとに読み、表記の決まり(比べる相手の書き方、単位、率の差の書き方、符号)に合わない箇所に赤を入れる
- 文中の数値を1つずつ数値表で探し、合っているかを確かめる
- 直し方に迷う箇所や、理由の書き方に疑問がある箇所を、部門への問い合わせとしてメモする
- 赤を入れたファイルを部門に戻すか、軽い直しは経営企画で直して資料に貼る
- 人経営企画が、締めた月の数値表を部門ごとに配る(いまと同じ)
- 人各部門が、コメントの様式に6つの欄を書き、提出用のフォルダに置く
- 自動経営企画の担当がスクリプトを実行すると、提出用のフォルダの様式を読み、欄ごとの文に分ける
- 自動Azure OpenAI が、欄ごとに表記の決まりに当たる箇所と直し方の候補を挙げ、文中の数値を項目に分けて書き出す
- 自動プログラムが、書き出された数値を数値表の該当の値と照合し、食い違いの候補に印を付ける
- 自動部門ごとに「校正の一覧」(直す箇所・数値の照合結果・部門への確認)を作る
- 人経営企画の担当が一覧を見て、直しを採るかを決め、数値の食い違いを数値表で確かめる
- 人部門への確認が要るものだけを部門に問い合わせ、ほかは経営企画で直して資料に貼る
各工程の詳しい説明を読む
- 経営企画が、締めた月の数値表を部門ごとに配る
- 各部門が、コメントの様式に6つの欄を書き、共有のフォルダに置く
- 経営企画の担当が、部門ごとにコメントと数値表を左右に並べて開く
- 欄ごとに読み、表記の決まり(比べる相手の書き方、単位、率の差の書き方、符号)に合わない箇所に赤を入れる
- 文中の数値を1つずつ数値表で探し、合っているかを確かめる
- 直し方に迷う箇所や、理由の書き方に疑問がある箇所を、部門への問い合わせとしてメモする
- 赤を入れたファイルを部門に戻すか、軽い直しは経営企画で直して資料に貼る
(a)同じ直しが毎月くり返される。 「前年比」を「前年同月比」に、「1億2千万円」を「120百万円」に、「利益率が2%上がった」を「2.0ポイント改善」に。直す箇所の大半は、毎月同じ種類です。 書き手は20人いて、異動もあるので、決まりを配っても浸透しきりません。
(b)比べる相手の取り違えは、読んだだけでは気づけない。 「前年比8%増」と書いてあっても、数値表で8%になっているのが前年同月比なのか前月比なのか、予算比なのかは、表の該当の列を探して初めて分かります。 120欄すべてで表を引くのは重く、締めの忙しい月ほど省かれます。
(c)率と率の差の書き方が混ざる。 営業利益率が5.0%から7.0%になったとき、「2%改善」と書くと「5.0%の2%増し」と読む人がいます。決まりでは「2.0ポイント改善」と書くのですが、部門によって書き方が揺れ、経営会議で質問の種になります。
(d)校正の目が担当者に偏る。 決まりを全部覚えているのは経営企画の1人で、その担当者が休むと、資料の表記がその月だけ揺れます。 決まりは表計算のファイルにまとまっていますが、新しい担当はそれを横に置いて1欄ずつ見るしかありません。
- 【人】 経営企画が、締めた月の数値表を部門ごとに配る(いまと同じ)
- 【人】 各部門が、コメントの様式に6つの欄を書き、提出用のフォルダに置く
- 【自動】 経営企画の担当がスクリプトを実行すると、提出用のフォルダの様式を読み、欄ごとの文に分ける
- 【自動】 Azure OpenAI が、欄ごとに表記の決まりに当たる箇所と直し方の候補を挙げ、文中の数値を項目に分けて書き出す
- 【自動】 プログラムが、書き出された数値を数値表の該当の値と照合し、食い違いの候補に印を付ける
- 【自動】 部門ごとに「校正の一覧」(直す箇所・数値の照合結果・部門への確認)を作る
- 【人】 経営企画の担当が一覧を見て、直しを採るかを決め、数値の食い違いを数値表で確かめる
- 【人】 部門への確認が要るものだけを部門に問い合わせ、ほかは経営企画で直して資料に貼る
5番目をAIでなくプログラムに置いているのが、この設計の要です。 AIの仕事は、文の中から「営業利益」「前年同月比」「12.3%」のような部品を拾うところまでです。拾った部品が数値表と合うかは、引き算と比較だけで決まります。 ここにAIを入れると、照合の結果を説明できなくなります。
7番目は全欄を読み直すのではなく、一覧の上から見ます。 直しの候補が無い欄、数値がすべて一致した欄は一覧で流し、候補と食い違いのある欄だけを開きます。
02今回想定するシステム構成
各部門のコメントの様式(6欄)── 提出用のフォルダ 管理会計の数値表(部門別の実績・予算・前年同月・前月) 社内の表記の決まり(決まりの番号付きの一覧) │ ▼【トリガー】経営企画の担当がスクリプトを実行 Python(様式の読み込み、欄ごとの分割) ▼ Azure OpenAI ── 表記の決まりに当たる箇所と直し方の候補 │ 文中の数値を「指標・比べる相手・値・単位」に分けて書き出す ▼ Python ── 書き出した数値と数値表の照合(差の判定は規則で) ▼ 部門ごとの校正の一覧(直す箇所/数値の照合結果/部門への確認) ▼ 【経営企画が一覧を見て、直しを採るか決める】 ▼ 経営会議の資料へ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 生成AI | Azure OpenAI(Microsoft Foundry)の構造化出力 | Claude API(Amazon Bedrock)、OpenAI API |
| 集計 | Python(様式の読み込みと数値表との照合) | Power Automate |
| 保管 | 提出用のフォルダと、校正の一覧の置き場 | 文書管理の仕組み |
新しく足すのは、Azure OpenAI と、照合のスクリプトだけです。 様式、数値表、表記の決まりの一覧はいまのものを使います。最初の準備は、表記の決まりの一覧に番号を振ることです。 番号が無いと、AIが挙げた直しがどの決まりに当たるのかを一覧に出せません。
Azure OpenAI を選ぶのは、未公表の業績を社外のサービスに出さないためです。 公式のページでは、Azure の提供するモデルに渡したプロンプトと応答は、他の顧客や OpenAI などのモデルの提供元に提供されず、モデルの改善や基盤モデルの学習に使われないとされています。また、モデルは状態を持たず、プロンプトや応答をモデルの中に保存しないとされています。月次の業績は、上場していれば公表前の重要な情報です。
処理の場所はデプロイの種類で変わります。 標準のデプロイでは、プロンプトと応答は顧客が指定した地理的な範囲の中で処理されるとされる一方、Global や DataZone のデプロイでは、モデルが置かれたどの地理的な範囲でも処理されうるとされています。社内の規程で国内での処理が求められるなら、デプロイの種類を先に決めます。
応答は構造化出力で受け取ります。 公式のページでは、構造化出力は呼び出しの際に渡した JSON スキーマの定義にモデルを従わせる仕組みで、Chat Completions API では response_format に、Responses API では text.format にスキーマを書くとされています。古い JSON モードは正しい JSON であることは保証しても、スキーマへの厳密な準拠は保証しないとされています。照合のスクリプトが項目名で値を読むので、構造化出力を使います。
03どうやって実装するのか
処理の起点を決める
経営企画の担当がスクリプトを実行したときに動かします。 部門の提出は締めの日の夕方に集中しますが、提出のたびに自動で動かすと、部門が直して出し直すたびに一覧が増え、どれが最新か分からなくなります。 第3営業日の正午と夕方の2回、担当が実行する運用にします。
実行すると、提出用のフォルダにある様式のうち、前回の実行から更新されたものだけを読みます。ファイルの更新日時と、前回の実行の記録を比べて決めます。出し直した部門は、その部門の一覧だけが作り直されます。
締めの日を過ぎても出ていない部門は、一覧の先頭に「未提出」として並べます。校正の仕組みが、提出の督促の一覧も兼ねます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| コメントの様式 | 部門名、対象の月、6つの欄の文、書いた人 | 提出用のフォルダ |
| 数値表 | 部門ごとの指標(売上高・営業利益・営業利益率・受注高・在庫・人員)の実績、予算、前年同月、前月と、その差・比率 | 管理会計の数値表 |
| 表記の決まり | 決まりの番号、決まりの中身、正しい例、誤った例 | 経営企画が持つ一覧 |
| 指標の呼び名の一覧 | 指標の正式な名前と、部門が使いがちな呼び方(「売上」「売上高」「出荷高」など) | 経営企画が作る一覧 |
質を決めるのは、いちばん下の2つです。 表記の決まりに正しい例と誤った例が無いと、AIは決まりの文だけから判断し、直す箇所の挙げ方が月ごとに揺れます。 指標の呼び名の一覧が無いと、「出荷高」と書かれた数値をどの指標と照合すればよいか決まりません。
表記の決まりは、たとえば次のような形で持ちます。
| 番号 | 決まり | 正しい例 | 誤った例 |
|---|---|---|---|
| R-01 | 比べる相手を必ず書く(前年同月比/前月比/予算比) | 前年同月比12.3%増 | 前年比12%増、12%増 |
| R-02 | 率どうしの差は「ポイント」で書く | 営業利益率は2.0ポイント改善 | 営業利益率は2%改善 |
| R-03 | 金額は百万円単位、小数点以下1桁 | 1,234.5百万円 | 12億3,450万円、1234百万円 |
| R-04 | 比率は小数点以下1桁 | 12.3% | 12%、12.34% |
| R-05 | 減少は「減」、マイナスの値は「△」 | 前月比△5.2% | 前月比-5.2%、マイナス5.2% |
| R-06 | 「増収」「増益」は売上高・利益の増加だけに使う | 受注高は前年同月比8.0%増 | 受注高は増収 |
| R-07 | 見通しの文は「見込み」で終える | 翌月は回復する見込み | 翌月は回復する |
データの取得方法を決める
様式と数値表は、Python で表計算のファイルを直接読みます。 様式はセルの位置が決まっているので、部門名・対象の月・6つの欄を位置で取ります。欄の位置を書き手が動かしていないかは、見出しのセルの文字で確かめます。 見出しが違えば、その様式は読まずに「様式の崩れ」として一覧に出します。
数値表は、部門ごとに「指標 × 比べる相手」の値を辞書の形に組み直します。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 6つの欄の文 | 様式の決まったセル | AIに渡す本文 |
| 部門名・対象の月 | 様式の見出しのセル | 数値表の該当の行を引く鍵 |
| 指標ごとの実績・予算・前年同月・前月 | 数値表 | 文中の数値と照合する正の値 |
| 差と比率(前年同月比・前月比・予算比) | 数値表の計算済みの列 | 照合の比較先 |
| 表記の決まり・呼び名の一覧 | 経営企画の一覧 | プロンプトに入れる |
比率は数値表の計算済みの列を使い、スクリプトで計算し直しません。 計算し直すと、端数の扱いが数値表と1桁ずれ、正しいコメントを食い違いとして挙げてしまいます。
AIへ渡す前に整形する
- 様式の確認 … 見出しのセルの文字が決まりどおりかを見ます。違えば読まずに一覧に出します
- 対象の月の確認 … 様式の月が今回の締めの月と一致するかを見ます。先月のファイルの出し直しを今月として読まないためです
- 空の欄の扱い … 欄が空なら AI に渡さず、「未記入」として一覧に出します
- 数値の表記の正規化(照合用の写しだけ) … 全角数字を半角に、「千」「万」「億」の混じった金額を百万円に換算した値を、照合用に別に持ちます。本文そのものは変えません
- 数値表の行の特定 … 部門名で数値表の行を引きます。引けなければ「数値表に行が無い」として一覧に出します
- 呼び名の付け合わせ … 指標の呼び名の一覧を、プロンプトに入れる形にします
4番目で本文を変えないのが大事です。 本文を正規化してから AI に渡すと、「12億3,450万円」と書かれていたという事実が消え、R-03 の直しが挙がらなくなります。
AIに処理させる
させるのは、2つの作業です。 1つ目は、欄の文の中で表記の決まりに当たる箇所を挙げ、決まりの番号と直し方の候補を付けること。2つ目は、文中の数値を部品に分けて書き出すことです。
| させること | 中身 | 判断できないときの扱い |
|---|---|---|
| 決まりに当たる箇所を挙げる | 当たる文字列をそのまま写し、決まりの番号と直し方の候補を付ける | どの決まりか迷えば rule_id を unknown にして挙げる |
| 数値を部品に分ける | 指標(呼び名の一覧の正式名)、比べる相手、値、単位、増減の向き | 比べる相手が書かれていなければ not_stated |
| 部門への確認を挙げる | 主張と数値の向きが合わない文(「増益」と書いて数値が減っているなど)、意味の分かりにくい文 | 直しではなく確認として挙げる |
| させないこと | 理由 |
|---|---|
| 数値表との照合 | 計算はプログラムで行う。AIが合わせにいくと食い違いが消える |
| 比べる相手の補完 | 「前年比」とだけ書かれた数値を、前年同月比と決めつけない |
| 文の主張の書き換え | 「一過性」「構造的」など、部門の判断を変えない |
| 増減の理由の当否の判断 | 理由が正しいかは部門と経営企画が決める |
| 欄の全文の書き直し | 出すのは箇所と候補。清書は人がする |
2行目がいちばん起きやすい失敗です。 「前年比8%増」と書かれていると、AIはたいてい前年同月比と読んで部品を埋めます。そうすると R-01 の直しが挙がらず、照合も前年同月比の列で行われ、本当は前月比の8%だった場合に食い違いが見えなくなります。 書かれていないものは not_stated と書かせ、照合のスクリプトの側で「比べる相手が書かれていない」として扱います。
部門への確認は、直しとは別の欄に出させます。 「増益」と書いてあるのに数値表の営業利益が減っている、というような文は、表記の直しではなく、部門の書き間違いか数値表の誤りかのどちらかです。 どちらかはAIにも経営企画にもすぐには分からないので、問い合わせとして扱います。
指示内容を固定する
あなたは製造業の経営企画部で、各部門が書いた月次の業績コメントを
社内の表記の決まりに照らして点検する担当です。
渡された1つの欄の文だけを見てください。数値表は渡しません。
【やること】
1. 表記の決まりに当たる箇所を、文の中からすべて挙げてください。
- quote には、当たる文字列を本文からそのまま写してください。
- rule_id には決まりの番号を入れてください。迷うときは unknown。
- suggestion には、決まりに合わせた直し方を1つ書いてください。
直すのは決まりに当たる部分だけです。前後の文を書き換えないでください。
2. 文中の数値をすべて、部品に分けて書き出してください。
- metric は【指標の呼び名の一覧】の正式名に置き換えてください。
一覧に無い指標は、本文の呼び方のまま入れ、metric_known を false に。
- basis は 前年同月比/前月比/予算比/実績値/not_stated のどれか。
「前年比」とだけ書かれていても、前年同月比と決めつけないでください。
本文に書かれた比べる相手がそのまま決まらないときは not_stated です。
- value は本文に書かれた数字をそのまま文字列で入れてください。
換算、四捨五入、計算をしないでください。
- direction は 増/減/記載なし のどれか。
3. 部門に確認したほうがよい文を挙げてください。
- 「増収」「増益」「改善」「悪化」などの言葉と、数値の増減の向きが
本文の中で食い違っているもの。
- 主語や指標が分からず、何の話か読み取れないもの。
【してはいけないこと】
- 数値が正しいかどうかを判断しないでください。数値表は見ていません。
- 増減の理由が正しいか、妥当かを書かないでください。
- 「一過性」「構造的」「一時的」などの部門の判断の言葉を言い換えないでください。
- 欄の全文を書き直した文章を出さないでください。
- 決まりに当たらない言い回しの好みを挙げないでください。
【表記の決まり】{rules}
【指標の呼び名の一覧】{metric_names}
【部門名】{department} 【欄】{section}
【本文】{text}
「数値表は見ていません」と最初と禁止の両方に書くのは、AIが照合の結果のような書き方をしやすいからです。 何も言わないと「この数値は妥当です」のような一文を suggestion に入れてきます。AIの出力に照合の結論が混ざると、プログラムの照合結果と並んだときに、どちらを信じるかで迷いが生まれます。
「前年同月比と決めつけない」を指示に名指しで書くのも同じ理由です。 製造業の月次では前年同月比がいちばん多く使われるので、AIはそちらに寄せて埋めます。埋めたこと自体が、直すべき箇所を消します。
出力形式を固定する
次の形のJSONで受け取ります。
{
"department": "第二事業部",
"section": "利益",
"findings": [
{ "quote": "前年比8%増", "rule_id": "R-01",
"suggestion": "前年同月比8.0%増(比べる相手を要確認)" }
],
"numbers": [
{ "quote": "前年比8%増", "metric": "営業利益", "metric_known": true,
"basis": "not_stated", "value": "8", "unit": "%", "direction": "増" }
],
"questions": [
{ "quote": "増益を確保した", "reason": "同じ欄で営業利益の減少を述べている" }
]
}
1つ目の理由は、照合のスクリプトが numbers を項目名で読めることです。 スクリプトは metric と basis で数値表の値を引き、value と比べます。比べ方は規則で決まっています。
| 照合の結果 | 条件 |
|---|---|
match | 数値表の値を小数点以下1桁にしたものと、value が一致 |
rounding | 一致しないが、value が数値表の値を整数に丸めたものと一致(R-04 の直しとして扱う) |
mismatch | 上のどちらでもない |
basis_unknown | basis が not_stated。3つの比べる相手すべてと比べ、当たったものを候補として並べる |
metric_unknown | metric_known が false。照合しない |
basis_unknown で3つすべてと比べるのは、書き手が何と比べたつもりかを経営企画が推し量れるようにするためです。 8%が前年同月比の7.8%にも前月比の12.1%にも合わなければ、比べる相手の問題ではなく数値の誤りです。
2つ目の理由は、構造化出力のスキーマの制約に合わせて形を決められることです。 公式のページでは、構造化出力ではすべての項目を必須にし、オブジェクトには additionalProperties: false を置く必要があり、任意の項目は null との組み合わせで表すとされています。また、文字列の pattern・maxLength、配列の minItems・maxItems などのキーワードはサポートされないとされています。findings が0件の欄も空の配列で返るので、件数の下限をスキーマで縛る必要がありません。 値の形の確かめ(basis が決まった値か)は、enum で縛り、スクリプトでもう一度見ます。
3つ目は、quote で本文の位置に戻れることです。 スクリプトは quote が本文にそのまま含まれるかを確かめ、含まれないものは「本文に無い引用」として一覧から外し、別に記録します。 言い換えて写した quote を通すと、直す場所が分からなくなります。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 提出用のフォルダ | Python でファイルを読む | 更新された様式だけを読む |
| 管理会計の数値表 | Python でファイルを読む | 部門ごとの指標と比率 |
| Azure OpenAI | Chat Completions API の構造化出力 | 欄ごとに1回呼ぶ |
| 校正の一覧 | Python で表計算のファイルを書く | 部門ごとに1シート |
様式にも数値表にも書き込みません。 校正の一覧を別のファイルに出し、直しを採るかどうかは人が様式の側で反映します。 スクリプトが様式を直接書き換えると、部門が出したものと資料に載ったものの差が後から追えなくなります。
校正の一覧は、部門ごとに次の3つの表を並べます。
| 表 | 列 |
|---|---|
| 直す箇所 | 欄、本文の該当の文字列、決まりの番号、直し方の候補、採る/採らない(人が記入) |
| 数値の照合 | 欄、本文の数値、指標、比べる相手、数値表の値、照合の結果 |
| 部門への確認 | 欄、本文の該当の文字列、確認する理由、問い合わせた日(人が記入) |
人が確認する
人が見るのは、一覧の3つの表です。 欄の本文を頭から読み直すのは、mismatch か「部門への確認」がある欄だけにします。
- 数値の照合の
mismatchとbasis_unknownを先に見る … 数値表を開き、本当に合わないかを確かめます。数値表の側の誤りであることもあります - 部門への確認を見る … 問い合わせるか、経営企画で判断できるかを決めます
- 直す箇所を見る … 直し方の候補を採るかを決めます。採るのは決まりに当たる部分の直しだけです
- 採らなかった直しに理由を付ける … 決まりの側を変えるべきかを、翌月に見直す材料にします
1番目で数値表の誤りを疑うのを省かないでください。 部門は自部門の実績をよく知っており、コメントの数値のほうが正しいことがあります。数値表を直したら、それを使う全部門のコメントを照合し直します。
目標は、120欄をならして1欄5分です。 直しの候補が無く数値がすべて match の欄は一覧で流して数十秒、mismatch や部門への確認がある欄は数値表を開いて十数分かかります。
例外に対処する
| 起きること | 対応 |
|---|---|
| 見出しのセルが違う(様式の崩れ) | 読まずに「様式の崩れ」として一覧に出し、部門に出し直しを頼む |
| 様式の月が今回と違う | 読まずに一覧に出す。先月のファイルの上書き忘れが多い |
| 欄が空 | 「未記入」として一覧に出す |
| 数値表に部門の行が無い | 照合をせず、直す箇所だけを出す。新設の部門は数値表の側を先に足す |
| 応答が途中で切れた、形が崩れた | 同じ欄で1回だけ呼び直す。だめなら「要手作業」 |
| 安全のための絞り込みで応答が止まった | 安全の欄に事故や災害の記述があると起こりうる。その欄は人が校正する |
quote が本文に含まれない | 一覧から外して記録する。続くなら指示を見直す |
| 呼び名の一覧に無い指標が続く | 部門が新しい言い方を使い始めた印。一覧に足す |
6行目は製造業の月次で起こりえます。 公式のページでは、プロンプトと応答は有害な内容の種類について即時に評価され、設定したしきい値に従って生成が絞り込まれるとされています。安全・環境の欄に労働災害の経緯を書く部門があるなら、止まった欄を自動でやり直さず、人に回します。
記録を残す
- 実行した日時と、読んだ様式のファイル名・更新日時
- 欄ごとの AI の応答の全文(
findings、numbers、questions) - 照合に使った数値表のファイル名と、そのときの値
- 照合の結果(
match/rounding/mismatch/basis_unknown/metric_unknown) - 人が直しを採ったか、採らなかったかと、採らなかった理由
- 部門に問い合わせた内容と、部門の回答
- 決まりの番号ごとの、月ごとの件数
3つ目で「そのときの数値表の値」を残すのは、締めの後に数値表が直ることがあるためです。 照合の結果だけが残っていると、mismatch がコメントの誤りだったのか、直す前の数値表の誤りだったのか、後から分かりません。
最後の行は、決まりの浸透を測る材料です。 R-01 の件数が毎月同じ部門で出るなら、その部門の書き手に決まりを説明し直します。件数が減らない決まりは、決まり自体が分かりにくい可能性もあります。
04実装レベルの3段階
本記事の想定は半自動化です。 経営企画が担当として一覧を見て直しを採る形で、1欄15分が5分になります。差が大きいのは、②の数値を数値表で探す6分がほぼ無くなるためです。 本格構成は、決まりが部門に定着してからにします。 部門に直しの候補をそのまま返すと、書き手は候補を採るだけになり、部門への確認として挙がるべき主張と数値の食い違いが、部門の中で黙って直されて消えます。 半自動化を数か月回し、決まりの番号ごとの件数が下がってから進めます。
05工数削減シミュレーション
導入後 120件 × 5分 ÷ 60 = 10 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 部門が十数以上あり、月次の業績報告のコメントを各部門の担当者が書き、経営企画が集めて経営会議の資料にまとめている製造業・商社・物流業など。「前年同月比」と「前月比」の取り違え、率の差を「%」と書くか「ポイント」と書くか、百万円と億円の混在のような表記の直しが毎月同じように発生している場合。校正の目が経営企画の特定の担当者に偏っている場合。
- 部門が数個で、経営企画が自分でコメントを書いている場合。コメント欄が無く、数値表だけを報告している場合。なお、数値の増減の理由が正しいか、その説明で経営会議に出してよいかは経営企画と部門長が判断するもので、この構成では代替しません。
07最小構成で試す方法
- 先月の20部門分のコメントの様式と、経営企画が赤を入れた後のものを用意する
- 表記の決まりの一覧に番号を振り、正しい例と誤った例を1つずつ足す
- 社内で使える生成AIの画面に、決まりの一覧と、1部門の1欄の本文を貼る
- 「決まりに当たる箇所を、本文の文字列を写して挙げ、決まりの番号と直し方を付けてください。文中の数値を、指標・比べる相手・値に分けて書き出してください。比べる相手が書かれていなければ『書かれていない』としてください。数値が正しいかは判断しないでください」と指示する
- 出てきた直しを、当時経営企画が入れた赤と突き合わせる
3部門・18欄で十分です。 見るのは、赤と同じ箇所が挙がったかと、「前年比」を前年同月比と決めつけて埋めていないかです。
| 出てきた内容 | 判断 |
|---|---|
| 当時の赤とほぼ同じ箇所が挙がった | スクリプトと照合に進む |
| 決まりに無い言い回しの好みまで挙げる | 指示に「決まりに当たらないものを挙げない」を足す。構成は有効 |
| 比べる相手を勝手に埋める | 指示で直る。直らなければ部品の書き出しを別の呼び出しに分ける |
| 当時の赤に、決まりの一覧に無い直しが多い | 決まりの一覧が先。 担当者の頭の中にある決まりを書き出す |
4行目が出ることは珍しくありません。 校正が担当者に偏っていた理由が、そのまま見えたということです。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 「前年比」を前年同月比として埋める | not_stated を選ばせ、指示に名指しで禁じる |
| AIが「この数値は妥当」と書く | 数値表を渡していないことを指示の冒頭と禁止の両方に書く |
| 本文を正規化してから渡し、直すべき表記が消える | 正規化は照合用の写しだけにする |
| 比率を計算し直して端数がずれる | 数値表の計算済みの列を使う |
| 言い回しの好みまで直しに挙がる | 決まりに当たらないものを挙げないと指示する |
| 部門の判断の言葉が言い換えられる | 「一過性」「構造的」などを言い換えないと指示する |
quote が本文に無い | 含まれないものは一覧から外して記録する |
| 先月の様式を今月として読む | 様式の月を締めの月と照らす |
スキーマに minItems や maxLength を書いて通らない | 構造化出力ではサポートされない。件数や長さはスクリプトで見る |
| 安全の欄の応答が止まる | 自動でやり直さず人が校正する |
| 数値表の誤りを部門の誤りとして戻す | mismatch はまず数値表を疑う |
上の2行が、この構成の失敗のほとんどです。 どちらも、AIが数値の意味を自分で補ってしまうところから出発しています。補わせない指示と、照合をプログラムに置く設計の2つで防ぎます。
下の2行も早く効いてきます。 停止した欄を黙って飛ばすと、安全の欄だけが校正されないまま会議に出ます。数値表の誤りを部門に戻すと、次の月から部門が数値表を信用しなくなります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 部門別の売上高・利益・受注・在庫・人員の実績と予算、それを説明するコメント。上場している会社なら、公表前の業績そのものです。
- 契約の範囲で使える生成AIに限る … 公式のページでは、Azure の提供するモデルに渡したプロンプトと応答は、他の顧客や OpenAI などのモデルの提供元に提供されず、明示の許可なくモデルの改善に使われないとされています。社員が個人の契約の生成AIに様式を貼る運用を、この仕組みで置き換えます
- 処理の場所を先に決める … Global や DataZone のデプロイでは処理の場所が広がります。社内の情報管理の規程と照らしてデプロイの種類を選びます
- 不正利用の監視のための保存を把握しておく … 公式のページでは、不正利用の兆候が検知されたときに、プロンプトと応答の一部が自動の審査と、必要に応じて人の審査の対象になりうるとされています。業績のコメントで問題になることは考えにくいものの、情報管理の担当には説明しておきます
- 校正の一覧も同じ扱いにする … 一覧には部門ごとの数値と照合の結果が並びます。提出用のフォルダと同じ閲覧の範囲に置き、全社の共有の場所に出しません
- 人事の評価に使わない … 決まりの番号ごとの件数は部門の単位で見ます。書き手個人の点数にすると、書き手が数値を避けて曖昧な文を書くようになります
誤りが起きた場合のリスクは、数値の誤りを見逃して会議に出すことと、正しいコメントを誤りとして部門に戻すことの2つです。 前者は照合をAIに任せると起き、後者は数値表の側の誤りを疑わないと起きます。どちらも照合の結果を人が数値表で確かめる工程で防ぎます。
10まず何から始めるか
1週目:表記の決まりの一覧に番号を振る
経営企画がいま使っている決まりに番号を振り、正しい例と誤った例を1つずつ付けます。担当者が毎月入れている赤のうち、一覧に無いものを書き出すのが中心の作業です。
2週目:3部門で試す
先月の3部門・18欄を、社内で使える生成AIの画面で点検させ、当時の赤と突き合わせます。「前年比」を勝手に埋めていないかを最優先で見ます。
3週目:指標の呼び名の一覧を作る
20部門のコメントから指標の呼び方を拾い、正式名に対応付けます。あわせて、数値表の列と指標・比べる相手の対応を決めます。
4週目:スクリプトで一覧を出す
Python で様式を読み、Azure OpenAI を構造化出力で呼び、校正の一覧の「直す箇所」の表だけを出します。この時点では数値の照合をせず、直しの挙がり方だけを見ます。
2か月目: 数値の照合を足し、mismatch と basis_unknown の件数を数えます。3か月目以降: 1欄15分が何分になったかを実測し、決まりの番号ごとの件数を部門に返します。件数が下がらない決まりを見直し、新しい担当でも一覧だけで校正が回るようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
構造化出力が、呼び出しの際に渡した JSON スキーマの定義にモデルを従わせる仕組みであること。Chat Completions API では response_format、Responses API では text.format にスキーマを書くこと。JSON モードがスキーマへの厳密な準拠を保証しないこと。すべての項目を必須にし additionalProperties: false を置く必要があること。任意の項目は null との組み合わせで表すこと。文字列の pattern・maxLength、配列の minItems・maxItems などがサポートされないこと | Microsoft Learn: How to use structured outputs with Azure OpenAI in Microsoft Foundry Models | 2026-10-28 |
| プロンプトと応答が他の顧客や OpenAI などのモデルの提供元に提供されず、モデルの改善や基盤モデルの学習に使われないこと。モデルが状態を持たずプロンプトや応答を保存しないこと。標準のデプロイでは顧客が指定した地理的な範囲で処理され、Global・DataZone のデプロイでは処理の場所が広がること。プロンプトと応答が有害な内容について即時に評価され、しきい値に従って生成が絞り込まれること。不正利用の兆候が検知されたときに自動の審査と必要に応じた人の審査の対象になりうること | Microsoft Learn: Data, privacy, and security for Foundry Models sold by Azure | 2026-10-28 |
表記の決まりの中身と、業績の数値を外部のサービスで扱ってよい範囲は、自社の経営企画と情報管理の担当で決めてください。 本記事は Microsoft の公式ドキュメントで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-2178)についてのご相談はこちらから。
