Getting started — EC プラットフォーム
フル drill-down: system → service → domain → usecase → resource。
@import "default.krs.style"
system ECPlatform { label "ECプラットフォーム"
user Customer [human] { label "顧客" description "商品を購入する一般ユーザー" } user Seller [human] { label "出品者" description "商品を出品するショップオーナー" } user Admin [human] { label "管理者" description "システムを運用する担当者" }
client MobileApp [mobile] { label "モバイルアプリ" description "iOS / Android 向け公式アプリ" capability notification }
service ECommerce { label "ECサイト" description "商品の閲覧・購入・出品を提供する"
domain Catalog { label "商品カタログ" usecase SearchProducts { label "商品を検索する" resource ECommerceDB.ProductTable { operations read } resource SearchIndex [external] { label "検索インデックス" operations read } } usecase RegisterProduct { label "商品を登録する" resource ECommerceDB.ProductTable { operations create, update } resource MediaStorage.ProductImages { operations create } }
// ドメイン間の依存は domain ブロック内のエッジで表現する。 // service にドリルダウンすると依存の矢印が表示される。 Catalog --> Order "注文実績をランキングに反映する" } domain Order { label "受注" usecase PlaceOrder { label "注文を確定する" resource ECommerceDB.OrderTable { operations create } resource OrderEvents.OrderPlaced { operations create } resource InventoryAPI [external] { label "在庫API" operations read, update } resource PaymentAPI [external] { label "決済API" operations create } } usecase ShowOrderHistory { label "注文履歴を照会する" resource ECommerceDB.OrderTable { operations read } }
Order -> Catalog "商品情報を参照する" Order -> Member "会員情報を参照する" } domain Member { label "会員" usecase Register { label "会員登録する" resource ECommerceDB.MemberTable { operations create } } usecase EditProfile { label "プロフィールを編集する" resource ECommerceDB.MemberTable { operations read, update } } } } service Payment [external] { label "決済" description "クレジットカード・電子マネー決済" } service Inventory [external] { label "在庫管理" description "在庫データの一元管理" } service Notification { label "通知" description "メール・プッシュ通知の送信" }
// インフラ層: service が共有する database / queue / storage を // system 直下のファーストクラスノードとして宣言する。 database ECommerceDB { label "ECサイトDB" table ProductTable { label "商品テーブル" } table OrderTable { label "注文テーブル" } table MemberTable { label "会員テーブル" } } queue OrderEvents { label "注文イベント" queue OrderPlaced { label "注文確定" } } storage MediaStorage { label "画像ストレージ" bucket ProductImages { label "商品画像" } }
Customer -> MobileApp "アプリを利用する" MobileApp -> ECommerce "API を呼び出す" Seller -> ECommerce "商品を出品する" Admin -> ECommerce "システムを管理する" ECommerce -> Payment "決済を処理する" ECommerce -> Inventory "在庫を照会する" ECommerce --> Notification "注文確認を送信する"}
deploy Production { label "本番環境" oci ecommerceApp { label "ecommerce-app" runtime "Kubernetes (GKE)" realizes ECommerce } oci notificationWorker { label "notification-worker" runtime "Cloud Run" realizes Notification }}
organization ECOrg { label "EC開発組織" team platform { label "プラットフォームチーム" owns ECommerce
team commerce { label "コマースチーム" owns Catalog owns Order
owns Member owns Notification member alice { label "Alice" github "alice-dev" } } team "member-team" { label "会員チーム" member bob { label "Bob" description "会員基盤担当" } } } team notification { label "通知チーム" member carol { label "Carol" slack "@carol" } }}
// 凡例: swatch は色を直接指定、ref は [tag] / 型 / #id を// .krs.style から解決して色を引き継ぐ。scope を省略すると// system / deploy / org の全ビューに描画される。legend "凡例" { ref [external] "外部システム" ref [human] "人間ユーザー" ref database "共有データベース" ref queue "メッセージキュー"}© 2026 Hiroki Kondo · Licensed under Apache-2.0