【完全版】3ヶ月でAndroidエンジニアを目指すためのロードマップ

# はじめに

ご覧いただきありがとうございます。[Gon](https://x.com/engineer_gon)です！
Androidアプリ開発の世界へようこそ！

今回は、友人がAndroidエンジニアを目指すと聞いて実践的なロードマップを作ってみることにしました。

僕自身、Javaのレガシーなシステム開発からキャリアをスタートしましたが、働き方の自由度や仕事の楽しさを求めて、独学でKotlinを学び、Androidアプリ開発へとスキルチェンジしました。

フリーランスのAndroidエンジニアとしては3年以上働いていますが、基本的にフルリモートで働けるためすごく自由度が高いですし、単価も上がりやすく、何より楽しんで仕事できてます。

「**どこから始めればいいのか分からない**」という方も多いと思うので、今回のロードマップが皆さんの参考になれば嬉しいです。

# ロードマップ

![](https://storage.googleapis.com/zenn-user-upload/034d54a65890-20240908.png)

## 2024年にAndroid開発者になるためのガイド

まずは、キャリアをスタートする上で重要な道標となるサイトをご紹介します。

https://roadmap.sh/android

[Developer Roadmaps](https://roadmap.sh/)は、IT業界の様々な職種や技術分野におけるキャリアパスを視覚的に示したロードマップが提供されているウェブサイトです。

それぞれの項目や関係性については初見だと少し複雑に感じるかもしれませんが、学習の途中でも定期的に見直して、自分の現在地を把握するのがおすすめの使い方です👍

## 効果的な学習方法

#### 前提
学習を始める前に、まずは、以下の2点を明確にしておきましょう。

**1. 目標設定（なぜ、学ぶ必要があるのか）**
**2. 期日設定（いつまでにその状態を実現するのか）**

「なんのためにやるのか」はまず大前提として、『**達成した先で得られるメリット**』を自分の中で明確にイメージしておくことが大事です。

よくありがちなパターンは、

「あれ、なんのために勉強続けてるんだろう？」

って、結局気づいた時にはやらなくなってました、みたいな状態です。

正直、時間をかければ誰だって習得できると思っていますが、継続できないことが一番の問題なので、まずは動機付けの部分を明確にしておきましょう。これが何より大事です。

例えば、

「**半年後にはAndroidエンジニアとして月50万以上稼げるようになる**」

みたいに「よっしゃ、やってやるぞ！」と思えるような目標ならなんでも良いです。
（実際、独立すれば月50万は難しくないですしね）

頑張った先で得られるメリットをちゃんと把握しておいて「**いま頑張った方が長期的に見てお得じゃない？**」と自然に思えるくらいにマインドを持っていくことが大事です。

#### 重要なポイント
その上で、新しい分野をキャッチアップする際に、重要なポイントが2つあります。

**1. 全体像を掴む**
**2. 優先順位をつけてステップバイステップで学ぶ**

この順序が大事だと考えてます。

逆に、最初に一番やってはいけないのが「とにかく開発する」とか「とにかく手を動かす」こと。
これは乱暴すぎます。

自分が今何をしているのかも分からない状態で闇雲に進めても意味がないです。

- 「なんで理解できないのか」
- 「どの部分が理解できてないのか」
- 「どこから情報を参照すれば良いのか」

解像度が高ければ何が理解できてないのかどの部分で立ち止まってるのかを自分で判断できます。

**まずは『全体像を掴む』こと**

だからこそ、最初は圧倒的にインプット増やして、ひたすら情報を仕入れて頭の中でイメージを作っていきましょう。

## ステップバイステップでの学習

![](https://storage.googleapis.com/zenn-user-upload/7a86964c6aee-20240908.gif)

では、具体的に何をやればいいのか、期間ごとにフェーズ分けして解説していきます。

第一段階〜最終段階までありますが「個人的なおすすめの方法」でしかないので、これ通りにやれというわけではありません。

自分の状況に応じて判断してもらってOKです👍

---

### 第一段階（0〜1ヶ月目)
- Kotlinの基礎学習
    - [Udemy：はじめての Kotlin](https://www.udemy.com/share/102yviBkIecVtURHg=/)
- ハンズオン形式でAndroid開発の全体像を掴む
    - [Udemy：Jetpack ComposeでのAndroidアプリ開発の基礎をマスター
](https://www.udemy.com/share/108bdE3@gPN9IFsnrrgqlzYpClHa_KpwPhHSw-LFJ7v6pOGHURqpWrzxO9Ql140ZQu882ID1Kg==/)
- とにかく公式ドキュメント
    - [Android 公式ドキュメント](https://developer.android.com/?hl=ja)
    - [Android デベロッパーガイド](https://developer.android.com/guide)
    - [KotlinでAndroidアプリを開発する](https://developer.android.com/kotlin?hl=ja)
    - [Codelab：ハンズオンで学べる公式チュートリアル](https://developer.android.com/courses/fundamentals-training/toc-v2?hl=ja)

※Udemyは普段買うと高いのでセールの時に買いましょう👌 (結構頻繁に実施してます)

第一段階での目標：
- **小規模なアプリであれば一人で作れる状態。**
    - Android Studioの使い方
    - Androidアプリ開発の基礎
    - Kotlinの基礎
    - Jetpack ComposeでのUI作成
        - 余裕があればxmlでのUI作成も学ぶ
    - ViewModelを使ったデータの管理方法
    - Hilt & Roomといったメジャーなライブラリの使用方法
    - MVVMアーキテクチャでのアプリ開発方法
- **公式ドキュメントを一通り読んでみる**
    - 必要な時に調べる辞書的な使い方でも良いですが、全体的な理解を深めるために、一度時間をとって隅から隅まで読んでみるのがおすすめです。

ここで大事なのは、完璧な状態を目指さないこと。

短い期間で大量に知識を詰め込むので、知識の抜け漏れや理解が不十分な箇所は当たり前にあるかと思います。

ひとまず開発の大枠のイメージが掴めていれば十分OKです！

難しい点、理解できない点が出てくるかと思いますが、完全に理解するということよりも「**使い方に慣れる**」ということが大事だと個人的には思ってます。

---

### 第二段階（1〜2ヶ月目)
- **個人アプリ開発 & リリース**
    - 必要最低限の機能でOKなので、自分のアイディアを形にする 0 → 1 の経験を積むこと。
    - GitHub上でコード管理（チーム開発を意識しながら運用できるとGood）
- **記事を書く（Zenn or Qiita）**
    - 全体の振り返りや思考の整理
    - 人の目に晒す状態にできると、誰でも理解できるように客観的な視点から情報を整理する必要があるので、その過程で自分の思考をより深めることができ確実にレベルアップします。

第二段階での目標：
- **自分で考えて0から1を作り出せる状態**
    - アプリリリースの経験
        - アプリの企画・構想
        - 新規プロジェクトの立ち上げ
        - 第一段階で学んだ技術を用いて実装
        - その他リリースまでに必要なこと
            - アプリアイコン設定
            - 多言語対応
            - ダークモード対応
            - シェアやレビュー機能
            - 素材集め
            - デザイン
            - GooglePlayStore用のスクショ作成
            - リリース作業 ...

0→1でアプリを作成して「**リリースまでやりきる**」経験は本当に自分の中での自信に繋がります。

今までとは違い、ただアプリを作って終わりではなくリリースまで経験する必要あるので、アプリ開発の最終的な全体像が見えてくると思います。

1ヶ月目に学んだ内容の最高のアウトプットの機会になるので、とにかくくだらないものでOKなので自分の考えを形にするプロセスを経験しましょう。

:::note info
**【最終的なアウトプットの例】**
以下はFlutterを使用した例ですが、アウトプットの形として参考になればなと思います。
- 記事：https://zenn.dev/masashiii/articles/85ad36db7f7eeb
- Github：https://github.com/mnengineer/crazy_sound
:::

**▼ UI Pocket**
アプリの構想やデザイン参考探しに役立つサイト。
国内外の優れたUI・UXを提供しているアプリのUIデザインがまとめられているので、ぜひ参考にしてみてください。

https://www.ui-pocket.com/apps

---

### 第三段階（3ヶ月目〜）
- **現場で使われる実践的な内容をトピックで学ぶ**
    - アーキテクチャ
        - MVVM + Repository
        - Clean Architecture
    - フレームワーク
        - Android Jetpack + Architecture Components
        - Navigation：画面遷移
        - ViewBinding / DataBinding
    - ライブラリ
        - Retrofit + OkHttp：HTTP APIクライアント
        - moshi：JSONシリアライズ
    - 非同期処理
        - Coroutine + Flow
    - アプリ内ストレージ
        - DataStore（Preference）
        - Room（DB）
    - ネイティブの機能
        - カメラ
        - 位置情報
        - システム設定（輝度、音量等）
    - ツールに対する深い理解
        - AndroidStudio
        - エミュレータ
        - 実機端末
    - その他
        - Firebase の活用（Analytics, Crashlytics）
        - Glide：画像表示・GIFアニメ表示
        - Timber：ログ出力
        - SDK：Zenrin（地図表示）、プッシュ通知
        - WebView や ChromeCustomTabs
        - アプリリンク対応やカスタムURL
        - コード難読化とセキュリティ対策 ...
    - [テストコード](https://www.udemy.com/course/unittest-kotlin-junit/)
    - コーディング規約
        - Ktlint：コードスタイルチェックの導入
        - [Kotlin公式規約](https://kotlinlang.org/docs/reference/coding-conventions.html) および [Androidのコーディング規約](https://android.github.io/kotlin-guides/style.html)
- **個人開発アプリをアップグレード**
    - 上記のライブラリやアーキテクチャを採用して、一段レベルの上がったアプリを作る
- **アウトプットの習慣化**
    - ZennやQiitaへの記事執筆（学んだ技術に対してのアウトプット）
    - GitHubへのコード公開（書いたコードは基本GitHub上で管理する）

※ 長々と書きましたが、全ての項目を完全にマスターする必要は一切ありません。
大枠を掴めて調べながら基本的な実装ができる程度の理解があれば、問題なしです！

第三段階での目標：
- **実践的なAndroidアプリ開発の大枠がイメージでき、必要なことは自分で調べて実装できる状態。**

---

### 最終段階
- **仕事を獲得する**

いつまで勉強のフェーズを続けていても、人生に変化は起きません。

思い切って実務に飛び込みましょう。
現場で揉まれた方が圧倒的に成長できます。これは間違いないです。

あとは、この時点で個人開発のアプリやGitHub、技術記事など、今まで積み重ねてきたアウトプットもすでにある状態です。

第三段階のフェーズで継続的に改善し、唯一無二のポートフォリオを作り上げて自信を持って挑戦しましょう。

# 参考リソース

Android開発者にとって、最新の情報や技術トレンドを追うのに役立つリソースまとめ。

https://twitter.com/AndroidDev

https://androidweekly.net/

https://www.geeksforgeeks.org/

https://www.udacity.com/course/android-kotlin-developer-nanodegree--nd940

# 最後に
以上、『【完全版】3ヶ月でAndroidエンジニアを目指すためのロードマップ』でした！

僕はAndroidエンジニアにスキルチェンジして心の底から良かったなと思ってます。

どうせエンジニアとして働くなら、自分の好きな環境や分野で働けた方が絶対に良いなと思ってるので、今回の話が少しでも参考になれば嬉しいです。

最後まで読んでいただきありがとうございました！

---

PS. 友人からの誘いを受けて、来週、人生初の『DroidKaigi』に参加してきます！楽しみです✌️

https://2024.droidkaigi.jp/