2014年からひとりでiOSアプリを作り続けています。最初はObjective-CとXcodeしかない時代でした。それがSwiftになり、React Nativeになり、そして今はAIがコードを書いてくれる時代になりました。
Rorkを使ってアプリをリリースした経験を、できるだけ具体的に記録します。「Rorkで作れる」という情報はたくさんありますが、「実際にリリースして収益が出るまでに何が起きたか」を書いている記事は少ありません。この記録がそのギャップを埋められれば、と思います。
企画フェーズ:何を作るかの決め方
アプリのジャンルを決める際、私が確認している指標があります。
App Annie(data.ai)での需要確認
狙いたいカテゴリのトップアプリのダウンロード推定数と収益推定を見ます。「月間ダウンロード数が多く、収益推定が見えていて、かつ1位〜3位のアプリに明確な弱点がある」カテゴリを探します。
壁紙・ライフスタイル系アプリの場合、このカテゴリは競合が多い一方で、ユーザーが頻繁にアプリを乗り換えるという特性があります。「刺さるテーマ」を持ったアプリは、大手との競争を避けながらファンを獲得できます。
収益モデルの設計を先に決める
開発を始める前に「どうやって収益を上げるか」を決めます。主な選択肢は3つです。
- AdMobのみ: 実装が簡単。ただし表示回数を稼ぐために頻繁に使ってもらえるアプリである必要があります。月間50万〜100万インプレッション以上を見込めるアプリでなければAdMobだけでの収益は限定的
- サブスクリプションのみ: 月次収益が安定するが、無料版に十分な価値を持たせないとコンバージョンが取れない
- ハイブリッド(AdMob + サブスクリプション): 無料ユーザーにAdMob収益、課金ユーザーには広告なし体験を提供。私が現在メインで使っているモデル
ハイブリッドモデルの設計原則は「広告を邪魔にしすぎない、でも課金する理由になる程度には存在感を出す」です。インタースティシャル広告を毎回表示するとユーザーが離脱しますし、バナーだけでは課金動機になりません。私が好んで使うのは「5回に1回のインタースティシャル + 常時バナー(プレミアムで非表示)」の組み合わせです。
開発フェーズ:Rorkでの具体的な進め方
Rorkで開発を進める際、最初に全体の画面構成を自然言語でまとめたドキュメントを用意します。
アプリ名: [アプリ名]
コンセプト: [ひとことで]
画面一覧:
1. スプラッシュ → ホーム(初回のみ)
2. ホーム: [内容の説明]
3. 詳細ページ: [内容の説明]
4. お気に入り一覧
5. 設定画面: [サブスクリプション管理・通知設定]
6. プレミアムアップグレード画面
収益化:
- AdMob バナー: ホーム画面下部
- AdMob インタースティシャル: 詳細ページ5回に1回
- サブスクリプション: 月額・年額の2プラン(RevenueCatで管理)
バックエンド:
- 画像データ: Supabase Storage
- ユーザーデータ: Supabase Database(お気に入り・設定)
- 課金管理: RevenueCat
このドキュメントをRorkの最初のプロンプトに貼り付けます。全体設計が明確なほど、後から「やっぱり別の画面が必要だった」という手戻りが減ります。
開発中によく起きる問題と対処
Rorkで開発していると、同じパターンの問題が繰り返し発生します。
画像の読み込みが遅い問題: Supabaseから画像を読み込む際、FlatListで大量のImageコンポーネントを直接レンダリングすると、スクロールがカクつきます。expo-imageライブラリへの切り替えを指示することで大幅に改善されます。Rorkへのプロンプト:「ImageコンポーネントをすべてExpoのImageコンポーネントに変更して。contentFitはcover、cachePolicy はmemory-diskで」
深いネストのナビゲーションが崩れる問題: Stack → Tabs → Stack のような複数層のナビゲーションで、バックボタンの挙動がおかしくなることがあります。この場合はプロンプトで「Expo Router の useRouter().back() ではなく router.dismiss() を使うように変更して」という修正が効くことが多いです。
AdMobの初期化タイミング問題: アプリ起動直後にAdMobを初期化しないと、最初の広告表示が遅れます。app.tsxの最上位コンポーネントでmobileAds().initialize()を呼ぶようにRorkに指示します。
App Store審査フェーズ:実際に引っかかったポイント
App Store審査で最も多く引っかかるのは、以下のパターンです。経験から言うと、事前にこれらを潰しておくだけで審査通過率が大きく上がります。
Guideline 2.1(App Completeness)
クラッシュしたり、主要機能が動かない状態では当然リジェクトされます。これは実機テスト(TestFlight)を丁寧にやれば事前に発見できます。Rorkで生成したコードは実機での動作確認が必須です。シミュレーターと実機で動作が違うケースが存在します。
Guideline 4.0(Design / Copycat Apps)
「デザインが他のアプリの真似」と判断された場合、リジェクトされます。特にシンプルな機能のアプリ(壁紙・タイマー・電卓など)はこのリスクが高い。対策は「このアプリでしかできないこと」を最低1つ作ること。UIの細部に独自性を出すこと。
Guideline 3.1.1(In-App Purchases)
サブスクリプションを実装する場合、審査時には必ずサブスクリプションの機能が動作することを確認します。「サンドボックスアカウントで決済が成功するか」「プレミアム機能が正しく解除されるか」「キャンセル後に正しくダウングレードされるか」の3点を事前にTestFlightで確認します。
プライバシーの記述
PrivacyInfo.xcprivacyファイルの記述が不完全な場合、最近のxcode/EASビルドでリジェクトされます。AdSDKやFirebaseを使う場合、それぞれのSDKが収集するデータについての記述が必要です。RorkへのプロンプトでPrivacyInfo.xcprivacyを正しく設定するよう指示すると、自動的に生成されます。
リリース後の最初の1ヶ月
アプリをリリースした直後、何もしなければほぼダウンロードは発生しません。App Storeの検索アルゴリズムは「新着・レビュー・ダウンロード数」に依存しているので、最初の押し上げが必要です。
私が行う「リリース直後の定石」:
- 身内・知人へのダウンロード依頼: 最初の10〜20ダウンロードを確保し、アルゴリズムの起動を助ける
- SNSへの投稿: X(旧Twitter)・Instagram・Threadsへのアプリ紹介投稿。スクリーンショットよりも動画(Reels/ショート)のほうがリーチが出る
- App Storeのレビュー依頼実装: アプリ内に
SKStoreReviewController.requestReview()を組み込み、ポジティブな体験(お気に入り登録した瞬間など)の直後にレビュー依頼を表示 - ASO(キーワード最適化)の初期設定: App Storeのタイトル・サブタイトル・キーワードフィールドを埋める。最初から完璧でなくていい。まず入れることが重要
最初の収益が発生するまでの期間感
AdMob収益は、アプリのカテゴリと月間アクティブユーザー数に依存します。私の経験では、100DAU(1日あたりアクティブユーザー100人)を超えると月数千円〜数万円のAdMob収益が安定して入るようになります。これが現実的な最初のマイルストーンです。
サブスクリプション収益は、100DAUでコンバージョン率1〜3%と仮定すると1〜3人の課金ユーザー。月額500円のプランなら月収500〜1,500円。これを「少ない」と見るか「始まり」と見るかで、その後の継続意欲が変わります。
私は後者の見方をしています。1円でも実際にユーザーがお金を払ってくれたという事実は、数字以上の価値があります。
収益を伸ばすための改善サイクル
最初の収益が出た後、収益を伸ばす取り組みを始めます。
ダウンロード数を伸ばす(アクイジション)
ASOの継続的な改善が最もコストパフォーマンスが良い。具体的には月1回、競合アプリのキーワード変化をチェックし、自分のキーワードフィールドを更新します。スクリーンショットのA/Bテスト(Product Page Optimization)は、審査通過後に設定できます。
継続率を上げる(リテンション)
プッシュ通知は、使い方次第で継続率を大きく改善できます。「毎日のXXX」という習慣形成に絡んだ通知が最も効果的です。リマインダー型(「3日間アプリを開いていません」)は開封率が高いですが、頻度が高すぎるとアンインストール率が上がります。週1回が私の経験上のバランス点です。
課金率を上げる(マネタイズ)
プレミアムプランへのアップグレード画面を表示するタイミングが重要です。「コンテンツに価値を感じた瞬間」(お気に入りに追加した直後・特定の機能を2回以上使った後)に表示するほうが、起動直後に表示するよりコンバージョン率が高くなります。
また、「年額プランを最初に見せる」「月額プランとの差額を明示する」というUIの工夫がコンバージョンに影響します。RevenueCatのダッシュボードでA/Bテストができるので、実装後は必ず計測します。
長期運用の実態
リリースから半年〜1年が経つと、収益が安定または成長しているアプリと、右肩下がりのアプリに分かれます。
分かれ目は「更新頻度」です。月1回以上のアップデートを出しているアプリは、App Storeの「最近更新」シグナルが働き、検索順位が維持されやすい。一方でリリース後に放置すると、競合の新着アプリに順位を奪われていきます。
Rorkは「小さな改善を素早くリリースする」ことに向いています。「この画面のボタン色を変えたい」「新しいコンテンツを追加したい」という変更を、コードを書かずにAIへの指示で対応できます。この機動力が、個人開発者としての長期運用を現実的にしてくれます。
最後に
Rorkを使い始めた最初の感想は「これで自分の頭の中のアプリが作れる」でした。コーディングの文法を知らなくても、「こういうものが作りたい」という意図をAIが形にしてくれる。その体験は今でも新鮮です。
ただ、Rorkが解決してくれるのは「作る」部分だけです。「何を作るか」「どうリリースするか」「どう収益化するか」「どう改善するか」は、引き続き自分で考える必要があります。
この記録が、Rorkでアプリを作ってリリースしようとしている方の参考になれば嬉しいです。