去年リリースした「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(全機能無料)
審査通過後、随時公開されます。よろしくお願いします。


