銀行エンジニアリング Lab 12:Group Lab(entity → 移動 → 照合 → 連結)
追加の entity に資本金を入れ、entity 間で資金を送り、片側だけ確定した状態を作って解消し、スナップショットから連結して消去を確かめます。
v8以降に実装した台帳・記帳エンジンなどを実際に動かし、正常時と異常時の両方から銀行システムの構造を学ぶ。
Prerequisite: BANKING SYSTEMLEARNING GOALS
このページで学ぶこと
- 2段階の移動と役割の分離
- 片側だけ確定した移動の解消
- 連結の消去と元帳の不変
PLAIN LANGUAGE
まず、ここだけつかむ
entity の役割、2段階の移動、片側だけ確定した移動の解消、連結の消去を、順に確かめます。
完了と表示されるのは、両側の記帳が揃ったときだけであることを確かめます。
連結の前後で、各 entity の元帳が変わらないことを確かめます。
DIFFICULT PARTS, STEP BY STEP
難しいポイントを、順番にほどく
専門用語を覚えることより、「なぜ必要か」「このシステムのどこで使うか」を理解することが目標です。
sweep
受取りに失敗して残った移動を、照合待ちにすることです。
放置された移動を見えるようにするためです。
bankgroup.sweep。グループ管理者だけ。
逆仕訳による取消し
元の仕訳を残したまま、反対の仕訳で打ち消すことです。
記録を消さずに訂正するためです。
cancel_send。
元帳の不変
連結しても、各 entity の帳簿が変わらないことです。
報告と記録を分けるためです。
連結の前後で件数と試算表が同じ、とテストで固定。
準備
ローカルの検証用DBを用意し、管理画面『グループ・連結』を開きます。役割の付与はグループ管理者(admin_manager)で行います。
open 'http://localhost:54336/local/login?as=admin_manager&next=/admin/group'演習
| 演習 | 操作 | 観察すること |
|---|---|---|
| 1. 役割 | operator に WEST の担当者の役割を付与し、TRUST を開く | TRUST は見えない(GR002)。取り消すと、次の呼び出しから見えなくなる |
| 2. 資本金 | WEST の責任者で資本金を払い込む | 現金と資本金の仕訳。同じキーの再実行は同じ結果 |
| 3. 送る | WEST から TRUST へ資金の貸出を送る | 送り手の仕訳だけ確定。移動は『受取り待ち』。受け手の元帳は変わらない |
| 4. 受け取る | 送り手の役割で受け取りを試し、その後 TRUST の責任者で受け取る | 送り手の役割では受け取れない。受け取ると『完了』 |
| 5. 片側だけ確定 | WEST から TRUST へ送り、TRUST を停止して、受け取りを試み(まとめて受け取る)、sweep する | 受け取りが失敗した移動が『照合待ち』になる。完了とは出ない。運用センターにも出る(移動の ID だけ。詳細はこの画面) |
| 6. 解消 | TRUST を再開して retry_receive、または cancel_send | どちらも理由が必要。取り消すと、送り手の逆仕訳が入る |
| 7. 連結 | 全 entity のスナップショットを確定して連結 | 相互勘定が消去され、残った差の理由が示される。各 entity の元帳は変わらない |
振り返り
- 移動が『完了』と表示されるのは、どの状態のときか
- 連結の消去を元帳に記帳しないと、何が守られるか
CHECK YOUR UNDERSTANDING
3問で理解チェック
答えを頭の中で考えてから、各項目を開いて確認してください。
Q1停止中の entity へ送るとどうなりますか?
受け取れず、sweep で照合待ちになります。
Q2取り消した移動の、元の仕訳はどうなりますか?
残り、逆仕訳が加わります。
Q3連結を何度作っても、entity の元帳は?
変わりません。
完全に暗記する必要はありません。大切な考え方を説明できそうなら押してください。
SOURCE TRAIL
根拠と関連教材
CURRENT IMPLEMENTATIONは確認したrepository内の実装です。HISTORICAL IMPLEMENTATIONは導入・修正の履歴で、後続migrationによる再定義があり得ます。RELATED LESSONは教材への案内で、実装の一次Sourceではありません。ASSUMPTIONは仮定、UNKNOWNは未確認を表します。
確認基点: d02eae8914f39cbf06bfe422dc39c71886f82b3e / 2026-09-11。稼働環境への適用確認: UNKNOWN。パス実在の自動検査と、記述した技術的事実の確認は別です。
Implementation Status: IMPLEMENTED IN MINIBANK(この教材が扱うコードの範囲)
- RELATED LESSON/docs/be-group-entity-ledgerentity と権限
- RELATED LESSON/docs/be-group-transfer-reconcileグループ内の移動と照合
- RELATED LESSON/docs/be-group-consolidation連結
- CURRENT IMPLEMENTATION
src/app/admin/(protected)/group/page.tsxGroupPage()管理画面 グループ・連結(表示は GroupAdminView) - CURRENT IMPLEMENTATION
scripts/banking/v19-group.test.mjs権限の分離・2段階の移動・片側だけ確定した場合・停止・照合・連結と元帳の不変のDBテスト