ポートとアダプタとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > ポートとアダプタの意味・解説 

ポートとアダプタ

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/04/13 04:10 UTC 版)

ポートとアダプタ英語: Ports and Adapters architecture)あるいはヘキサゴナルアーキテクチャ英語: Hexagonal architecture)とは、ソフトウェア設計におけるアーキテクチャパターンである。ポートとアダプタパターンは、アプリケーションのコンポーネントを相互に交換可能かつ疎結合に導く。これによりソフトウェアテストの自動化が容易になるとされる[1]

オブジェクト指向ソフトウェア設計におけるレイヤー英語版間の不適切な依存関係や、ユーザーインターフェースについてのコードがビジネスロジックに混入してしまうという構造上の問題を防ぐ試みの中で、アリステア・コックバーン英語版によって発明された。

当初は「ヘキサゴナルアーキテクチャ」とされたが、のちに「ポートアンドアダプタアーキテクチャ」と改名されている[1]

歴史

ヘキサゴナルアーキテクチャは、ポートランドパターン・リポジトリ英語版ウィキにおいて初めて提議され[2][3]、2005年にはコックバーンによって「ポートアンドアダプタアーキテクチャ」と改名された[1]。2024年4月にコックバーンは本主題を包括的に扱った書籍をユアン・マニュエル・ガリード・デ・ペスと共著で出版している[4]

コックバーンは、90年代にはデータベースをアーキテクチャ・スタックの最下部に置くのではなく、アプリケーションの外部に置く対称的なアーキテクチャを描くようになったとしている。コックバーンによれば、形が六角形なのはコンポーネントと外部世界の間に必要なさらなるインターフェースを表現する余地を残しておくためのものであるとされている一方で[1][2]、レイヤードアーキテクチャにおける上下左右の固定観念を打破するためであるともされている[2]

原則

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

ヘキサゴナルアーキテクチャは、システムを疎結合で交換可能な部品に分割する。(e.g. アプリケーションコア、データベースUI、テストコード、ほかシステム間のインターフェースなど)

このアプローチは伝統的なレイヤードアーキテクチャを代替する考え方である。

それぞれの部品は提供された複数の「ポート」によって他の部品と接続される。これらのポートを介した通信は、それぞれの目的に応じて所定のプロトコルに従う。ポートとプロトコルはAPIのインターフェースを定義し、任意の適当な技術的手段によって実装される。(e.g. オブジェクト指向言語におけるメソッド呼び出し遠隔手続き呼び出しwebサービス

批評

マーティン・ファウラーは、ヘキサゴナルアーキテクチャはプレゼンテーション層とデータソース層の類似性を利用することによって、インターフェースによってアプリケーションコアが囲まれる対称的なコンポーネントを作ることができる利点があるとする一方、これはサービス提供者とサービス使用者側の間に本来存在する、むしろレイヤーとして表現される方が良いような非対称性を隠してしまう欠点もあるとしている[5]

活用

複数の人物によって、ヘキサゴナルアーキテクチャはマイクロサービスアーキテクチャの起源だとされる[6]

種類

オニオンアーキテクチャ

ヘキサゴナルアーキテクチャに類似するアーキテクチャとして、オニオンアーキテクチャが2008年にジェフリー・パレルモによって提案されている。オニオンアーキテクチャはヘキサゴナルアーキテクチャと同様、アプリケーションとデータベースを分離するために、インターフェースとインフラストラクチャを外部に置く[7]。オニオンアーキテクチャは、制御の反転を利用して、アプリケーションコアをさらに複数のレイヤーに分割している。

クリーンアーキテクチャ

2012年には、ロバート・C・マーチン英語版によってクリーンアーキテクチャが提唱された。クリーンアーキテクチャは、ヘキサゴナルアーキテクチャ、オニオンアーキテクチャ、他いくつかのアーキテクチャの原則を組み合せたものであり、コンポーネントにさらに詳細なレベルを追加している。

また、クリーンアーキテクチャでは、アダプターやインターフェース(UIやデータベース、外部システム、デバイス)をより外側のレイヤーに分離し、ユースケースエンティティをより内側のレイヤーに置く[8][9]。クリーンアーキテクチャは外側から内側への依存関係のみを許し、その逆を許さないという厳格なルールのもとで、依存性逆転の原則を利用している[要出典]

脚注

  1. ^ a b c d Cockburn (2005年4月1日). “Hexagonal architecture”. alistair.cockburn.us. 2020年11月18日閲覧。
  2. ^ a b c Hexagonal Architecture in the C2 Wiki”. 2024年12月12日閲覧。
  3. ^ Ports And Adapters Architecture in the C2 Wiki”. 2024年12月12日閲覧。
  4. ^ Hexagonal Architecture Explained”. 2024年12月12日閲覧。
  5. ^ Fowler, Martin (2003). Patterns of enterprise application architecture. Addison-Wesley. pp. 21. ISBN 0-321-12742-0. OCLC 50292267 
  6. ^ Rajesh R. V. (2017). Spring 5.0 microservices : build scalable microservices with Reactive Streams, Spring Boot, Docker, and Mesos (Second ed.). Packt Publishing. pp. 13–14. ISBN 978-1-78712-051-8. OCLC 999610958 
  7. ^ Jeffrey, Palermo (2008年7月29日). “The Onion Architecture : part 1” (英語). Programming with Palermo. 2019年8月12日閲覧。
  8. ^ Martin, Robert, C. (2012年8月12日). “The Clean architecture | Clean Coder Blog”. blog.cleancoder.com. 2019年8月12日閲覧。
  9. ^ Martin, Robert C. (2017). Clean architecture : a craftsman's guide to software structure and design. Prentice Hall. ISBN 978-0-13-449416-6. OCLC 1004983973 

関連項目




英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  
  •  ポートとアダプタのページへのリンク

辞書ショートカット

すべての辞書の索引

「ポートとアダプタ」の関連用語

ポートとアダプタのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ポートとアダプタのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのポートとアダプタ (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS