はじめに
今回は、米久保剛さんの著書『アーキテクトの教科書 価値を生むソフトウェアのアーキテクチャ構築』を読んだので、その感想と学びをまとめたいと思います。
アーキテクトの入門として最適な書籍と考えたので紹介します。
1. 本の概要
本書は、ソフトウェアアーキテクトを目指すエンジニアに向けた「アーキテクティングの地図」となるような書籍です。
アーキテクリングに主軸を置きつつ設計やテストといったソフトウェアエンジニアリング全般について広くカバーしています。
2. 各章の学び・新規で知ったこと
本書は全6章構成になっています。ここでは、各章で個人的にハッとした点や、新しく学んだポイントをピックアップして紹介します。
第1章: アーキテクトの仕事
アーキテクトに必要な資質
以下の5つがアーキテクトが備えるべき能力や考え方と述べていました。
-
設計力、コーディング力
- アーキテクチャの下位レベルの設計やコーディングを行えなければアーキテクチャ設計は難しいです。
-
設計力、コーディング力
- 抽象化能力:具体と抽象を上手く使い分けて考える能力はソフトウェアの柔軟性や拡張性に生きてきます。
-
ビジネスの理解
- アーキテクトがビジネスに対する理解が浅い状態でアーキテクチャを設計すると優先事項を間違えて捉えてしまい、役に立たないアーキテクチャができてしまいます。
-
好奇心
- ソフトウェアを実現する技術は日々進歩するため、ベストプラクティスが常に変化します。そのため常日頃から情報収集する必要があります。
-
完璧主義よりも合理主義
- すべての項目で満点を取るアーキテクチャではなく、課題に優先順位をつけて取り組みほどほどに良いアーキテクチャを目指すべきです。
第2章: ソフトウェア設計
ソフトウェア設計の原則であるSOLID減速が紹介されていました。
- SRP:単一責任の原則
- OCP:オープン・クローズドの原則
- LSP:リスコフの置換原則
- ISP:インターフェース分離の原則
- DIP:依存関係逆転の原則
それぞの原則は給与計算を行うコード(Java)を用いて紹介されていました。
第3章: アーキテクチャの設計
-
アーキテクチャデシジョンレコード(ADR)
- アーキテクトが行う大小様々な設計判断をまとめたマトリクス表を作成し、他の開発者やステークホルダーに共有するために作成されます。
システム全体の構成を示すシステムアーキテクチャとして以下が紹介されていました。
- モノリシックアーキテクチャ
- サービスベースアーキテクチャ
- マイクロサービスアーキテクチャ
アプリケーション内部の構造を示すアプリケーションアーキテクチャとして以下が紹介されています。
- レイヤードアーキテクチャ
- クリーンアーキテクチャ
- パイプラインアーキテクチャ
- マイクロカーネルアーキテクチャ
第4章: アーキテクチャの実装
-
アプリケーション開発フローの構築
- どのような手順で開発を進めるかの共通ルールが定義され、開発に必要な環境やツールを整備することをチームに浸透させる必要があると述べていました。
第5章: 品質保証とテスト
5章はテストに関して記載されていました。
テストコードを記述するテストとして以下の3つが挙げられていました。
- ユニットテスト
- インテグレーションテスト
- E2Eテスト
また性能観点でアプリケーションの品質を確認するためのテストとして以下の5つが挙げられていました。
- 単機能性能テスト
- 負荷テスト
- ロングランテスト
- スケーラビリティテスト
特にシステムに対する負荷の増加に対して、システムを拡張することでうまく適応可能であることを検証するスケーラビリティテストは初めて知りました。
第6章: アーキテクトとしての学習と成長
基礎技術の習得
- 優れたアーキテクトになるためにはアーキテクチャの技術だけではなくセキュリティ、開発プロセス、インフラなど基礎技術の習得も必須と述べられていました。
おわりに
『アーキテクトの教科書』は、タイトル通り、アーキテクトという役割の全体像を掴むのに最適な一冊です。3章でいくつかのアーキテクチャを簡単に紹介し、4~5章で経費精算システムを例にアーキテクチャの実装やテストについて述べていました。
アーキテクトの入門だけでなく、開発プロセスの一通りの流れを知りたいという諸学者の方にもオススメです。