アンチAI生成派の私が、パワポ作成AIを作った理由のトップ画像

アンチAI生成派の私が、パワポ作成AIを作った理由

投稿日時:
みのるんのアイコン

KDDIアジャイル開発センター株式会社 / テックエバンジェリスト

みのるん

Xアカウントリンク

本記事では、エンジニアがつくってきた“自分仕様のAIツール”をご紹介します。エージェントやBot、LLM連携ツールなど、実用的なものから、ちょっと遊び心のあるものまで。プロンプト設計やUIの工夫、うまくいかなかったことや思いがけない発見を通して、AIとの付き合い方をのぞいていきます。AIをどう使うかだけでなく、どんな距離感で付き合っているのか。誰かのAIとの向き合い方が、あなたとAIのちょうどいい“さじ加減”の手がかりに。


執筆:みのるん @minorun365(KDDIアジャイル開発センター株式会社)with Claude

この記事は、著者であるみのるんが音声入力を使って15分ほど語りまくった大量の原稿をもとに、私Claude Codeが記事として成形しました。AIが直接文章を生成したというよりは、人間の考えをAIが整理して読みやすくまとめた形です。

ブログ執筆風景.png
(👆実際にこの記事を書いている様子)

AIエージェントを「普通の仕事」に活かしたい

みのるんは普段、AWSを使ったAIエージェントの構築を仕事にしています。最近はコーディングエージェントが大きく注目を集めていますが、まだまだAIエージェントはプログラマーがコードを書くような用途にしか広く普及していません。

そこで彼は、一般の人が普通の仕事に活かせるようなAIエージェントのユースケースを模索していました。その中で思いついたのが、パワーポイントでスライドを作るという業務です。これはいろんな会社で多くの人がやっている作業ですよね。

実はアンチAI生成派だったみのるん

ここで白状しますが、みのるんはスライドを作ったりブログを書いたりというクリエイティブな作業はAIによって生成すべきではないというポリシーがあり、いわゆるアンチAI生成派として結構有名でした😅

ただ、普段の仕事の中で「これはそこまで頑張って作るべき資料じゃないな」というシーンもたくさんあると思います。ちょっとした社内でのコミュニケーションのために、とりあえずスライドだけあれば後は口頭で補足できる、みたいな場面です。

そういったときにパワポ資料の作成をAIに任せられれば、仕事の効率化が大いに図れると彼は考えました。

AIにパワポを作らせるのは意外と難しい

実際にAIでパワポを作らせようとすると、これが結構難しいんです。

まず、マイクロソフトのPPTX形式のファイルを直接AIに生成させる方法があります。これはPPTXファイルの仕様が非常に複雑で、AIにやらせると文字がはみ出したりテイストが合わなかったりといった問題が頻発します。

それを回避するためによく取られる手段の一つが、HTMLでスライドの内容を生成して画像形式でスライドに貼り付けるというアプローチです。これは一定うまくいくのですが、普通のパワポのテイストと大きく離れた、明らかに「これAIで作りました」感が出るスライドが多くなるというのもこの方式の課題でした。

Marpとの出会い

そこでみのるんが最近試してみたのが、Marpというマークダウンからパワポスライドを作成するオープンソースのソフトウェアです。

これは日本人の方が開発されたTypeScriptベースのツールで、以前からそこそこ有名ではありました。ただ、Marp用のマークダウンを作るためにはCSS記法の利用など独特のフォーマットがあり、それを手動で修正するのが結構大変だったので、彼は以前に試したときに使うのをやめていたそうです。

しかし、私Claude Codeをはじめコーディングエージェントが大きく性能を向上したことによって、Marp用のマークダウンの作成を、ほぼ人間が手動で修正する必要がなくなっていることがわかりました。

みのるんはこのMarpを使って、仕事上で急遽必要になった英語プレゼンの準備を前日に30分ほどで終えることができたそうです。スライドの品質も非常に高く、これはエンジニアしか使えないのはもったいないと思いつき、MarpベースのAIエージェントをWebアプリとして構築し、一般公開することを考えました。

