Slide 1

Slide 1 text

2024/11/21 日本経済新聞社 Androidチーム 澤田 廉平 モバイルアプリ開発未経験者が プロダクト開発に携わるまでに取り組んだこと Nikkei Tech Talk 日経電子版モバイルアプリ特集

Slide 2

Slide 2 text

自己紹介 名前:澤田 廉平(さわだ れんぺい) 2024年4月 に入社 / 4月末から Androidチームに配属 日経電子版と紙面ビューアーの開発 Github: @rand16 2

Slide 3

Slide 3 text

Androidエンジニアになるまで ~学生時代~ 2022年3月 情報工学科 卒業 2024年3月 情報工学専修 修了 研究内容:IoT (Internet of Things) システムアーキテクチャの設計 スマホ遍歴 iPhone 5s -> iPhone 7 -> iPhone SE 第2世代 -> iPhone 14 すなわち... Androidスマホを使ってこなかった人なんです 3

Slide 4

Slide 4 text

この発表で伝えたい内容 ● プロダクト開発にあたり習得すべき内容を順序付けして 計画的に学習を進める方法 → Android開発初学者 / Android開発してみたい iOSエンジニアが   何に取り組むべきなのかの指針になったら嬉しい → 新人を教えるエンジニアの方が   研修方針を立てる際の一助になったら嬉しい 半年間オンボーディングを進めてきた 4

Slide 5

Slide 5 text

アジェンダ 1. プロダクト開発に至るまでに必要な技術的知識 2. 半年間の業務内容の振り返り 3. 初学者からできること 5

Slide 6

Slide 6 text

アジェンダ 1. プロダクト開発に至るまでに必要な技術的知識 2. 半年間の業務内容の振り返り 3. 初学者からできること 6

Slide 7

Slide 7 text

Androidアプリを開発するには... ● プログラミング言語:Kotlin, Java ● UI構築:Jetpack Compose, Android View ● ネットワーク処理:Retrofit, Coil, Kotlin Coroutine ● DB・ストレージ:Room, DataStore ● テスト:JUnit, AndroidTest ● アプリアーキテクチャ:関心の分離、単方向データフロー 7 これらが理解できれば簡単なアプリを作れそう!

Slide 8

Slide 8 text

アプリは作るだけではない 他にも、プロダクトドメインの知識など知るべきことは多岐にわたる ● アプリデザイン ● 配信と運用 ● データ分析 ● Android SDK version 8

Slide 9

Slide 9 text

9 こんなにたくさんの内容を どうやって勉強したらいいのか?

Slide 10

Slide 10 text

Android Codelab Composeを用いたAndroidアプリ開発の基礎 ● 全7ユニットで、Kotlin言語の基本からAndroidアプリの基礎まで学べる ● 想定学習時間:107時間 ● 各節ごとにスターターコードが用意された練習問題がついている ● ユニットの最後に1からアプリを自作する課題もある ○ インプットだけでなくアウトプットもこの教材にまとまっている 10

Slide 11

Slide 11 text

Codelab の網羅性を見てみよう 11 ● プログラミング言語:Kotlin, Java ● UI構築:Jetpack Compose, Android View ● ネットワーク処理:Retrofit, Coil, Kotlin Coroutine ● DB・ストレージ:Room, DataStore ● テスト:JUnit, AndroidTest ● アプリアーキテクチャ

Slide 12

Slide 12 text

Codelab の網羅性を見てみよう 12 ● プログラミング言語:Kotlin, Java ● UI構築:Jetpack Compose, Android View ● ネットワーク処理:Retrofit, Coil, Kotlin Coroutine ● DB・ストレージ:Room, DataStore ● テスト:JUnit, AndroidTest ● アプリアーキテクチャ 基礎的な知識を学べることに加えて、 アプリをビルドできる喜びを味わえる

Slide 13

Slide 13 text

アジェンダ 1. プロダクト開発に至るまでに必要な技術的知識 2. 半年間の業務内容の振り返り 3. 初学者からできること 13

Slide 14

Slide 14 text

その前に、 インプット ● 「Compose を用いた Android アプリ開発の基礎コース」 で網羅的に学ぶ ● その他上に含まれないが用意されているCodelab ● プロダクトの開発方針・コードリーディング 研修期間中はインプットとアウトプットを並行して実施 14 アウトプット ● Compose Codelabで提供される課題 ● 自作アプリ(じゃんけんアプリ) ● プロダクトオンボーディング

Slide 15

Slide 15 text

