ヘキサゴナルアーキテクチャ

河上です。

最近傾倒しているドメイン駆動設計という文脈で「ヘキサゴナルアーキテクチャ」というアプリケーションアーキテクチャについて色々と思う事を書きたいと思います。

ヘキサゴナルアーキテクチャはPofEAA(エンタープライズ・アプリケーションアーキテクチャパターン)という本で知りました。

アリスター・コーバーンのヘキサゴナルアーキテクチャ

Hexagonal-architecture

Applicationと記述してある内部の六角形はビジネスの感心事であるドメインモデルで、それ以外はすべて外部とのインターフェースであるというドメイン中心の考え方で、ポピュラーな3層アーキテクチャとはずいぶんと違う印象を受けますね。

この図を見てまず疑問に思ったのは【外部から内部への依存】なのか、【内部から外部への依存】なのかということなのですが、現時点の理解では、【外部から内部への依存】だと思っており、そちらに振り切って設計をしています。

私がこのように判断したのは「変更は予知できない」という経験からです。

いろいろ考えて、予想して、変更がありそうな部分を柔軟に作ったとしても、結局その柔軟性が発揮される事がなく無駄な複雑さだけが残ったという苦い経験があります…。
この経験から、下手に予想するのではなく、少なくともビジネスの文脈ですべてが規程されている形にしておけば、ビジネスの形との整合がとれているために変化点の見極めがしやすくなり、結果として変更がやりやすくなるはずだと考えました。そしてビジネスの形に合わせるということは、ビジネス(ドメイン)へ依存するという事なのではないかと思い、この依存の方向は外部から内部(ドメイン)へ向くべきであるという結論になりました。

また、この依存方向だと、単純なアプリケーションではドメインモデルが振る舞いらしい振る舞いを持たずただの構造のようになってしまったりしますが、そのときはそのドメインモデルがビジネス(業務)を表現できていれば良しとしています。

今後、実践していく中でまた違う結論になることもあるかと思いますが、「間違ってる」「こんな考え方があるよ」「こんなアーキテクチャなら良いのでは?」など、ディスカッションのネタがいただけると幸いです。

似たアーキテクチャで、より表現が近いかなというものを見つけたのでリンクを貼っておきます。

アンクル・ボブのクリーンアーキテクチャ

ヘキサゴナルアーキテクチャ」への1件のフィードバック

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中