フルサーバーレスで構築

実際にどのような構成でこのアプリを構築したかというと、AWSの最新技術をフル活用して、すべてサーバーレスで構築しています。つまり維持費がほぼかかりません。かかる料金はほとんど、実際にこのAIエージェントが使われたときに裏で走るBedrockのClaude APIの推論コストで、それ以外のタイミングはほぼゼロに近いコストで運用できています。

アーキテクチャ.png

技術要素としてはフロントエンドはReactとViteを使ったシングルページアプリケーションをAWS Amplify Gen2でホストしています。

バックエンドはAmplify標準の認証機能を使ってAmazon Cognitoによる認証UIを挟んでおり、Cognitoで認証した人だけがバックエンドのAIエージェントを呼び出せるようにセキュリティ対策をしています。

AIエージェント本体はAWSのBedrock AgentCoreランタイムを使っています。これはAmplifyにネイティブ対応はしていないので、カスタムリソースの形でAWS CDKとしてAmplifyと一緒にデプロイできるように、インフラのコードを同じリポジトリに含めています。さらにCDKのインフラコードだけではなく、実際にそのCDKでデプロイされるPythonのAIエージェントのコード自体もAmplifyのリポジトリに含めて一緒にデプロイされるようにしています。このPythonファイルはAWSのStrands AgentsというAIエージェント構築フレームワークで記述しています。

シングルエージェント+ツールのシンプル構成

今回のAIエージェントは、Strands Agentsにいくつかのツールを持たせることによって実現しています。エージェントアーキテクチャは、シングルエージェントのシンプルな作りになっています。

ツールとしては、まずユーザーが作成したいスライドのトピックについてWeb検索をするTavily検索APIにリクエストを送るツールが一つ。その後、集めた情報をもとにMarp CLIを使ってマークダウンからスライドを作成するツール。大きくはこの二つです。

これらをGitHubのリポジトリにプッシュして、そのリポジトリのURLをAWS Amplify Gen2に登録するだけで、自動でCI/CD環境が構築され、新しい機能追加をプッシュするたびに勝手に本番環境へコードがデプロイされるので非常に便利です。

UXへのこだわり

このアプリではAIエージェントのバックエンドのアーキテクチャだけでなく、フロントエンド画面を中心としたユーザーエクスペリエンスにも非常に力を入れています。

アプリ画面1.png

AIエージェントはこれに限らないのですが、動作して仕事を完了するまでに時間がかかることが多いです。Web検索をする、スライドを作成するといった具合にです。そのUX向上のために、今回フロントエンドにはちゃんとReactで画面を作り込むことによって、少しでもユーザーのストレスを減らし、アプリを使い続けてくれるような工夫をいくつか施しています。

まず、今エージェントが裏で何をしているかをリアルタイムに画面に表示する、ストリーミングレスポンスをAIエージェントから拾って画面に描画するというイベント表示に力を入れています。Web検索をするときは、いくつものWeb検索を繰り返すと時間がかかることがあるので、今どんなクエリで検索しているかをリアルタイムで画面に描画します。

さらに、一番時間がかかるのがスライド作成なんですが、スライドを作成している間は大体20秒から30秒ぐらいかかることが多いです。一方で、スライド作成作業はいい感じに途中で拾えるステータスの変更もないため、解決策として定期的にTipsを画面に表示するという手法を取り入れています。スライド作成中にこのアプリに関する利用のコツであったり、構築の裏側の情報を5秒ごとに画面に表示することによって、ユーザーの待ちストレスを緩和しています。

スライドを作成すると自動でプレビュータブに遷移するのですが、そこで実際に出来上がったスライドを確認したり、もし修正の必要があれば修正ボタンを押すだけで自動的にAIエージェントとのチャット画面に戻って修正作業を開始できるようにUXを工夫しています。他にもスライドのデザインを変更してみたり、パワポ形式だけでなくPDFでもダウンロードできたりなど、細かい改善をいろいろと日々図っているので、ぜひ触ってみてください。

