「チームで育てるAndroidアプリ設計」本を読んだ感想まとめ
mitoです。
こちらの記事は、自分のTwitterアカウントで連続ツイートの内容をまとめて追記したものになります。
元のツイートは以下リンクです。
届いていた!
— mito (@mitohato14) 2021年5月1日
読む〜 pic.twitter.com/iE4SQgM6ui
本自体の紹介
本自体の概要は以下リンクにあります。
この本は9章まであり、前半の1~4章が新規開発にフォーカスした内容、後半の5~8章が大規模開発にフォーカスした内容、最後の9章が新規開発と大規模開発で何が違うのかという内容になっています。
まとめ部分にも書いていますが、Androidアプリ開発者だけでなくiOSやバックエンド、フロントエンドなどのプロダクト開発している人たちにとっても読んで損しない内容になっていると思います。
新規開発フォーカス
前半部分である、1~4章まで読み切ったタイミングでの感想です。
なぜアーキテクチャが必要なのかという話から始まり、これから開発を始める・アーキテクチャを考えるというときに、どういった軸を考慮した方が良いか、非同期処理やエラーハンドリングといった多くのアプリケーションで必要となる部分をどうするかという話も細かくされていました。
自分が設計の存在を知り、学び始めた頃に感じていた「なんでモジュール分割するんだろう」「いくつもファイル分割することでコードがどこにあるのか探しにくくない?」とか思っていた点に関しても納得ができる話もあってあの頃に読みたかったな〜と感じました。
また、「アーキテクチャパターンはプロダクトの性質によって適したものが違う」という話自体は色々なところで聞いたことがありましたが、実際どういったプロダクトはどのアーキテクチャが適しているんだ...と思っていました。
そう思っていた部分に対して、メンバーの熟練などに合わせ、そのチームに適したアーキテクチャ選定をという話があり、プロダクト(チーム含む)の性質にとって適したもの(進め方)が違うということをやっと理解できました。
新規開発を進めやすくするためのリポジトリテンプレの話も結構細かくされていて、これからプロジェクト作っていくぞってなった時にもとても参考になりそうです。
ここまで読んで、自分主導でアーキテクチャ導入していたprocon30でのAndroidアプリのチーム開発は反省点が大きいなと感じました。
チームに合わせたもの・チームに浸透させるという部分が特に反省だと思いました。
大規模開発フォーカス
最後まで読み切りました。
後半の章では新規開発から成長していき、市場の規模・プロダクトチームの関係者・コードの量も多くなったプロダクトにおいて、既存機能の保守をしつつも新規機能を実装していくことの難しさやなるべくスピードを落とさずに進めるにはどうするのかということが経験ベースで詳しく書かれていてとてもためになりました。
多くの人が同時に1つのアプリケーションのコードを触ることになるため開発ルールをきちんと定め、チームで合意・浸透させることの大切さがとても伝わりました。
mitoが今やっているプロダクトは新規開発を経てこれから成長フェーズになっていく段階のため、新規部分の話も大規模部分の話もその違いの話も勉強になるところがとても多かったです。
5月4日23時ごろ追記
設計の改修をするとなったときにどこか一部のみ行うのではなく、移行方法をドキュメント化しそのドキュメントの方法に従って行えば移行できるという状況にしてメンバーで分担して一気に行うという部分で、「ここは仕方ない」という感じで特例を作ってしまうと「ここでも」「あ、ここはまた別の特例」となっていきそうなので一気に片してしまうという点でも良いなと思いました。
ActivityやFragmentと同じようなものとしてControllerというものがあることも初めて知れました。
追記ここまで
まとめ
全体を通して、「こう言った背景や考えでこう決定をした、その結果どうだった」ということが詳しく書いてあり、これからチームとして色々なことを決めていく上での考え方としてとても参考になると思います。
チームでプロダクト開発している人にとってもこれからという人にとってもためになるであろう話が多かったです。
Android特有の話も出てきてAndroidアプリ開発にフォーカスした内容ではありますが、大枠の話はプラットフォーム問わないであろう話になっていますので、iOSやバックエンド、フロントエンドなどのプロダクト開発している人たちにとっても良さそうな内容です。
最後にもう一度、「チームで育てるAndroidアプリ設計」へのリンクです。
良い本ですのでぜひ読んでみてください。
peaks.cc
mito.