メインコンテンツまでスキップ

第11章:まず “業務のかたまり(能力)” を並べる🧱📋

この章のゴール🎯🌸

  • 「境界づけられたコンテキスト(BC)」を考える前に、材料になる “業務のかたまり(能力 / Capability)” を集められるようになるよ🧺✨
  • 最終的に 能力リスト(ざっくりでOK) を作って、次の章で「イベントで切る」に進める状態にするよ🚶‍♀️💨

1) “能力(Capability)”ってなに?🧠💡

イメージ

**能力=「誰かのために、ある価値を生み出す“仕事の単位”」**だよ😊✨ たとえば学内フリマなら…

  • 「出品できるようにする」🛍️
  • 「支払いを成立させる」💳
  • 「発送できるようにする」📦
  • 「トラブルを解決する」🧯

みたいな感じ! ここで大事なのは、画面(UI)やDBのテーブルじゃなくて、“やってる仕事”で考えることだよ🧼✨

BCは「ドメインを理解して分ける」流れの中で作っていく、っていう説明がよくあるよ📚(まずドメイン分析→BC定義、みたいな順番)(Microsoft Learn)


2) なんで能力を並べると、境界候補が見えてくるの?🔎✂️

BCって、いきなり正解が降ってくるものじゃないの🥺 でもね、能力を並べると…

  • “責任”のまとまりが見える👀✨(出品の責任、決済の責任…)
  • ルールが違う場所が見える⚖️(キャンセル規約、手数料、禁止行為…)
  • 言葉の意味がズレる場所が見える🗣️🌀(同じ「ユーザー」でも役割が違う!)

結果として、**「ここで境界切ったほうがよさそう」**が出てくるの🎀 (能力のまとまりとBCを結びつけて考える話は、Capability→BCの方向で語られることが多いよ)(Architecture & Governance Magazine)


3) 能力リストの作り方:5ステップ🪄📝

Step 1:動詞+名詞で書く✍️✨

能力名は **「〜を管理する」「〜を成立させる」「〜を通知する」**みたいに、動きがわかる形にするよ🏃‍♀️💨

  • 出品を登録する🛍️
  • 取引を成立させる🤝
  • 支払いを処理する💳
  • 配送を手配する📦
  • 問い合わせに対応する📩

Step 2:1行説明をつける🧸

「何のための能力?」がブレないように、一言で目的を書くよ😊

例:

  • 支払いを処理する:取引の代金を安全に回収し、支払い状態を確定する💳🔒

Step 3:入出力(きっかけ/結果)をメモする📣➡️🎁

  • きっかけ:購入ボタンが押された🛒
  • 結果:支払い完了になった✅

Step 4:似てるものを束ねる🧩

あとで境界候補にしやすいように、近い仕事をグルーピングするよ📦✨ (この時点では、きれいに分けようとしなくてOK🙆‍♀️)

Step 5:束に“ラベル(仮の名前)”をつける🏷️

例:

  • 出品まわり →「Listing(出品)」

  • 取引まわり →「Trading(取引)」

  • 配送まわり →「Shipping(配送)」

  • 束に“ラベル(仮の名前)”をつける🏷️

※このラベルが、後でBC名の候補になりやすいよ🎯


4) 学内フリマ例:能力リスト(ざっくり版)🏫🛍️✨

まずは “多めに” 出すのがコツだよ🌈(削るのは後でOK✂️)

能力(動詞+名詞)1行で目的よく出てくる言葉(例)
出品を登録する🛍️商品を公開できるようにする出品、商品、価格、画像
出品を審査する🕵️‍♀️規約違反を防ぐ禁止品、通報、公開/非公開
検索・閲覧を提供する🔎欲しい物を見つけやすくするカテゴリ、キーワード、並び替え
取引を開始する🤝購入意思を確定して取引を作る購入、取引、在庫
支払いを処理する💳代金を回収して状態を確定する支払い、手数料、決済状態
発送を手配する📦配送情報を確定し発送へ進める住所、配送方法、追跡
受け取り完了にする✅取引を完了状態へ受取、評価、完了
返金・キャンセルを処理する↩️例外対応を安全に行うキャンセル、返金、期限
問い合わせに対応する📩困りごとを解決する問い合わせ、チケット、対応履歴
通知する🔔状態変化を関係者へ伝えるメール、プッシュ、通知履歴
学内本人確認を扱う🪪学内ユーザーとしての信頼を担保する学籍、認証、権限
不正・荒らしを防止する🧯安全な場を守る通報、制限、凍結