公開1週間で260人超のユーザー

このアプリは以下のURLで一般公開しており、誰でも登録して試すことができます。

実はこのアプリ、公開初日からCognitoのユーザー登録制限を突破するほどの大人気でした。Cognitoは1日あたりの新規登録ユーザーが50名を超えると、認証のためのワンタイムパスワードの送信メールが送れずエラーになってしまうのですが、初日からその制限に引っかかってしまったんです。公開から1週間でユーザー数は260人を超えています。

その代わり、BedrockのClaude APIの推論コストもそこそこ高くなっており、1週間で1万5千円ほどの費用が発生しています😭

このアプリを公開し続けられるように、GitHub Sponsorsで誰でも寄付できるようになっています。便利に活用いただけている方は、ぜひご支援をお願いします🙏

コスト最適化の工夫

コストカットのためにいくつか改善にも取り組んでいます。

まず、Claudeのプロンプトキャッシュを有効にすることで、同じシステムプロンプトを使う場合のコストを削減しました。

さらに面白い工夫として、AWSのクレジットを活用できるモデルへの切り替えオプションを用意しました。Claudeではなく、オープンウェイトのMoonshot AIが提供しているKimi K2 ThinkingというモデルをBedrock上で切り替えて使えるようにすることで、そちらを選んだユーザーの推論コストはみのるんのたくさんあるAWSクレジットを消費して実行されるので、ほぼコストなしでアプリケーションを使ってもらえるようにしています。

休日の夜に2〜3時間で構築

このアプリは非常に洗練されたUXを持っているのですが、実は初回リリース時は休日の夜に2〜3時間ほどで構築しました。

短時間で構築できた要因としては、まずもともとみのるんがこのAmplify+AgentCoreを使ったサーバーレス構成のテンプレをAWS CDKで普段から構築していたため、コピーして使い回すのが早かったというところがあります。
このテンプレを誰でも構築できる手順も公開していますので、ぜひ活用ください!

さらに、私Claude Codeと一緒に構築しているという点が大きいです。みのるんが私を使うときは、いわゆる「プチ仕様駆動開発」の手法を取り入れています。いきなりAIにコードを書かせ始めるのではなく、具体的な要件の壁打ちを一緒に行って、要件と仕様を詰めた上で実装を進めるので、人間とAIの間に認識齟齬が生まれづらく、結果的に短時間で構築を終えることができます。
(実は今回のこのブログ執筆にあたっても、仕様駆動開発の考え方を随所に取り入れています)

さらにその要件の作成にあたっては、音声入力を使って10分ほどマークダウンに頭の中をすべてダンプしてから作業を始めるので、キーボードを使って長い時間AIとやり取りをするのに比べて構築開始までのリードタイムも大きく短縮できます。

社内向けにKAGエディションも

このアプリは一般公開していますが、自社内にも自社のパワポテンプレートをそのまま使ったスライドを簡単に作れるように、KAGエディションとして限定公開しています。

アプリ画面2.png

こちらを使うと、移動中でもスマホからAIエージェントに指示を送るだけで、自社テンプレートを用いた高品質なスライドが1分ほどで作成できるので、社内でもじわじわ人気が広がっています。

おわりに

みのるんはずっとアンチAI生成派でしたが、今回のパワポ作成AIを作ってみて、AIに任せていい仕事とそうでない仕事の線引きが少し見えてきた気がすると語っています。

大事なプレゼンや外部向けの資料は、やっぱり自分の言葉で作りたい。でも、社内のちょっとした報告資料や、急ぎで必要になった説明スライドなら、AIの力を借りて効率化するのは全然アリだと思うようになったそうです。

AIエージェントはプログラマーだけのものじゃありません。普通の仕事に活かせるユースケースはまだまだたくさんあるはずです。みなさんもぜひ「パワポ作るマン」を試してみて、AIエージェントの可能性を体感してみてください!