About Services Products Work Blog Careers Contact English
← BLOG
ai 約7分

AIにパワーポイントを作らせたい。でも及第点が異常に高い人間の話

資料は相手に伝えるために作る。その美学を持ったまま、AIにPPTX生成を任せるまでの試行錯誤と、たどり着いた3層パイプラインの話

#pptx#ai#design-system#claude-code#automation

資料は誰のために作るのか

パワーポイント。ビジネスパーソンなら週に何時間も触っている。

だが大半の資料は、作った本人のために作られている。

体裁を気にしすぎて中身が空っぽなスライド。テンプレートのデザインに安心して、何を伝えたいのかが消えている。資料作成が「苦手」な人の典型だ。

逆に「得意」だと思っているコンサル出身者は、1ページにどれだけ情報を詰め込めるかが勝負だと信じている。文字だらけで、どこを見ていいかわからない。データ分析の報告書、広告代理店のレポート。見にくい資料が量産される。

資料は、相手に伝えるために作る。

わかりやすく。興味を引くために、かっこよく。スタイリッシュが好きなクライアントにはそう作る。安定感を求める経営層には固いトンマナで。提案を散々受けてきて目が肥えた担当者には、ちょっとトリッキーな構成で意表を突く。

相手を見て、構成を変え、デザインを合わせる。20年間、そうやって資料を作ってきた。

AIに「パワーポイント作って」と言いたい

その自分が、AIにパワーポイントを作らせようと思った。

期待値が常人の比じゃないのは自覚している。世の中の「AI資料作成ツール」を試すたびに、3枚目で閉じていた。テンプレートが安っぽい。余白が狭い。タイポグラフィに意志がない。色の組み合わせに根拠がない。

「AIが作りました」感が透けて見える資料を、クライアントに出すわけにはいかない。

でも、資料作成に毎回何時間もかけるのは、もう耐えられない。やりたいことが多すぎる。デザインの意思決定は自分でやる。だが「決めたことを形にする作業」はAIに任せたい。

この矛盾を解くために、試行錯誤が始まった。

最初の挫折——dom2pptxの限界

HTMLで資料をデザインして、そのままPowerPointに変換する。理論上は最高のアプローチだ。dom-to-pptx というライブラリを使えば、HTMLのDOMツリーをPPTXのネイティブシェイプに変換できる。

現実は甘くなかった。

CSSの padding-left を変更した。ブラウザ上では正しく反映されている。だがPPTX出力のファイルサイズが変更前と1バイトも変わらない。角丸が消える。背景色が落ちる。flexboxの子要素がずれる。

何度デバッグしても、変換エンジンがブラックボックスで修正できない。

正直、絶望した。HTMLで作ったデザインがそのままPPTXになる——その夢が、ライブラリの制約で潰れる。ここで諦めるか、別の道を探すか。

「全部任せる」を捨てた

発想を変えた。1つのツールに全部任せようとしていたのが間違いだった。

dom2pptxは92%の忠実度で変換できる。問題は残りの8%だ。角丸、パディング、フォントの微調整。ならば、その8%だけを別の手段で補えばいい。

3層のパイプラインが生まれた。

  • Layer 1: HTMLで設計する。Tailwind CSSとJinja2テンプレートで、ブラウザ上で資料をデザインする。デザインの意思決定はすべてここで完結する
  • Layer 2: dom2pptxで変換する。92%の精度でPPTXシェイプに変換する
  • Layer 3: python-pptxで仕上げる。XMLレベルでフォントを強制し、角丸を復元し、位置を補正する。dom2pptxが落としたものを拾い直す

1つの完璧なツールではなく、3つの不完全なツールの連携。「足りない部分を次の層が補う」という設計思想が、結果的に一番堅牢だった。

テンプレートを選ぶんじゃない。世界観を選ぶ

パイプラインが動き始めて、次の問題に直面した。デザインのバリエーションだ。

PowerPointのテンプレートは「色を変える」「フォントを変える」程度の差分しかない。だが本当のデザインの違いは、もっと深い。タイポグラフィの密度、余白の取り方、角丸の半径、シャドウの拡散——これらが一体となって「世界観」を作る。

20のWebサイトを実測した。Stripe、Apple、Figma、Hermès、Duolingo。それぞれのカラー、余白、角丸、シャドウをCSS変数として抽出した。

そこから8つのスタイルを定義した。

スタイル世界観参考
corporate信頼と構造Stripe / Linear
minimal余白で語るApple Keynote
creative遊び心Dribbble / Behance
darkダークで洗練Figma / Apple Pro
warm親しみやすさDuolingo / Slack
luxury高級感Hermès / Patek Philippe

色が変わるんじゃない。構造から変わる。

corporateなら余白は広く、角丸は8px、シャドウは控えめ。luxuryなら余白はさらに広く、角丸は0px、セリフ体で静かに語る。warmなら角丸は16px、色はやわらかく、アイコンは丸みを帯びる。

「相手を見てデザインを合わせる」——20年の美学を、CSS変数の束に翻訳した。

「成長」のアイコンください、を1行で

スライドを作るとき、地味に時間がかかるのがアイコンと画像だ。

「成長」を示すアイコンが欲しい。アイコンサイトを開いて、検索して、ダウンロードして、配置して、サイズを調整する。1個あたり2〜3分。10枚のスライドで30分消える。

パイプラインでは1行だ。

resolve_icon("growth", "creative")
# → "ph:trend-up-bold"

39の抽象概念——成長、セキュリティ、チーム、分析、コスト削減——を4つのアイコンセットにマッピングした。スタイルを選んだ時点でアイコンセットも決まる。corporateなら線が細いLucide、creativeならPhosphorのbold。

画像も同じだ。スタイルごとに「画像レシピ」を持たせた。表紙はGeminiで抽象パターンを生成し、コンテンツ写真はUnsplashから取得する。APIキーがなければPlaceholderにフォールバック。4層構造で、画像が欠けることはない。

考えるのは「何を伝えるか」だけ。見た目はパイプラインが決める。

ずっと試行錯誤していた

正直に書く。ここに至るまでに何度もぶち壊れた。

dom2pptxでフォントが文字化けした。Noto Sans JPをDOMレベルでMeiryoに正規化する処理を書いた。フォントサイズが1.25倍されるバグを追った。CSSの変更が反映されない問題を3回以上調べて、最終的に後処理で回避した。

1セッションで8スタイルのCSS変数化が完了した日もあれば、1日中デバッグして1行もコードが書けなかった日もあった。

だが「AIが作りました感」が消えた瞬間があった。

プレビューHTMLを開いて、実際のUnsplash画像とIconifyアイコンが入ったスライドを見たとき。corporateスタイルで出力した提案書が、手で作ったものと見分けがつかなかったとき。

これなら、クライアントに出せる。

14,600行が意味するもの

パイプラインの総行数は14,600行。Python/JavaScriptで書かれた42ファイル。15パターンのスライドレイアウト、8つのデザインスタイル、39概念のアイコンマッピング、4層の画像フォールバック。

だがこのパイプラインの本質は「PPTXを作るツール」じゃない。

「相手に伝えるためのデザインの意思決定」をコードで表現したものだ。入力は構造化されたデータ。出力はPPTX。だが同じデータからHTMLプレビューもPDFも出力できる。デザインシステムがCSSで定義されているから。

AIに「パワーポイント作って」と言いたかった。でも及第点が高すぎて、既存のツールでは無理だった。だから自分で作った。

20年の美学を、14,600行のコードに変換した。 今のところ、実用に耐えうるレベルに到達している。