決算説明会の想定問答集を決算資料と過去の質疑記録から作る
決算短信・決算説明資料と過去の説明会の質疑記録を入力に、前回聞かれて今回数字が動いた論点から想定質問を出し、資料名とページを根拠に付けた回答案を作ります。数値の照合はプログラムが行い、IR担当の作業は、記録の読み返しと回答の執筆から、根拠を見て直すことに変わります。
- 利用ツール
- Amazon Kendra/Azure AI/Azure OpenAI Service/ChatGPT/Claude/Gemini/Make/Microsoft Copilot/n8n/OpenSearch/Power Automate/Python
- 対象業界
- IT・SaaS/小売/製造
- 対象部門
- 経営企画/財務
- 対象業務
- 内容確認・チェック/情報検索/書類作成
- 主な課題
- 属人化している/書類作成に時間がかかる/確認ミスが多い
- AIで行う処理
- 生成
- 主な効果
- 品質標準化/属人化解消/工数削減/検索時間短縮
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 決算短信と決算説明資料の原稿ができる(発表の2〜3週間前)
- IR担当が前回の想定問答集と過去の質疑記録を読み返し、聞かれそうな論点を書き出す
- 資料から数値を拾い、前年同期比や前四半期比をExcelで計算する
- 論点ごとに想定質問を立て、回答案を書く
- 事業部門へ、回答案と数値の確認をメールで依頼する
- 返ってきた修正を反映し、資料の最終版と数値が合っているかを見直す
- CFO・社長とのリハーサルで読み合わせる
- IR担当が、資料のPDFと決算数値一覧を四半期フォルダに置き、処理を実行する
- 自動前回の説明会の質疑を、カテゴリと論点に分ける(それ以前の分は整理済み)
- 自動決算数値一覧から、前期比で大きく動いた項目を計算する
- 自動「過去に聞かれた論点」と「今回動いた数値」を突き合わせ、優先順位を付ける
- 自動論点ごとに、開示資料の該当ページだけを根拠にした想定質問と回答案を作る
- 自動回答案の数値と引用が根拠ページに実在するかを、プログラムで照合する
- 人IR担当が、照合結果と根拠ページを見て回答案を直し、採否を決める
- 自動「部門確認」にした問答について、担当部門へ確認依頼を送る
- 人部門が事実関係を直し、資料にない情報が加わった問答はIR責任者が判断する
- 人CFO・社長とのリハーサルで読み合わせる
各工程の詳しい説明を読む
- 決算短信と決算説明資料の原稿ができる(発表の2〜3週間前)
- IR担当が前回の想定問答集と過去の質疑記録を読み返し、聞かれそうな論点を書き出す
- 資料から数値を拾い、前年同期比や前四半期比をExcelで計算する
- 論点ごとに想定質問を立て、回答案を書く
- 事業部門へ、回答案と数値の確認をメールで依頼する
- 返ってきた修正を反映し、資料の最終版と数値が合っているかを見直す
- CFO・社長とのリハーサルで読み合わせる
問題は3つあります。
(a)読み返しに時間が消える。 8四半期分の質疑は1回30問でも240問です。「前回、在庫の質問にどう答えたか」を探すだけで時間が過ぎます。
(b)数値の食い違いに気づきにくい。 資料の最終版で数値が変わっても、問答集は古いまま残ります。資料と違う数値を答えれば訂正が必要です。
(c)線引きと勘が属人化している。 部門が書き足す内訳を使ってよいか、この局面で何を聞かれるかの判断が、ベテランの頭の中にしかありません。
- IR担当が、資料のPDFと決算数値一覧を四半期フォルダに置き、処理を実行する
- 【自動】 前回の説明会の質疑を、カテゴリと論点に分ける(それ以前の分は整理済み)
- 【自動】 決算数値一覧から、前期比で大きく動いた項目を計算する
- 【自動】 「過去に聞かれた論点」と「今回動いた数値」を突き合わせ、優先順位を付ける
- 【自動】 論点ごとに、開示資料の該当ページだけを根拠にした想定質問と回答案を作る
- 【自動】 回答案の数値と引用が根拠ページに実在するかを、プログラムで照合する
- 【人】 IR担当が、照合結果と根拠ページを見て回答案を直し、採否を決める
- 【自動】 「部門確認」にした問答について、担当部門へ確認依頼を送る
- 【人】 部門が事実関係を直し、資料にない情報が加わった問答はIR責任者が判断する
- 【人】 CFO・社長とのリハーサルで読み合わせる
自動化されるのは「探す」「数値の動きを拾う」「下書きを書く」「突き合わせる」の4つです。何を答えるかは人が決めます。
02今回想定するシステム構成
SharePoint(IR部だけが開けるライブラリ) ├ 決算短信・決算説明資料(PDF)/決算数値一覧(Excel) └ 過去の質疑記録/前回までの想定問答集 │ ▼【トリガー】IR担当が実行(資料の差し替えは Power Automate が通知) Python ── テキスト化 / 質疑の分割と匿名化 / 前期比の計算 │ ├─▶ Azure OpenAI Service ── 過去の質疑を論点に分類(JSON) ├─▶ Python ── 「聞かれた論点」×「動いた数値」で優先順位 ├─▶ Azure OpenAI Service ── 想定質問と回答案(根拠ページ付きJSON) └─▶ Python ── 数値と引用を根拠ページと照合(生成AIは使わない) │ ▼ 問答一覧(Excel)──【人】IR担当が確認・修正 │ ▼ SharePoint リスト「部門確認」─▶ Power Automate ── 担当部門へ確認依頼 │ ▼ 【人】部門が修正 →【人】IR責任者が開示範囲を判断 →【人】リハーサル
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 実行環境 | Python(前処理・優先順位付け・数値照合) | ― |
| 生成AI | Azure OpenAI Service(Structured Outputs) | OpenAI API、Claude API、Gemini API |
| ワークフロー | Power Automate(差し替えの通知・部門確認の依頼) | Make、n8n |
| 検索基盤 | Azure AI Search(本格構成で追加) | OpenSearch、Amazon Kendra |
| 生成AI | Microsoft 365 Copilot のエージェント(最小構成) | ChatGPT、Claude、Gemini |
| 保管 | SharePoint(IR部限定のライブラリとリスト) | Box、Google Drive |
最小構成は Microsoft 365 Copilot のエージェントで試し、半自動化から Azure OpenAI Service を使います。回答案をJSONで受け取り、数値をプログラムで照合するためです。
検索基盤は最初は要りません。 開示資料は数十ページで、関係するページだけを渡せば足ります。
03どうやって実装するのか
処理の起点を決める
| 起点 | 動くもの |
|---|---|
| 資料の原稿がそろった(発表の2〜3週間前) | IR担当が実行し、想定質問と回答案を作る |
| 資料のファイルが差し替わった | Power Automate が通知し、照合だけを再実行する |
| 問答を「部門確認依頼」にした | Power Automate が担当部門へ依頼を送る |
生成はファイル保存のたびに動かしません。 原稿は何度も変わり、そのたびに未公表の資料を送ることになるためです。
差し替えの監視には、SharePoint トリガー「ファイルが作成または変更されたとき(プロパティのみ)」を使い、「Folder」で対象フォルダを指定します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 決算短信・決算説明資料 | 開示するPDFと同じもの | SharePoint(IR部限定) |
| 決算数値一覧 | 主要項目×四半期の数値(百万円) | 経理部と共有するExcel |
| 過去の質疑記録 | 8四半期分の書き起こし(質問者、質問、回答者、回答) | SharePoint |
| 前回までの想定問答集 | 論点、質問、回答 | SharePoint |
| 論点カテゴリ表 | 業績全体、セグメント、受注、価格・原価、為替、株主還元など | IR担当が作成 |
データの取得方法を決める
開示資料: PowerPointではなく開示するPDFを使います。 根拠をページ番号で示すため、読み手の資料とページがずれると確認できません。決算数値一覧は、経理部が資料との一致を確認済みの版を使います。
SharePoint のファイルを処理環境へ渡す方法(同期フォルダかAPIか)は、利用環境に応じた個別確認が必要です。
AIへ渡す前に整形する
- ページ単位のテキスト化 … 各ページの先頭に「資料名+ページ番号」を付けます。表紙を1ページ目と数えるか、印字のページ番号を使うかを先に決めます
- 文字化けの確認 … PDFによっては取り出したテキストが化けます。化けたまま照合すると、すべて「不一致」になります
- 質疑の分割と匿名化 … 質問と回答の組にID(例:2026Q1-07)を付け、質問者の氏名と社名を「アナリストA」に置き換えます
- 前期比の計算と優先順位 … 前期比が社内で決めた幅を超えた項目を「動いた項目」にし、論点を A=聞かれていて動いた、B=聞かれていないが大きく動いた、C=聞かれているが動いていない、に分けます
- 関係ページの絞り込み … 論点に紐づく項目名やセグメント名でページを文字列検索し、該当ページだけを生成AIに渡します
AIに処理させる
| 処理 | 内容 |
|---|---|
| 過去の質疑の分類 | 質問をカテゴリと論点(例:「車載向け受注の回復時期」)に分け、関係する数値項目を付ける |
| 想定質問の作成 | 優先度A・Bの論点ごとに、数値の動きをふまえた質問を2〜3通りの切り口で作る |
| 回答案と根拠 | 該当ページの記載だけで回答案を書き、資料名・ページ・原文を付ける |
| 答えられない質問の明示 | 資料に答えがなければ回答案を書かず、理由と確認先の部門を示す |
させないことも決めます。 前期比の計算、単位の換算、資料にない見通し、数値の照合です。照合を生成AIにさせると、照合結果そのものを確かめる手段がなくなります。
指示内容を固定する
あなたは上場企業のIR担当を支援する担当者です。
下の【論点】について、決算説明会で出そうな質問と回答案を作ってください。
【厳守事項】
- 回答案には【開示資料】の記載だけを使ってください。
資料にない数値、見通し、理由を書かないでください。
- 【前回までの想定問答】は言い回しの参考にだけ使ってください。
そこにある数値は古い期のものなので使わないでください。
- 数値は資料の表記のまま書いてください(億円に直さない、△を「減」に
言い換えない)。前期比や構成比を自分で計算しないでください。
- evidence に資料名・ページ・原文を入れてください。原文は要約しないでください。
- 資料で答えられない場合は answer_draft を null にし、
cannot_answer_reason と needs_department を埋めてください。
【論点】{topic}(優先度:{priority})
【今回動いた数値(計算済み)】{moved_items}
【過去の質疑】{past_qa}
【前回までの想定問答】{previous_qa}
【開示資料(関係ページのみ。先頭に資料名とページ番号)】{pages}
「前回の数値を使わない」の1行が要です。 生成AIは言い回しと一緒に数値も引き継ぎやすく、古い数値が自然な文章に紛れると人の目では見落とします。
出力形式を固定する
{
"topic_id": "",
"priority": "A | B | C",
"questions": [
{
"question": "",
"based_on_past": ["2026Q1-07"],
"answer_draft": "",
"evidence": [{ "doc": "決算説明資料", "page": 0, "quote": "" }],
"cannot_answer_reason": null,
"needs_department": []
}
]
}
Azure OpenAI Service の Structured Outputs で、この形を JSON Schema として指定します(Chat Completions は response_format、Responses は text.format、strict: true)。全項目を required にし、additionalProperties: false を付ける必要があります。 空で返す項目は型を ["string", "null"] にします。
システムへ連携する
数値の照合(Python): 回答案の数値が根拠ページにあるか、引用した原文がそのページにあるかを文字列で突き合わせます。
import re, unicodedata
NUM = re.compile(r"-?\d+(?:\.\d+)?")
def norm(s): # 全角→半角、12,345→12345、△1,234→-1234
s = unicodedata.normalize("NFKC", s)
s = re.sub(r"(?<=\d),(?=\d)", "", s)
return re.sub(r"[△▲]\s*", "-", s)
def check(answer, evidence, pages):
bad, cited = [], ""
sq = lambda s: re.sub(r"\s+", "", norm(s))
for e in evidence:
text = pages.get((e["doc"], e["page"]))
if text is None or sq(e["quote"]) not in sq(text):
bad.append(e) # ページや原文が見つからない
else:
cited += "\n" + text
missing = set(NUM.findall(norm(answer))) - set(NUM.findall(norm(cited)))
return {"bad_evidence": bad, "missing_numbers": sorted(missing)}
結果は「一致」「不一致」「根拠不正」「回答なし」に分けてExcelに書き出します。資料が差し替わったら照合だけをやり直します。 「不一致」に変わった問答は、数値が古くなったということです。
部門への確認依頼(Power Automate): 確認を終えた問答を SharePoint リスト「部門確認」に1問1行で登録し、状態を「部門確認依頼」にすると、「アイテムを作成か変更した場合」トリガーで担当部門へ通知します。部門はリストに直接修正を書き込みます。数値が書き足された問答には照合をもう一度かけます。 このトリガーは実行まで数分かかることがあります。
人が確認する
全件、人が確認します。運用が安定しても変えません。 経営陣が口にする内容であり、数値を誤れば訂正が要り、未公表の重要な情報を話せば開示の問題になるためです。
| 誰が | 何を見るか |
|---|---|
| IR担当 | 「一致」以外の問答の数値、根拠ページとの対応、言い回し |
| 事業部門 | 事実関係(受注の状況、価格改定の時期など) |
| IR責任者 | 資料にない情報を含む問答を使うか、どう答えるか |
確認を速くするため、「一致」とそれ以外を分けて並べ、回答案の横に根拠の原文を表示します。
例外に対処する
| 起きること | 対応 |
|---|---|
| 資料で答えられない質問 | 回答案を空欄にし、確認先部門を付けて人へ回す。推測で書かせない |
| 根拠ページにない数値がある | 「不一致」で止める。直すのは人 |
| 引用した原文が資料に見つからない | 「根拠不正」で止める。原文を要約・創作した可能性がある |
| 資料が差し替わった | 照合だけを再実行し、結果が変わった問答を一覧にする |
| 部門の修正で資料にない情報が加わった | IR責任者へ回す。自動で問答集に反映しない |
| 業績予想の修正を検討している期 | 業績予想カテゴリは処理から外し、IR責任者の管理下で人が作る |
記録を残す
- 使った資料の版、生成AIに送った内容(論点とページ)、返ってきたJSON
- 照合結果と、照合に使った資料の版
- IR担当・部門・IR責任者の修正前後、確認者、日時
- 説明会で実際に出た質問と、想定問答との対応
送った内容の記録は、発表前の情報をいつ・どこへ出したかの記録です。 インサイダー取引防止の社内管理と合わせて保管期間と閲覧者を決めてください。
04実装レベルの3段階
この記事の試算(1問45分→17分)は半自動化が前提です。 最小構成では数値の確認が減りません。本格構成の価値は時間ではなく、「3年前の同じ局面でどう答えたか」を探せることです。 検索をつなぐ際、Azure OpenAI の On Your Data は2026年10月14日に提供終了予定で、移行先の Foundry Agent Service では現時点で Structured Outputs が使えません。検索は Python 側で Azure AI Search に問い合わせ、結果をプロンプトに入れる形が合います。
05工数削減シミュレーション
導入後 40件 × 17分 ÷ 60 = 11.3 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 四半期ごとに決算説明会やアナリスト取材を行う上場企業で、想定問答集が1回100問以上ある場合。過去の説明会の質疑を書き起こして保存していること。決算資料と決算数値の一覧を SharePoint などで版管理していること。Microsoft 365 または Azure を契約済みであること。
- 説明会が年2回で、問答が数十問程度の場合。過去の質疑記録が残っていない場合(論点を拾う材料がない)。発表前の決算資料を扱える環境が社内規程で限られ、自社テナント内のAIサービスも使えない場合。回答の大半が開示資料にない事業の見通しで占められる場合。
07最小構成で試す方法
発表済みの前回決算で試します。 公表済みの資料だけなら、未公表情報の扱いを決める前に検証できます。
- 前回(発表済み)の決算短信・説明資料のPDFと、それ以前8四半期分の質疑記録を、IR部だけが開ける SharePoint フォルダに置く
- Microsoft 365 Copilot で新しいエージェントを作り、そのフォルダをナレッジに追加する
- 「Only use specified sources(指定したソースのみを使用)」をオンにし、エージェントの説明に第7章の厳守事項を書く
- 「前回の説明会で出そうな質問を論点ごとに20問。回答案と資料名・ページも」と頼む
- 実際の前回の質疑と比べて、当たった論点の数と、回答案の数値の誤りの件数を数える
Agent Builder では SharePoint のファイル・フォルダ・サイトを最大100件までナレッジにでき、既存の権限と秘密度ラベルに従います。 ただし この設定でも一般知識の利用を完全には止められないと明記されています。ファイルを直接アップロードすると、エージェントを使える全員がその内容に基づく回答を見られるため、フォルダを指定してください。
| 結果 | 判断 |
|---|---|
| 実際の質問の論点を半分以上当てた | 半自動化へ進む価値がある |
| 論点は当たるが、数値の誤りが多い | 想定どおり。照合をプログラムにする意味がある |
| 論点がほとんど当たらない | 質疑記録が足りないか、カテゴリが粗い。カテゴリ表から作り直す |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 前回の問答集の古い数値が回答案に混ざる | 前回の問答は言い回しの参考に限定する。照合で拾う |
| 百万円と億円の換算で照合が合わない | 資料の表記のまま書かせる。話し言葉への言い換えはリハーサルで人が行う |
| 減少を「減」と言い換えて不一致になる | △表記のまま書かせ、照合側で負の数にそろえる |
| 資料の差し替え後に照合をやり直し忘れる | Power Automate で通知し、照合結果に資料の版を記録する |
| ラベル付きファイルのアップロードでエージェントが作れない | ユーザー定義のアクセス許可を持つラベルでは失敗すると明記されている。フォルダ指定にする |
| 検索基盤を On Your Data で組んでしまう | 2026年10月14日に提供終了予定。新規に組まない |
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 発表前の決算資料の原稿、決算数値一覧、部門からの補足情報、質疑記録。発表前の決算数値は、インサイダー取引規制の重要事実や、FDルールの重要情報に当たりうる情報です。
- 未公表の決算情報であること … 金融庁のQ&Aでは、決算予想値の大幅な修正が重要事実の例です。FDルールのガイドラインでは、最低限管理すべき情報にインサイダー取引規制の対象情報と決算情報が挙げられています。原稿を処理する時点で管理の対象と考えてください
- 発表前後で扱いを変える … 同じQ&Aでは、TDnetで通知した情報が「適時開示情報閲覧サービス」に掲載されると公表になるとされています。掲載前は、規程で認められた環境と担当者だけが扱います。 掲載後も、部門の補足を含む想定問答集は社外秘です
- 外部AIへの入力可否 … Azure OpenAI では、入出力がモデルの学習に使われず、Global・DataZone 以外の配置では指定地域内で処理されると明記されています。不正利用の監視で人が確認する場合があることも記載されています。配置の種類と監視の扱いを規程に照らして決めてください
- 回答の範囲(FDルール) … ガイドラインでは、公表済み情報の詳細な内訳や補足説明は一般にそれ自体では対象外とする一方、契約済みの為替予約レートのように業績の変化が容易に予測できる情報は重要情報に当たる可能性があるとしています。部門の補足がどちらかは開示担当と法務が判断します
- アクセス権限と個人情報 … ライブラリ、リスト、処理環境をIR部と承認者に限定します。アナリストの氏名と所属は送る前に記号にします
- 自動実行してよい範囲 … 下書き、照合、確認依頼の送付までです。問答集を社外へ出す操作は自動化しません
制度は改正されることがあります。運用を決める時点で金融庁の最新情報を確認してください。
10まず何から始めるか
1週目:情報の扱いを決める
開示担当、法務、情報システム部門と、「発表前の資料を、どの環境で、誰が、どのAIサービスに送ってよいか」を決めます。決まるまでは、発表済みの資料での検証にとどめます。
2週目:発表済みの前回決算で最小構成を試す
第8章の手順で、論点の的中数と数値の誤りの件数を数えます。
3〜4週目:材料をそろえる
質疑記録を話者表記でそろえ、論点カテゴリ表を作ります。決算数値一覧を項目×四半期の1シートにそろえます。
次の決算期:半自動化で1回回す
優先度A・Bの論点だけで、IR担当1名が使います。1問あたりの時間と「不一致」の件数を記録し、説明会後に実際の質問と突き合わせます。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 最低限管理すべき情報に決算情報が含まれること。公表済み情報の内訳や補足説明は一般に対象外だが、為替予約レートのような例外があること | 金融庁: フェア・ディスクロージャー・ルールガイドライン | 2026-09-14 |
| 決算予想値の大幅な修正が重要事実の例であること。適時開示情報閲覧サービスへの掲載で公表となること | 金融庁・証券取引等監視委員会: インサイダー取引規制に関するQ&A | 2026-09-14 |
| SharePoint を最大100件ナレッジにでき、権限と秘密度ラベルに従うこと。「Only use specified sources」は一般知識を遮断しきれないこと。アップロードしたファイルの扱いと、作成に失敗するラベル | Microsoft Learn: Add knowledge sources to your declarative agent | 2026-09-14 |
| Structured Outputs の指定方法と制約。On Your Data と Foundry Agent Service では使えないこと | Microsoft Learn: Structured outputs | 2026-09-14 |
| 入出力が学習に使われないこと。配置の種類と処理地域。不正利用の監視 | Microsoft Learn: Data, privacy, and security for Foundry Models sold by Azure | 2026-09-14 |
| On Your Data が2026年10月14日に提供終了予定であること | Microsoft Learn: Azure OpenAI On Your Data (classic) | 2026-09-14 |
| SharePoint トリガー「ファイルが作成または変更されたとき(プロパティのみ)」「アイテムを作成か変更した場合」があり、実行まで数分かかりうること | Microsoft Learn: Power Automate 用 SharePoint コネクタ | 2026-09-14 |
ファイルを処理環境へ渡す方法とライセンス条件は、利用環境に応じた個別確認が必要です。 発表前の決算情報を外部のAIサービスで扱ってよいかは、開示担当と法務に確認してください。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0043)についてのご相談はこちらから。
