アプリをリリースした翌日、AdMobのダッシュボードを開いて愕然としました。インプレッション数がゼロ。ダウンロードはあったはずなのに、広告がまったく表示されていませんでした。
Rorkで作ったことへの後悔ではなく、「何かの設定が間違っている」という焦りでした。原因を探ることに3日使い、さらにASOとUI改善に2週間使い、最終的に最初の売上が発生したのはリリースから32日後でした。
この記事は成功事例の美談ではありません。最初の1ヶ月で何をやったか、何が間違っていたか、どう修正したかの記録です。
リリース直後:AdMob収益がゼロだった本当の理由
最初の問題はAdMobの設定でした。アプリ内にバナー広告のコンポーネントを実装して、AdMobのユニットIDを埋め込んでいたにもかかわらず、インプレッションが発生しませんでした。
原因を調べると、テスト広告IDのままリリースしていたのが一つ。AdMobの開発時に使うテスト用ユニットIDは、本番環境では広告リクエストを送っても収益が発生しない仕様です。本番用のユニットIDに差し替えてビルドし直す必要があります。
Rorkでコードを修正してEAS Buildを再実行し、App StoreとGoogle Playの両方に更新版を提出しました。審査を通過するまでさらに2日かかりました。
もう一つの問題は、AdMobアカウントのポリシー審査が完了していなかったことです。新規アカウントの場合、広告配信が制限された状態で始まることがあります。AdMobのダッシュボードに「アカウントの審査中」の表示が出ていたにもかかわらず、最初は見落としていました。審査完了まで約1週間かかり、その間は広告が正常に配信されません。
1週間後:ダウンロードが止まった
広告の問題を解決した後、次の壁はダウンロード数の急落でした。リリース直後の数日間はApp Storeの「新着」枠に表示されてダウンロードがありましたが、1週間を過ぎると一桁に落ちました。
当初、検索キーワードをアプリ名とカテゴリ名だけで設定していました。App Store ConnectのキーワードフィールドはiOSで100文字の制限があるため、ここに何を入れるかでオーガニック流入が大きく変わります。ところが、ユーザーが実際に検索するであろう言葉ではなく、自分がアプリの機能を説明したくなる言葉で埋めていました。
App Store Connectのアナリティクスで「インプレッション」と「ダウンロード」の比率を見ると、インプレッション自体が極端に少ないことが分かりました。これはキーワードのマッチングが弱く、検索結果に表示されていないことを意味します。
キーワードを見直す際にやったのは、Google Play Consoleの「ストアのパフォーマンス」で競合アプリが何のキーワードで表示されているかを確認することでした(Androidは検索クエリが見やすい)。そこから逆算してiOSのキーワードも調整しました。
2週間後:インプレッションは増えたが離脱が多い
キーワード改善でインプレッションが少し回復したものの、今度はCVR(インプレッションからダウンロードへの転換率)が低い問題が出てきました。
スクリーンショットが説明的すぎました。機能の説明文を画像に乗せる形式だったのですが、App Storeの一覧では小さく表示されるため、文字が読めません。競合アプリのスクリーンショットをあらためて見ると、一枚目はアプリの雰囲気を一瞬で伝えるビジュアル重視の構成になっていました。
Figmaでスクリーンショットを作り直し、一枚目は文字なしで画面そのものを見せる形に変更しました。更新後、CVRが改善し始めました。正確な数値は控えますが、体感できる変化がありました。
3週間後:最初のレビューが届いた
星2のレビューでした。「広告が多すぎる」という内容でした。
正直、バナー広告とインタースティシャル広告を両方実装していたので、体験として重かったのだと思います。インタースティシャルを表示するタイミングが、ユーザーにとって不意打ちになっていました。
Rorkでインタースティシャルの表示条件を変更しました。具体的には、アプリを5回使用した後から表示する設定に変更し、かつ表示間隔を最低3分空けるようにしました。次の更新後にレビューの傾向が変わり、「使いやすい」という評価が来るようになりました。
32日目:最初のAdMob収益が発生
リリースから32日後、AdMobのダッシュボードに最初の収益が計上されました。金額としては小さなものでしたが、仕組みとして機能し始めた確信がありました。
振り返ると、最初の1ヶ月で解決した問題は大きく4つでした。
- テスト広告IDのまま本番リリースしていた(AdMob設定ミス)
- キーワードが的外れで検索流入が極端に少なかった(ASO)
- スクリーンショットが機能説明に偏っていた(ストア素材)
- インタースティシャルのタイミングが悪くユーザー体験を損ねていた(UX)
どれもRorkの問題ではなく、私の設定・判断の問題でした。
Rorkが問題ではなかったことを強調しておく
Rorkで作ったコードそのものにバグはなかったし、アプリのクラッシュも初期から少なかったです。Rorkが生成するReact Native + Expoのコードは、AdMobやEAS Buildとの相性が安定しています。
失敗の原因は、アプリ開発以外のところにありました。マーケティング・ASO・広告設定・ユーザー体験の細部。こうした領域は、Rorkでアプリ自体を早く作れるようになっても、自分でキャッチアップする必要があります。
逆に言えば、アプリの実装スピードをRorkが大幅に短縮してくれた分、上記のような試行錯誤に時間を使えたとも言えます。コードを書き直す手間がなかったから、設定の問題発見に集中できました。
個人開発で何度も通る「公開後の壁」
個人開発を長く続けてきて何度も実感したのは、収益化でつまずく原因の大半がアプリの外側にあるということです。私自身、過去にリリースした別のアプリでも、最初にぶつかる壁は決まってコードではなく、AdMobの審査・ASO・ストア素材といった「公開後の運用」でした。
実装に何ヶ月もかかっていた頃は、公開後の細かな調整まで気力が残らないことも多かったのですが、数日でアプリが形になる今は、むしろ公開後の運用にこそ時間を割くべきだと考えるようになりました。Rorkが実装を短縮してくれたぶん、空いた時間をどこに投じるか——その判断こそが、収益ゼロの期間を抜けられるかどうかを分けます。
最初の1ヶ月で収益ゼロでも、それは終わりではない
リリースして即収益が出るアプリはほとんどありません。最初の数週間は「何が問題か」を発見するためのデータ収集期間だと捉えると、ゼロ収益の期間に意味が生まれます。
App Store ConnectとGoogle Play Consoleのアナリティクスを毎日確認して、どこで離脱しているかを特定することが最初の仕事です。収益が出ないまま「Rorkは稼げない」と結論づける前に、広告設定・ASO・スクリーンショット・体験設計のそれぞれを一つずつ確認してみてください。
たいていの場合、どれかに手をつけると少し数字が動きます。