この表は、後の章(イベント、ルール、データ寿命…)で “切り口” を増やして、境界案に育てていくよ🌱✨


5) 便利な「能力カード」テンプレ🃏✨

能力を1枚カードとして扱うと、境界を考えるときに超ラクだよ😊

  • 能力名(動詞+名詞):
  • 目的(1行):
  • 主な登場人物(誰が使う?):
  • きっかけ(何が起きたら動く?):
  • 結果(終わったら何が残る?):
  • 大事なルール(3つまで):
  • 大事なデータ(名詞で):
  • 外部に頼るもの(あれば):

6) ミニ演習(この章の“手を動かす”パート)📝💪✨

演習A:能力を12個出してみよう🌈

学内フリマで、上の表を参考にしつつ 最低12個 書くよ🧸 ポイントは「細かすぎなくてOK」🙆‍♀️ (例:通知は1つにまとめてOK、まずは粗く!)

演習B:3〜5グループに束ねよう📦📦📦

出した能力を、直感でいいから束ねてね😊 例:

  • 出品まわり🛍️
  • 取引まわり🤝
  • 配送まわり📦
  • サポート/安全まわり🧯
  • アカウント/信頼まわり🪪

演習C:用語がズレそうな単語に★を付けよう⭐

同じ言葉でも意味が変わりやすい単語に★をつけてね✨ 例:

  • ユーザー★(購入者?出品者?運営?)
  • 状態★(支払い状態?配送状態?取引状態?)
  • キャンセル★(購入側?運営側?期限は?)

この★が増える場所は、境界の匂いがしやすいよ👃💡


7) AI相棒🤖✨に投げる質問テンプレ(コピペOK)

テンプレ1:能力を“動詞+名詞”で増やす🧠💥

学内フリマのドメインで、業務のかたまり(能力)を「動詞+名詞」で20個出して。
UIやDBではなく業務の責任で。重複しそうなら似ているものもあえて出してOK。
各能力に1行の目的も付けて。

テンプレ2:能力をグルーピングして“境界候補”を作る📦🏷️

この能力リストを3〜5グループにまとめて、各グループに境界候補の名前を付けて。
「なぜそのまとまりか」を1〜2行で説明して。
用語が衝突しそうな単語があれば列挙して。

テンプレ3:“混ぜると事故りそう”を指摘させる🚑⚠️

この能力リストで、同じモデル(例:User, Order, Status)を共有すると壊れそうな箇所を指摘して。
「何がズレるか」を具体例つきで。

8) よくある失敗あるある😵‍💫➡️🙂

失敗1:画面ごとに能力を作っちゃう📱

  • ❌「出品画面」「購入画面」
  • ✅「出品を登録する」「取引を開始する」 画面は変わりやすいけど、業務の責任は比較的安定しやすいよ🧱✨

失敗2:技術の都合で切っちゃう🗄️

  • ❌「DBアクセス」「API層」
  • ✅「支払いを処理する」「返金を処理する」 技術はあとから変えられるけど、業務の責任がブレると設計が迷子になりやすいよ🧭💦

失敗3:細かすぎて“能力100個”になる🐜

最初は粗くてOK🙆‍♀️ 次の章以降で、イベントやルールを見ながら自然に分割が起きるよ🌱


9) この章の成果物📦✨

  • 能力リスト(12個以上)📝
  • 3〜5のグループ分け(仮でOK)📦
  • ★マーク付きの「ズレそう単語リスト」⭐

10) 小さな最新メモ(今のTypeScriptの流れ)🧸💻🌱

  • npm上のTypeScriptは 5.9.3 がLatestとして表示されているよ(2025-09-30公開、直近数か月はこのラインが安定版として扱われている状態)(npm)
  • それとは別に、ネイティブ実装のプレビューが公開されていて、TypeScript 7に向けた進捗も公式ブログで継続的に共有されているよ🧪🚀(Microsoft for Developers)

(この章の作業自体は“業務の切り分け”なので、ここは「へぇ〜」くらいでOKだよ😊)


まとめ🧁✨

能力(業務のかたまり)を並べると、境界の材料がそろうよ🧺 次の章からは、その材料を **「イベント」「ルール」**みたいな切り口でさらに強くしていくよ📣⚖️✨