「やりたいことはあるが、技術的にできるのか、そもそも出していいのか分からない」——そんな発注をご検討中の方に向けて書いています。
題材は、私たちが自社で開発・リリースしたリズムゲーム 「UTap(ユータップ/旧 Rumble Beats)」 です。専門用語はできるだけ翻訳し、「どんな課題に、私たちがどう判断して、どう着地させたか」を中心にお伝えします。攻めた企画を、生き残る形にどう落とすか——その判断の記録として読んでください。
📝 3行まとめ
① UTapは「検索した曲が、その場で音ゲーになる」アプリ。譜面は1曲も手作りしていません。
② 最大の売り(世界中の曲で遊べる)は、同時に最大の法務リスクでもありました。
③ 私たちは「攻める場所」と「逃げ道」を最初に設計し、グレーを“歩ける形”に変えました。
UTapとは ― 譜面を1曲も作らないリズムゲーム
音ゲーの最大のコストは譜面制作です。普通は1曲ずつ職人が手で叩いて作ります。だから収録曲はなかなか増えません。
UTapは、ここを全自動にしました。ユーザーが曲を検索して選ぶと、アプリがその場で曲を解析し、ノリに合わせた譜面(ノーツ)を自動生成します。収録曲をこちらで用意しないので、遊べる曲は実質無限。これがUTapの設計思想です。
ただ、この企画は最初から分かっていました。いちばんの売りが、いちばんの法務リスクだと。「世界中の曲」とは、つまりほぼYouTubeのことだからです。
💡 発注者の方へ:ここで「リスクがあるのでやめましょう」と言うのは簡単です。でもそれだと企画そのものが死にます。私たちが取ったのは 「攻める場所と、守る場所を分ける」 という設計判断でした。攻めるから価値が出て、守るから生き残れる。この線引きを最初に握ることが、攻めた企画の受託でいちばん喜ばれるポイントです。
グレーゾーン①:検索を「公式API無し」で通した理由
まず曲を探す機能。普通はYouTubeの公式API(YouTube Data API)を使います。ところが公式APIには1日あたりの利用上限(クォータ) があり、ユーザーが増えるほど検索が止まる。しかもキー管理や審査も必要です。
そこで私たちが採ったのは、正直に言えばグレーな方法でした。
- アプリ内に画面に表示しないブラウザ(WebView) を持たせ、YouTubeの検索結果ページを裏で開く
- ページの描画が終わるのを待ってから、表示後のHTMLをまるごと取得する
- そのHTMLから「動画へのリンク」だけを抜き出して、検索結果として並べる
公式APIを使わないので、クォータも、APIキーも、審査もゼロ。ユーザーが何回検索しても止まりません。
💡 発注者の方へ:「正規のやり方だとコストや制約で実現できない要件」を、別ルートで通すのも提案力のひとつです。ただし私たちは、“技術的にできる”と“やっていい”は別問題だと理解した上で選んでいます。何を踏んでいて、何がリスクなのかを必ず言葉にして依頼主と共有する。黙って踏むのが、いちばん危ない進め方です。
グレーゾーン②:「埋め込み動画」で逃げ道を一本通す
ここが、この企画でいちばん大事な判断です。
私たちは 「埋め込みが許可されている動画しか、ゲームに出さない」 というフィルタを最初から入れました。
仕組みはこうです。各動画のページには、外部サイトへの埋め込み用の情報(og:video:secure_url というタグ)が入っていることがあります。このタグがある=権利者が「外部での再生を許可している」と表明している動画。UTapは、それ以外を候補から落とします。
なぜ、わざわざ遊べる曲を減らすのか。逃げ道を一本、最初から通しておくためです。
- 権利者が「埋め込みOK」と明示した範囲だけを扱う、という建て付けにできる
- 万一クレームやストア審査の指摘が来ても、「埋め込み可の動画に限定している」という説明の軸を持てる
- 将来「ダウンロードはやめて、純粋な埋め込み再生だけに切り替える」方向へも舵を切れる
正直に言えば、これで完全にクリーンになるわけではありません。けれど「グレーを全部まとめて踏む」のと、「一箇所だけ正規の逃げ道を確保しながら攻める」のとでは、抱えるリスクの大きさが桁で変わります。
💡 発注者の方へ:これが“グレーの歩き方”です。攻めた企画を持ち込まれたとき、私たちは「全部ダメ/全部やる」の二択にしません。“どこに逃げ道を一本通せば、攻めても死なないか” を設計します。UTapでいう「埋め込み可フィルタ」がそれ。この“逃げ道の設計”込みで提案できることが、ただ作るだけの開発会社との違いだと考えています。
再生ボタンを押してから、裏で起きていること
ここからは中身の話。ユーザーが曲を選んで「Play」を押すと、数秒のあいだに裏でこれだけのことが起きています。
① ストリームの取得YouTubeの動画は、固定のファイルがどこかに置いてあるわけではありません。再生のたびに発行される一時的なURLを取りに行き、一番画質の高いものを選びます(映像と音声が別々なら、その両方を取ります)。
② ネイティブのFFmpegで「音」と「映像」に分解取得したデータを端末に落とし、FFmpegという定番ツールで2つに分けます。
- 音声 → 解析用の生の波形データ(WAV) に変換する
- 映像 → そのままコピーする(作り直さないので速い)
このFFmpegはUnity単体では動かないため、OSごとにネイティブで組み込みました。Androidは専用ライブラリをJava経由で、iOSはC言語の関数を直接、開発用のMacではインストール済みのFFmpegを、と3経路を用意しています。
③ 譜面の自動生成(ここが心臓部)取り出した音の波形を解析して、ノーツをその場で配置します。
- まず曲のテンポ(BPM) を推定する
- 16分音符くらいの細かさで区切り、音がグッと立ち上がった瞬間を拾う
- その強さを点数化し、強いタイミングにノーツを置く
- 難易度に応じて「ノーツの密度」「左右同時押し」「スワイプ」を出し分ける
つまり、人間が一切譜面を作らなくても、曲のノリに合ったリズムゲームが生成される。これがUTapの核です。
💡 発注者の方へ:「YouTube連携」と聞くと簡単そうに見えますが、中身は 通信・OSネイティブ(Java/C)・音声信号処理・ゲーム同期 という、まったく別々の専門領域を1本の体験に縫い合わせる仕事です。私たちはこの“縫い合わせ”を一気通貫でやれます。「画面だけ」「サーバーだけ」では完成しないもの を、丸ごと引き受けられるのが強みです。
いちばん苦しんだのは「403」だった
きれいに動くデモを作るのは、実はそこまで難しくありません。本当の地獄は 「保存した曲が、後日なぜか再生できない」 でした。
原因は2つありました。
- 再生用の一時URLは数時間で失効する。だから「曲を保存」したときにURLを覚えていると、翌日には全部リンク切れになる。
- アクセスが集中したり弾かれたりすると、サーバーが 「403(アクセス拒否)」や「429(回数制限)」 を返してくる。
これに対して打った手が2つです。
- 保存するのはURLではなく、絶対に変わらない11桁の「動画ID」だけにする。 再生のたびに、新しい一時URLを取り直す。これで「翌日に全曲再生不可」が消えました(しかも、過去の保存データが壊れないように後方互換も確保)。
- 403/429/通信切れは「一時的な失敗」と判断し、URLを取り直して最大3回までやり直す。 一方で「動画が削除された・非公開・年齢制限」は何度やっても無駄なので、潔く諦めて、原因を日本語でユーザーに伝える。
地味な話ですが、この“失敗の仕分け”があるかないかで、アプリのレビュー評価は変わります。「なんか動かない」と、「この動画は再生できません(削除・非公開の可能性)」では、ユーザーの納得感がまったく違うからです。
💡 発注者の方へ:ここが一番喜ばれたところ。デモが動くことより、「想定どおりに失敗してくれること」 にこそ受託の価値があります。私たちは成功パターンを作るだけでなく、どう失敗を見せ、どこでリトライし、どこで潔く諦めるか まで設計します。リリース後の問い合わせ件数は、たいていここで決まります。
正規ルートと、UTapの設計の違い
「公式APIで普通に作ればいいのでは?」——もっともな疑問です。整理すると、こうなります。
| 観点 | 公式APIで素直に作る | UTapの設計 |
|---|---|---|
| 遊べる曲 | 提携・許諾した曲に限られる | 検索したほぼ全曲(埋め込み可に限定) |
| 利用上限 | 1日のクォータで頭打ち | 上限なし(裏側の作りで回避) |
| 譜面 | 1曲ずつ手作り or 別途用意 | 音声解析でその場で自動生成 |
| リスク | 低い(が、企画は成立しにくい) | グレー。“逃げ道設計”で管理する |
| 向いている案件 | 権利がクリアな曲を扱うもの | まず体験を成立させて検証したいもの |
どちらが正解という話ではありません。大事なのは、案件の目的に応じて、攻め方とリスクの取り方を選べることです。
リリースの現実:改名・広告・自社送客
最後に、出すまで/出してからの生々しい話を少しだけ。
- アプリ名を Rumble Beats → UTap に改名。 覚えやすさと検索のしやすさを優先した、わりとドライな経営判断です。
- 広告(AdMob)を導入し、収益化の土台を入れました。攻めた企画ほど、マネタイズを後付けにしないことが効いてきます。
- 自社の別アプリへの送客バナーもアプリ内に仕込みました(日本語のユーザーにだけ表示する、など)。1本の集客を、自社アプリ群で回収する考え方です。
- 日本語/英語の多言語対応や、iPhoneのノッチ(セーフエリア)対応といった、ストアに出すと必ず指摘される“地味な必須項目”もやり切っています。
💡 発注者の方へ:「作って終わり」ではなく、改名・広告・送客・多言語・審査対応まで含めて“事業”として並走できます。私たちは自社アプリで毎回これを通しているので、あなたのアプリでも同じ轍を踏まずに済みます。
正直な線引き ― これを書けるのが信頼だと思う
この記事では、グレーな手法も包み隠さず書きました。最後に、私たちのスタンスをはっきり書いておきます。
- 「技術的に可能」と「事業として続けられる」は別物。続けられる形に落とすのが私たちの仕事です。
- だから攻めるときは、必ず逃げ道(UTapでいう埋め込み可フィルタ)を一本通す。
- そして、踏んでいるリスクを依頼主に黙らない。判断するのは依頼主、選択肢と確率を出すのが私たち。
攻めた企画ほど、「攻め方と引き際を、一緒に設計してくれる開発会社」 が必要になります。私たちは、それをやります。
私たちが提供できること
UTapの開発を通じて、私たちはこんなことが得意になりました。
- 攻めた企画の“着地設計”(どこを攻め、どこに逃げ道を通すかの線引き)
- 外部サービス連携(YouTube等、公式・非公式の両方の経路を理解した上での実装)
- 音声・映像処理 × ゲーム開発(信号処理から同期再生まで一気通貫)
- iOS / Android アプリのリリースと運用(多言語・広告・審査・改善まで並走)
「やりたいことはあるけれど、できるか・出していいか分からない」——その壁打ちの段階から歓迎です。“面白いけど難しい”を、一緒に生き残る形にしましょう。


