CADL: Contract Architecture Description Language
言語仕様書 — Version 0.2(ドラフト)
名古屋大学大学院情報学研究科 ERTL
2026年10月10日
概要
CADL(Contract Architecture Description Language)は,マルチエージェント System of Systems(SoS) における制度設計を形式的に記述・検証・展開 するためのドメイン特化言語(DSL)です。
CADLは三層アーキテクチャ——制度層(Institution)・プロトコル層(Protocol)・ アルゴリズム層(Algorithm)——を採用し,ガバナンスルールとエージェント間の 調整メカニズムを単一の統合言語で精密に記述できます。 アルゴリズム層は,中央側とローカル側がそれぞれ実行するアルゴリズムの名前を示すものであり,その内部は記述しません。 CADL仕様からシミュレータ設定の自動生成や設計整合性の検証を行うツールチェーンも 提供します。
アーキテクチャ全体像
1つのソースから3種類の出力が生成されます。形式検証と制度制約コード
(スマートコントラクト/ポリシー/ランタイムクラス)は構文解析された定義から,
ランタイムシミュレータ設定は三層 IR から生成されます。
実験結果は CADL ソースへフィードバックされ,ガバナンスパラメータ
(α, β, λ, ρ)の調整に利用されます。α,β,λ は契約ごとのパラメータであり,
ρ は動機拡張(付録C)のパラメータです。
cadl ツールが扱うのは,ソース,検証器,コード生成,IR,シミュレータ設定の各ステップです。
実験の実行とその評価は,シミュレータまたは CADL Explorer で行います。
本仕様書の読み方
本書は3部構成になっています。以下の順序で読むことを推奨しますが,各章は 単独でも読めるように構成されています。
第I部 — 背景と要件
- 1. はじめに — 動機,問題設定,SoS研究における CADLの位置づけ。
- 2. 目的 — CADLが解決する課題と,本ドラフトのスコープ。
- 3. 比較 — 既存ADL・契約言語・マルチエージェントDSLとの関係。
- 4. 要件 — 言語設計を駆動する機能的・非機能的要件。
第II部 — 言語と設計
- 5. 言語仕様 — 三層(制度・プロトコル・アルゴリズム) のコア構文と意味論。
- 6. 設計 — 設計の根拠,ツールチェーン構成,検証エンジン, ランタイムシステム。中間表現(IR)は 付録EのE.7節と 用語集で説明します。
- 7. 例 — CADLの典型的な利用例。
第III部 — 応用と展望
- 8. ユースケース — 応用領域とケーススタディ。
- 9. 研究 — 未解決の研究課題と理論的基盤。
- 10. ロードマップ — 実装フェーズと,リファレンス実装の現在の状況。
付録
- 付録A — 構文 — EBNF文法リファレンス。
- 付録B — 参考文献 — 参照文献。
- 付録C — 動機拡張 — エージェントの動機モデルとプロファイル。
- 付録D — コード生成ターゲット — コード生成ターゲットの一覧。
- 付録E — SoS-DSL拡張 — 契約のライフサイクルとランタイムモニター。
- 用語集 — 仕様全体で用いる用語。
推奨される読み順
- はじめて読む方 — 1〜2章を読み,5章をざっと眺めてから7章で具体例を確認。
7章の記述例は概念的なものです。実行できる例は,cadlリポジトリの
examples/ディレクトリと ハンズオン教材にあります。 - 実装者・ツール開発者 — 5章,6章,付録Aを中心に。
- 研究者 — 3章,9章,10章で全体的な文脈と未解決問題を把握。
ツールの入手
リファレンス実装は cadl です。
pip install cadl-lang でインストールします(Python 3.9以上)。コマンド名は cadl です。
まず,次のように確認します。
pip install cadl-lang
cadl --version
続いて,リポジトリの
examples/ ディレクトリにあるような
.cadl ファイルに対して,cadl check <file>.cadl と cadl verify <file>.cadl を実行します。
すべてのコマンドはリポジトリのREADMEを,
手順を追った説明はハンズオン教材を参照してください。
関連ツール
- cadl — CADLのコンパイラ兼コマンドラインツール (リファレンス実装)。PyPIでは cadl-lang として 公開しています。
- CADL Explorer — CADLの ガバナンスパイプラインをエンドツーエンドで体験できるインタラクティブな Webアプリケーション。仕様からシミュレーション,ガバナンス評価までを 一貫して可視化します。
- cadl-raspimouse-simulator — ハンズオン教材で使用するシミュレータ。
手を動かして学ぶ
仕様を読むだけでなく実際に書いて動かしたい場合は,ハンズオン教材を参照してください。ロボット配送を題材に,仕様の記述からコード生成・シミュレーション実行までを一通り体験できます。
ステータス
本書はVersion 0.2(ドラフト) です。言語およびツールチェーンは開発中であり, 構文・意味論は今後のリビジョンで変更される可能性があります。
Version 0.2 は,Version 0.1 の記述をリファレンス実装に合わせて改めたものです。 既存のファイルの読み方に影響する変更は次のとおりです。
- β は意思決定集中度:0 が完全分散,1 が完全集中です (5.4.2 節)。Version 0.1 には,逆の向きで説明している 箇所がありました。
- SoS-DSL拡張(付録E):
on_violation.transitionとon_match.transitionは移り先の状態を指し(規則 L-5,M-3),on_match.violationは宣言を必要としないラベルです(規則 M-2)。拡張の版はsos-dsl: 0.1のままです。 sharing:の要素は引用符で囲んだ文字列で書かなければなりません (- "TAXI[*] -> CENTRAL : position")。引用符がないと,YAML はこれを文字列ではなく マッピングとして読みます (付録A A.4節)。- 記号で書いた範囲の上限は記号的な大きさ:
[1..N]のNは任意のアクター数を表し, これに値を与える構文は言語にありません(5.2.2 節, 付録A A.3節)。 - 識別子は ASCII に限ります。文字列とコメントには任意の Unicode 文字を使用できます (第4章の要求 NFR-7, 付録A A.1節)。
動機拡張は,独自のラベル v0.1-ext のままです。
仕様書とリファレンス実装の版は,独立に番号を付けています。本仕様書は Version 0.2 であり,
内容の確認に用いたリファレンス実装は cadl 0.3.13 です。
フィードバックや議論はGitHub Issuesで歓迎します。 仕様書や本サイトの問題は,cadl-specのIssuesで報告できます。