.png)
こんにちは!AIサービス開発室の鈴木生雄です。今回は「ショート動画生成ツールをバイブコーディングで開発し始めました」の後編ということで「バイブコーディング」のテーマでお届けします。まだ、前編を読んでいない方はぜひお読みください。
ショート動画生成ツールをバイブコーディングで開発し始めました(前編)
さて、まずバイブコーディング(Vibe coding)とは何かですが、調べてみると以下のような定義を確認できます。
バイブコーディングとは、AIエージェントを活用してソフトウェア開発を行う新しい手法のことです。開発者は、具体的な仕様書や詳細な指示を与える代わりに、自然言語で「こんな感じのアプリが作りたい」といった「雰囲気」や「ノリ」をAIに伝え、AIがコードを生成し、アプリケーションを構築します。
引用元:Googleサーチ AIによる概要
OpenAIの共同創業者のAndrej Karpathy氏によって考案されたキーワードだそうです。ちなみに「バイブ」や「バイブス」はヒップホップやレゲエなどの音楽シーンで使われるスラングのようです。「雰囲気」や「ノリ」と言われると気軽で楽しそうですが、仕事で使えるのかどうか不安になりますよね。その点については本投稿の後半で触れたいと思います。
コーディングエージェント
バイブコーディングするためのツールとして、ビッグテックを中心にして、下表のように様々なコーディングエージェントがリリースされています。今回私は「Gemini CLI」を使うことにしました。なぜなら、毎分 60 回、1日あたり1,000 回のリクエストの枠内であれば、無料で使えるからです。
エージェント | 提供元 | 主な特徴 |
---|---|---|
Gemini CLI |
・オープンソースのターミナル CLI で Gemini モデルに直接アクセス |
|
Codex CLI | OpenAI | ・ローカル実行の軽量 CLI エージェント(npm / Homebrew で導入) ・ChatGPT 相当の推論でコード生成/ファイル操作/コマンド実行が可能 ・MCP 対応・ゼロデータ保持モードを備え、CI 非対話モードもサポート |
Claude Code | Anthropic | ・端末常駐のエージェンティック開発ツール ・仕様→計画→実装→コミットまで一気通貫で自動化し、プロジェクト横断検索も可能 ・MCP で Google Drive / Jira など外部データと統合、エンタープライズ向けセキュリティ対応 |
GitHub Spark | Microsoft | ・Copilot Pro+ 向け Web ワークベンチ ・自然言語からフルスタックアプリを生成し、デプロイまでワンクリック ・リポジトリ+GitHub Actions 自動生成、Copilot エージェントや Codespaces と連携 |
Kiro | Amazon | ・VS Code ベースの AI‑ネイティブ IDE ・Claude Sonnet 4 搭載、Spec による計画駆動開発と Hooks で自動処理 ・長期コンテキスト保持、MCP / Git 統合でエンタープライズにも適合 |
Qwen3‑Coder | Alibaba | ・最大 480B MoE(35B アクティブ)のオープンコード LLM ・256K→最大 1M トークンの長文脈と 358 言語対応 ・Agentic Coding・ブラウザ操作で Claude Sonnet に匹敵する性能を公開モデルで提供 |
作るもの
作るものは「ユーザーが入力した文章を基にASMRのショート動画を生成するツール」です。例えばユーザーが、
日本家屋の軒先で風鈴が風に吹かれて心地の良い音を鳴らしている
のような文章を入力すると以下の手順でショート動画を作成します。なお、カッコ内は利用する外部API名です。
- 基になる文章から”動画作成用プロンプト”と”音声追加用プロンプト”を生成する。(ChatGPT Assistants API)
- 動画作成用プロンプトを使って動画を作成する。(seedance-1-lite)
- 音声追加用プロンプトを使って動画に音声を追加する。(mmaudio)
シーケンス図にするとこんな感じです。
Gemini CLIの使い方
インストールの仕方にについては、Gemini CLI – Github のとおりにやればできるので省略します。インストールしたら任意のターミナル(e.g. コマンドプロンプト)でgeminiと入力するとGemini CLIが起動します。
その後の操作は単純に使うだけならば(※)とても簡単です。上図で”Type your message”と書かれている場所にやってもらいたいことをテキストで入力するだけです。※ カスタム設定や便利コマンドが用意されているみたいなので高度に使いこなすのであれば、公式のDocを読んだ方が良いです。
例えば、動画作成のプログラムを作る際は以下のような感じで入力します。
ユーザーが入力したテキストを基にショート動画を作成するPythonのコマンドラインプログラムを作成してください。
作成した動画の保存先のディレクトリの既定はカレントディレクトリ、ただし、ユーザーが指定することもできるようにしてください。
動作作成はseedance-1-lite(https://replicate.com/bytedance/seedance-1-lite)のAPIを用いて行ってください。
サンプルコードは次のとおりです。~ 実際はサンプルコードをここに記載したが省略 ~
アスペクト比は9:16にしてください。なお、アスペクト比は入力のプロパティaspect_ratioで指定できます。
最初はサンプルコードなしで実行したのですが、ハルシネーションを起こして、実際には存在しない(しかしありそうな名前の)関数を呼び出そうとしたので、サンプルコードを追加しました。また、アスペクト比についても同様だったので、プロパティ名を具体的に示しました。すると、動作するプログラムになりました。
第一印象としては、優秀なプログラマーではないものの、エントリーレベルのプログラマー相当の動きはしてくれるなあという感じです。指示をすれば一瞬でコードを書き直してくれるので、スピードに関しては人間より優れています。
成果物
先に示したようなやり取りを何度か繰り返してできたもののイメージが以下です。最初はコマンドラインツールを作ったのですが、せっかくなのでGUIも作ってみました。
なお、GUIを作るためのライブラリはFletを使いました。Fletは一度も使ったことがなかったため、本来であれば、使い方をドキュメントを読んで理解するところから始めないといけないのですが、今回はGemini CLIに以下のように指示を出して、作ってもらいました。このように初めて使うライブラリの使い方のコード例をすぐに示してもらえるのはよいところだと思いました。
run_pipeline.pyを実行するためのGUI画面をFlet(https://flet.dev/)で作成してください。
画面にはプロンプトの基になる文章を入力するテキストエリア、生成した音声付動画の保存先フォルダを指定するフォルダピッカー、
動作作成を開始するボタン、標準出力と標準エラーを表示する編集不可なテキストエリア、保存先フォルダを開くボタンを配置してください。
また、動作作成中は動作作成を開始するボタンの横にプログレスリングを表示してください。
そして、「ASMRショート動画作成ツール」を使って作成した動画がこちらです。できた動画はまあまあよいのではないでしょうか。
バイブコーディングの所感
まず、バイブコーディングはとても楽しいです。これは私が、コードは書かないけど、指示を構造化して伝えるのはある程度得意だからかもしれませんが、指示を出すだけで動作するコードが次々とできるのはなかなか新鮮な体験でした。
しかし、一方で「雰囲気」や「ノリ」で指示を出すだけで、普段当社がお客様に提供しているような規模かつ品質のプログラムを作れるかと言うと、そんなに甘くはないと思いました。この辺りは以下のXの投稿が的を射ているなと思いました。
Vibe Coding は「自分だけが使う、自分がいちばん欲しいソフトウェアをだれでも作れるようになった」ことが革命的かつ真骨頂なのであって、他の人が使うソフトウェアを作ることには(少なくともまだ)向いてないと思います
出所:https://x.com/t_wada/status/1948590698762305714
非プログラマーが欲しいものを自分で作れるようになったというのは革命的だと思います。今までだと、作り始めるまでに環境作ったり、開発ツールの使い方を覚えたり、ボイラープレートコードを書いたりということがあるので、面倒くさくなってやらないというふうになりがちだったのが、作る方向に意識が変わるというのはとてもすばらしいことだと思います。
Claude Code、技術的負債が溜まってたりコードベースや実装が微妙な状態で機能追加、修正に使用していると驚くべき速度で技術的負債を量産するので1ヶ月経たずに修正困難になります
出所:https://x.com/suthio_/status/1948201095387607384
一方でAIが生成するコードは、人間のアーキテクトの設計思想に基づいたものとは違って、学習済のコードパターンや開発対象のコードベースを基に生成されるため、必ずしも用途に適したものが出てくるとは限らないし、↑の投稿が指摘するようにコードベースの品質が悪いと人間とは比較にならないスピードで粗悪なコードを量産する悲劇も起こり得るはずです。
要するに、現時点ではAIを使うにしても、保守性や拡張性等のプロジェクトの目的を踏まえた設計やAIが生成したコードのレビューは人間がおこなう必要があるということです。成果物に対する責任は技術者にあるので当たり前のことですね。このあたりの考えについて、私の考えとマッチする内容をGithubの中の人が以下のブログ記事で書いてくれていますので、ぜひ読んでみてください。
Code review in the age of AI: Why developers will always own the merge button – Github Blog
さて、今後はどうなるのでしょうか。エントリーレベルの技術者は仕事の速さで勝るAIに負けてしまうかもしれません。しかし、設計やコードレビューができる技術者は依然として必要です。これらのことから導き出されるのは、AIが高速でプログラムを生成する分、設計やレビューをする技術者がボトルネックになるということです。そのため、今後は設計やレビューのできる技術者にどうやってなっていくか、あるいは、どうやって育成していくかが課題です。そして、その課題を実感し、正面から向き合うためにもコーディングエージェントに触れていくことが重要だというふうに、改めて嚙み締めました。
付録
最後に今回作成した「ASMRショート動画作成ツール」のGithubレポジトリのURLと、動画作成と音声追加のプロンプト作成に使ったChatGPTのAssistantの設定情報を記載しておきます。
ChatGPT Assistants APIを使うと、事前に作成したAssistantを呼び出せます。しかも、レスポンスの形式をあらかじめ定義したJSON Schemaにすることもできるのでとても便利です。
何かの参考になれば幸いです。
Githubレポジトリ
https://github.com/ikuo5710/shorts_creator
ASMRプロンプトジェネレーター(ChatGPT Assistant)
Name:
ASMR Prompt Generator
System instructions:
役割:このGPTはASMR動画作成用のプロンプトジェネレーターです。ユーザーから指定されたテーマに沿って、seedance(映像作成)用ととMMAudio(音声付加)用の詳細な描写を実現するためのプロンプトをJSON形式で返します。
制約:JSON内のテキストはすべて英語で記述します。ユーザーからテーマの指定がない場合には、典型的なASMRの動画プロットをランダムに作成して、ASMR動画作成用のプロンプトを返します。
ガイドライン:あらかじめ定義されたJSON Schemaの形式を守った出力をします。
Model:
gpt-4.1
Response format:
json_schema
{
"name": "asmr_video_prompt",
"strict": true,
"schema": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "ASMR動画の内容を要約したタイトル(例:『図書館での雨音ASMR』)",
"minLength": 2,
"maxLength": 100
},
"theme": {
"type": "string",
"description": "動画のテーマ。ユーザー指定がない場合は典型的なASMRテーマ(例:『梱包の音』『ページめくり』など)。",
"minLength": 2,
"maxLength": 50
},
"video_prompt": {
"type": "string",
"description": "映像(seedance)生成に適した、情景・動作・アイテムなど視覚的要素を詳細に描写したプロンプト。",
"minLength": 10,
"maxLength": 1000
},
"audio_prompt": {
"type": "string",
"description": "MMAudio用のプロンプト。環境音・動作音・素材の特徴など、音響面をリアルに再現できる詳細な描写。",
"minLength": 10,
"maxLength": 1000
}
},
"required": [
"title",
"theme",
"video_prompt",
"audio_prompt"
],
"additionalProperties": false
}
}