付録A: 設計成果物テンプレ集
本書で用いる設計成果物(Design Artifacts)のテンプレです。章内で必要に応じて参照します。 用語の定義を引き直すときは 用語集(Glossary) を、 図版・チェックリスト・症状別の戻り先を引き直すときは 付録D: クイックリファレンス を参照してください。
Context Pack(最小スケルトン)
このスケルトンは「着手用」の最小形です。まずは scripts/validate-context-pack.py の minimal lint(必須フィールド/型/ID重複/参照整合の簡易検証)で破綻を早期検知し、内容が具体化した段階で schema validation(JSON Schema による仕様準拠チェック)も通します。
検証コマンドの詳細は Context Pack v1 仕様(検証コマンド) を参照してください。
注意: schema validation はプレースホルダ(例: name: <project-or-example-name>)を具体値へ置換した段階で通す想定です。
version: 1
name: <project-or-example-name>
problem_statement:
goals: []
non_goals: []
domain_glossary:
terms: []
objects: []
morphisms: []
diagrams: []
constraints: {}
acceptance_tests:
- id: AT1-happy-path
scenario: "<scenario>"
expected: ["<expected>"]
coding_conventions:
language: language-agnostic
directory: []
dependencies: {}
forbidden_changes:
- "<forbidden change>"
Objects テンプレ(型/状態/不変条件/権限/エラー)
objects:
- id: <ObjectId>
kind: entity # entity | value | event
description: ""
states: []
fields: []
invariants: []
permissions: []
errors: []
audit: {}
例(抜粋):
objects:
- id: Order
kind: entity
description: "注文。状態遷移を持つ。"
states: [Draft, Placed, Paid, Shipped, Cancelled]
invariants:
- "禁止遷移(例: Shipped → Paid)"
Morphisms テンプレ(シグネチャ、Pre/Post、失敗、冪等性)
morphisms:
- id: <MorphismId>
input: {}
output: {}
actor: "" # 任意(権限と紐づけ)
pre: []
post: []
failures: []
idempotency: {} # 任意
side_effects: [] # 任意
observability: {} # 任意
例(抜粋):
morphisms:
- id: PlaceOrder
input: { orderId: "OrderId", idempotencyKey: "IdempotencyKey" }
output: { orderId: "OrderId" }
pre:
- "Order.state == Draft"
post:
- "Order.state == Placed"
- "AuditEvent(\"PlaceOrder\") が記録される"
failures:
- NotFound
- InvalidState
- OutOfStock
idempotency:
key: idempotencyKey
scope: orderId
expectation: "重複実行しても在庫引当や監査が二重計上されない"
Diagrams テンプレ(可換条件→テスト観点)
diagrams:
- id: <DiagramId>
statement: "<invariant statement>"
involved:
objects: []
morphisms: []
observation_points: []
verification: []
test_level: Integration # Unit | Integration | Property
counterexample: "" # 任意
例(抜粋):
diagrams:
- id: D2-audit-consistency
statement: "重要操作は必ず監査証跡を残す"
involved:
objects: [AuditEvent]
morphisms: [CreateOrder, PlaceOrder, AuthorizePayment, ShipOrder]
observation_points:
- "操作成功時に AuditEvent が存在する"
verification:
- "各操作に対応する監査イベントが記録される"
test_level: Integration
レビュー用チェックリスト(AI生成物レビュー含む)
契約(Context Pack)レビュー
- Goals/Non-goals が明確(仕様追加の余地が小さい)
- Objects/Morphisms/Diagrams が揃っている(欠落がない)
- Pre/Post/failures が検証可能な表現になっている
- Forbidden changes が具体的(境界/契約/不変条件/依存など)