ソフトウェアの設計について学んでいくと、「ヘキサゴナルアーキテクチャ」という言葉に出会うことがあります。システムの中心と外側を分けて整理する設計の考え方ですが、聞き慣れない言葉で難しそうに感じる方もいるかもしれません。この記事では、ヘキサゴナルアーキテクチャの意味や考え方、関連する用語までを、初心者の方にもわかりやすいように整理して解説していきます。
ヘキサゴナルアーキテクチャとは?
ヘキサゴナルアーキテクチャとは、システムの中心となる大切な処理を、外側のさまざまな要素から切り離して整理する設計の考え方のことです。「ヘキサゴナル」は六角形を意味し、中心の処理の周りを、画面や外部とのやり取り口が囲むように描かれることからこう呼ばれます。中心の大切な処理が、外側の細かい仕組みに直接依存しないように工夫するのが特徴です。中心を守りつつ、外側の要素を出し入れしやすくする構造だと考えると分かりやすいでしょう。ポートとアダプタという考え方とともに語られることもあります。
ヘキサゴナルアーキテクチャが重要な理由
システムの中心となる大切な処理が、画面やデータベースといった外側の仕組みと深く絡み合っていると、外側を変えるたびに中心まで影響を受けてしまいます。ヘキサゴナルアーキテクチャのように中心を外側から切り離しておくと、外側の要素を入れ替えても中心への影響を抑えやすくなります。また、中心の処理を外側に左右されずに確かめやすくなる利点もあります。変化に強く、中心の大切な部分を守りやすいシステムを目指すために役立つ考え方だと言えるでしょう。
ヘキサゴナルアーキテクチャが使われる場面
ヘキサゴナルアーキテクチャの考え方は、保守性を重視するさまざまな場面で参考にされています。代表的な例としては、次のようなものが挙げられます。
- 中心の処理を外側の変化から守りたい場面
- 画面や外部とのやり取り口を入れ替えやすくしたい場面
- 中心の処理を独立して確かめたい場面
- 変化に強い構造を目指す場面
ヘキサゴナルアーキテクチャの仕組み
ヘキサゴナルアーキテクチャの基本的な考え方は、おおまかに次のように整理できます。
- システムの中心となる大切な処理を定めます
- 外側とのやり取りを、決められた窓口を通して行うようにします
- その窓口に合わせて、画面や外部の仕組みをつなぎます
- 中心は外側の細かい中身に直接依存しないようにします
ヘキサゴナルアーキテクチャと似た用語との違い
ヘキサゴナルアーキテクチャとよく一緒に語られる言葉に「クリーンアーキテクチャー」があります。どちらも、中心の大切な部分を外側から切り離して守るという考え方で共通していますが、整理の仕方や表現の仕方に違いがあるとされます。また、レイヤードアーキテクチャーのように層で分ける考え方とも、依存の向きの捉え方などが異なります。いずれも関心を分けて整理する考え方であり、目的や好みに応じて参考にされると考えると分かりやすいでしょう。関連し合う考え方です。
ヘキサゴナルアーキテクチャを理解するメリット
ヘキサゴナルアーキテクチャの考え方を理解しておくと、中心の大切な処理を外側から切り離して守るという設計の発想をイメージしやすくなります。これは、設計に携わる人にとって特に役立つ知識ですが、システムの構造に関心がある人にとっても有用だと言えるでしょう。何を中心に守り、外側との境界をどう作るかという視点を持てれば、変化に強い設計を考える手がかりになります。長く使えるものを目指す設計の姿勢を学べる知識だと捉えると分かりやすいでしょう。
ヘキサゴナルアーキテクチャの注意点
ヘキサゴナルアーキテクチャを扱う際には、いくつか注意したい点があります。中心と外側をきちんと分けようとするあまり、構造が複雑になり、小規模なシステムではかえって手間が増えてしまうことがあります。規模や目的に見合った範囲で取り入れることが大切です。また、考え方の解釈には幅があるため、関係者で共通の理解を持っておくとよいでしょう。すべてを厳密に適用しようと気負わず、中心を守るという意図を理解することから始めるとよいでしょう。
ヘキサゴナルアーキテクチャに関連する用語
ヘキサゴナルアーキテクチャをより深く理解するために、あわせて知っておくと役立つ関連用語を紹介します。
- クリーンアーキテクチャー:中心を守るよう整理する別の考え方
- レイヤードアーキテクチャー:層で分けて整理する考え方
- 疎結合:要素同士の結びつきが弱い状態
- 関心の分離:役割ごとに分けて整理する考え方
- 保守性:修正や管理のしやすさ
まとめ
ヘキサゴナルアーキテクチャは、システムの中心となる大切な処理を、外側のさまざまな要素から切り離して整理する設計の考え方です。決められた窓口を通して外側とやり取りすることで、中心を外側の変化から守りやすくし、外側の入れ替えや中心の確認をしやすくします。複雑になりすぎないよう、規模や目的に見合った取り入れ方が大切です。ヘキサゴナルアーキテクチャを理解しておくと、変化に強い設計の考え方への理解が深まるでしょう。
よくある質問
ヘキサゴナルアーキテクチャとは何ですか?
システムの中心となる大切な処理を、画面や外部とのやり取りといった外側の要素から切り離して整理する設計の考え方です。中心を守りつつ、外側の要素を出し入れしやすくする構造だと捉えると分かりやすいでしょう。
なぜ六角形にたとえられるのですか?
中心の処理の周りを、画面や外部とのやり取り口が囲むように描かれることから、六角形を意味するヘキサゴナルという名がつけられています。中心とそれを囲む窓口という構造をイメージすると分かりやすいでしょう。
ヘキサゴナルアーキテクチャとクリーンアーキテクチャーは何が違いますか?
どちらも中心の大切な部分を外側から切り離して守る考え方で共通していますが、整理の仕方や表現に違いがあるとされます。関連し合う考え方で、目的や好みに応じて参考にされると考えると分かりやすいでしょう。

