
【書評】 「アーキテクトの教科書」AI駆動開発に必要とされるソフトウェア設計を学べる一冊
こんにちは、つくぼし(tsukuboshi0755)です!
近年は生成AIを活用したコード生成が急速に普及し、コードを書く速度は飛躍的に向上しました。
一方でAIが生成したコードを正しく評価・統合し、ソフトウェア全体としての品質や保守性を担保するためには、これまで以上にアーキテクトとしての設計力が問われると感じています。
私は最近ソフトウェア開発に関して体系的な知識が欲しくなったのがきっかけで「アーキテクトの教科書」を読んだのですが、AI駆動開発が当たり前になりつつある今だからこそ改めて読む価値のある一冊だと感じたのでオススメポイントを紹介します!
書籍情報
- 発売日:2024/7/22
- 著者:米久保 剛さん
- 出版社:翔泳社
- ページ数:272ページ(A5判)
- ISBN:9784798184777
対象読者
本書では「これからアーキテクトを目指す方やアーキテクトとしてまだ経験の浅い方」が対象として紹介されています。
ですが個人的な意見として、AI駆動開発が流行っている現在においては、今までソフトウェア開発の経験がないがコーディングエージェントを使ってアプリを本格的に開発したい方に特にオススメしたいです。
というのも本書で紹介されている内容はアプリケーションを「動かす所まで作る」事より「動いた後にどのように運用保守していくか」について必要な概念が網羅されています。
このAI駆動開発時代においてどうしても誰でも動くアプリケーションが作れるという所にフォーカスされがちですが、もしアプリケーションを継続的に開発していきたい場合実装だけでは不十分であり、その先の運用保守を支える設計の知識が必ず必要になってきます。
本書はそうした「動いた後」に求められる考え方や原則が体系的にまとめられているため、AI駆動開発でこれから本格的にアプリ開発へ挑戦したい方にこそ手に取って頂きたい一冊となっています。
本書のオススメポイント
本書の最大のオススメポイントとして、AI駆動開発が当たり前となった今だからこそ価値の高まるソフトウェア設計の知識を体系的に学べる点が挙げられます。
コーディングエージェントは個々の機能を開発するためのコード実装の工数を大幅に削減し、その場で動くアプリであれば誰でも簡単に作れるように見えます。
一方で運用保守の際に求められるソフトウェア設計はトレードオフとなる概念が多く、結果として人間側に判断が求められる場面が多いです。
本書はソフトウェア設計に必要な「ソフトウェアの設計原則」「アーキテクチャ」「テスト戦略」の3つを学べます。
ソフトウェアの設計原則
本書ではアプリケーションを継続的に開発していく上で必要となる設計原則についても紹介されています。
最近はコーディングエージェントが要件を伝えるだけで動くコードを書いてくれるようになりましたが、設計原則を意識せずに生成されたコードを取り込み続けてしまうと、責務が曖昧で結合度の高いコードがいつの間にか積み上がってしまいます。
また開発スピードがとてつもなく早くなっている昨今は、AIが書いたコードを人間がレビューする際の判断軸として、設計原則を共通言語として持っておく事が大切になってきます。
本書ではSOLID原則と呼ばれる以下のソフトウェア設計の原則が紹介されています。
- SRP:単一責任の原則
- OCP:オープン・クローズドの原則
- LSP:リスコフの置換原則
- ISP:インターフェース分離の原則
- DIP:依存関係逆転の原則
またCLEANコードというコードの品質を高めるためのプラクティスも合わせて紹介されています。
- Cohesive(凝集性)
- Loosely Coupled(疎結合)
- Encapsulated(カプセル化)
- Assertive(断定的)
- Nonredundant(非冗長)
どちらも継続的にソフトウェアを開発していくためには欠かせないルールであり、AIが書いたコードを人間が評価・修正していく際の客観的な判断軸としても活用できる知識となっています。
アーキテクチャの種類
本書ではアプリケーションを支えるアーキテクチャの選択肢についても紹介されています。
最近はコーディングエージェントが個々の機能実装を高速にこなしてくれますが、システム全体やアプリケーション内部をどのように構成するかという判断はトレードオフが多く、依然として人間側の知識が問われる領域となります。
また一度決めたアーキテクチャは後から変更する事が難しい場合も多く、開発初期の段階で適切な構成を選択できるよう、アーキテクチャの引き出しを広く持っておく事が大切になってきます。
本書ではシステム全体の構成を示すシステムアーキテクチャとして以下が紹介されています。
- モノリシックアーキテクチャ
- サービスベースアーキテクチャ
- マイクロサービスアーキテクチャ
またアプリケーション内部の構造を示すアプリケーションアーキテクチャとして以下が紹介されています。
- レイヤードアーキテクチャ
- クリーンアーキテクチャ
- パイプラインアーキテクチャ
- マイクロカーネルアーキテクチャ
どちらもアプリケーションの規模や要件に応じて適切な構成を選択する上で欠かせない知識であり、AI駆動開発時代において生成されたコードを将来にわたって保守可能な形にまとめ上げるための土台にもなります。
テスト戦略の重要性
本書ではアプリケーションにおけるテスト戦略の重要性についても紹介されています。
最近はコーディングエージェントが書いたコードが本当に問題ないかを確認するための手法としてレビュー以外にテストコードが取り上げられる事が多いですが、テスト設計をあまり考えずにAIに指示するだけではたちまち意味のないテストコードができあがってしまいます。
また開発スピードがとてつもなく早くなっている昨今はテスト自動化を実施する事が当たり前になってきており、GitHub ActionsやCodePipeline等を使ったCIにより一定の品質を保証する事が大切になってきます。
本書ではプログラム本体を書く前にテストコードを記述するテスト駆動開発を実践するために必要なテスト概念が詰まっています。
- ユニットテスト
- インテグレーションテスト
- E2Eテスト
また性能観点でアプリケーションの品質を確認するための性能テストとして以下が紹介されています。
- 単機能性能テスト
- 負荷テスト
- ロングランテスト
- スケーラビリティテスト
これらはどれもコーディングエージェントが書いたコードを信頼して継続的にリリースしていくために欠かせない概念であり、AI駆動開発時代における品質保証の要とも言える領域となっています。
ソフトウェアアーキテクチャを学ぶための手法
さらに本書では、ソフトウェアアーキテクチャを学ぶための手法についても触れられています。
書籍やセミナー、技術イベント等によるインプット、および読書マップやサンプルコード、技術記事の投稿等によるアウトプットの手法が触れられています。
さらにさまざまなソフトウェアの良書や引用されている参考文献が紹介されているため、その情報を眺めるだけでも非常に勉強になる事間違いなしです。
本書をソフトウェアアーキテクチャの全体像を掴むための入り口とし、さらに紹介されている良書へと学習を広げていく事で着実にソフトウェア設計の知識を身につけられるようになっています。
最後に
今回は「アーキテクトの教科書」のオススメポイントを紹介しました。
本書はソフトウェアアーキテクチャの基礎から実装・品質保証・アーキテクト自身の成長までを体系的に学べる構成になっています。
これからアーキテクトを目指すエンジニアの方、既にアーキテクトとして活躍されている方、AI駆動開発時代に求められる設計力を改めて学び直したい方等様々な方にオススメできる本です。
ぜひ一度手に取ってみていただければと思います!
以上、つくぼし(tsukuboshi0755)でした!









