Hexagonal Architecture (Ports and Adapters Architecture) / ヘキサゴナルアーキテクチャ(ポートアンドアダプターアーキテクチャ)

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

ヘキサゴナルアーキテクチャ(ポートアンドアダプターアーキテクチャとしても知られています)は、ポートとアダプターを介してソフトウェア環境に容易に接続できる疎結合なアプリケーションコンポーネントを作成することを目的としたアーキテクチャパターンです。このパターンは、アプリケーションの中心的なロジック(コア)と、それが使用するサービス(周辺)の間の明確な分離を促進します。

主要な概念

  1. コア(ヘキサゴン)
    • アプリケーションのビジネスロジックとドメインオブジェクトを含みます。
    • 外部のテクノロジー、フレームワーク、データベースから独立しています。
    • ポートを介して外部の世界と通信します。
  2. ポート
    • コアとアダプターの間の通信契約を定義するインターフェースです。
    • 入力ポート(またはドライビングポート)と出力ポート(またはドリブンポート)の2種類に分けられます。
    • 入力ポートは外部世界からデータを受け取り、出力ポートは外部世界にデータを送信します。
  3. アダプター
    • コアが外部システムやサービスと通信できるようにするポートの実装です。
    • 外部システムをポートで定義されたインターフェースに適応させます。
    • データベースアダプター、ユーザーインターフェースアダプター、APIアダプターなどが例として挙げられます。

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

  • 関心の分離:ヘキサゴナルアーキテクチャは、コアのビジネスロジックと外部システムの間の明確な分離を強制し、アプリケーションをよりモジュール化して保守性を高めます。
  • テスト容易性:モックアダプターを使用することで、外部システムやデータベースに依存せずに、コアを単独で簡単にテストできます。
  • 柔軟性:コアロジックに影響を与えずに、新しいアダプターを追加したり、既存のアダプターを変更したりすることで、アプリケーションを簡単に拡張または修正できます。
  • 技術の独立性:コアは特定の技術やフレームワークから独立しているため、技術のアップグレードや置き換えが容易になります。

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

  • 学習曲線:開発者はポートとアダプターの概念を理解する必要があり、学習と適応が必要になる場合があります。
  • オーバーヘッド:ポートとアダプターの導入により、特に小規模または単純なアプリケーションでは、コードベースにいくらかのオーバーヘッドと複雑さが追加される可能性があります。

ヘキサゴナルアーキテクチャの適用シーン

  • 複雑なアプリケーション:ヘキサゴナルアーキテクチャは、複数の外部依存関係や統合を持つ大規模で複雑なアプリケーションに特に有用です。
  • 進化的アーキテクチャ:アプリケーションが時間の経過とともに変化する要件やテクノロジーに適応し、進化できる必要がある場合。
  • ドメイン駆動設計:ヘキサゴナルアーキテクチャは、ドメインモデルとインフラストラクチャの間の明確な分離を促進するため、ドメイン駆動設計(DDD)の原則とよく一致します。

ヘキサゴナルアーキテクチャは、コアロジックを外部システムやサービスから切り離すことで、柔軟で保守性の高いアプリケーション設計へのアプローチを提供します。モジュール化され、テスト可能で、変化する要件やテクノロジーに容易に適応できるアーキテクチャを促進します。

セキュリティ

まだありません
ローコード管理画面開発SaaSのクエリアなら

管理画面開発の4つの面倒ごとを省略

管理画面開発を高速化するクエリアの基本機能

UIコンポーネント

クエリアなら、ユーザーインターフェイスをデザインする必要はありません。管理画面や、業務ツールに必要なパーツはすでに用意されており、適切なパーツを適切な場所にドラッグ&ドロップするだけでインターフェイスを構築できます。
さらに詳しく見る

データフロー

リクエストを記述したり、ロジックを組んだりすることができるデータフローを使うことで、データソースから返ってきたたデータを表示することも、データソース内のデータを操作することも簡単にできるようになります。フローとして一連の処理をひとまとまりにすることで、複雑な操作も可能です。
さらに詳しく見る

権限管理

本来であれば複雑で大掛かりな開発が必要とされる権限管理機能も、クエリアなら楽に実現できます。どのユーザーがどのページにアクセスすることができるか管理することはもちろん、大切なデータソースに対しても、ユーザーごとにアクセス制限を設けることができます。また、権限グループ機能を使えば、特定の部署やチームごとに権限を管理することも可能です。
さらに詳しく見る

監査ログ

監査ログ
大切なデータに対して実行された処理を、ログとして閲覧することができます。いつ、誰が、どのページで、どのようなクエリを実行したのかを詳細に確認できます。また、ログはCSVフォーマットでダウンロードすることで、必要な人に送ったり、表計算ソフトなどでの分析に活用することも可能です。
さらに詳しく見る