# AIが作ったPPTXを「本当に直せるか」6つのテストで確かめた実験

記事「[PPTXで書き出せます」を信じる前に](/ja/blog/editable-ai-generated-powerpoint)の実験素材です。実施日は2026年10月18日。

## 中身

| 場所 | 内容 |
|---|---|
| `check_pptx.py` | 6つのテストを自動で調べるスクリプト。単体で使えます |
| `results.json` | 全26本（AI製18本＋対照8本）の検査結果 |
| `runs.json` | AI製18本の作り方（所要秒数、モデル、呼んだスキル） |
| `prompts/` | 渡した指示文。`prompt-N.txt` が最小、`prompt-E.txt` は最後に1文だけ足したもの、`prompt-S.txt` は5項目を具体的に頼んだもの |
| `materials/` | 渡した3つの資料（架空のQ2報告） |
| `decks/ai/` | AIが作ったPPTX18本。`claude-N-1` は Claude Code・指示は最小・1本目（N＝最小、E＝一文つき、S＝5項目） |
| `decks/controls/` | 対照のPPTX。手本、わざと壊したもの4本、Marpの2本、画像だけのデッキ |
| `code/` | 手本とわざと壊したデッキを作るコード、図を作るコード |

## 検査スクリプトの使い方

```bash
pip install python-pptx openpyxl lxml
python check_pptx.py decks/ai/claude-N-1.pptx
python check_pptx.py your-deck.pptx --table-slides=5,7 --chart-slides=3,4
```

`--render` を付けると、LibreOfficeで開いてPDFにできるかも確かめます（`soffice` が必要）。
表やグラフがあるはずのスライド番号は、自分のデッキに合わせて変えてください。

## 6つのテストの判定

| テスト | 合格の条件 |
|---|---|
| ① 文字 | 画像が大半を占めるスライドがなく、どのスライドにも文字がある |
| ② 表 | 表があるはずのスライドに、本物の表（`a:tbl`）がある。行を足して保存できる |
| ③ グラフ | グラフのあるはずのスライドに、本物のグラフがあり、数値が埋め込みブックのセルとつながって値も一致する |
| ④ 図形 | 色の付いた空の図形の上に、別のテキストボックスが重なっているものがない |
| ⑤ 全体設定 | 全スライドの題名がタイトル枠で、フォントの直指定が全体の2割以下 |
| ⑥ 他のPC | 保存し直せて、図形のはみ出しがなく、使うフォントがWindowsのPowerPointにも標準で入っている主なフォントの範囲内 |

しきい値（⑤の2割、⑥のフォント一覧）は筆者が決めた目安です。
PowerPointそのものでは試していません。ファイルの中身を読み、python-pptxで編集操作を試して判定しています。

## 実験の条件

- 作った環境：macOS。Claude Code 2.1.301（モデル `claude-fable-5-1`）、Codex CLI 0.162.1（モデル `gpt-6-astra`、effort high）。どちらも設定は既定のまま。
- 各エージェントを、空の作業フォルダ（他のファイルは親に置かない）で起動。権限確認は省略。
- 条件は3つ。資料と構成の指示は同じで、末尾だけを変えた。N＝足さない。E＝1文を足す（「このあと私がPowerPointで開いて、文字、表、グラフの数字を自分で直します。PowerPointでそのまま編集できるファイルにしてください。」）。S＝Eの文に、表・グラフ・カード・タイトル枠・フォントの5項目を具体的に足す。
- 各条件3回、合計18本（N・Eを先に12本、Sを後から6本）。
- 表示確認はLibreOffice 26.8で行い、日本語フォントが無かったためNoto Sans CJK JPを入れた。この環境にNotoが入っていたため、Codexの3本はそのフォントを使っている。

## 注意

- `claude-E-1.pptx` と `claude-E-2.pptx` は、作成者欄に筆者のメールアドレスと名前が入っていたため、公開前に「（個人名のため消去）」に置き換えてあります。他のファイルは生成されたままです。
- 最初に一度、同じ実験を別の置き場所で回しましたが、作業フォルダの親にプロンプトや道具があり、エージェントがそれを覗いていたため、全部捨ててやり直しました。この素材は2回目のものです。Sの6本は、その後に同じ方法で足しました。Codexの2本（E-3、S-2）は、ファイル検索で `/tmp` の他のフォルダ名を一覧しましたが、他の実行の中身は開いていません。
