『アーキテクトの教科書 価値を生むソフトウェアのアーキテクチャ構築』 "The Art of Software Architecture" (米久保剛,翔泳社,2024年7月22日)を読了。
日本人特有のおもてなし精神によって作られた,ユーザーのあらゆる要望に沿う「痒いところに手が届く」システムも保守運用コストの面ではばかになりません。(位置 No. 427)
痒いところにまで手を伸ばしてしまうと,痒いところをケアを続けなければならない。
変化への対応を容易にすることを目的とし,コードの保守性や拡張性を確保することでソフトウェアの内部品質を高めるための,一貫した方針や仕組みが必須となります。それこそがソフトウェアのアーキテクチャなのです。(p. 535)
変化を前提として,ソフトウェアのアーキテクチャを考える。
アーキテクトが備えるべき能力や考え方(位置 No. 669)
- 設計力,コーディング力
- 抽象化能力
- ビジネスの理解
- 好奇心
- 完璧主義よりも合理主義
アーキテクトが備えるべき能力や考え方を私はどれだけ持っているだろうか。
SRP : 単一責任の原則(位置 No. 890)
クラスを変更する理由は 1 つ以上存在してはならない。
クラスを変更する理由はいつも 1 つ。
OCP : オープン・クローズドの原則(位置 No. 910)
ソフトウェアの構成要素(クラス,モジュール,関数など)は拡張に対して開いて(オープン : Open)いて,修正に対して閉じて(クローズド : Closed)いなければならない。
拡張に対しては開いていて,修正に対しては閉じていなければならない。
OCP の核心は,変更が少ない安定的なコードと,変更が多い不安定なコードとを分離することにあります。そして,安定的なコードは,不安定で具体的な実装に直接依存するのではなく,抽象に対して依存するようにします。(位置 No. 935)
安定的なコードと不安定なコードに分離する。
ISP : インターフェース分離の原則(位置 No. 960)
クライアントに,クライアントが利用しないメソッドへの依存を強制してはならない。
インターフェース分離の原則を知っておこう。
DIP : 依存関係逆転の原則(位置 No. 983)
- 上位のモジュールは下位のモジュールに依存してはならない。どちらのモジュールも「抽象」に依存すべきである。
- 「抽象」は実装の詳細に依存してはならない。実装の詳細が「抽象」に依存すべきである。
依存関係逆転の原則を知っておこう。
読解力の強化は文章力の強化にもつながります。筆者自身がブログなどの媒体で技術記事を投稿したり,今こうして技術書を執筆したりできるようになったのは,『本を読む本』で学んだ読書技法を活用して数多くの良書を読んできた経験や,そこで学んだ事柄が礎になっていると考えています。(位置 No. 3397)
読解力を強化すれば文章力の強化につながる。アーキテクトの必須スキルは,読み書きできること。
