アプリ内課金、「やめる」という選択肢

去年リリースした「Rhythm Academia」というリズム練習アプリ、本日 v2.3.0 をリリースしました。

このバージョンで、アプリ内課金(200円買い切り)を完全に撤廃しました。プレミアム機能だった全パターンを、すべてのユーザーが無料で使えるようにしたのです。

「えっ、なんで?」と思うかもしれません。今日は、その判断と、技術的にどうやったかを書きます。

目次

厳しい現実

正直に書きます。

  • ダウンロード数:少ない
  • アプリ内課金:購入ゼロ(知り合い2人だけ)

リリースから約半年、何度かアップデートもしてきましたが、伸びませんでした。

リズムアプリはたくさんありますが、五線譜でリズム感を鍛えるアプリって、意外とすくなく、需要はあると思うのですが、ストアの中で見つけてもらうのが本当に難しい。広告を打つ予算もない。SEO対策にも限界がある。

そして気づいたのです。「私自身、このアプリをこれ以上成長させる気持ちが、もう湧いてこない」と。

「成長させる気力」 vs 「使ってほしい気持ち」

indie開発をしていると、「育てる」か「諦める」かの二択を迫られることがあります。

でも今回、私の中に第三の選択肢が浮かびました。

「成長させない。でも、せっかく作ったから、使ってもらえるようにしよう」

埋もれさせるくらいなら、誰かの音楽の練習に役立ってほしい。200円の壁を取っ払って、出会った人が全機能使えるようにしよう。

そう決めました。

技術的にやったこと

ここからは Flutter 開発者向けの実装メモです。

構成

  • パッケージ:in_app_purchase: ^3.2.0
  • 課金タイプ:買い切り(一度購入で永久利用)
  • プレミアム判定:SharedPreferences でローカル保存

修正は1ファイル3行だけ

lib/premium_manager.dart のプレミアム判定メソッドを、常に true を返すように変更しただけ。

// 変更前
static Future<bool> isPremium() async {
  final prefs = await SharedPreferences.getInstance();
  return prefs.getBool(_premiumKey) ?? false;
}

// 変更後
static Future<bool> isPremium() async {
  return true;
}

これだけで、アプリ内のすべての「プレミアム判定」が常に true を返すようになり、結果として:

  • プレミアム購入ダイアログが一度も表示されない
  • 全パターン(1〜90)が誰でも使える
  • 「購入を復元」ボタンも画面に出てこない

in_app_purchase のコードは残したままなので、依存関係を壊さない。将来また課金にしたくなったら戻しやすい。これが「最小修正」のいいところです。

ストア側の対応

Google Play Console

「収益化 → 商品 → アプリ内アイテム」で、premium_patterns を 「無効化」。

これで新規購入は停止されますが、既存購入者の購入履歴は維持されます。

App Store Connect

「収益化 → アプリ内課金」で premium_patterns を開き、「配信可否」を 「配信から削除」 に変更。

「削除」という言葉が怖いですが、これも実質「販売停止」で、既存購入者には影響なし。いつでも復活できます。

ストア説明文の更新

これが一番手間でした。Rhythm Academia は6言語対応(英・日・西・中・独・仏)なので、すべての言語のストア説明文から「Premium」「200円」の記載を削除し、「全パターン無料」に書き換える必要がありました。

各言語で以下のような修正:

  • 「Premium ¥200」表記の削除
  • 「Premium Two-Voice Patterns」→「Two-Voice Patterns」に変更
  • 「One-time purchase unlocks all patterns permanently」を削除
  • 冒頭に「★ Now completely FREE!」を追加
  • 「料金」セクションを「全パターン完全無料、課金もサブスクもなし」に簡潔化

地味ですが、ここをサボると審査でリジェクトされる可能性があります。「アプリの機能 vs ストア説明文」の整合性は審査担当者がチェックする項目です。

サイト紹介ページも更新

WordPress で運営している自サイトの紹介ページも、価格・機能説明を「無料化」に合わせて更新しました。

既存購入者(知り合い2人)への対応

幸い、購入してくれた2人は私の知り合いです。直接「みんなも無料で使えるようになったよ」と伝えれば済みます。

買い切りタイプなので、既に購入された方の機能は当然使えたままです。返金の必要もなし。

これがサブスクリプションだったら、もう少し慎重に対応が必要だったと思います。

振り返って

この判断、作業を進めるうちに「これって全然ネガティブな話じゃないな」と感じてきました。

  • ✅ 既存ユーザーは喜んでくれる
  • ✅ 新規ユーザーも全機能体験できる
  • ✅ 私自身は無理に育てようとするストレスから解放される
  • ✅ コードはきれい(むしろシンプルになった)

「アプリ内課金をやめる」という選択肢、indie 開発者にとって意外と有効な手段かもしれません。

伸びなかったアプリを「諦めて放置する」のと、「無料化して開放する」のは違う。後者なら、せっかく作ったものが活きる可能性が残ります。

こんな選択肢もあり

「これ以上成長させる気力はないけど、せっかく作ったし…」と悩んでいる indie 開発者の方がいたら、こんな選択肢もあるよ、と伝えたいです。

技術的にはとてもシンプル。判定を true にするだけ。あとはストア側の販売停止と、説明文の整合性を取る。それだけで、あなたのアプリが「無料で誰でも使えるアプリ」に生まれ変わります。

完璧に育てきれなくても、それは失敗ではない。

「使ってもらえるかたちで残す」ことができれば、それで十分。私はそう思うことにしました


Rhythm Academia v2.3.0(全機能無料)

審査通過後、随時公開されます。よろしくお願いします。

目次