Slide 1

Slide 1 text

Escape from Excel方眼紙 マークダウンで繋ぐ、人とAIの架け橋 山口 拓也 | 日本経済新聞社 | 2026-03-19 Better insights for a better world

Slide 2

Slide 2 text

自己紹介 Better insights for a better world 2

Slide 3

Slide 3 text

日経の課金決済プラットフォームについて ⽇経グループのサービス ⽇経ID基盤 課⾦決済プラットフォーム 決済⼿段管理 契約管理 認可管理 課⾦決済サイクル etc. etc. Better insights for a better world 3

Slide 4

Slide 4 text

Excel方眼紙メンテナンスしていますか 課金決済プラットフォーム開発チームでは、2015年 からメンテナンスされ続けている設計書等のドキュメ ントがExcel方眼紙で作られています。開発チームと 業務担当者の共通言語として機能してきたもので、そ の数は数百ファイル。 こういうやつです → Better insights for a better world 4

Slide 5

Slide 5 text

Excel方眼紙 is Freedom Better insights for a better world 5

Slide 6

Slide 6 text

これまでの課題感 Better insights for a better world 6

Slide 7

Slide 7 text

さらに生成AI時代になり… Better insights for a better world 7

Slide 8

Slide 8 text

例えばマークダウンなら マークダウンにしたい… Better insights for a better world 8

Slide 9

Slide 9 text

移行できる環境が整ったのでは…? 機は熟した…! Better insights for a better world 9

Slide 10

Slide 10 text

変換フロー 4ステップでExcel方眼紙をマークダウンへ 1 PDF変換 図形・レイアウトを含 む視覚情報として保持 する → 2 テキスト抽出 取り消し線など構造情 報も含め文言の正確性 を担保する → 3 AI変換 視覚情報と文言情報を 組み合わせてマークダ ウンを生成する → 4 AI検証 意図しない欠落・混入 がないかをAIが自律的 にチェックする Better insights for a better world 10

Slide 11

Slide 11 text

Step 1: ExcelをシートごとにPDFに変換 📊 Excel ファイル Sheet1 / Sheet2 / Sheet3 ... 01 LibreOffice(Docker) Excel 全体を 1 つの PDF に変換 📄 全体 PDF アウトライン = シート名 02 pypdf でシートごとに分割 アウトラインを元に分割 📄 Sheet1.pdf 📄 Sheet2.pdf 📄 Sheet3.pdf Better insights for a better world 11

Slide 12

Slide 12 text

Step 2: Excelからシートごとにテキストを抽出 📊 Excel ファイル(1シート分) 通常テキスト・取り消し線テキスト混在 01 openpyxl で処理 フォント情報から内部構造を読み取り 📃 通常テキスト マークダウンに含める ✅ 📃 取り消し線テキスト マークダウンに含めない ❌ Better insights for a better world 12

Slide 13

Slide 13 text

Step 3: 生成AIでマークダウンに変換 AI に渡すコンテキスト 📋 プロンプト 変換ルール・サンプル 📄 PDF ファイル 視覚的な情報 📃 テキスト 正確な⽂⾔ 📃 取り消し線 除外すべき内容 01 ⽣成 AI コンテキストを元にマークダウン変換 📝 マークダウンファイル シートごとに⽣成 Better insights for a better world 13

Slide 14

Slide 14 text

Step 4: 生成AIに検証させる 📝 マークダウンファイル Step 3 で⽣成したファイル 01 チェックスクリプト実⾏ テキスト含有・取り消し線除外を検証 02 AI ⾃⾝が判断・修正 意図的な差異かを判断し必要なら修正 修正した場合 ✅ 検証済みマークダウン シートごとに完成 Better insights for a better world 14

Slide 15

Slide 15 text

できたもの Better insights for a better world 15

Slide 16

Slide 16 text

Claude Codeでさらに効率的に変換する 使用した機能 Better insights for a better world 16

Slide 17

Slide 17 text

Claude Codeを使用した変換フロー 📊 Excel ファイル 複数シート 🎯 Skill オーケストレーター 📄 PDF 変換 全体を⼀括処理 📃 テキスト抽出 シートごとに準備 コンテキストを Sub Agent に渡す 並列処理 🤖 Sub Agent Sheet1 変換・検証 🤖 Sub Agent Sheet2 変換・検証 🤖 Sub Agent Sheet3, ... 📄 📃 📄 📃 📄 📃 📝 Sheet1.md 📝 Sheet2.md 📝 Sheet3.md ... Point Sub Agentsが独自のコンテキストウィンドウを持つため、シート数が多くてもメインセッションを圧迫しない Better insights for a better world 17

Slide 18

Slide 18 text

人間の作業は最小限に やることはオーケストレーターを実行するだけ /excel-to-md @ドキュメント.xlsx あとは待つだけ。Step 1〜4 の変換・検証がすべて自動で走る Better insights for a better world 18

Slide 19

Slide 19 text

プロンプトについて 各パターンに対して どのようにマークダウンで表現するか決めて プロンプトで指⽰する Better insights for a better world 19

Slide 20

Slide 20 text

人間のレビュー・手直しについて Better insights for a better world 20

Slide 21

Slide 21 text

その他参考情報 Better insights for a better world 21

Slide 22

Slide 22 text

移行の効果 Better insights for a better world 22

Slide 23

Slide 23 text

マークダウン化で 全てがAI資産になる! ——のか? Better insights for a better world

Slide 24

Slide 24 text

それ、本当にAIが必要としてる? Better insights for a better world 24

Slide 25

Slide 25 text

ドキュメントを仕分けする SSOT(Single Source of Truth)の観点で整理する マークダウン化と合わせて、 SSOTの観点での仕分けにも取り組んでいかなければ… Better insights for a better world 25

Slide 26

Slide 26 text

ハーネスエンジニアリングは続く ROI計測 マルチエージェント並⾏ 不要ドキュメント撤去 ガベコレ⾃動化 Linter設定保護 起動ルーチン標準化 セッション管理 ADR整備 テスト=仕様の源泉 カスタムLinterルール E2Eテスト基盤 CLAUDE.md 50⾏以下 Playwright導⼊ Plan→Execute分離 Stopフック PreToolUse安全ゲート pre-commitフック フィードバック速度最適化 PostToolUseフック ⾼速Linter導⼊ 今回はこのあたりに対しての取り組みのほんの⼀部… Better insights for a better world 26

Slide 27

Slide 27 text

まとめ Better insights for a better world 27

Slide 28

Slide 28 text

ご清聴ありがとうございました Better insights for a better world 28