銀行エンジニアリング 39:連結(相互勘定の消去は、報告のための計算)
グループ全体の数字を見るときに、なぜグループ内の貸し借りを差し引くのか。その消去を元帳に記帳しない理由と、消去できなかった差の扱いを学びます。
v8以降に実装した台帳・記帳エンジンなどを実際に動かし、正常時と異常時の両方から銀行システムの構造を学ぶ。
Prerequisite: BANKING SYSTEMLEARNING GOALS
このページで学ぶこと
- 連結と消去の考え方
- スナップショットから連結を作る理由
- 消去しきれない差の見せ方
PLAIN LANGUAGE
まず、ここだけつかむ
連結は、全 entity の確定したスナップショットを合算し、グループ内の貸し借りを差し引く報告のための計算です。
消去は元帳に記帳せず、各 entity の帳簿は変わりません。
消去しきれなかった差は隠さず、理由つきで示します。
DIFFICULT PARTS, STEP BY STEP
難しいポイントを、順番にほどく
専門用語を覚えることより、「なぜ必要か」「このシステムのどこで使うか」を理解することが目標です。
消去
グループ内の債権と債務を、連結上で差し引くことです。
グループの外に対する数字だけを見るためです。
小さい方(min)だけを報告上で差し引く。
確定したスナップショット
その営業日の試算表を確定した記録です。
生の元帳が動いても、連結の入力を固定するためです。
bankgroup.entity_snapshots。借貸不一致なら GR011。
恒等式
資産=負債+資本+当期損益 です。
連結後の数字の整合を確かめるためです。
consolidations の checks。
Level 1 基礎:グループの中の貸し借りは、外から見れば無い
A社がB社に100円を貸しても、グループ全体の資産も負債も増えません。A社の債権とB社の債務を足し合わせると、どちらも100円ずつ膨らんで見えます。連結では、この分を差し引きます。
Level 2 銀行業務:連結の手順と決まり
- 全 entity の、同じ営業日の確定した試算表(スナップショット)を集める。1つでも欠けたら連結できない(GR010)
- 科目コードごとに合算する
- 相手ごとに、債権と債務の小さい方だけを差し引く。受取手数料と支払手数料も同様
- 差し引けなかった残りは科目に残し、理由(移動中/説明のつかない差)を添える
- 資産=負債+資本+当期損益 が成り立つことを検査する
Level 3 システム:MiniBankでの実装
- bankgroup.finalize_snapshot:営業日ごとに entity の試算表を確定する。借貸が一致しなければ確定できない(GR011)。追記専用
- bankgroup.consolidate:確定したスナップショットだけから作る。生の元帳を直接は読まない。結果は追記専用
- 消去は報告上の計算。正式な元帳には消去の仕訳を入れない。連結の前後で、全 entity の元帳が変わらないことをテストで固定している
- 説明のつかない差が残ると、連結の状態は『差異あり』になり、隠さずに示す。連結の時点のグループの照合(基準の銀行の GL と移動、補助元帳)が合わないときも同じ。スナップショットのあとに元帳が動いた entity も示す
異常時:連結後の数字がおかしい
| 段階 | 内容 |
|---|---|
| 症状 | 連結後にグループ内債権が残る/資産と負債+資本が合わない |
| 確認1 | 消去の明細:消去した分と、残した差(移動中・説明のつかない差) |
| 確認2 | その営業日のスナップショットは、移動を受け取る前後どちらで確定したか |
| 確認3 | グループの照合(bankgroup.reconcile)で、説明のつかない差がないか |
Level 4 アーキテクチャ:報告と記録を分ける
連結は『見せ方』の計算で、各 entity の正式な帳簿を書き換えません。書き換えないから、何度作り直しても元の数字は変わらず、あとで消去の考え方を改めても過去の帳簿は無傷です。MiniBankは連結の会計基準(少数株主持分、為替換算、持分法など)を扱いません。教育のための最小の連結です。
どこを確認すればよいか
- 管理画面『グループ・連結』:スナップショット、最新の連結、消去の明細
- テスト:欠ける entity、借貸不一致、消去の金額、差異の表示、連結前後で元帳が不変
CHECK YOUR UNDERSTANDING
3問で理解チェック
答えを頭の中で考えてから、各項目を開いて確認してください。
Q11つの entity のスナップショットが無いと?
連結できません(GR010)。
Q2消去は元帳に記帳されますか?
いいえ。報告上の計算です。
Q3説明のつかない差が残ったとき、連結の状態は?
『差異あり』と示されます。
完全に暗記する必要はありません。大切な考え方を説明できそうなら押してください。
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-transfer-reconcileグループ内の移動と照合
- RELATED LESSON/docs/be-financial-statements財務諸表
- CURRENT IMPLEMENTATION
supabase/migrations/20260930150000_v19_group.sqlbankgroup.finalize_snapshot営業日ごとに entity の試算表を確定する(借貸が一致しなければ GR011) - CURRENT IMPLEMENTATION
supabase/migrations/20260930150000_v19_group.sqlbankgroup.consolidate全 entity の確定したスナップショットから、相互勘定を報告上だけ消去して連結する(欠ける entity があれば GR010) - CURRENT IMPLEMENTATION
scripts/banking/v19-group.test.mjs権限の分離・2段階の移動・片側だけ確定した場合・停止・照合・連結と元帳の不変のDBテスト