月間ユーザー1kの個人スマホアプリ開発事情【iOS/Android/Flutter/広告収益】
はじめに
2017年から個人で1種類のアプリを継続して開発しています(本業もエンジニア)💻
今まで個人開発についてちゃんと振り返ったことがなかったので、アプリの歴史や広告収益などを交えながらMAU1kの個人スマホアプリ開発事情についてお話しします。
リリースしているアプリ
mogiriというアプリをリリースしています(iOS/Android)。2017年のファーストリリース時は「MOGIRI」という名前でiOSをSwift、Androidはkotlinで作っていましたが、2022年のリニューアル時にFlutterで「mogiri」としてフルリプレイスしました。アプリ内課金は実装しておらず、広告収益のみで運用しております。
下記は、アプリにも導線がありますが、mogiriの使い方を紹介したnoteの記事です。
mogiri(と、旧MOGIRI)の歴史
2017年8月、MOGIRI iOS版をリリース
2017年11月、iOS版に世界地図機能を追加
2018年1月、Android版をリリース
2018年10月、雑誌GENICで紹介される
発行元の方から自分のアプリが掲載された雑誌が送られてきた時は感動しました🥹
2021年11月、iOS版のデザインを一新
2022年5月、Flutter製の別アプリ「mogiri」としてリリース
GDPRやプライバシー保護の対応、その他法令対応が必要になったり今後新たに対応しなければならないものが増える可能性もあるため、MOGIRIは全世界に配信していましたが、mogiriは日本国内のみに限定しました。
2023年4月、デザインを一新
開発のスタンス
2017年から業務でiOSアプリ開発を始め、もともとは自分が欲しいアプリを勉強がてら作ったのがスタートです。リリースしてからはアプリストアのレビューやアプリ内のフィードバックフォーム、SNSなどで改善してほしい点をいただき、対応を検討しながら順次開発を進めていました。
また、当時の業務では触らないような機能(iOSのSceneKitやFirebaseのバックエンドサービスなど)を触ってみて、使えそうであれば機能を追加したりしていました。
そもそもの目的が収益化ではないため、Appleに支払う年間のメンバーシップ費と広告収入でトントンになれば良いかなと思っています。
MAU推移
MOGIRI
mogiri
アプリの特性上GWや夏休み、年末年始にユーザー数が伸びています。
Firebase FirestoreとFirebase Storageを使用していたのですが、mogiriへリニューアル直後、データ周りの設計ミスに気づき一時公開を停止していたためほぼ0の期間があります。
Firebase Storageが一瞬で無料枠を超過し、エラーが出ていることに気づいた時は冷や汗をかきました…(リニューアル時点では無料のSparkプランだったため助かりました)
現在は設計問題も解消しており、Firebaseのプランも従量課金のBlazeプランにしています。また、後述しますが予算監視もしています。
参考までに直近のユーザー維持率はこのようになっています。
Firebase周り
旧MOGIRIではHOMEではローカルDB、誰かと共有した時だけFirebaseへ保存するようにしており、非常にわかりづらい仕様でした。そのため、mogiriへのリニューアル時にローカルDBは廃止しました。
Firestore
ユーザー情報を保存しています。
Realtime Database
地図や思い出の情報はFirebase Realtime Databaseに保存しています。
2024年1月時点で保存量は約7MBです。
Storage
思い出に登録する画像はFirebase Storageに保存しています。
2024年1月時点で保存量は約3.18GB、画像の枚数は約1万枚です。無料枠が5GBなので、そろそろ課金が発生しますね💸
Cloud Functions
ユーザー退会処理、従量課金で一定の金額に達した際に自動でサービスを停止するために使用しています。
個人開発で一番避けたいことは「クラウド破産」です。その防止策として以下の記事を参考にさせていただきました🙏
広告
2017年からGoogle AdMobを使用しています。
ホーム内にバナー広告を表示
思い出を追加したときにインタースティシャル広告を表示
リワード広告を見ると思い出や地図の登録上限数が増える(2023年11月より提供)
現在は上記3種類の広告を採用しており、下記グラフの紫と黄色がmogiriの収益額です。
リワード広告を追加してから収益額が文字通り目に見えて伸びています。
リワード広告
mogiriはリニューアル後から無料で使える範囲として以下の制約を設けていました。
日本地図、世界地図の作成はあわせて2つまで
地図に登録できるのは1つの場所につき1つまで
制約を設けていたのは、将来的にサブスクリプションを再実装するか迷っていたのと、制約をなくしてしまうとサーバー代が広告収益分を超える可能性が出てくるのではないかと思っていたからです。
現時点ではアプリ内課金を実装しないことに決めたため、無料の範囲内で制約をいかに広げるか考えた結果、以下の仕様に落ち着きました。
リワード広告を見るとチケットを1枚獲得できる(獲得枚数の上限は無し)
思い出が1つ以上登録されている場所に思い出を登録すると、自動でチケットが1枚減る(=実質無限に登録できる)
チケット50枚獲得ごとに地図を作成できる数が+1される(=実質無限に作成できる)
有難いことに、リワード広告を実装してから広告収益が約2倍(¥2,100/月)になりました。
チケット獲得枚数が多いユーザーの方で合計115枚です。2桁枚数のユーザーの方も一定数いらっしゃるので、リリースした機能が受け入れられており安心しました。
しかし、地図の作成上限数が増える累計獲得チケット50枚以上のユーザーは7名しかいなかったため、この仕様周りは引き続き検討していきます。
トータル収支
結論、トータル収支はマイナスです。記事を書くにあたり初めて計算したのですが、普通に赤字でびっくりしました😅
Googleに対しては1度きりの支払いですが、Appleへは毎年支払う必要があるため支出がかさんでいます。
ビルド時間向上のためにMacbook Air (M2/24GB)も購入しているので大幅赤字ですね。
ちなみに、Firebaseの料金は今のところ無料枠内で収まっており、宣伝費もかけていません。
課金を実装しない理由
お金をもらう=完璧なサービスの提供
2022年5月にFlutterでアプリをリニューアルした際に、サブスクリプション機能も追加したのですが、結局やめてしまいました。
リニューアル直後から、設計ミスが原因でアクセスしたタイミングによってアプリが固まってしまう(Firebase側でエラーになる)事象が発生してしまい、すぐにサブスクリプション機能も停止しました。数名のユーザーの方にサブスクリプションも購入していただいていたのですが、問い合わせをいただき、AppleやGoogleに対して返金申請をしていただくよう個別に案内させていただいたケースもあります。
そのときに、お金をもらう以上は「完璧なサービス」を提供しなければならないと感じてしまいました。
開発者によって感じ方は様々だと思いますが、私個人としては「完璧なサービス=不具合のないアプリ」という意味でもなく、問い合わせ対応や定常的な機能改善も含めることを意味します。
もちろん必要なセキュリティ面の実装や利用規約、プライバシーポリシーは定めていますが、「完璧なサービス」を目指すと、もともと趣味で続けてきた開発のスタンスから逸脱してしまいます。1人で開発しているアプリなので問い合わせ対応や不具合修正も含めると時間も取れず、今後プライベートで何が起こるかもわからないため、安定したサービスの提供を未来永劫継続していく保証もできません。
サブスクリプションで毎月数百円払っていたのにある日突然サービス終了となったときにはとても悲しくなってしまいますしね🥲
趣味の範疇を越えるには割に合わない
もう一点正直なところ、アプリ開発である程度の収益を出すのは開発工数と比較すると割に合わないと感じています。
mogiriではMAUが1,000で広告収益がだいたい¥2,000/月なので単純計算でMAU10万になれば月の収益が20万になります。そこにサブスクリブションや買い切りの課金の仕組み、配信対象地域を増やすなどの対応を行えばさらに収益を伸ばすことはできます。
しかしながら、その分バックエンドの料金もかかりますし、ユーザーが増えることで新たに見えてくる課題も多いかと思います。
また、リリースするアプリの種類を増やし、それぞれで一定の収益が出ていればその分もプラスになります。ただ、ここ数年はプライバシー保護への関心が高まっており、AppleやGoogleの審査項目も増えています。項目によってはアプリの機能として追加しなければならなかったり、個人で対応するには難しそうなものもあったりします。運用するアプリの数が増えるとそれぞれで対応が必要になりますのでその分労力がかかります。直接的な機能開発以外の実装となると、必要とは分かっていながらもモチベーションの維持も難しいかと思います。
逆に考えると、開発に割く時間とモチベーションが維持できれば、個人でも月に数十万、それ以上の収益をあげることが可能です。
実際に個人開発でかなりの収益を上げている方もSNS上で見かけますし、PCひとつで生きていけるのはかっこいいですね😎
さいごに
2017年からの個人アプリ開発について振り返ってみました。
広告収益が一定ありつつも、トータルで見ると赤字だったのが一番印象的です。
個人開発は企業のプロダクトと比べると自由度が高いですが、実現度では開発者の知識レベルや開発に割ける時間などに制限されます。趣味で開発している開発者、まだ開発途中でストアにリリースしていない開発者、副業で一定の利益を上げている開発者、個人開発一本でやっている開発者。いろいろな開発者がいると思います。
何を目的にし、ゴールはどこなのか。それを明確にして開発することが大切なのかなと改めて感じました。
記事に書いていない内容でも、このあたり実際どうなの?みたいなことがありましたらお気軽にコメントいただけると幸いです。回答可能な範囲内で回答もしくは記事への追記をさせていただきます🛸
ほしい物リスト、一応置いておきます💪