こんにちは!
マネーフォワードクラウド確定申告アプリ のテックリードを勤めている須田です。
本記事では2020年3月〜本格開発開始して8月にリリース。現在継続運用中である、Androidアプリの設計方針を共有します。
設計方針を定めることで実現したいこと
-
関心の分離がされている
- ビジネスロジックの関心事と、技術的な関心事が適切に分離されるようにします。特に、Androidにおいては、UIの表示ロジックと、その他のビジネスロジックが適切に分離されていなければ、クラスの肥大化などの問題が発生します。
-
テストのしやすい設計にする
- テストをしやすい状態であれば、コンポーネントの粒度が適切に保てている可能性が高く、疎結合に実装できています。新規立ち上げの段階なので、TDDは実践しませんが、グロースフェーズ、成熟フェーズになった際にいつでもTDDに移れるようにします。
-
複数人でも素早く開発できる
- 複数人で開発する際、設計方針がバラバラだとコードレビューにとても時間がかかり、ユーザーに価値を届けるまでの時間が長くなってしまいます。方針がある事で、コードを書く際にも読む際にも考える事を減らし、スピードを持って開発する事を可能にします。
設計の方針
-
Googleが勧めている設計があれば、原則それを採用する
- AndroidアプリはGoogleが提供してくれたSDKのAPIを使用して作成するため、Googleが勧めているものを使用します。現時点ではMVVM + Repositoryパターンが推奨されてますので、それに従います。今回、参考にしたGoogleの推奨アーキテクチャはこちらです。
- 上記の推奨アーキテクチャに合わせて Android Architecture Components を提供をしてくれているので、積極活用します。
-
Android Studio上でエラー表示される実装は原則NG
- エラーとして表示される実装は安全性、メンテナンス性に乏しいと考えています。