# プロジェクト概要
- [N予備校 Androidアプリ](https://play.google.com/store/apps/details?id=nico.ed.nnn.zane&pli=1)の開発支援業務
## チーム規模
- 6〜10 名
- 当初はSE として参画、2023年よりテックリード
## 担当業務
- Android アプリの機能追加、不具合改修
  - 接続先サーバの移行対応
- Android アプリのリファクタリング
  - Deprecated な処理の警告解消
  - ListView を RecyclerView に移行
  - View Binding の導入
  - ViewPager を ViewPager2 に移行
  - 画面遷移を Navigation に移行
  - Single アクティビティ に移行
  - UI を Jetpack Compose に移行、UI テストの導入
    - 影響範囲を限定するため、あまり使われていなく、ユーザへの影響が少なそうな画面から徐々に Compose 化した
  - マルチモジュールの導入
  - 通信処理を Retrofit に移行
  - JSON ライブラリを Moshi に一本化
    - org.json と Gson がごちゃ混ぜになっていたが、通信処理を Retrofit に移行した際、JSON パーサーとして Moshi を使用していたため、それにあわせて Moshi に一本化した
  - Serializable なデータクラスを Parcelable に移行
  - RxJava 3 から Kotlin Flow に移行
- テックリードとしてチームメンバーのマネジメント
  - 新技術導入に向けた調査、ドキュメント作成および共有
  - タスクの作成、チームメンバーへの割り振り
  - リファクタリングタスクの工数見積もり、計画
  - Codelab にて学習コンテンツの選定
  - リファクタリングの取り組みを記事化
    - [Android アプリの各通信処理を Retrofit に移行するためにやったこと](https://qiita.com/hiesiea/items/f44d5892f613d3909939)を記事化した
- コードレビュー
- DroidKaigi への参加
## アピールポイント
- 業務の中で与えられたタスクだけでなく、コードを見ていて改善できそうな箇所(アーキテクチャに沿っていない、Deprecated な処理があるなど)に関して改善案を提案したり、リファクタリングを積極的に進めるようにした
  - その結果、評価されてテックリードを任せてもらえるようになった
- 新技術導入に向けた調査、ドキュメント作成および共有をしていく中で以下を心がけた
  - ただ調べた内容を共有するのではなく、実際に手を動かしてアプリの動作にも影響がないかどうかも検証したうえでより正確な情報を提供するようにした
  - コード例も記載して他メンバーが実装をイメージできるようにした
    - チームメンバーからはわかりやすいとの評価を得られ、属人化を防ぐことができた
- 他メンバーのタスク量を把握し、厳しそうであればこちらから自発的に巻き取ることで他メンバーの負担を減らすことができた
- プルリクエストを出す際、大きな修正でも 1 つのプルリクエストにまとめてしまい、レビュアーの負担を増やしてしまっていたのと、動作確認漏れによりバグを埋め込むリスクを上げてしまっていた
  - 極力プルリクエストを分割して、コード量と動作確認を減らしてレビュアーの負担を減らすようにした
  - 修正内容についてわかりにくそうな点があれば適宜コメントで補足するようにした
    - レビュアーの負担を減らすことを考慮したプルリクエストを作成する習慣が身についた