はじめに
- この記事はからあげ帝国 Advent Calendar 2025の記事であり、からあげ帝国の協賛で成り立っています。
- つまり、記事を書くとからあげ皇帝に寿司や焼肉を奢ってもらえるシステムです。みなさん、からあげ帝国に入りましょう。
本当のはじめに
私はロボットと一緒にステージに立ちライブをやる、という音楽活動をやっております。ロボットを作った記事はこちらMIDIで光るアートデバイス制作記です。アートデバイスがなぜロボットに成ったのか?を書き出すと、薄い本ぐらいの文章量になるので割愛します。
本記事で説明する全自動VJですが、まずは実際のライブで使用している様子が分かる動画を見てください。
なぜ全自動?
通常VJは、VJと呼ばれる人がVJアプリを操作してエモい映像を出します。音楽に合わせたり、会場の観客の盛り上がりに合わせたり。
ただ、私の場合、ギターの演奏がありますので、両手が塞がっています。なので、全自動でできる仕組みが必要になりました。
なぜAIで作った?
まず、市販のVJソフトを比較しようとしました。そうすると、当たり前ですがその仕様や操作方法を把握せねばなりません。さらに「全自動でやる方法」なんてのは初心者向け解説YouTubeにはありませんので、たどり着くには途方もない労力がかかります。
市販のVJソフトの特徴を調べながら、自分がやりたいことを箇条書きでつらつら書いていたのですが、「あれ? これはソフトの要求仕様書ではないか? この通りソフトを作れば、欲しいものが最短で得られるんじゃないか?」と気づいてしまいました。
いまはAI活用時代ですので、せっかくのビッグウェーブに乗っかってAIに作ってもらいました。
使ったAIはChatGPT Plus
GitHub Copilot, Cursor, Claude Code, Codex, Clineなど色々ソフトを生成してくれる専用LLMがたくさんありますが、使い慣れたChatGPT 5 thinkingを使いました。VJソフトは見た目を人が評価する必要がありますので、丸投げするより会話のキャッチボールしながら作り上げていく方が良いと思った次第です。
(でもChatGPT Plusに課金してるのが最大の理由です)
ChatGPTで作るときに上手くいったこと
LLMを活用したプログラミングなので「これ作って → 出来上がり」です。何も記事にできる過程はありません。ただ、ちょっと上手く行くやり方を見つけたのでメモ代わりに共有します。
まずLLMと一緒に要求仕様書を作る
「どんなアプリを作りたいか?」を表した要求仕様書をまず自分で文章を書きます。それをChatGPTに渡して、「不明点、疑問点があれば全部質問して」と精査してもらいます。この質問に全部答えます。要求として自分の意思がはっきりしているものはそのように返答しますし、「いや、それは正直どっちでもいいや」というものについては「おまかせしたいから、おすすめを提案して」と投げちゃいます。
一通りQ&Aが終わったら、ChatGPTに「では、ここまでの内容を要求仕様書としてまとめて」とお願いします。私は見やすくしたかったので「markdownで書いて」とお願いしました。
あと、VJアプリが読み込む設定ファイルはyaml形式にしたのですが、このフォーマットもChatGPTと一緒に作りました。曲の順番、曲名、テンポ、映像素材、エフェクト、、、みたいな構成要素を指定します。
知ってる技術と知らない技術を楽しむ
このVJアプリはopenframeworks(以下of)というOpenGLを描画ライブラリに使うアプリフレームワークを使っています。openframeworksはC++で書くのですが、前から少し触っていたのでだいたい分かります。これを中心にやりたいことをChatGPTに伝え、実現方法を提案してもらいました。このときofのMIDIのライブラリを使えば外部機器と簡単にやり取りできることや、シェーディング言語のGLSLを使うシェーダー機能の使い方を教えてもらいました。なお、作ったVJアプリの映像の9割はシェーダーでリアルタイムに映像を生成して表示しています。
このように、知ってる技術を軸にして知らない技術を教えてもらいながら使いこなせるようにしました。そうすると、自分で判断しながら進められるので、ストレスが少なく楽しいです。
コード生成は要求仕様書に厳密に作ってもらう
作った要求仕様書をtxt形式でChatGPTに渡し「この要求仕様書を厳密に満たすようにコード生成して」とお願いします。普通にさらっとお願いすると、たまに要求項目をすっ飛ばすことがあったのですが、圧強めに"厳密に"を付けるとそれがなくなりました。
デバッグはChatGPTと会話しながら
コードができたら、ローカルでビルドして動かします。エラーが出たら、エラーを貼り付けると、修正コードをくれますので、マージしてまたビルドします。
ビルドが通ったら、動作確認。意図通りじゃない部分は、丁寧に「自分が伝えたかったことはこういうことだよ」と優しく説明して直してもらいます。イライラしてはいけません。それは自分の伝え方がイマイチなだけなのですからね。
ChatGPTは修正差分を出してきますので、内容を把握し手動でマージします。これがレビュー代わりですね。
なお、最初の頃は「画面の半分しか絵がでない。原因を考えて」「どこまでちゃんと動いてるのか確認したいので、デバッグ出力を仕込んで」みたいな感じで、まともに動くまで苦労しました。
(でも、一人でフルコードを書くことを考えたら超楽チンです)
変更も遠慮なく入れていく
一通り要求仕様書の通りに出来たら、一旦完成です。githubにcommitとpushしておきましょう。
さあ、ここからが楽しい時間の始まりです!!!
あとは、自分の好きなアプリになるように、思う存分カスタマイズしていきます。
どんな変更を要求してもLLMは文句を言いません。
些細なことでもバンバン変更依頼を投げます。
特にデバッグ用画面は充実させました。ofはGUIメニューを簡単に作れるのですが、デフォルト非表示でgキーを押すと表示、というのが定番です。ライブをやる会場でVScodeを開いてソースコードを見たり、ターミナルのデバッグ出力を見るわけにはいかないので、このGUIメニューにいろんな情報を出したり、調整用のボタンやスライダーを置きました。
(多分)一般的なVJアプリにない機能を入れたよ
PCに接続したUSBカメラを映像素材の1つとして使うようにしました。前述の通り、ロボットがステージで歌い踊りますので、それを大スクリーンで映し出して見せたかったのです。
録画機能も付けました。ライブ本番中はVJ映像を見てるわけにはいかないので、あとで当日の映像を確認できるようリアルタイムで録画する機能も付けました。なお、↑のYouTube動画はその録画データをミックスしています。
3Dオブジェクトを読み込んでくるくる回す機能も付けました。自作のロボットを3D CADでデザインしているので、それをぽいっと入れるだけで表示できます。ワイヤーフレーム表示だと近未来感が出て良いですね。
最後に
この全自動VJアプリを使って、3回のライブをやりました。トラブルが発生することもなく、無事にやりきりました。LLMの力が99%で自分は1%ぐらいの貢献度ですが、でもオリジナルアプリでライブができたので大きな達成感を得ました。
なお、全自動VJアプリはUbuntu24で動いています。Ubuntuでライブをやったよ!
p.s.
先程VScodeにCodexをインストールしました。便利ですね…

