HexaGO (A simple ports & adapter architecture example) について
HexaGOは、六角形(ポートとアダプター)アーキテクチャを示す小さなGo製の電卓プロジェクトです。アプリケーションのロジックと外部システムを分離する方法を学ぶ開発者向けのサンプルです。
主な機能
- 01ポートとアダプターの実演
- 02コアロジックとアダプターの分離
- 03ポートによるインターフェース整理
- 04電卓アプリを収録
活用シーン
- 01Goで六角形アーキテクチャを学ぶ
- 02コアとアダプターの境界を理解する
- 03小規模な構成例として参照する
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
HexaGO(シンプルなポート&アダプターアーキテクチャの例)
これは、ポート&アダプターアーキテクチャを使用した電卓アプリのシンプルな例です。
実行方法
- リポジトリをクローンします
- air をインストールします
go install github.com/cosmtrek/air@latest - templ をインストールします
go install github.com/a-h/templ/cmd/templ@latest - プロジェクトのルートで
airを実行します - ブラウザーを開き、
http://localhost:3000にアクセスします
インスピレーション
このプロジェクトは、Alistair Cockburn と Juan Manuel Garrido de Paz による書籍『Hexagonal Architecture』(ご冥福をお祈りします)に着想を得ています。
このプロジェクトの目的は、Go プロジェクトでポート&アダプターアーキテクチャを実装する方法を示すシンプルな例を紹介することです。
ライセンス
このプロジェクトは好きなようにお使いください。無料のオープンソースで、制約はありません。
はじめに
hexago とは?
これは、Go 言語でのヘキサゴナルアーキテクチャ(ポートとアダプター)の小規模な実装です。
ヘキサゴナルアーキテクチャとは?
ヘキサゴナルアーキテクチャは、アプリケーションを複数のレイヤーに分けるソフトウェア設計パターンです。このパターンは、ポート&アダプターパターンとしても知られています。
ヘキサゴナルアーキテクチャの主な構成要素は次のとおりです。
- コア:アプリケーションの中心となる部分です。ビジネスロジックとドメインモデルを含みます。
- ポート:コアが外部と通信するために使用するインターフェースです。コアで定義され、アダプターで実装されます。
- ドライバー:ポートの実装です。外部システム(データベース、API など)とのやり取りを担います。 -- 駆動アダプター:ドライバーの実装です。コアと外部システムの間でデータを変換します。
- アダプター:ポートの実装です。コアと外部システムの間でデータを変換します。
ヘキサゴナルアーキテクチャの主な利点は、アプリケーションのテストや保守がしやすくなることです。コアは外部システムから切り離されているため、単独でテストできます。ポートとアダプターは異なる実装に簡単に置き換えられるため、新しい要件にも容易に対応できます。
hexago の使い方
内部レイヤーを複数のヘキサゴンに分けるのが好きです。 各ヘキサゴンはそれぞれ独自のフォルダーに配置し、次のようなフォルダー構成にします。
<HexagonName>
├── core
│ ├── <HexagonName>.go
│ └── <HexagonName>_test.go
├── ports
│ ├── driven
│ │ ├── for<Verb><Action>.go // e.g forCreatingUser.go
│ │ └── for<Verb><Action>_test.go
│ └── driving
│ ├── for<Verb><Action>.go // e.g forCreatingUser.go
│ └── for<Verb><Action>_test.go
└── adapters
├── db.go
└── calculatorHTTP.go
core フォルダーには、ヘキサゴンのビジネスロジックとドメインモデルが含まれます。
ports フォルダーには、コアが外部と通信するために使用するインターフェースが含まれます。
adapters フォルダーには、ポートの実装が含まれます。
ポートは、コアと外部システムとのやり取りを制限するインターフェースの集合です。
始め方
- リポジトリをクローンします
- air をインストールします
go install github.com/cosmtrek/air@latest - templ をインストールします
go install github.com/a-h/templ/cmd/templ@latest - プロジェクトのルートで
airを実行します - ブラウザーを開き、
http://localhost:3000にアクセスします
Docker 化のための作業手順
-
compose.ymlのイメージ名を、自分のイメージ名に変更します -
nginx.confのドメイン名を、自分のドメイン名に変更します -
.github/workflows/deploy.ymlの Docker イメージ名を、同じ名前に変更します
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。