見出し画像

持続可能なAndroidアプリ開発をしたい人におすすめな本-『チームで育てるAndroidアプリ設計』-

はじめに

この記事は「感想書いて!」というお言葉を元に書いたPR記事になります。が、だからと言って贔屓目に書いたりとかはなく、正直な感想を述べたものになります。

前提

私はiOSエンジニアとしての経歴が一番長く、Androidアプリ開発を生業にし始めたのはここ1年半くらいになります。Androidエンジニアとして経験したプロジェクトは2つで、どちらも既存アプリ開発、開発人数は(自分を含めて)2名程度になります。

そのため、この本が本領を発揮する対象読者とは少しずれているかなと思うのですが、それでも学びは多くありました。

こんな人におすすめ

私はこんな人にこの本を読んでほしいなと思います。

Androidアプリ開発の習熟度に関わらず、

・これから新規でAndroidアプリ開発をする人
・既存のAndroidアプリプロジェクトのアーキテクチャを再考する必要が出てきた人
・持続可能なアプリ開発について興味がある人

中でも、
・テックリードなど、チームを引っ張っていく立場の人
・大規模開発に携わっている人

この本はアーキテクチャの具体的な実装方法等が書かれている本ではなく、アーキテクチャを切り口にした様々な諸問題をどう解決するか解説している本なので、「習熟度に関わらず」という表現をしました。

「Androidアプリ」と書きましたが、iOSエンジニアが読んでも損はないと思います。モジュール分割によるメリデメ、流行り廃りの目まぐるしさなどは両者に共通するからです(フロントエンド、サーバサイド等のアーキテクチャ事情はよくわからないので、おすすめして良いものかわからない)。

特に勉強になったところ、感想など

ここからは読んでいて特に勉強になったところ、共感したところなどを書いていきたいと思います。

■新規開発におけるアーキテクチャの選定

序盤はこの本で言うアーキテクチャとは何か、アーキテクチャがなぜ必要なのか、どのように選定したら良いのかについて書かれています(この本ではアーキテクチャを「チームのスコープで使用する汎用的な設計方針」と定義しており、"MVVM", "Clean Architecture"といったアーキテクチャパターンより広義なものを指します)。

「MVVMで行こうと決めただけではアーキテクチャは実質ないに等しい」というのはまさにそうだなと思いました。新規開発において最低限決めておきたいことは言われてみればたくさんあり、今後新規開発をするときはこの本に書かれていることをチェック項目として意識しておくと良さそうだなと思いました。

■アーキテクチャをどう浸透させていくのか

アーキテクチャがちゃんと活用できている状態の定義、その状態に持っていくためにはどのようにしたらいいのか、改善するときはどのような方針で行えばいいのかについて書かれています。

「新しい技術を一部だけお試しで導入する」場合への対処に関しては身に覚えがあるところだったので心して読みました。新しいライブラリを試験的に導入したときにそのメリットがあると判明しても、それを全体に適用する工数を確保できず複数の書き方が混在しまうということはまああることです。この本に書かれていることを参考にしつつ対処していきたいと思いました。

浸透させるための具体策としてドキュメント作りやサンプルプロジェクト作りが提示されていますが、自分の環境では正直ここまでの工数が確保できるかが微妙なところだなと思いました。なので、例えば1画面分ペアプロ/モブプロで作って認識合わせをするなどの別の方法を取ってみてもいいかもと思いました。

■他チームとの知見共有

自分たちのチームで得た知見を社内に広く伝えたり、活用したりするためにはどうしたら良いのかについて書かれています。

リポジトリテンプレートを作るというのはわりと現実的・効果的だなと思ったので、社内で複数のプロジェクトが立ち上がるタイミングが来れば実践してみたいと思いました。

■大規模開発におけるオンボーディング

「既存実装」というものが存在し、かつ複数の開発者/チームが存在している場合に、コード変更の影響が小さくかつ効率良く開発するにはどのようにオンボーディングを行ったらいいのかについて書かれています。

ここで採用されているアーキテクチャはそのまま自分のプロジェクトに導入できるわけではありませんが、どのような理由でこのアーキテクチャを採用したのか、どう伝えていくかは大いに参考になるところだと思います。特にIT界隈では転職は珍しいことではないので、しっかりドキュメントを残してどのような意図で現在のアーキテクチャが選定されたのか、どんなテストを書くべきなのかを記しておくのは良いなと思いました。

■技術的改善活動の並走

開発案件も進めながらいかにして技術課題を改善していくか、安定したアプリを作るためにどのようにアーキテクチャの改善を行っていくかについて書かれています。

現在弊社では2週間に1日のタスクデー(通常開発案件とは別に、技術的課題を解決したり気になる技術を自由に触っていい日)、年2回の改善weekを使って改善に取り組んでいます(それ以外でも適宜取り組んではいる)。加えて、改善したい事柄はesaにまとめています。が、取り組むべき理由、優先度、方針などは記載していないのでまずはそこから取り組むのが良いのかなと思いました。また、改善したいことはどんどん増えたり変わっていくはずなので、定期的に見直す機会を設けるとより良いのだと思います。

全体を通しての感想

アーキテクチャはアプリ開発をする上での根幹であり、新規開発であろうが既存開発であろうが常に意識すべき事柄だと思っています。とはいえ、具体的な実装方法については書籍、Web記事で多く紹介されているもののその実装に至るまでや採用した後のことについて詳しく言語化されているものはなかなかなく、戸惑う人も多いのではないかと思います。そんな人にとって、数々の経験を積んできたであろう著者2人の頭の中を知ることができるこの本は「バイブル」と言っても良いと思います。

この本はタイトルに「チームで育てる」という言葉が入っているだけあって、チームとしてアプリ開発に向き合う時の知見が詰まっていました。そのため、ここで得た知見は自分だけのものにするのではなく、自チーム全体のものにするのが適切な活用方法なのだと思います。同じチームのメンバーとこの本の輪読会をしたり、一緒にドキュメントやサンプルコードを作ったりすることで、より良いアプリ開発ができそうです。

最後に

「読んでみたいな」と思ったらぜひ買って読んでみてください。そしてチームメンバーにも布教してみてください。


共感した、他の人にも知ってもらいたい等々思ったら、ぜひTwitterなどでシェアしてください。