Flutter初心者が2.5ヶ月で個人開発アプリをリリースするまでの全記録

# はじめに

この記事では、**Flutter初心者の私が2.5ヶ月でアプリを個人開発しリリースするまでの全記録**をまとめました。

- **目的:** マッチングアプリを開発し、ストアにリリースする
- **開発の流れ:** 
```mermaid
graph LR;
    A[コンセプト作成] --> B[学習]
    B --> C[MVP UIなし]
    C --> D[MVP]
    D --> H[リリース]
    
    subgraph B[学習]
        B1[初期デザイン] --> B2[開発]
        B2 --> B3[テスト]
        B3 --> B2
    end

    subgraph C[MVP UIなし]
        C1[バックログ作成] --> C2[開発]
        C2 --> C3[テスト]
        C3 --> C2
    end

    subgraph D[MVP]
        D1[デザイン] --> D2[開発]
        D2 --> D3[テスト]
        D3 --> D2
    end
```

- **スケジュール:** 

| 期間 | 内容 |
|------|------|
| **1ヶ月** | コンセプトの文章化・簡単なUI作成(Figma) |
| **0.5ヶ月** | Firebase・Flutter・Dartの学習 |
| **1ヶ月** | バックログ作成・デザイン・開発・テスト・リリース |

- **使用技術:**

| カテゴリ | ツール |
|----------|--------|
| **フロントエンド** | Flutter（Dart） |
| **バックエンド** | Firebase（認証、データベース） |
| **デザイン** | Figma |
| **インフラ** | AWS（iOSアプリビルド用） |
| **開発管理ツール** | Microsoft Azure DevOps |
| **AI活用** | ChatGPT（相談役） |

- **学習方法:** YouTubeや書籍を活用しながら手を動かす
- **工夫したこと:** 詰まったらすぐにchatGPTへ相談

個人開発を考えている方の参考になれば嬉しいです！


# なぜFlutterで開発したのか？
理由は3つあります。

- クロスプラットフォーム対応（iOS/Android同時開発が可能）
- ホットリロードが使える
- Firebase(Google)との相性が良くて、インフラに悩まされない

筆者自身が他のネイティブアプリ開発言語の経験がなく比較的簡単と聞いたのもあり、Flutterを選びました。
Widgetの取り扱いと状態管理に苦戦しましたが、YoutubeとchatGPTを使ってなんとか理解しました。

# 初期費用を抑えるために行ったこと
開発コストを最小限にするために、以下の工夫をしました。

### ✅ クラウド環境を活用
- インフラはすべてクラウドで完結
- Firebase（Firestore & Functions）を活用し、データベース・APIサーバーを別で用意しない

### ✅ 開発ツールを無料で活用
- Figmaの無料枠を使用
- アイコンやデザインは生成AIで作成

### ✅ Macを持っていない人向けの工夫
- Xcode（MacOS）が必要なiOSアプリのビルドは、AWSのEC2インスタンスで対応  
  → ただし、予想以上に費用がかかる。

:::note warn
macOSの起動には専有ホストが必要です！
専有ホストは1日単位で課金されるため、こまめに停止しても最低1日分の料金が発生しました。
これは約半月でかかったコスト。（当時のレートで25,278円です。😭😭）
![スクリーンショット 2025-02-14 083629.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4007207/ed8b5f72-a8ea-41ce-8e51-2f1c1a65f735.png)
:::

### 支払ったものまとめ

- Firebaseの従量課金
- AWSのインスタンス & 専有ホストの費用
- App Store Connect登録料（年額）
- Google Play Store登録料
- 必要な書籍代

## アプリ開発の流れ
### 1. **コンセプト作成**
最初に **アプリのコンセプトを文章化** しました。
文章化するのは効率が悪いと思いがちですが、コンセプトをしっかり決めると要件定義がスラスラ進むので、全体でみると時間短縮になりました！

💡 **ポイント**：思いついたらその場でメモ
📌 **おすすめメモツール**：Google Keep（シンプルでラベル管理が便利）

### 2. **学習**
**サービスのイメージを作成 → 必要な知識を学ぶ** の流れで進めました。

💡 **ポイント**
- いきなり書籍や動画を全部見ない
- 必要な知識だけをピックアップして学ぶ

🎨 **最初の画面設計は、Figmaではなく紙に描く** だけでも十分！


### 3. **MVP UIなし**
**バックログ（要件定義）を作成 → バックエンド開発** の流れで進めました。

