【Antigravity】part3 ついについに完成!立ち絵アニメーション付き自動生成神アプリ
「Gemini × MoviePy × VOICEVOX」
どうも、kiriです!
「テーマを入力するだけで、推しのキャラクターが喋って動く解説動画を、全自動で作ってくれないかな…」
動画編集の手間を極限までサボりたい。そんな怠惰な願望から、テキストと画像から動画を半自動で生成してくれるWebアプリが、ついについに完成です
まずは論より証拠。実際にこのアプリを使って(※最後に手作業で編集して)出力したデモ動画をご覧ください。
🎥 kiri自動生成神アプリ完成!!
一見すると「AIを活用して超絶効率化に成功した素晴らしい開発ストーリー」に見えるかもしれません。
しかし、その裏側は地獄のようなエラーの連続、Vibe Coding(AI任せの開発)の恐ろしい代償、そして自律型AIエージェントが陥った「致命的なバグ」に満ちていました。
この記事では、動画生成アプリの裏側の技術構成から、待ち時間の絶望、そして「世界初の偉業(?)」に気づくまでのドタバタ開発記を語り尽くします。
1. アプリの概要と「無料枠」への異常な執着
今回開発したアプリの流れは非常にシンプルです。
テーマ入力: ブラウザから「自己紹介」などのテーマを入力。
台本・プロンプト生成: 裏側でGemini 2.5 Flashが走り、動画の「台本(セリフ)」と、スライド用の「画像生成プロンプト」を出力。
画像生成(手作業): 出力されたプロンプトを使って、人間が外部の画像生成AIでスライドを作成。
アップロード&合成: 生成した画像をアプリにアップロードすると、キャラクターの立ち絵、合成音声(VOICEVOX)、スライド画像がガッチャンコされて動画(.mp4)が出力される。
技術スタックとしては、バックエンドに Python (Flask)、フロントエンドにプレーンな HTML/JS、音声に VOICEVOX(東北きりたん)、動画合成に MoviePy を採用しています。
さて、ここで鋭いエンジニアの方なら一つの疑問を抱くはずです。
「なぜステップ3の画像生成までAPI化して『完全自動化』しなかったのか?」 と。
理由はシンプルです。
知恵を絞って「無料枠の限界」を突き詰めるのが楽しいからです。
……というのは建前で、本当は絶対にAPIに課金したくなかっただけです。
Google様が提供してくれている「学生限定の15ヶ月無料プラン」の恩恵を受け、Gemini Advancedをこれでもかと使い倒して高クオリティなスライド画像をタダで錬成する。APIにチャリンチャリンとお金を落とすのではなく、自分の手作業を挟んででもコストをゼロに抑え込む。これぞ個人開発のハングリー精神です。
2. エンコード15分の絶望と、Vibe Codingの恐怖
いざシステムが繋がり、初めて「動画を生成する」ボタンを押したときのことです。
たかだか7枚の静止画スライドと、短い合成音声、そして立ち絵を重ねるだけの動画。数秒で終わるだろうとタカを括っていました。
しかし、プログレスバーは一向に進みません。
「おっそいなあああ……」とぼやきながら、私はそっと別タブを開き、YouTubeを見て時間を潰し始めました。
全自動化ツールを回しながら人間がYouTubeを見て待つ。なんと優雅な時間でしょう。結局、1本の動画を出力するのに約15分もかかりました。
処理がここまで重い原因は、おそらく動画合成を担っている MoviePy の処理にあると睨んでいます。きりたんの立ち絵(まばたきや口パクのアニメーション)をループ再生させるために、プログラムがフレームを1枚1枚生成してはくっつけるという地道な作業を裏でやっているからでしょう(※違うかもしれませんが)。
「そこはちゃんとプロファイリングしてコード直せよ!」 というツッコミが聞こえてきそうですが、無理なのです。なぜなら、私自身がこのコードを全く理解していないからです。
今回はAIエージェントに自然言語で指示を出してコードを書かせる「Vibe Coding」スタイルで開発を進めました。その結果、バックエンドの細かいロジックも、MoviePyの複雑な合成処理も、「もうほぼコードをAIに任せてあるので、中身はブラックボックスそのもの」という恐ろしい事態に陥っています。
何ならこの記事もある程度AIで作ってます。(AIに取材させて記事を書かせるのです)
もし今ここで未知のエラーが出たら、私は手も足も出ません。AI駆動開発のリアルな代償がここにあります。
3. 自律型AIエージェント最大の弱点「人間というバグ」
そして今回、開発プロセス全体を通して最大のハイライトとなったのが、AIとの連携における「致命的なバグ」の発見でした。
開発を任せていた自律型AIエージェント「Antigravity」の最大の強みは、「ソロテスト(単独完走)」です。
自分でコードを書き、サーバーを立ち上げ、エラーが出たら修正して再実行する。これを「アプリが最後まで動く状態」になるまで全自動でループしてくれます。
しかし、このアプリの仕様をもう一度思い出してください。
フローの途中に「人間が画像を生成してアップロードする」という手作業がガッツリ挟まっています。
Antigravityくんは、台本を生成するステップまでは完璧にコードを書き上げ、テストを実行しました。しかし「ブラウザから画像がアップロードされるのを待つ」という処理に差し掛かった瞬間、彼は永遠の待機状態に入りました。
当然です。ターミナルの中で生きているAIには、ブラウザを開いて画像をアップロードする「物理的な手」が存在しないからです。
完全自動化ツールを作っているはずが、開発者である「人間の存在」そのものが、システム最大のバグ(進行ストッパー)になってしまったのです。
結局、「テストの時だけ人間の操作を完全にスキップし、最初からフォルダに入っているダミー画像を直接流し込む」というモックプログラムを別に作ることで、なんとかAIにテストを完走させることができました。
4. 今後の展望:激重エンコードからの脱却(脱MoviePyと並列化)
現状、人間がYouTubeを見て待たなければならないほどの激重エンコード仕様ですが、当然このまま放置するつもりはありません。技術的な改善の展望はすでに見えています。
それは、「MoviePyというラッパーを捨てて、直接 ffmpeg を叩く」 こと、そして 「並列処理を導入する」 ことです。
Python層での非効率なフレーム処理をやめ、OSレベルで subprocess から ffmpeg のコマンドを直接叩き、ハードウェアアクセラレーションを活用する。さらに、7枚のスライドごとに「画像と音声の結合」をマルチプロセスで並列に走らせ、最後に ffmpeg の concat で一気に繋ぎ合わせれば、15分の待機時間は劇的に短縮できるはずです。
……ただ、それを実現するためには、「AIに丸投げして完全にブラックボックス化した現在のスパゲッティコード」を、自らの手で解読してリファクタリングするという地獄の作業が待っています。
自動化のために書かせたコードを、人間が手動で解読する。これもまたVibe Codingならではの新しい開発体験ですね。
4. おわりに:Google様でも超えられない「ジャパニーズカルチャー」
人間待ちでフリーズしたり、エンコードに15分かかったり、コードがブラックボックスだったりするこのポンコツアプリ。
「じゃあ明日からの動画制作スタメン入りするの?」と聞かれたら、間違いなくスタメン落ちです(笑)。 ですが、おもしろ動画・ネタ動画を作るツールとしては大活躍するポテンシャルを秘めていると確信しています。
なぜなら、これは(おそらく)世界初の「立ち絵アニメーション付き解説動画生成アプリ」だからです!
今、世の中にはAIを使ってテキストから動画を生成するツールが溢れています。あの天下のGoogle様が誇る「NotebookLM」の音声対話・動画生成機能でさえ、優秀な要約はできても「可愛いキャラクターの立ち絵が、口パクやまばたきをしながら解説してくれる」という機能はありません。
海外のスタイリッシュなAI動画ジェネレーターには絶対に真似できない、VOICEVOXと立ち絵文化の融合。
これぞまさに、ジャパニーズカルチャーの極みだと思いませんか?
「自動化ツールを作ったのに、今この記事の解説動画自体はYMM4を使って手作業で編集している」という強烈な矛盾には目を瞑りつつ、これからもPythonを使ったツール開発や、技術の無駄遣い(?)の検証結果を投稿していく予定です。
少しでも「アホなことやってんな〜」と笑っていただけたら、ぜひYouTubeのチャンネル登録と高評価をお願いします!
Discussion