インプット 1. Dagger Hilt (DIライブラリ) ● Compose CodelabコースはDIを扱ってないため、個別の Codelab を実施 ● アウトプットできる環境が少ないため、Codelab の課題で積極的に使ってみる 2. Android View ● Composeが推奨になるまで主流であったUIライブラリ ● プロダクトで使われていない場合は優先度低め 「Compose を用いた Android アプリ開発の基礎コース」に含まれない内容 15 Codelabを一通り進める → 公式Docを見てより細かい内容を理解

Slide 16

Slide 16 text

アウトプット:Codelabで出題される課題 目的:プロダクトで使われる主要なライブラリの理解を促進 16 Retrofit + Kotlin Serialization で JSONファイルデータ取得 Room によるDB情報取得 Retrofit で APIエンドポイントを叩く

Slide 17

Slide 17 text

アウトプット:自作アプリ ~じゃんけんアプリ~ 目的:要件を基にアプリ開発を1から体験する+チーム開発、工数見積もり 17 アプリ起動画面 Compose 版 View 版 CPUと対戦 履歴画面

Slide 18

Slide 18 text

プロダクトでどのような技術が求められているか ● 優:Googleが推奨するが、プロダクトで使われていないモダンな技術 ● 良:Googleが推奨し、プロダクトで使われているモダンな技術 ● 可:より良い技術が登場しているが、非推奨になってない技術 ● 不可:レガシーなライブラリ、内部的に@Deprecatedをつけたクラス 我々のチームでは、リファクタリングの優先度が決められている 18

Slide 19

Slide 19 text

チーム内の優先度をもとに研修の優先度を決める 1. プロダクトで使われている技術をモダンなものから取り組む → 自分で書いたコードを説明できるようになるまで理解する 2. プロダクトで使われていない技術は勉強会などでチームで情報共有 → 技術の内容を説明できるまで理解する 3. レガシーな技術はコードを読める程度まで理解する 19 ● +@:運用・管理・分析ツール (Firebase, GitHub Actions, Kibana)

Slide 20

Slide 20 text

アジェンダ 1. プロダクト開発に至るまでに必要な技術的知識 2. 半年間の業務内容の振り返り 3. 初学者からできること 20

Slide 21

Slide 21 text

● カンファレンスに参加 ○ Kotlin Fest, DroidKaigi (公式AppにContribute) ● 技術書を読む ● ドキュメント作成 ○ コードリーディングで理解した内容を頭で整理 ● 理解できた内容を整理した上でチームに週次共有 自主的にこれまでやってきたこと 21 → アウトプットの言語化, 理解できていない内容の明確化 「結果的に先輩エンジニアの学びにもなる」、という声も

Slide 22

Slide 22 text

まとめ ● Androidエンジニアになるには覚えることがとても多い ● まずは Codelab に着手して Android アプリの全体像を知る ● プロダクトに使われている技術を理解した上で学習する ● 技術力が足りないからこそ 自分の理解度を正確に伝えて的確なアドバイスをもらう 22

Slide 23

Slide 23 text

23 ありがとうございました

Slide 24

Slide 24 text

APPENDIX 24

Slide 25

Slide 25 text

Codelab 一覧 25 Compose Codelab URL: https://developer.android.com/courses/android-basics-compose/course Hilt Codelab URL: https://developer.android.com/codelabs/android-hilt?hl=ja Android View Codelab URL: https://developer.android.com/courses/pathways/android-development- with-kotlin-4?hl=ja https://developer.android.com/courses/pathways/android-development- with-kotlin-5?hl=ja

Slide 26

Slide 26 text

半年間の業務を振り返る 26 ● Scrollableなリスト表示ができる ● アプリレイアウトを構築 5 ~ 6月 7月 8月 9 ~ 10月 ● 主要ライブラリに触れる ● 自作アプリの機能要件を満たす ● Android View に触れる ● Android View でもレイアウトを作成 ● コードリーディング ● プロダクトissueを進める 8/13 プロダクトに初commit

Slide 27

Slide 27 text

プロダクトでどのような技術が求められているか ● 優:Googleが推奨するが、プロダクトで使われていないモダンな技術 ○ マルチモジュール設計 ● 良:Googleが推奨し、プロダクトで使われているモダンな技術 ○ Compose, Coroutine, Room, AAC ViewModel ● 可:より良い技術が登場しているが、非推奨になってない技術 ○ Android View ● 不可:サポート終了ライブラリ、内部的に@Deprecatedをつけたクラス ○ Java, ListView, MVP設計 我々のチームでは、リファクタリングの優先度が決められている 27