第1部 新規開発とアーキテクチャとチーム
本パートでは新規開発においてアーキテクチャが果たす役割にフォーカスを当てます。選定の基準などリードするアーキテクチャ設計者が何を考えて構築するのか、アーキテクチャやアプリの開発基準をどのようにチームに浸透させていくのか。実例としてコードも交えながら技術的側面とチームという実践的なプロジェクトをメインに解説していきます。
第1章 新規開発とアーキテクチャとチーム
釘宮 愼之介
新規のモバイルアプリ開発を始めるにあたってチームに必要な要素を解説し、アーキテクチャの役割を学べます。
新規開発特有の課題(コードベースや運用ルールなどの未整備)と組織の課題から正しい設計指針について議論し、チームの生産性を向上するベースラインを整えます。
第2章 アーキテクチャの選定と背景
釘宮 愼之介
モバイルアプリ開発における技術選定基準を理解できるようになります。新規開発ではGoogleが提供するJetpackライブラリ、OSSライブラリなどから形成するエコシステム、Androidというドメイン領域がもつ技術的背景、そして新しいミッションのなかでのチームビルディングといった組織的背景を持っています。本章ではこれらについて議論し、アーキテクチャが抑えるべき設計上のポイントとして非同期処理、エラーハンドリング、データフローについて最適解を議論します。
第3章 アーキテクチャの浸透と改善
釘宮 愼之介
アーキテクチャは利用するだけのものではなく、浸透と改善が欠かせません。本章ではチームメンバーが正しく道具としてアーキテクチャを使いこなせるようになる為の基盤づくりに触れていきます。設計は思想であるとよく言いますが、ここではチームの中で思想を形作り、ルール化する基準について学べます。
第4章 より多くのチームへ
釘宮 愼之介
アーキテクチャの運用はチームの特性によって成否が分かれることは想像に難くありません。ここではアーキテクチャ導入についての再現性を中心的に扱います。他のチーム・新規開発などへ経験を伝える手法についてテンプレート化のノウハウなどドキュメントやソースコード運用など多方面から紹介します。
第2部 大規模なチーム開発に参加しアーキテクチャと向き合う
本パートでは大きな規模のチームでの開発に参加し、プロダクト開発のスピードを維持しつつチームの抱える課題を継続的に改善し続けることにフォーカスを当てます。課題をみつけ、チームで手を取り合いながら施策を作り実装し、素早く安定した品質のアプリをリリースするまでの流れを基準としてチームで改善に取り組むためのコミュニケーションや技術的ノウハウを解説します。
第5章 大規模なチーム開発へのオンボーディング
横幕 圭真
継続開発、とくに大規模な開発ではチームやリポジトリの構造に、これまでの組織的な背景が現れます。組織特有の課題やチームのもつ技術的課題が蓄積し、構造としてあらわれることが一般的です。一定の規模に達するとこれらの課題は共通項を持ってくるため本章では大規模なチーム開発の一般化を試みるとともに技術的なオンボーディング(新しいメンバーの受け入れ)に触れます。
第6章 大規模なチーム開発とアーキテクチャ
横幕 圭真
大規模なチーム開発を支えるアーキテクチャについて、構造的な特徴を解説します。とくにモジュール分割やアーキテクチャの統一、そして複数人が複雑にかつ効率的に開発するためのマルチモジュールなど機能結合に注目します。それぞれの基本的構造を解説しながらチーム開発での課題や改善案を紹介します。
第7章 プロダクト開発をしながら技術課題の改善もする
横幕 圭真
継続開発のなかでは、どうしても技術的課題が蓄積していきます。プロダクトに新規機能を追加すると当然に既存コードも変更を強いられるためですが、開発期間が長くなると当初の技術選定(ライブラリが古くなるなど)を見直すタイミングも訪れるでしょう。そのような状況下でも足を止めず、技術的な改善を進める方法を解説します。技術資料のドキュメンテーション、ロードマップ、目的をもった長期的な改善を通じてエンジニアがプロジェクトへ寄与する方法を学べます。
第8章 素早く安定したアプリを作るためのアーキテクチャの改善
横幕 圭真
大規模開発チームの中では、担当モジュールや役割を超えた共通課題に直面します。素早く、安定したアプリをつくるためにも長期での改善が必要な項目ですが、やはり全員の足並みをそろえることは難しいと感じる読者もいるのではないでしょうか。
本章ではボイラープレートやユニットテストなどエンジニアが身近に感じる課題について議論します。特に最初期にユニットテストがないモジュールは書きにくく、不安定なテストになりがちです。このような問題への解決手法を示すとともに、新しい技術を導入する一例として既存アーキテクチャにAndroid Architecture Componentを適応する技術的な改善を取り上げて解説します。アーキテクチャの改善手法について理解を深められます。
第3部 生産性の高い組織
本パートでは、これまでの議論を踏まえて、よりチーム開発の生産性を上げるために何をすべきかについて解説していきます。アーキテクチャからは少し離れた話に感じるかもしれませんが、第1部や第2部で説明したようなアーキテクチャによってその効果はより大きくなっていきます。
「ルール」「自動化」「ドキュメンテーション」というキーワードを使い、日常的なプロセス改善の事例を取り上げていきます。定常作業の自動化やタスクの高速化などの実務ベースから生産性の高い組織の理想を掲示していきます。