Alistair Cockburnさんの新しい書籍「Hexagonal Architecture Explained」
Alistair Cockburnさんは
アジャイルソフトウェア開発宣言を考えたエンジニアの一人です。
読み方はカタカナだとアリスターコーバーンが近いでしょうか。
Hexagonal Architectureでもまた有名です。
以前書いた記事
オリジナルのHexagonal Architectureについては以前読んで記事を書きました。コーバーンさん本人についても軽く書いています。
待望の新刊
同じアジャイルソフトウェア開発宣言を考えたエンジニアたちの中でも多作で現在も旺盛な出版活動を続けているRobert C Martin(Cleanシリーズ)や、多方面で引用されるMartin Fowler(Patterns of Enterprise Application ArchitectureやRefactoring)、Kent Beck(Test Driven Development, Extreme Programming)に比べると、コーバーンさんは寡作な印象です。有名な書籍はWriting Effective Use Casesだと思うのですが、これ自体も2000年に書かれた書籍で日本語訳も絶版となり久しいため、日本では先に上げた3人よりも話題になることが少ない印象です。
しかしながら、2005年に公開されたHexagonal Architectureの記事は彼の書いた文章のなかでも相当のヒットであると思います。また、アーキテクチャのパターンというのは業界の人々がついつい話題にしたがるテーマであるため、現在でも本人以外の手でさまざまな出版物やWeb上の記事が書かれています。
さて、そんな寡作だが多大なインパクトを残しているコーバーンさんがあのHexagonal Architectureについての新しい書籍を刊行したとのことで、すでに公開から半年以上経っていますがいまさら見つけたので購入し、全部は読めていないですが記事を書いてみました。
こちらの電子書籍です。なんと8ドル。実質無料です。
どんな本なの
Product Detailsを翻訳してもらいすこし修正しました
NetflixやAmazonといった巨人企業も推奨するヘキサゴナル(ポート&アダプター)アーキテクチャは、テストを簡素化し、ビジネスロジックの漏洩を防ぎ、長期運用システムでの技術変更をサポートし、ドメイン駆動設計の適用を可能にします。このパターンに関する決定版となる本で、パターンの考案者であるアリステア・コーバーン博士とフアン・マヌエル・ガリド・デ・パスが、サンプルコードを提供し、よくある質問に答えながら、このパターンの詳細を余すことなく解説しています。
ネトフリやアマゾンが推奨していたのは初耳でした。
この本は実は
まえがきによれば、この本はまだ正式出版前のプレビュー版らしいです。
この本の正式な出版は2025年を予定しており、このバージョンは2024年4月時点のものです、この本を先に公開して、読者の意見を聞きながらブラッシュアップしていく予定のようです。
コーバンさんによると、この本は以下のように読むといいようです。
本書の読み方:
第1章:序章 - パターンを説明するサンプルコード、パターンの簡単な歴史、コストと利点を紹介。
第2章:ポート&アダプターの定義 - パターンの説明、用語定義、4つの要素とコンフィギュレータの解説。
第3章:コードサンプル - 複数の言語による実装例を紹介。
第4章・第5章:FAQ - 「何と」「どのように」、および関連概念について回答。
第6章:オリジナル記事 - パターンの起源と進化の歴史。
第7章:まとめ - 本書の要約。
推奨される読み方として、まず第1章と第2章を丁寧に読み、プログラマーの方は第3章のコードも確認してください。FAQは関心のある項目から読み進めてください。最後に、2005年からの変遷を理解するため、オリジナル記事もご覧ください。
また、共著者のJuan Manuel Garrido de Pazさんはこの本が完成する前に亡くなってしまったそうで、残りはコーバーンさん一人で完成させるようです。
眺めてみて面白いと感じたパート
5.5. Layered, onion, clean, hexagonal: what is the difference?
バズワード頂上決戦みたいなパートですが、考えた本人が書いているのだから問題ないでしょう。
コーバーンさんは以下のような点でlayered, Onion ArchitectureやClean Architecture, Hexagonal(Ports and Adapters)のちがいを述べています。
Ports and Adaptersには2レイヤーしかない。内側(the app)と外側(everything else)だ。
Ports and Adaptersは外部のアクターが特定のポートとつながるように体系化することを要求する。
Onion ArchitectureやClean Architectureを適用して、アプリケーションを複数のレイヤーに分けてもいい(Application Policy, Domain Services, Domain Objectsなど)、これらは個人の選択であり、Ports and Adapters Architectureの範囲外のものだ。
おなじArchitectureと名のつくものでも、その扱う範囲はことなるのだと言うのがコーバーンさんのご意見のようです。
おわりに
あのコーバーンさんがあらたに書籍をだすとのことで、今後発売される正式版が楽しみになりますね。
まだきちんとは読めてはいないため紹介できていないのですが、コード例も豊富にあり実践がしやすそうです。
日本語訳は刊行されるのでしょうか。そうなったらより多くの人に読んでもらえることと思います。
このマグカップちょっとほしい
Discussion