PlantUML ArchiMate図の構文ガイド

ArchiMate図とは何ですか?

あるArchiMate図は、戦略、ビジネスプロセス、ソフトウェアアプリケーション、および組織全体の物理的データインフラを追跡する高レベルのエンタープライズアーキテクチャモデリング可視化です。従来のUMLマップがソフトウェア実行ルーチンの詳細に注目するのに対し、ArchiMateはビジネスアナリスト、ソリューションアーキテクト、CTOが、上位の企業目標が下位のITシステムにどのように依存しているかをマッピングするのを支援します。

基本的なPlantUMLにはネイティブなプリミティブが含まれていますが、プロダクショングレードのエンタープライズレイアウトには公式のArchimate-PlantUML標準ライブラリ拡張が必要です。宣言的マクロと標準化されたカラーバンドを活用することで、一貫性がありTOGAF準拠のモデルを維持できます。VPasCodeを使用すると、アーキテクチャブロックと関係性スレッドを完全にテキストで定義でき、エンジンがボックスの色構成や配置を動的に処理します。

コア構文ガイド:要素と構成

PlantUMLで公式ArchiMate拡張を安全に使用するには、標準ライブラリファイルを含め、カテゴリーマクロを正しく実装し、ネストされたブロックを処理し、明示的な構造的関係を適用する必要があります。

1. ArchiMate標準ライブラリの初期化

公式のマクロ、カラーパレット、構造的ステレオタイプを有効にするには、スクリプトブロックでスタートタグの直後に標準ライブラリファイルをインポートする必要があります。高コントラストの可視性を確保するために、公式テーマのいずれかをオプションで適用できます:

@startuml
!include <archimate/Archimate>
!theme archimate-standard from <archimate/themes>

2. カテゴリーマクロを使用した要素の宣言

標準ライブラリは、カテゴリープレフィックス付きマクロ内にネイティブな形状をラップすることで、要素の作成を簡素化します。要素は厳密なCategory_ElementName(ID, "ラベル")命名規則に従います。プレフィックスは構造層を決定し、正しいカラートークンを自動的に挿入します:

  • 戦略と動機 (紫色): Motivation_Stakeholder(), Strategy_Capability()
  • ビジネス層 (黄色): Business_Actor(), Business_Process(), Business_Service()
  • アプリケーション層 (青色): Application_Component(), Application_Service()
  • テクノロジー層(緑色): Technology_Node(), Technology_SystemSoftware()
!include <archimate/Archimate>
Motivation_Stakeholder(CEO, "最高経営責任者")
Application_Component(CRM, "Salesforce CRMシステム")

3. グループ境界と構造的ネストの定義

エンタープライズマップは、所有権や実行時隔離を表現するために視覚的な包含を大きく依存しています。境界フォルダは、次のマクロを使って作成できます:Group()またはGrouping()マクロ、または波かっこを使って要素を相互にネストできます:

!include <archimate/Archimate>
Grouping(AppSubsystem, "カスタマーマネジメントスイート") {
    Application_Component(AuthMod, "OAuthトークンモジュール")
    Application_Service(UserReg, "ユーザー登録API")
}

4. 標準化されたエンタープライズ関係のマッピング

ArchiMateは接続に厳格な語彙を強制します。原始的な矢印ではなく、標準ライブラリは次の形式の専用関係マクロを提供します:Rel_RelationType(From_ID, To_ID, "ラベル")。手動での向きの調整を強制するには、空間的な方向ヒント(たとえば_Up, _Down, _Left、または _Right):

!include <archimate/Archimate>

Motivation_Stakeholder(CEO, "最高経営責任者")
Application_Component(CRM, "Salesforce CRMシステム")

Grouping(AppSubsystem, "顧客管理スイート") {
    Application_Component(AuthMod, "OAuthトークンモジュール")
    Application_Service(UserReg, "ユーザー登録API")
}

' 構造的および行動的関係の例
Rel_Realization(UserReg, AuthMod, "セキュリティを実装")
Rel_Serving_Right(CRM, CEO, "ダッシュボードを提供")

