2014年ごろ、個人開発で壁紙アプリを出していた私が最初にぶつかったのは、作る難しさではなく「公開した後、これがどうやってお金に変わるのか」が何ひとつ分かっていない、という壁でした。
Rork はその「作る」側のハードルをほとんど消してくれました。英語で構想を書けば動くコードが返ってきて、ストアまで運べます。けれど、収益化の判断はいまも開発者の側に残ったままです。むしろツールが速くなった分、設計の良し悪しがそのまま結果に出るようになりました。
広告とサブスクの両方を個人開発で運用してきて「これは最初に決めておくべきだった」と痛感した順に、収益化の設計を並べていきます。私自身がつまずいた箇所を中心に書きました。
収益化モデルは「アプリの形」から逆算して選ぶ
収益化モデルを「どれが儲かるか」で選ぶと、たいてい外します。アプリの使われ方と相性で選ぶのが先です。
毎日短く開かれるアプリと、月に数回じっくり使われるアプリでは、効く稼ぎ方がまるで違います。前者は広告の表示回数が積み上がり、後者は一回あたりの価値が高いので課金が向きます。
| モデル | 向いているアプリ | 必要な規模感 | つまずきやすい点 |
| 広告(AdMob) | 毎日開く軽量ツール・カジュアルゲーム | MAU が大きいほど効く | 少ユーザーでは収益が立たない |
| フリーミアム | 無料で価値が伝わり、上位機能で差が出るアプリ | 無料の母数が要る | 無料が便利すぎると課金しない |
| サブスク | 毎月の更新価値があるアプリ(同期・AI・新コンテンツ) | 継続率が命 | 更新価値がないと即解約 |
| 買い切り | 道具として完成しているアプリ | 新規流入が常に必要 | 継続収益が積み上がらない |
実際には併用がふつうです。私は「無料 + 広告」で母数を作りながら、広告を消したい人向けに ad-free の課金を置き、さらに継続価値のある機能だけをサブスクにする、という三層を組むことが多いです。大事なのは、最初の設計の段階でこの層の境目を決めておくことです。後から差し込むと、無料で配ってしまった機能を有料に戻せず苦しくなります。
広告で稼ぐなら、フォーマットの段階導入とメディエーションが要
広告は「とりあえずバナーを貼る」で始めると、ほぼ確実に物足りない結果になります。私自身、最初の数年はバナーだけで運用していて、後からインタースティシャルとリワードを足した瞬間に景色が変わりました。
順番としては、まずバナーで土台を作り、画面の切れ目(ステージクリア後、保存完了後など自然な区切り)にインタースティシャルを置き、最後に「広告を見ると得をする」リワード広告を加えます。リワードはユーザーが自分の意思で見るので体験を壊しにくく、eCPM も高めに出ます。
もうひとつ効くのがメディエーションです。AdMob 単独ではなく、複数のネットワークを競わせて一番高い広告を出す仕組みです。
// AdMob を主軸に、複数ネットワークを束ねてフィルレートと eCPM を底上げする
// react-native-google-mobile-ads + メディエーションアダプタの構成イメージ
import mobileAds, { MaxAdContentRating } from 'react-native-google-mobile-ads';
await mobileAds().setRequestConfiguration({
maxAdContentRating: MaxAdContentRating.PG,
tagForChildDirectedTreatment: false,
});
await mobileAds().initialize();
// 初期化後、AdMob 管理画面側で Meta Audience Network / AppLovin /
// Unity Ads / Pangle のアダプタを有効化し、入札を競わせる
eCPM は国と時間帯で大きく動きます。私が運用していて掴んだ傾向としては、英語圏のユーザーは単価が高く、夜から深夜にかけての時間帯は表示単価が上がりやすい、というものでした。ここで言いたいのは正確な数字ではなく、「自分のアプリのユーザーがどこの国にいて、いつ開くのか」を知っているかどうかで、同じ広告枠でも収益がまったく変わるということです。
| 広告フォーマット | 置きどころ | 体験への負荷 |
| バナー | 常時表示。一覧や結果画面の下部 | 低い |
| インタースティシャル | 画面遷移の自然な切れ目に限定 | 中。頻度を絞らないと離脱する |
| リワード | 追加機能・continue・ボーナスの対価 | 低い。自発的なので印象が良い |
なお、AdMob はポリシー違反に厳しく、警告を受けると配信が止まることがあります。私も一度ヒヤリとしたことがあり、それ以来「誤タップを誘う配置にしない」「コンテンツとの距離を取る」は最優先で守っています。収益を一段上げる工夫より、止められない運用のほうがずっと大事です。
フリーミアムは ad-free を単一の真実源にすると安定する
フリーミアムで一番こじれるのは「広告を消す権利」と「上位機能の解放」を別々のフラグで管理してしまうことです。条件分岐があちこちに散らばり、課金したのに広告が残る、といった事故につながります。
私は「このユーザーは ad-free か」をアプリ全体でただ一つの真実源として持ち、広告の表示も上位機能の解放もすべてそこから派生させる、という形に落ち着きました。
// 課金状態を単一の真実源にする。広告も機能解放もここから派生させる
type Entitlement = {
adFree: boolean; // 広告を消す権利
proFeatures: boolean; // 上位機能の解放
};
function resolveEntitlement(purchases: PurchaseInfo): Entitlement {
const hasPro = purchases.activeSubscriptions.includes('pro_monthly')
|| purchases.activeSubscriptions.includes('pro_yearly');
const hasAdFree = hasPro || purchases.nonConsumables.includes('remove_ads');
return { adFree: hasAdFree, proFeatures: hasPro };
}
// 表示側は分岐を増やさず、この結果だけを見る
const { adFree, proFeatures } = resolveEntitlement(purchases);
if (!adFree) showBannerAd();
無料版の設計で意識しているのは、「無料でも満足できるが、有料の価値がはっきり見える」ぎりぎりの線を引くことです。無料が不便すぎると使われず、便利すぎると課金されません。
課金を促すタイミングは、機能の壁に当たった瞬間が一番効きます。「あと3回で上限です」という減点的な伝え方ではなく、「Pro にすると今すぐ続けられます」という前向きな提示にするだけで、同じ壁でも反応が変わります。広告ゲートの組み方そのものでつまずいている方は、Rork アプリの広告ゲートを並列構造で設計する話も合わせて読んでいただけると、実装の勘どころが掴めると思います。
サブスクの価格は三段構成とアンカリングで決める
サブスクの価格は、単独で「いくらが妥当か」を考えるより、三つ並べて相対で見せるほうが決まりやすいです。真ん中を選んでほしいなら、その上に少し高いプランを置くだけで真ん中が割安に見えます。
| プラン | 月額の目安 | 年額の目安 | 狙い |
| スタンダード | ¥300〜¥500 | ¥2,800〜¥4,800 | 入口。心理的ハードルを下げる |
| プロ | ¥600〜¥1,000 | ¥5,800〜¥9,800 | 本命。ここに来てほしい |
| アンリミテッド | ¥1,500〜¥3,000 | ¥14,800〜¥28,000 | 上限。本命を割安に見せるアンカー |
年払いは月払いのおよそ6〜7割に設定し、「年払いのほうが得」と一目で分かるようにします。年払いの比率が上がると、解約のタイミングが年に一度しか来なくなるので、収益が安定します。
Rork が生成する Expo ベースのアプリでは、StoreKit や Google Play Billing を直接触るより、RevenueCat のようなサブスク管理を挟むほうが、レシート検証や復元、クロスプラットフォームの整合まで一度に面倒を見てくれて楽でした。生成コードに後から課金を足すときも、課金の真実源を一箇所にまとめられるので、前述の Entitlement 設計とも素直につながります。
App Store で見つけてもらう — ASO の実践
どれだけ収益設計を磨いても、見つけてもらえなければ始まりません。個人開発で現実的なのは、広告費をかけずに検索からの自然流入を取りに行くことです。
キーワードは、大手が独占している一般語(「メモ」「カレンダー」)を正面から狙わないことです。「○○専用メモ」「○○向け記録」のように一段絞った語で、競合が薄く需要のある中位の検索を確実に拾います。
スクリーンショットは最初の3枚で勝負が決まります。機能の説明より、「使うと何が変わるか」を見せるほうがインストール率が上がります。私はデザイナーの仕事もしているので、ここはAIに下地を作らせつつ、訴求の一番濃い一枚は自分の手で詰めるようにしています。
レビューは検索順位にもインストール率にも効きます。依頼を出すのは、ユーザーが価値を感じた直後——タスクを終えた瞬間や、記録が続いた節目です。タイミングさえ合えば、同じポップアップでも獲得率がはっきり変わります。
公開後6ヶ月でやることを、月単位で区切る
収益化を焦ると、母数が育つ前に課金壁を立ててしまい、両方を取り逃します。私は次のように区切って考えています。
最初の1〜2ヶ月は、収益をいったん忘れて、まず使い続けてくれる100人を作ることに集中します。この期間に「どの機能ならお金を払う価値があると感じてもらえるか」の仮説を、実際の使われ方から拾います。
3〜4ヶ月目で、広告と ad-free、あるいはサブスクを入れます。最初の転換率は1〜3%でも正常です。ここで諦めず、提示のタイミングと文言、価格を少しずつ変えて試します。
5〜6ヶ月目は、データで詰めます。どの流入のユーザーが続けてくれるか、どの機能を触った人が課金しやすいか、解約はどの瞬間に起きるか。ここまで来て初めて、広告出稿や関連アプリへの横展開を検討する段に入ります。
次の一手
もしいまアイデア段階なら、コードを書き始める前に、この記事の最初の表に戻って「自分のアプリは毎日開かれるのか、月に数回じっくり使われるのか」をひとつだけ決めてみてください。そこが決まると、広告かサブスクか、無料の線をどこに引くかが自然に定まります。
私自身いまも試行錯誤の途中ですが、作る速さが上がったぶん、設計に時間を使えるようになったのは個人開発者にとって本当に大きな変化だと感じています。お読みいただき、ありがとうございました。