AIコーディング記録:パワポ翻訳ツール
お疲れ様です。今回、AIの力を借りつつ、パワポを日本語→英語、または英語→日本語で翻訳するツール(以下、ツール)をコーディング、デプロイしました。
ツールへのアクセスはこちら。
(Renderの無料プランで上げているので、立ち上げや翻訳作業に時間がかかる場合があります。あらかじめご了承ください)
リポジトリはこちらになります。
せっかくなので、ツールを作るまでの体験やその過程で感じたことをまとめておこうと思います。
2025年4月時点でこのようにやるのが一つの方法だったんだな、と後から振り返れると面白そうだと思いました。
システムの概要
- パワポファイルをアップすると、各要素を翻訳した上でパワポのファイル(pptx)を吐いてくれます
- 日本語→英語、英語→日本語の双方向の翻訳が可能です(手動で選択します)
- フォントもいくつかバリエーションがあって、指定することができます
- 翻訳が終わったら、出力pptxは自動でローカルに保存されます(ブラウザがセキュリティで弾いてしまう場合は、手動で許可する必要があります)
- 10MB以下のファイルなら、大体2分以内に作業を完了してくれます
例えば下のようなポスターをアップすると、
下のような日本語訳版になって返ってきます。
このように、デザインレイアウトが保たれた状態でテキスト要素だけが翻訳されたものが返ってきます。もちろん翻訳は完璧ではないので、これを一通り確認して必要に応じて修正していく、という作業フローになります。ChatGPTが出力した翻訳結果を手作業で一つ一つ置換してくよりも、圧倒的に作業量が減ることがお分かりいただけるかと思います。
作ろうと思った動機
私自身が情報系の研究をする中で、国内学会で発表した日本語ポスターを別の英語発表で使いたいというニーズを抱えました。一応ChatGPTなんかにpptxをアップすると各要素を翻訳した結果をテキストで教えてくれはします。しかし、結局それを手動でコピペするという泥臭い作業が発生します。
どうせなら各要素が翻訳されたパワポファイルを出してくれたらいいのになーと思ったので、自分で作ることにしました。pptxで出力されるので、それをそのまま編集して完成形に持っていくことができると良いなと思い、上のような仕様にしました。
AIコーディングの進め方
Claude Proで、Claude 3.7 Sonnetに要件を伝えながら進めていましたが、途中から出力が得られなくなったためAnthropic ConsoleのWorkbenchに移行しました。
ClineのようにAI側が開発を主導して人間側がチェックして許可を出す…というフローでもよかったのですが、GUI版ClaudeやChatGPTのように対話システム上でインタラクティブに仕様を決めながら進めていくフローに慣れていたこともあり、Claude Proで進めていくことにしました。
初めは仕様を箇条書きで伝えて、最低限のプロトタイプを作ってもらいました。ひとまず雑に以下のようなプロンプトを与えました。
いろいろなAIがある中で、研究者目線で以下のようなAIエージェントorシステムが足りていません。作ってオンラインで公開したいと思っているので、システム作りを手伝ってくれませんか。
・ポスターを翻訳する。例えば国内学会向けに作ったポスターを英語版にしたり、英語版のポスターを入れると日本語版にしてくれる
・pptxがインプットで、pptxがアウトプット
・難しいのは、pptx中の要素を訳さないといけないというところと、かつそれを同じくらいの長さで、適切なニュアンスに訳さないといけないというところ。例えば短いフレーズを長くしすぎると二行になっちゃって体裁が悪い、みたいなのをできれば避けたい(けど、これはプラスアルファで必須ではない)
・とにかく最低限の要件として、pptxを入れると英語→日本語、もしくは日本語→英語になってpptxが返ってくること。全ての要素が翻訳されて漏れがないこと。他のデザイン面など余計な変化は及ぼさないこと。
バババっとコードが吐き出されるので、ひとまずそれを実行してみて、不具合があれば適宜伝えていきます。その押し問答の過程を共有します。
Xを見ると、みなさんとても器用かつ緻密にプロンプトを練られています。一方で私はコーディングのプロではなく、かなり厳密性に欠いた指示出しをしていることがわかるかと思います。逆にその程度でもこのくらいには仕上げてくれます。
苦戦したポイントとしては、ロード画面です。最初のプロトタイプでは処理時間中に画面上に何も表示されず、ユーザは入力したpptxが正しく送信されているのか、また内部で問題なく処理されている最中なのかどうかを一切知
ることができないようになっていました。
そこでなにかロード画面的なもの(「翻訳しています。しばらくおまちください…」みたいなあれです)を出して、ユーザに処理中であることを見せようと思いました。ところがこれがまあうまくいかない。指示して出てきたコードを実行してもロード画面は出なければ、ロード画面が出たとしてもそれが処理状況とリンクしていなかったりと散々でした。
最終的に、自分が以前自分が別のWebアプリ上で実装したロード画面の実装を引用して、それを良い感じにコードの中に含めてもらうという形で丸く収まりました。この辺はもっと上手い指示の出し方があったのかなーと思いますが、その言語化はかなり難しく、AIコーディングを試すユーザにとってかなり高いハードルなのではないかなと感じました。
その後は、Claude Proが長時間のチャットで使用制限に到達したため、Anthropic ConsoleのWorkbench に移行しました。こちらは使用制限はなく、APIと同じでトークン数に比例した課金がなされていきます。Claude ProやChatGPTのような対話型のUIでありながらAPIの課金方式なので、GUIとAPIの良いとこ取りとして使い勝手が良く、よくお世話になっています。
移行してからは、フォント変更機能を追加してもらいつつ、デプロイする方法→Renderの具体的な使い方→Renderでデプロイに失敗した際の解消の仕方、という順番で聞いていきました。こちらは特に問題なく進められました(その過程はこちら)。
コードをペーストして聞くというあまり賢くなさそうなやり方をしているのは反省点で、これをやるとトークン数がいたずらに膨れ上がってしまうほか、待ち時間も長くなってしまいます。かなり楽をした形になっているので、聞きたいところピンポイントでコピペする、あるいはそもそもCline, Cursorを使う、といった工夫が必要そうです。今後の改善点とします。
ともあれ無事デプロイまで持っていくことができました。半日くらいで構想→デプロイを一気通貫でやれるのはすごいなと思います。Clineだったらもうちょっと早かったんですかね。個人的にはAIが勝手に進めていく感じにまだ抵抗感があって使いこなせていないんですが、エージェント(と言ってしまっていいんでしょうか?)的な使い方は間違いなく今後の重要トレンドだと思うので早く慣れたい次第です。
ちなみに、この実装ではDeepLとGoogle TranslateのAPIが無料なのでそれを採用していますが、正直OpenAI/Claude/Deepseek APIを叩いた方が翻訳のクオリティとしてはずっと上がります。ですがAPI Keyをアップさせるとセキュリティの懸念点が出てきそうなので今回はDeepLにしておきました。
気づいた点
-
人間側のスキルは依然重要:詰まるところではとことん詰まるので、そこで自分のこれまで培ってきた実装スキルを発動したり、器用な言語化をして突破する必要があります。まだAIがAIだけでコーディングをする状態には程遠いと思います(とか言っていると、半年後にはそれができていたりするんですよね)。
-
APIとサブスクだと、後者の方が精神的に楽:この辺の感じ方は人によるのかと思います。個人的には「合計金額がいくらになってしまうんだろう」という不安を抱えながら進めるよりも、「いくら使っても月20ドル!」と思っている方が大胆に使えます。ただこの辺はファクトを見るべきで、実際の課金額はどちらの方が大きくなるかを客観的に見極める必要があると思います。
-
知的生産の質は圧倒的に変わった:これに尽きます。これからエンジニアや研究者という仕事はどのように変容していくのか気になります。ボトルネックが人間の言語化能力になっているのを痛感するので、読書を通じてその辺を養っていかないとなあと感じました。国語大事。
おわりに
2025年4月時点で自分がどのようにAIコーディングを進めたかを記録するために書きました。これからよりよい方法を探していきたいと思います。またちょっとしたニーズに即したツールづくりはもっとやっていきたいと思いました。ご覧いただきありがとうございました。
Discussion