著作一覧 |
読んでいて気になった点については書いたので、本書について書く。
本書は書名の通り、進化的アーキテクチャについて書いたもので、アーキテクチャの対象はエンタープライズ(少なくとも複数のサービスから構成される規模)、書籍の分類としてはアーキテクチャパターン(だと思うが、本書ではアーキテクチャスタイルという表現をしていて、実のところこの2つの言葉の差異をおれは具体的にはわからない)についての本となる。アーキテクチャそのものを構成するデザインパターンについての本ではない(それはすでにエンタープライズアーキテクチャーがあり、まだ現役だ)。
したがって、最上位のソフトウェア設計のネタ本である。
問題意識は、今やエンタープライズレベルのソフトウェアはとんでもなく複雑化していて数10年前からのレガシーなものから最近の流行のものまでが混在していて、オンプレミスとクラウドが平然とシステムに混在していて、各種言語で書きまくられていて、当然運用も複雑、でも企業にとってソフトウェアの重要性は高まるばかりだから、これらをどうにかうまく結合して運用してビジネスに合わせて変化させ続けなければならない。どうやって? ――だ。
そこで筆者たちは「進化的アーキテクチャ」を提案(おそらく机上の空論だけではなく、実際に多少は実装もしたうえで)する。
1章「ソフトウェアアーキテクチャ」ではコンウェイの法則(組織が設計を生み出す)に対して逆コンウェイの法則(設計が組織を変える)を置くことで、ビジネスの変化は組織も変えるので、それをしっかり支える設計が必要であり、つまりは進化的でなければならないということを説明する。
2章「適応度関数」(1章と全然粒度が異なることに注目。これは本書を読みにくくさせている1つの原因だ)で、進化的とか言い出すと恣意的で野放図な設計になりかねないから、常にどうあるべきかを計測可能なように設計して検証しながら進めなければならないと釘を差す。
3章「漸進的な変更を支える技術」。最初の山場。「進化」とは何かをある程度具体性を持ったマイグレーションとして示す。ここは最初の山場。
4章「アーキテクチャ上の結合」。現在主流のアーキテクチャスタイルを示し、それらはどのように進化すべきかを説明する。おもしろい。
5章「進化的データ」。勉強になりまくる。
ソフトウェアだけ考えるのは宇宙飛行士に任せて、データのことをちゃんと考えなければだめだと、データベース設計を使って(それ以外にもデータは当然あるから)示す。ここは本当に重要。
6章「進化可能なアーキテクチャの構成」。なんと、3~5章は、進化的アーキテクチャの構成要素に過ぎないということを宣言してから、それらを結合させて全体像を示す。わかりにくいぞ。だが、本章自体はパターンランゲージで記述しているように読める。内容は明白で、これも参考になりまくる。なお6.4はぐさぐさする棘の塊のようでちょっと読むのが辛かった。
7章「進化的アーキテクチャの落とし穴とアンチパターン」。まず、落とし穴とアンチパターンは異なるという説明がある。これはおもしろい。落とし穴は歩いて通れるように見えるので進むと落ちる罠だ。常に避けなければならない。対するアンチパターンは「この場合には良いパターン。でも、これについては不適合」なので、適用対象の見極めであり選択の技量に属する。この章は本当におもしろい。
7.1.4は、クリーンアーキテクチャに続いて、むやみなDRYの否定となっている。すごく同意する。
8章「進化的アーキテクチャの実践」という勇ましい題。だが、実践という言葉から普通に想像される具体性を持つ内容ではなく、まず経営者視点に立って(つまりはエンタープライズ全体を俯瞰して)設計するために知るべき組織の諸要素と利用可能なリソースについて説明したものと、パターンランゲージによる組織を動かしつつアーキテクチャを進化させる方法を解説したものから構成される。ただ、この章もこれまた参考になる。
以上で、本体は終わり、参考文献がくる。本書がどういう領域で何に着目しているかが明らかとなり、選択それ自体がおもしろいことと、自分のためにも参考文献をアマゾンで示す(アフィ乞食なのでここから買ってくれるとすごく嬉しいが、そっちは主眼ではない)。
The DevOps ハンドブック 理論・原則・実践のすべて(ジーン・キム)
世界はシステムで動く ―― いま起きていることの本質をつかむ考え方(ドネラ・H・メドウズ)
ソフトウェアシステムアーキテクチャ構築の原理 第2版(ニック・ロザンスキ)
リーンエンタープライズ ―イノベーションを実現する創発的な組織づくり (THE LEAN SERIES)(ジェズ・ハンブル)
エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)(エリック・エヴァンス)
Release It! 本番用ソフトウェア製品の設計とデプロイのために(Michael T. Nygard)
人月の神話【新装版】(Jr FrederickP.Brooks)
ゴールドラット博士のコストに縛られるな! 利益を最大化するTOC意思決定プロセス(エリヤフ・ゴールドラット)
新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)(Martin Fowler)
ドメイン特化言語 パターンで学ぶDSLのベストプラクティス46項目(角 征典)
ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション(ThoughtWorks Inc.)
なんということでしょう。
すべて日本語に翻訳されているではないか。1億人という市場人口のなせる技だ。
本書は読みにくいし、問題点もある。間違った読者が買えばアマゾンに星1レビューが乗りまくるタイプの本だ。
にもかかわらず、本書は重要であり、読む価値は極めて高い。手放しではお勧めしないが、上に並べた参考文献のいずれかを読んだことがあれば、それが現在のソフトウェア開発の知見において、どのように組み込まれているのかを確認するためだけでも読む価値がある。
ジェズイットを見習え |