コーディングゼロ。構想からビルドまで2時間。Antigravityと作った「本格ギターシーケンサーアプリ」
システム開発未経験者がAntigravityとGemini、Monacaを使い、コードを一切書かずに2時間(計4時間)で本格ギターシーケンサーアプリをビルド。実機でのドラッグ&ドロップ対応や、OfflineAudioContextによる音詰まり解消など、AI開発の裏側を公開します。

1.導入
データ分析やDX推進/顧客折衝などシステム開発現場未経験の私が、生成AI(Antigravity と Gemini)との対話のみで、 しかし今回、プログラミングのコードを一切書かず、スマホで動く本格的な音楽アプリを開発し、ビルドまで完了させてしまいました。
非エンジニアよりの私が、AIとペアプログラミングを行い、パフォーマンスの壁を乗り越えたのか。その技術的な裏側をシェアします。
2.きっかけ
開発のきっかけは「妻の一言」
きっかけは、楽器が弾けない妻からの「バンドの曲を作ってみたいんだけど、直感的に使えるいいアプリない?」という一言でした。
既存のDAW(作曲)アプリは無料版だと機能制限が多く、有料版でも最低限の音楽理論や経験値が必要で、端末のスペックも求められる。 「ブロックを並べる感覚でコード進行が作れて、そのまま歌も録音できるアプリがあったらいいのに…無いなら作ってしまえ!」と思い立ったのが始まりです。
「思いつきから1〜2時間でサクッと実装したい」(というより連休中の貴重な時間を使いたくない!)と思ったため、最初からAIをフル活用する前提でスタートしました!
3.アプリの概要
どんなアプリ
エントリーモデルのスマホでもサクサク動く「Guitar Sequencer」です。

ドラッグ&ドロップでコードを並べるエディタ画面。ダークモードにも対応しています。
主な機能
1.直感的なUI: 音楽の知識がなくても、ブロックを配置する感覚でコード進行を構築。
2.多彩な音色とリズム: Web Audio APIでリアルタイム合成する「アコギ」「ファズ」など10種以上のギター音色と「ロック」「ジャズ」などのドラム音色。 「アルペジオ」「8-beat」「16-beat」などの20種のギターストロークパターンやベースの「ウォーキング」「ルート」「オクターブ」などのパターン、 「四つ打ち」「HIP HOP」「Shuffle」などの12種のドラムパターン。FillやTie、N.C.などのツール機能も実装。
3.マイク録音/出力機能: 自分の歌声を伴奏に重ねて録音し、WAVファイルやPDFコード譜として書き出し可能。
4.弾き語りサポート機能: ギターTAB譜の自動生成、歌詞の挿入、自動スクロール、カポタスト時/キー変更時のエディタ自動反映なども可能。
たった4時間の開発プロセス
今回の開発フローと技術スタックは以下の通りです。
フロントエンド: HTML / CSS / Vanilla JS (動作の軽快さを優先しフレームワーク不使用)
オーディオエンジン: Web Audio API (重い音声ファイルは使わず、オシレーターで波形をリアルタイム合成)
検証・ビルド: Monaca (Apache Cordova)

Antigravityに自然言語で要件を投げ込み、Monacaで即座に実機プレビュー。
前半2時間:Antigravityによる爆速プロトタイピング
Antigravityに「ドラッグ&ドロップでコードを並べるシーケンサー」という要件を自然言語で投げ込み、ベースのUIとオーディオロジックを一気に生成。そのコードをMonacaに貼り付け、手元のスマホで検証しながらチューニングし、あっという間にデバッグ用の .apk ビルドまで到達しました。
後半2時間:GeminiでのUIブラッシュアップ
Antigravityの利用回数制限に達してしまったため、別アカウントの Gemini にコードを引き継ぎました。「iPhoneのブラウザでも動くWebアプリ(PWA)化」「再生時のレンダリング機能」「曲テンプレートの実装」「FillやTieなどのツール機能の実装」など細かい仕上げを行い、計4時間で完成です。
4.ぶつかった壁
Web上で音声を扱う場合、特にモバイル端末特有の「沼」がいくつも存在します。 今回は「AIに丸投げ」するのではなく、人間側(私)がアーキテクチャのアイデアを出し、AIに実装させるというアプローチを取りました。
1.スマホでHTML5の Native Drag & Drop が動かない問題
PCでは動くドラッグ&ドロップが、スマホ実機では全く動きませんでした。
解決策: AIの分析により「HTML5のdraggableはタッチイベントにネイティブ対応していない」ことが判明。提案に従い、タッチ操作をD&Dイベントに変換するPolyfillを導入し、スクロールバグを防ぐ preventDefault 処理を組み込みました。
2.リアルタイム合成によるCPUスパイクと処理落ち
最も苦労したのがこれです。6弦分の和音とドラムパターンを for ループでリアルタイム計算し、エフェクトに繋ぐと、スマホのメインスレッドがブロックされ、音が途切れたりUIがフリーズしたりする事態に。
解決策: 「再生時に毎回計算するのではなく、事前レンダリング機能を入れて、音データをキャッシュできないか?」と私から提案。 AIが即座に OfflineAudioContext を用いた事前レンダリング機能を実装してくれました。これでどれだけ音を重ねても完璧に動作するようになりました。
3.止まらない「ゾンビ・ノード」問題
再生を停止しても、未来にスケジュールされたドラムのノイズバッファがOSのオーディオルーターに残り、永遠に鳴り続けるバグが発生。
解決策: 各ノードを個別に stop() するのではなく、マスター出力の手前に GainNode(マスターゲイン)を噛ませ、停止時に gain.setValueAtTime(0) と disconnect() を発火させて、回路ごと物理的にパージ(切断)する設計に変更しました。
今後の展望
今後はMonacaでのキーストア設定などを行い、Google Play Store および App Store への正式リリースを予定しています。 コーディングスキル無くてもアプリ開発できちゃうじゃん!という自信が湧いてきたので、まずは自分が使いたいアプリをどんどん開発していきます。
終わりに
今回の経験で一番強く感じたのはこれです。
「コーディングスキルがなくても、要件定義とアイデアさえあれば、AIの力で0からアプリを実装できる」
重要なのは、「ドメイン知識(今回はギターの音楽理論)」と、「ボトルネックに対するアーキテクチャの提案(レンダリングやキャッシュ)」は人間が握っておくことです。
実際に使う人の要件、使い方、使い勝手を考えて、それをAIに伝えることが大事です。 実装の泥臭い部分はAIに任せ、人間は「どう使いたいか」「どう解決するか」のディレクションに徹する。 これが現代の開発の最適解の一つだと感じました。
「こんなツールがあればいいのに」というアイデアがあれば、ぜひ皆さんもAIを相棒にして実装してみてください!



