コンテンツにスキップ

Getting started — EC プラットフォーム

フル drill-down: system → service → domain → usecase → resource。

GitHub でソースを見る · アプリで開く

System ビュー
System ビュー
Deploy ビュー
Deploy ビュー
Org ビュー
Org ビュー
@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