株式会社マネーフォワード / Androidエンジニア
マネーフォワード クラウド確定申告 Androidアプリ開発
# プロジェクト・チームの概要 マネーフォワード クラウド確定申告のAndroidアプリは2020年に新しく別のアプリとしてリニューアルリリースされました。 リリース当初は、ユーザーの会計知識の習熟度とアカウントアグリゲーション技術による計3種類の仕訳作成機能、口座残高と損益分析が確認できるレポート機能の主に2つの機能しかありませんでした。 現在はマイナンバーカードを使った電子申告による所得税・消費税・開業届申告機能、Google Play月額有料プラン導入、OCRやマネーフォワード MEと連携した仕訳作成機能など、開業から確定申告まで1つのアプリで行える非常に大きなアプリとなりました。 最初から100% KotlinやCoroutinesなど当時では比較的新しい技術を用いて開発をしてきました。 Single Activity Multi FragmentでNavigation Componentを使って実装しており、Fragmentの数は200を超えるほど大きなアプリです。 そのうち60%ほどの画面のUIは今ではJetpack Composeに置き換わっています。 モバイルチーム1つ、Webチーム2つで構成されており、Androidエンジニアはこれまで2~4人(インターン含む)で開発しています。 また、エンジニア組織の公用語英語化に伴い、業務時間内での英語の勉強、TOEIC・PROGOSの受験、デイリースクラムなどのエンジニアが中心となるミーティングを英語で実施しています。 # チーム内での立ち回り 2週間1スプリントでのスクラム開発を実践しており、ほぼ全てのMTGが持ち回りでファシリテーターを務めているため、一般的なスクラム開発の理解があります。 例えばスクラムイベントなどで私を含むメンバーは以下のようなことを行っています。 - スプリントが始まる前に、プロダクトマネージャー(以下PdM)だけではなくエンジニアもプロダクトバックログアイテムを積極的に作成して見積もりやタスクの内容の確認をリファイメントを通して自主的に行う - デイリースクラムではAsanaとMiroを使って、一般的なカンバンスタイルではなく日次レベルでの進捗管理を行う - スプリントレビューでのそのスプリントで開発が完了しリリースを行うもののデモを行う - レトロスペクティブはモバイルチーム内でKPTを行ったあと、WebチームやPdMなど他職種のメンバーも含めて部全体の課題と議論を行う - スプリント期間内でQAメンバーと協力して品質担保を行いながらリリース物があれば基本的に毎週リリース - 大きな機能開発は専用のプロジェクトを設立し、要求・要件が決まった後はプロジェクトマネージャーをエンジニアが務めることで、より正確で柔軟な工数管理やレポートラインを確立している # 自身の成果 ## 主要機能開発のプロジェクトマネジメント チーム参画後から行った全ての機能実装に大きく貢献した一方で、1.5か月以上の工数を要するような大きな機能開発案件のいくつかでプロジェクトマネージャーも経験しました。 このチームでは、PdMが要求・要件定義を行うプランニングフェーズの後、実際に見積もりやスケジュール、開発仕様書の作成、開発チケットを作成してプロダクトバックログに入れて実装するなどのデリバリーフェーズと呼んでいる工程をエンジニアが務めています。 私はこれまでに以下のようなプロジェクトのマネジメントを行いました。 いずれも柔軟にスケジュールの調整を行いながら予定通りに開発を完了させリリースすることができました。 - 当時別部署でWeb版のみ提供されていた消費税申告機能の電子申告機能を部署横断で開発した - 毎年12月に国税庁から発表される所得税申告の様式変更に伴う開発をWebチームと連携して主導した - WebViewで実装していたマネーフォワードMEと連携して仕訳作成が行える機能をネイティブで作りなおすことで、Web版特有の制約から脱却する開発案件をワイヤーフレーム設計から主導 ## Jetpack Compose導入を含むAndroidアプリの設計改善を主導 Jetpack Composeの発表後からAndroidDevChallengeなどを通してキャッチアップを行い2022年から導入を開始しました。 FragmentベースのNavigation Componentを画面遷移に用いているため、Fragmentの中にComposeViewを入れる形で主要機能ではない画面から徐々にリプレースしています。 また、データレイヤーから複数のLiveDataを使ってデータを購読・表示していたViewModelも見直し、一つのdata classでUIの状態を管理する設計に変更しました。 現在は新規画面は全てJetpack Composeで実装し、既存画面も合わせると全体の約60%が移行済みです。 また、このアプリは会計、確定申告、消費税申告、開業届、認証基盤の4つのバックエンドサービスに依存しているため、新たにBFFサービスを立ち上げて、REST APIとGraphQLが混在しているデータレイヤーをすべてGraphQLに統一するように移行しています。 ## Android未経験の新卒メンバーの育成 私が3年目のときに新卒で入ったメンバーのメンターを担当しました。 彼は競技プログラミングやインフラ・バックエンドのマイクロサービスでのインターン経験はあったものの、Android開発の経験は全く無い状態で受け入れを行いました。 JavaやKotlinの経験は少しあったため、GoogleのCodelabから重要なものを抜粋したり公式ドキュメントの読み合わせを行うなどのAndroid開発の基礎を学ぶプロジェクトを設計しました。 その結果、部署配属から約3か月でAndroidアプリ開発の業務に参画できるようになり、その年の終盤には大きな案件の機能実装をほとんど一人で担当してリリースできるほどになりました。 現在は自身が新しいインターン生のメンターを行っています。