【個人開発】アプリをリリース、運営するまで

# はじめに
初めまして。YOKKO(よっこ)と申します。
iOS、Android、Webアプリを個人でリリースし、2年以上運営しています。

本記事では個人開発アプリをリリースするまでにやったことやサービスを運営する上での苦労話、どのようにマネタイズしているのかなどをご紹介していけたらと思います。
気になる項目だけでも見ていっていただけたら幸いです。

- [どんなサービスを作ってるの？](#どんなサービスを作ってるの)
- [まず何から始めたの？](#まず何から始めたの)
- [技術スタックやサービス運営で使っているツールは？](#技術スタックやサービス運営で使っているツールは)
    - [技術スタック](#技術スタック)
    - [運営ツール](#運営ツール)
- [リリースまでの流れは？](#リリースまでの流れは)
    - [iOSアプリのリリース](#iosアプリのリリース)
    - [Androidアプリのリリース](#androidアプリのリリース)
    - [Webアプリのリリース](#webアプリのリリース)
- [サービスを続けるためにどのような学習をしているの？](#サービスを続けるためにどのような学習をしているの)
- [アプリ開発運営にかかる費用はどれくらい?](#アプリ開発運営にかかる費用はどれくらい)
- [どのようにマネタイズしているの？](#どのようにマネタイズしているの)
- [個人で開発運営する上で苦労することは？](#個人で開発運営する上で苦労することは)
- [おわりに](#おわりに)


# どんなサービスを作ってるの？
諸々の事情で具体的な内容は伏せるのですが、イベント情報をまとめたキュレーション兼口コミのサービスを運営しています。

# まず何から始めたの？
サービスをリリースするにあたって、ユーザーに利用してもらわなければ意味がありません。そのため、アプリを開発する前に、まずは需要があるかを簡単に調査しました。身近な人に「こんなアプリがあったら便利だと思う？」と意見を求めたりして、一定の需要が見込めることを確認したうえで開発に着手しました。

また、運営するサービスは**自分が興味のあるジャンル**にすることが非常に重要だと感じています。なぜなら、モチベーションが続かないとサービスも続かないからです。
私自身、過去にいくつか個人でアプリを開発しましたが、興味のないプロダクトに対しては、開発が思うように進まず、途中で挫折してしまうことがありました。
反対に、自分が情熱を持てるジャンルのサービスであれば、ユーザーの反応が励みになり、継続して取り組むことができます。

# 技術スタックやサービス運営で使っているツールは？
下記のようなツール、サービスを使っています。バックエンドは基本的にFirebaseに任せることでスピーディな開発を実現しています。

### 技術スタック
・iOSアプリ: [Swift](https://www.apple.com/jp/swift/)
・Androidアプリ: [Flutter](https://flutter.dev/)
・Webアプリ：[Next.js](https://nextjs.org/)
・データベース：[Firebase Firestore](https://firebase.google.com/docs/firestore?hl=ja)、[Firebase Realtime Database](https://firebase.google.com/docs/database?hl=ja)
・認証：[Firebase Authentication](https://firebase.google.com/docs/auth?hl=ja)
・ストレージ：[Cloud Storage for Firebase](https://firebase.google.com/docs/storage?hl=ja)
・分析：[Firebase Analytics](https://firebase.google.com/docs/analytics?hl=ja)、[Vercel Web Analytics](https://vercel.com/docs/analytics)
・クラッシュ解析：[Firebase Crashlytics](https://firebase.google.com/docs/crashlytics?hl=ja)
・Push通知：[Firebase Cloud Messaging (FCM)](https://firebase.google.com/docs/cloud-messaging?hl=ja)
・デプロイ・ホスティング：[Vercel](https://vercel.com/)
・ソースコード管理：[GitHub](https://github.co.jp/)
・コード補助：[Claude](https://claude.ai)、[Cursor](https://www.cursor.com/ja)
・開発エディタ/統合開発環境：[Xcode](https://developer.apple.com/jp/xcode/)、[AndroidStudio](https://developer.android.com/studio?hl=ja)、[VSCode](https://azure.microsoft.com/ja-jp/products/visual-studio-code)
・メールサーバー：[さくらのメールボックス](https://rs.sakura.ad.jp/lp/mailbox-b/)
・ドメイン：[お名前.com](https://www.onamae.com/)

### 運営ツール
・問い合わせ対応：[formrun](https://form.run/home)
・タスク整理：[Jira](https://www.atlassian.com/ja/software/jira)
・運営上の諸々情報管理：[スプレッドシート](https://workspace.google.com/intl/ja/products/sheets/)

# リリースまでの流れは？
詳細な手順については紹介している記事が沢山あるため、ここではアプリをリリースするまでにやった大まかな事項だけをご紹介します。

### iOSアプリのリリース
1.	Apple Developer Program に登録
    •	[Apple Developer Program](https://developer.apple.com/jp/programs/)（年額 $99）に登録します。
	※法人アカウントの場合、D-U-N-S番号が必要です。
2.	アプリ開発
アプリをせっせと開発します。
	•	バグを潰しておいたり、[App Reviewガイドライン](https://developer.apple.com/jp/app-store/review/guidelines/)を遵守することで、後続の審査通過率が高まります。
3.	App Store Connect にアプリ情報を登録
	•	[App Store Connect](https://appstoreconnect.apple.com/)にアプリ名、説明、キーワード、スクリーンショットなどを登録します。
	•	プライバシーポリシーのURLが必須のため、事前に作成してどこか見れる場所にアップしておく必要があります。
4.	アプリを App Store Connect にアップロード
	•	Xcode からアーカイブし、App Store Connect にビルドをアップロードします。
5.	アプリを Apple に審査提出
	•	[App Store Connect](https://appstoreconnect.apple.com/)で審査リクエストを送信します。
•	[App Reviewガイドライン](https://developer.apple.com/jp/app-store/review/guidelines/)を守っていないとリジェクト（却下）されますが、めげずに修正を繰り返して審査通過を目指しましょう。
6.	無事に審査が通ったらリリース
•	[App Store Connect](https://appstoreconnect.apple.com/)でリリース済みになっていてもAppStore上は30-60分ほど置かないと表示されないこともあるので気長に待ちましょう。

### Androidアプリのリリース
1.	 Google Play Developerアカウントに登録
[Google Play Developer](https://play.google.com/console/u/0/developers)登録料 1回限り$25）に登録します。
	※法人アカウントの場合、D-U-N-S番号が必要です。
2.	アプリ開発
アプリをせっせと開発します。
	•	バグを潰しておいたり、[Google Play ポリシーセンター](https://play.google.com/about/developer-content-policy/?hl=ja)を遵守することで、後続の審査通過率が高まります。
3.	アプリ情報を[Google Play Console](https://play.google.com/console/u/0/developers)に登録
	•	アプリ名、説明、スクリーンショットを登録します。
	•	プライバシーポリシーのURLが必須のため、事前に作成してどこか見れる場所にアップしておく必要があります。
4.	リリース用のAABを作成してアップロード
	•	リリースビルドを作成し、Google Play Console にアップロードします。
	•	2021 年 8 月より、Google Play での新規アプリの公開は AAB（Android App Bundle） で行う必要があります。APKでの公開は出来なくなりました。
5.	アプリを審査に提出
	•	[Google Play Console](https://play.google.com/console/u/0/developers)で審査リクエストを送信します。
	•	[Google Play ポリシーセンター](https://play.google.com/about/developer-content-policy/?hl=ja)を守っていないとリジェクト（却下）されますが、めげずに修正を繰り返して審査通過を目指しましょう。
6.	無事に審査が通ったらリリース
	•	[Google Play Console](https://play.google.com/console/u/0/developers)でリリース済みになっていてもAppStore上は30-60分ほど置かないと表示されないこともあるので気長に待ちましょう。


### Webアプリのリリース
※Next.jsで作成したアプリをVercelでデプロイする場合についてです。

1. ドメインを取得
	•	自分のアプリやサービスに合ったドメイン名を決め、[お名前.com](https://www.onamae.com/)などのドメイン取得サービスでドメインを取得します。
	•	年間の使用料が必要です（一般的に¥1,000〜¥3,000程度）

2. アプリを開発
アプリをせっせと開発します。

3. ソースコードをGitHubに登録
	•	GitHubで新しいリポジトリを作成します。
	•	リポジトリ名はアプリ名やプロジェクトに関連する名前にします。
	•	アプリのソースコードをGitHubにプッシュします。

4. Vercelで公開
	•	[Vercel](https://vercel.com/)にてアカウントを作成します。商用利用する場合はProプランを選択します。
	•	Vercelダッシュボードで「New Project」を選択し、GitHubアカウントを連携します。
	•	公開したいリポジトリを選択してインポートします。
	•	「Deploy」をクリックすると、Vercelが自動でビルドとデプロイを行います。
	•	数十秒後に自動で生成されたドメイン（例: your-app.vercel.app）で公開されます。

5. カスタムドメインを設定
	•	VercelダッシュボードでDNS設定やSSL証明書の設定などを行い、カスタムドメインを設定します。

6. 公開後の確認
	•	カスタムドメインで正しくアプリが表示されるか確認します。
<br>

iOSアプリやAndroidアプリはApple、Googleの審査が必要になるため、リリースまでに余裕を持った準備をする必要があります。

# サービスを続けるためにどのような学習をしているの？

個人でサービスを運営し続けるためには、日々の学習が欠かせません。技術的なスキルアップだけでなく、サービス運営やユーザー対応についても学ぶ必要があります。私が実践している学習方法や活用しているリソースについてご紹介します。

### 1. Udemyや書籍での基礎学習
開発初期において、まずは開発スキルを磨くために、[Udemy](https://www.udemy.com/)や書籍で学習をしていました。
特に以下のような分野を重点的に学習しました：
	•	iOS開発（Swift、UIKit、SwiftUIなど）
	•	クロスプラットフォーム開発（Flutterの基本から応用まで）
	•	Webフレームワーク（Next.jsやReactの実践的な講座）
	•	Firebaseの活用法（FirestoreやCloud Functionsの効率的な使い方）

Udemyの講座は定期的にセールを行っており、80-90%offになることもあるのでその時に買うのがオススメです。

### 2. noteやブログ記事の活用
最新の技術トレンドや実践的なノウハウを学ぶために、noteやブログも参考にしています。
特に私がおすすめるのは[アプリマーケティング研究所](https://markelabo.com/)です。
様々なアプリの事例を交えながら実践的なノウハウを学ぶことが出来ます。

### 3. 開発者コミュニティへの参加
一時期、開発者向けのオンラインコミュニティにも参加していました。
コミュニティの参加者同士で不明点をすぐに解消できたり、同じように個人開発をしている人の考えや工夫を知ることができたので、結構オススメです。
### 4. 実践からの学び
実際にサービスを運営する中で、以下のようなスキルや知識を日々アップデートしています
	•	Google AnalyticsやFirebase Analyticsの活用：ボタンタップや画面表示などのデータなどを分析して、使われている機能、使われない機能などを把握するようにして機能改善に繋げています。
	•	新しい技術の導入：開発効率を高めるためのライブラリやツールを日々試しています。最近は[Copilot WorkSpace](https://githubnext.com/projects/copilot-workspace)をうまく導入できないかなどを模索しています。

# アプリ開発、運営にかかる費用はどれくらい？
開発自体は自分で行うので0円として、各種サービス利用にかかる合計金額は年間で**約10万円**ほどです。
※生成AIに課金しなければ7万円程に抑えられます。

内訳は下記となります。
| **サービス名** | **料金（年間）**　※2024/12月時点|
| ---- | ---- |
| Apple Developer Program | 14,850円（$99） |
| Google Play Developer Program | 3,750円（$25） ※初回の1回限り|
| さくらのメールボックス | 1,320円|
| お名前.com | 3,000円|
| Firebase | 8,500円|
| claude | 36,000円（$240）|
| Vercel | 36,000円（$240）|
| **合計** | 103,420円|

なお、サービス規模に応じてFirebaseの料金は大きく変わってくると思いますが、参考までに私が開発しているアプリのFirestoreの使用量（30日間）としては下記の通りです。
![スクリーンショット 2024-12-21 18.52.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581663/f9c8e5fa-e52a-14ac-fb5d-53d1788fe65c.png)
Blazeプランというもので契約をしていますが、無料枠を超えた分だけ従量課金されるため、下記の無料枠を超えるまでは料金がかからず、かなり安く済んでいます。

https://firebase.google.com/pricing?hl=ja
| **サービス名** | **無料枠**　※2024/12月時点|
| ---- | ---- |
| Firestore (Cloud Firestore)| 書き込み：20,000 回/日<br>読み込み：50,000 回/日<br>削除：20,000 回/日<br>ストレージ容量：1 GiB<br>ネットワーク帯域：10 GiB/月 |
| Authentication | メール、ソーシャル、匿名、カスタム：49,999 MAU<br>SAML、OpenID Connect：49 MAU|
| Firebase Cloud Messaging (FCM) | 無料|
| Firebase Crashlytics | 無料|
| Firebase Analytics | 無料|
| Cloud Storage  | GB（保存）：5GB<br>GB（ダウンロード）：1GB/日<br>アップロード操作：2回万/日<br>ダウンロード操作：5 万回/日|

# どのようにマネタイズしているの？
マネタイズについては広告収益とサブスクリプション会員の2つがメインとなっています。

1. 広告収益（AdMob）
[Google AdMob](https://admob.google.com/intl/ja/home/)や[Google Adsence](https://adsense.google.com/)を利用してモバイル/Webアプリに広告を表示することで、ユーザー数に応じた収益を得ています。

2. サブスクリプション会員
ユーザーに月額や年額で料金を支払ってもらい、追加の価値や特典を提供することで収益を得ています。
具体的には、広告を非表示にしたり、サブスク会員のみ利用可能な機能を提供しています。

現状では、主に個人ユーザー（ToC）向けの収益モデルが中心ですが、今後は企業向けの販促ツールとして活用できる仕組みを整え、ToBのマネタイズ方法も検討しています。これにより、収益の多様化と安定化を目指しています。

# 個人で開発、運営する上で苦労することは？
苦労している点はいくつかあります。
### 1.実現したい機能に開発が追いつかない。
3つのプラットフォーム向けに開発を行っているため、どうしても開発が追いつかないことがあります。
現在はJiraを活用してタスクに優先度をつけながら開発を進めていますが、それでもチケットの消化が追いつかないのが実情です。
生成AIを活用することで開発速度は大幅に向上しましたが、それでも平日・土日を問わず、空いた時間を見つけては実装作業に取り組んでいます。アプリ開発はリリースして終わりではなく、日々のアップデートを継続しなければ、ユーザーが離れてしまう可能性があります。そのため、社会人をしながら個人開発を行う場合、それ相応の覚悟が必要です。
個人で複数のプラットフォームでのアプリリリースを検討している方は、最初からクロスプラットフォームのフレームワーク（例: FlutterやReact Native）の活用を検討するのも一つの選択肢です。

### 2.問い合わせ対応が大変
サービスを運営している以上、ユーザーや企業から問い合わせが来ることもあります。
メールで問い合わせが来ると、もしかしたら見落としてしまうことがあるかもしれません。
以前はメールで問い合わせ対応を行っていましたが、毎日メールを確認する手間が大きく、対応漏れを防ぐために気を張る必要がありました。
現在は、[formrun](https://form.run/)を導入し、問い合わせ内容を一括管理する仕組みに移行しました。その結果、対応ステータスの管理がしやすくなり、以前に比べて負担が軽減されたと感じています。それでも問い合わせ対応は労力がかかる作業です、

### 3.サービス内の情報充実がなかなかうまく回らない
私が運営しているサービスの特性上、多方面からイベント情報を収集し、アプリに掲載する必要があります。そのため、常にアンテナを張り続けなければならず、一人で対応するのは非常に大変です。
現在は、一部の情報を自動で収集したり、ユーザー自身が情報を掲載できる仕組みを整備したことで、以前より負担は軽減されました。が、それでも、情報収集にはまだ多くの時間と労力を要しており、大きな課題の一つとなっています。
この課題を解決するため、イベント開催者自身が情報を直接掲載できる機能を開発中だったりします。


# おわりに
この記事が、これから個人開発を始めようとしている方や、現在個人開発をしているけれど他の人がどのように運営しているのか気になる方にとって、少しでも参考になれば幸いです。

私自身、まだアプリ運営の経験が浅く、試行錯誤の連続ですが、その中で得た知識や工夫を共有することで、同じように個人開発に挑戦している方々のお役に立てれば嬉しいです。個人開発は決して楽な道ではありませんが、ユーザーに喜んでもらえる瞬間や、自分が思い描いたサービスが形になっていく過程は何にも代えがたい喜びがあります。

これからもアプリの改善や新しい挑戦を続けながら、個人開発の楽しさや可能性を伝えていければと思っています。この記事を読んで「自分もやってみよう」と思った方がいれば、ぜひその一歩を踏み出してみてください。応援しています！