💡 **ポイント**
- スプリント単位は **1週間** に設定
- User Storyは **タイトルのみ** にして、開発スピードを優先
- デザインは最低限に抑え、**バックエンドを先に完成** させる

:::note warn
言語やプラットフォームを知らない状態で要件を定義しても、それが実現できるとは限りません。
まずはどのようなことが実現できるのかを学習したうえで、要件定義に進みましょう！
:::

### 4. **MVP**
**デザインをFigmaで作成 → フロントエンド開発** の流れで進めました。

💡 **ポイント**
- **デザインは統一性 & わかりやすさ重視**
- UX的に不足があればバックエンドも調整

📖 **参考書籍**：『ノンデザイナーズ・デザインブック』

:::note warn
フロントエンドはある程度融通が利くので、バックエンド開発の後にしています。
アーキテクチャやアルゴリズムを確立したうえで、デザインを仕上げましょう！
:::

### 5. **リリース**
最後に、App Storeへのリリースを行います。

💡 **ポイント**
- **リジェクトされたらすぐ対応して再提出**
- **めげずに提出し続ければOK！**

# 開発中に直面した課題と解決方法
### ① コンセプト作成時

**マッチングアプリをリリースするには、法務的な手続きが必要**と判明。

#### 🔹 必要だった関連法律
- **電気通信事業法**
- **出会い系サイト規制法**

書類を集めて提出するだけですが後回しにすると大変なので、**早めに対応しましょう**。
あなたがリリースするアプリに手続きが必要な関連法律がないか、事前に調べておくことが重要です！

::: note info
弁護士に相談するとコストがかかるため、まずはChatGPTを活用して情報を収集するのも有効です。
:::

### ② バックログ作成時
MVP（最低限の機能でのリリース）では、「どこまでの機能を含めるべきか」が課題でした。

💡 **判断基準としたのは、コンセプト作成時に立てた仮説**  
→ 仮説を検証するために**最低限必要な機能**をピックアップ。

📖 **参考書籍**： 『リーン・スタートアップ』

:::note info
Azure DevOpsのタグ機能を活用！
User Storyに「MVP」タグを付けて管理しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4007207/45ccbd1c-48f0-49e1-bde1-22c30215132b.png)
:::

### ③ リリース時
iOSアプリの審査では、**何度もリジェクト**されました…。

#### 🚨 指摘された内容
- ストア掲載スクリーンショットにAndroid端末のイメージが入っていた
- キーボードの挙動に問題があった（外部タップで閉じない）
- アプリのコンセプトが他のアプリと重複している
- 不適切なコンテンツの投稿対策が不十分

これらを1つずつ修正し、**対応した内容を審査メッセージで伝える**ことで最終的に承認されました。

## 個人開発を効率的に行うポイント
✅ **コンセプトを文章にする**  
→ 設計・開発がスムーズに進みます。コンセプトが明確だと、開発の方向性がぶれません。
📖 参考書籍：『コンセプトの教科書』

✅ **学習しながら開発する**  
→ YouTubeや書籍は「読む・聞く」だけでなく、実際に手を動かしてコードを書いたりデバッグしたりしましょう。
書いたコードは、MVPの開発に積極的に取り入れましょう！

✅ **わからないことやエラーはchatGPTに即相談**  
→ 公式ドキュメントは網羅的に書かれているため、情報量が多く理解に時間がかかります。
　完璧に読み込もうとせず、インターネット上の膨大なデータを頭に入れているChatGPTを頼りましょう！！

✅ **定期的に報告する場を作る**  
→ 進捗を友人や開発仲間に共有することで、モチベーションを維持しましょう。個人開発は健全なメンタルがあってこそせいりｔ。

## 参考

📚 **本**
- **『リーンスタートアップ』** → MVP（最小限のプロダクト）開発の考え方を学ぶ
- **『コンセプトの教科書』** → アプリのコンセプトを決めるのに役立つ
- **『ノンデザイナーズ・デザインブック』** → デザインの基礎を学ぶ

 🎥 **YouTuber**
- **Rubydog** → 日本語でFlutterの基礎学習
- **Mitch Koko** → Flutterアプリ開発の実践的な解説
- **Flutter公式チャンネル** → 最新情報をキャッチ

---

## おわりに
本記事が、Flutterでの個人開発を始める方の参考になれば幸いです！  
ぜひ、あなたも **アイデアを形にしてみましょう！**

📝 **ハッシュタグ**  
`#Flutter` `#Firebase` `#個人開発` `#Dart`