レイヤードアーキテクチャ図のベストプラクティス

  • 明確なレイヤーを分離する: スクリプトを上から下へ順に整理する(動機 > ビジネス > アプリケーション > テクノロジー)ことで、アーキテクチャのレイアウトをステークホルダーにとって直感的にする。
  • 短いコンポーネントIDを活用する: 内部マクロ追跡文字列を簡潔に保つ(例:AP_01 または Srv_Auth)一方で、説明的で顧客向けのテキストは、ダブルクォーテーションで囲まれたラベルパラメータに残す。
  • レイヤー間の接続に明確な方向性を設定する: 構造的境界を越えると、レイアウトパスが予測不能に変化する可能性がある。方向性マクロ(例:Rel_Access_Down())を使用することで、データフローがレイヤーの分割をスムーズに下方向に移動させることができる。

実際のPlantUML ArchiMateの例

例1:伝統的な戦略的機能マッピング(動機と戦略の階層)

この機能的なブループリントは、組織の戦略的層を記録し、企業のステークホルダーがビジネス機能と実現された技術的成果とどのように一致しているかを示している。

@startuml
!include <archimate/Archimate>
!theme archimate-standard from <archimate/themes>

title 戦略的エンタープライズ整合マップ

Motivation_Stakeholder(CFO, "最高財務責任者")
Motivation_Driver(CostEfficiency, "運用コスト削減")
Strategy_Capability(AutomatedBilling, "エンタープライズ請求自動化")
Business_Process(InvoiceRun, "月末勘定調整")

' 戦略的依存関係を接続
Rel_Association(CFO, CostEfficiency, "改善を目指す")
Rel_Influence(AutomatedBilling, CostEfficiency, "ポジティブな影響を与える")
Rel_Realization(InvoiceRun, AutomatedBilling, "機能を満たす")
@enduml

構文の分解: パープルの戦略的マクロを実行することで、エンジンは要素を明確にマッピングする。明確な関係マクロにより、人間のステークホルダーが組織の動機を通じて下方向にリンクされ、企業戦略が下位の実行行動と明確に整合する。

例2:エンドツーエンドの3層エンタープライズシステム(レイヤー間メッシュ)

この高度なブループリントは、包括的でレイヤー間をまたぐアーキテクチャトポロジーを示しています。運用中のビジネスプロセスが、支援するアプリケーションマイクロサービスを経由して、下位のクラウドインフラストラクチャのホストまでマッピングされています。

@startuml
!include <archimate/Archimate>
!theme archimate-standard from <archimate/themes>

title マルチティアアプリケーションアーキテクチャの整合性

Grouping(BizLayer, "ビジネス運用") {
    Business_Actor(Agent, "カスタマーサポートエージェント")
    Business_Process(Ticketing, "企業サポートチケット処理")
}

Grouping(AppLayer, "アプリケーションエコシステム") {
    Application_Service(TicketSvc, "Zendesk統合API")
    Application_Component(DataRouter, "イベント処理エンジン")
}

Grouping(TechLayer, "インフラストラクチャ層") {
    Technology_SystemSoftware(K8sCluster, "Kubernetesオーケストレーションクラスター")
    Technology_Node(CloudVM, "AWS EC2 m6i.xlargeコンピューティングターゲット")
}

' ディレクショナルヒントを使用してレイヤー間マッピングをスムーズに確立
Rel_Assignment(Agent, Ticketing, "毎日実行")
Rel_Serving_Down(TicketSvc, Ticketing, "WebデスクUIを駆動")

Rel_Composition(DataRouter, TicketSvc, "Webhookを受信")
Rel_Realization_Down(K8sCluster, DataRouter, "アプリケーションコンテナをホスト")

Rel_Composition_Down(CloudVM, K8sCluster, "コアハイパーバイザーベアメタルを提供")
@enduml

構文の分解: このマップは、構造化されたGrouping コンポーネントの力を強調しています。要素は、マクロファミリーに基づいて自動的に異なるレイヤー固有の色調(黄色、青色、緑色)を受け取ります。Rel_Serving_Down および Rel_Realization_Down などの方向性関係のオーバーライドにより、依存関係が企業グリッドに美しく連鎖的に伝搬します。

上部へスクロール