MiniBankv13

MiniBankv13CORE BANKING / ACCOUNTING / SECURITY / OPERATIONS

振込のボタンから、GL・AML・ALMまで。銀行の「裏側」まで、つくった。

画面個人口座、法人口座、振込、権限管理、MFA。

裏側その先にある、仕訳、GL、照合、締め処理、AML、運用、Treasury / ALMまで。

MiniBank v13は、銀行らしい画面を再現したデモではありません。

1件の取引が、認証され、権限を確認され、記帳され、残高へ反映され、仕訳となり、GLへつながり、照合され、運用される。

その一連の仕組みを、実際に動くシステムとして積み上げてきた個人開発プロジェクトです。

Finance × Engineering × AI Development経理・財務の視点から、AIとともに銀行システムを13世代にわたって拡張してきた。

WHAT MINIBANK DOES10 operations

  1. PERSONAL口座を開く。
  2. PERSONALお金を振り込む。
  3. CORPORATE会社の支払いを申請し、別の担当者が承認する。
  4. LEDGER取引を仕訳へ変換し、台帳へ記録する。
  5. INTERBANK他の銀行へ送る取引を決済する。
  6. ACCOUNTING一日の取引を締め、試算表・BS・PLを確認する。
  7. AML不審な取引を検知し、証拠を集め、判断する。
  8. OPERATIONS結果不明の取引や差異を、運用担当者が追跡する。
  9. TREASURY預金が流出したら、銀行にいくら資金が必要になるのかを計算する。
  10. ALM金利が変わったら、調達コストや収益がどう動くのかを見る。
  • PERSONAL BANKING
  • CORPORATE BANKING
  • LEDGER / POSTING
  • INTERBANK PAYMENT
  • BANK ACCOUNTING
  • AML
  • OPERATIONS CENTER
  • TREASURY / ALM
  • ARCHITECTURE
  • MINIBANK ACADEMY

見えるのは銀行画面。つくったのは、その後ろで銀行を動かす仕組みです。

MiniBankは学習・研究・検証用のシミュレーションです。実際の預金を受け入れたり、実資金を送金したりする銀行サービスではありません。

MiniBank System Overview

銀行という巨大な仕組みを、小さなシステムの中でつなげました。

利用者が見る画面から、その裏側にある認証、権限、取引制御、台帳、仕訳、銀行間決済、会計、AML、日次運用、障害対応、資金管理まで。

さらに、それらを読み解くArchitectureとAcademyまで。

  • 13段階の進化v1 → v13
  • 9Academy コース9 Courses
  • 107レッスン107 Lessons
  • 226Privilege Tests PASS226 / 226

CHANNEL

BANK CORE

OPERATE

UNDERSTAND

PERSONAL BANKINGv1–v2個人向け銀行利用者登録・ログイン本人確認申請・KYC審査口座開設・凍結・解除・利用停止普通預金・入出金履歴振込先登録・振込MFA / TOTP定期預金章 01–03 CORPORATE BANKINGv3–v5法人向け銀行法人口座・法人メンバーRole / PermissionMaker / Checker指定日支払重要設定変更の二者確認法人全体の日次上限章 04–07 LEDGER / POSTINGv8台帳・記帳基盤Business EventPosting RuleJournal EntryLedger逆仕訳Integrity Check章 10–11 / 17–18 INTERBANK PAYMENTv9銀行間決済Participant BankClearingSettlement中央銀行預け金RESULT_UNKNOWN の照会章 19–21 BANK ACCOUNTINGv10銀行会計・決算General LedgerTrial BalanceBalance SheetProfit & Loss補助元帳照合日次・月次締め章 22–24 AMLv11不正・AMLScanAlertCaseInvestigationEvidenceDecision章 25–26 OPERATIONS CENTERv6–v7 / v12日次運用・障害対応論理営業日・EOD / BODReconciliation調査案件・復旧Backup / RestoreSystem StatusException / Approval QueueTrace・Incident・Runbook章 12–16 / 27–29 TREASURY / ALMv13資金繰り・ALM預金流出シナリオ必要調達額・調達コストInterest Rate ShockNIIWhat-ifGL → ALM → Posting章 30–34 ARCHITECTURE構造と責任分界Customer / Corporate / Admin UINext.js / TypeScriptPostgREST / Business RPCPostgreSQL Business LogicJava / Spring Boot Payment Service章 38–40 MINIBANK ACADEMY学習コンテンツ9 Courses107 LessonsBank Engineering 29 Lessons6 Labs章 41–46 TRANSACTION INTEGRITYIdempotencyConcurrencyRESULT_UNKNOWNReversalIntegrity Check全領域を横断SECURITY & CONTROL認証認可RLSDatabase PrivilegeRPCFail ClosedMFAMaker / Checker監査記録全領域を横断
概念図MiniBankを構成する領域と、各領域を横断する仕組み。各ブロックから該当章へ移動できます。

銀行は、「振込ボタン」だけではできていない。

UIモック(概念図)

送金ボタンを押した。

画面に「成功」と表示された。

それだけで、本当に銀行システムは完成なのでしょうか。

  1. その人は、本当にその口座を操作してよいのか。
  2. 本人確認は終わっているのか。
  3. 口座は利用可能なのか。
  4. 振込額は限度額以内なのか。
  5. 同じボタンを二度押しても、二重に送金されないか。
  6. 同じ口座から同時に二つの支払いが走ったらどうなるのか。
  7. データベースでは成功したのに、通信が切れて結果が画面へ届かなかったらどうするのか。
  8. 帳簿と残高が違っていたら、どちらを正しいと考えるのか。
  9. 法人なら、申請した本人がそのまま承認してよいのか。
  10. 他の銀行へ送るお金は、いつ「決済済み」になるのか。
  11. 一日が終わったとき、本当に帳簿は合っているのか。
  12. 不審な取引を見つけたら、いきなり口座を止めてよいのか。
  13. システム障害の後、どこから安全に再開できるのか。
  14. 預金が大量に流出したら、銀行はいくら資金を調達する必要があるのか。

MiniBankが作ってきたのは、

こうした「画面の先にある問題」を扱う仕組みです。

PART ICustomer Banking

まずは、銀行を使うところから。

MiniBankには、利用者として銀行を体験するための機能があります。

しかし、残高を表示するだけの銀行デモではありません。

利用者が行った操作が、その後の取引記録や台帳までつながることを重視しています。

第1章 Personal Banking

アカウント・本人確認・口座から、振込まで。

アカウント・本人確認・口座

  1. 利用者登録。
  2. ログイン。
  3. 本人確認申請。
  4. 銀行側によるKYC審査。
  5. 口座開設。
  6. 口座状態の確認。
  7. 凍結。
  8. 解除。
  9. 利用停止。
  1. GATE 1「ログインできること」
  2. GATE 2「本人確認済みであること」
  3. GATE 3「その口座を操作できること」
  4. GATE 4「その口座で取引できること」
概念図「ログインできる」から「取引できる」までは、それぞれ別の条件。

は、それぞれ別の条件です。

画面を開けたからといって、金融取引まで許可されるわけではありません。

MiniBankの個人向けホーム画面。普通預金残高、口座番号、口座状態「利用中」、本人確認「確認済み」が表示されている。
実際のMiniBank画面個人向けホーム画面。普通預金残高とあわせて、口座状態・本人確認の状況が表示されます(撮影時点の画面・学習用のサンプルデータ)。

普通預金

  • 口座残高。
  • 入出金履歴。
  • 取引明細。
  • 取引状態。
  • 銀行側からの入出金。
  • 仕訳確認。

利用者に見える残高と、その裏側の銀行の記録をつなげます。

振込先登録・振込

  1. 振込先を登録する。
  2. 振込金額を入力する。
  3. 内容を確認する。
  4. 認証を行う。
  5. 振込を実行する。
  6. 履歴を確認する。

ここでも「送る」だけでは終わりません。

金融更新の前に確認すること

  • 振込先。
  • 残高。
  • 口座状態。
  • 利用上限。
  • 認証状態。
  • 重複した依頼。

これらを確認してから金融更新へ進みます。

MiniBankの振込画面。振込先入力・内容確認・本人認証・完了の4ステップと、本日の残り枠、1回・1日の振込限度額が表示されている。
実際のMiniBank画面振込画面。振込先入力 → 内容確認 → 本人認証 → 完了の4ステップと、振込限度額が表示されます(撮影時点の画面)。

第2章 MFA / TOTP

パスワードだけで、振込を確定しない。

MiniBankでは、振込認可にTOTPを利用したMFAフローを組み込んでいます。

  1. ENROLL認証アプリへ登録し、
  2. VERIFYTOTPを検証し、
  3. AUTH LEVEL必要な認証レベルを満たしたうえで、
  4. TRANSFER振込処理へ進む。
概念図認証を満たしてから、振込処理へ進む。

単に入力欄に6桁の数字を入れているだけではありません。

認証と金融取引を分けて考える。

その考え方まで含めて実装しています。

実在銀行の本人認証方式を完全に再現するものではありません。

第3章 Time Deposit

普通預金だけではなく、預金商品まで。

MiniBankでは定期預金も扱います。

  • 定期預金の作成。
  • 保有状況。
  • 解約。
  • 満期。
  • 元本返却。
  • 利息。
  • そして、それに伴う仕訳。

「定期預金残高」という数字を画面へ表示するだけではありません。

  1. ORDINARY普通預金資金を移す
  2. TIME DEPOSIT定期預金銀行の内部記録も変わる
  3. MATURITY満期元本と利息が動く
  4. JOURNAL仕訳銀行側の会計へ
概念図利用者の商品状態と、銀行側の会計をつなげる。

普通預金から定期預金へ資金が移れば、銀行の内部記録も変わる。

満期になれば元本と利息が動く。

利用者の商品状態と、銀行側の会計をつなげます。

利息計算は学習用の簡略化されたモデルです。

PART IICorporate Banking

会社のお金は、一人で動かさない。

個人向け銀行機能に会社名を付けただけではありません。

法人では、「会社」と「操作する人」を分けます。

第4章 Corporate Banking

「会社」と「操作する人」を分ける。

OWNER法人口座の所有者
  • USER ID担当者 A
  • USER ID担当者 B
  • USER ID担当者 C
概念図口座の所有者は法人。操作するのは、ユーザーIDを持った担当者。

口座の所有者は法人。

操作するのは、それぞれのユーザーIDを持った担当者です。

Role / Permission

法人ユーザーの役割は、実装上4つです。

  • viewer閲覧者
  • operator振込担当者
  • approver承認者
  • manager法人管理者

役割によって操作できる機能を分けます。

同じ法人に所属しているからといって、全員が同じ操作をできるわけではありません。

BANK SIDE — 法人Roleとは別

  • operatorオペレーター
  • admin_manager管理責任者

銀行側の担当者は、法人のRoleとは別に、銀行の管理者Role(オペレーター/管理責任者)として扱います。

第5章 Maker / Checker

申請した人が、そのまま自分で承認しない。

法人支払では、申請・承認・実行を分離します。

  1. MAKER申請支払依頼を作った時点では、お金は動きません。
  2. CHECKER承認別の担当者が内容を確認する。
  3. EXECUTE実行承認された内容に基づいて実行する。
概念図申請・承認・実行の分離。承認後に内容が変われば、以前の承認は使わせない。
  • 金額や振込先を後から変えれば、以前の承認をそのまま使わせない。
  • 担当者の権限が変われば、それも取引条件に反映する。

銀行システムだけでなく、

企業内部統制の考え方

まで扱っています。

第6章 Scheduled Payment

支払日と実行日は、同じではない。

指定日付きの支払依頼も扱います。

  1. REQUESTED申請日
  2. BEFORE VALUE DATE指定日前実行を拒否する
  3. VALUE DATE指定日
  4. EXECUTED実行日実際に実行された日を記録する
概念図申請日・指定日・実行日。この3つを分けます。

申請日。指定日。実行日。この3つを分けます。

指定日前なら実行を拒否する。

指定日を過ぎてから実行したなら、実際に実行された日を記録する。

そして、指定日になったからといって無条件に送金するわけではありません。

実行時にも、

  • 権限。
  • 口座状態。
  • 残高。
  • 限度額。

などを確認します。

自動振込サービスではなく、学習用の指定日支払フローです。

第7章 Corporate Control

支払いだけ厳しくしても、統制にはならない。

  • 限度額を一人で自由に変更できたらどうでしょう。
  • 担当者の権限を一人で変更できたらどうでしょう。

MiniBankでは、支払いだけでなく、

  • 法人メンバー。MAKER + CHECKER
  • 権限。MAKER + CHECKER
  • 限度額。MAKER + CHECKER
  • 重要な設定変更。MAKER + CHECKER
概念図支払い以外の操作にも、二者確認の考え方を入れる。

こうした操作にも二者確認の考え方を入れています。

法人全体の日次上限も、口座や担当者を分けるだけで簡単に回避できないように扱います。

PART IIITransaction Integrity

取引の正しさを、画面の外で守る。

Idempotency・Concurrency・RESULT_UNKNOWN・逆仕訳・Ledger。

第8章 Idempotency / Concurrency

同じ依頼を、二重の送金にしない。

金融システムでは、

「ボタンを二回押した」

「通信が切れて再送した」

だけで二重送金になってはいけません。

MiniBankでは、依頼を識別するキーを使います。

同じ依頼が再び届いたとき、

REQUESTkey: 同じキー同じ依頼が再び届いた
SAME KEY · SAME CONTENTすでに処理済みなら既存結果を返す。
SAME KEY · DIFFERENT CONTENT同じキーなのに内容だけ違うなら拒否する。
概念図依頼を識別するキーで、再送を安全に扱う。

同時に処理されたら?

PROCESS A古い残高を読む引き落とす
PROCESS B同じ古い残高を読む引き落とす
BALANCE残高は壊れます。
概念図二つの処理が同じ古い残高を読むと、残高は壊れる。

二つの処理が同じ古い残高を読み、

それぞれが勝手に引き落としたら、

残高は壊れます。

そのためMiniBankでは、

重要な金融更新をデータベース側で制御します。

  • 残高確認。
  • 口座状態。
  • 限度額。
  • 金融記録。

これらをバラバラに更新するのではなく、必要な単位で整合させます。

第9章 Result Unknown

エラーになった。
だから失敗した。
……とは限らない。

これはMiniBankで特に重視している考え方です。

  1. DATABASEデータベースでは送金が完了した。
  2. NETWORKしかし、その直後に通信が切れた。
  3. SCREEN利用者の画面にはエラーが出た。
概念図DBでは完了、画面ではエラー。このとき安易に再送すると二重送金になり得る。

このとき、

「失敗したから、もう一度送ろう」

と考えると、

二重送金になる可能性があります。

そこでMiniBankでは、

  • SUCCESS
  • FAILED
  • RESULT_UNKNOWN

を区別します。

結果が分からなければ、

  1. まず元の依頼を照会する。
  2. 確定済みなら、その結果を取得する。
  3. 分からないからといって、安易に再送しない。

金融システムでは、

「分からない状態」を正しく扱うこと自体が機能です。

第10章 Reversal

間違いを、履歴ごと消さない。

銀行の帳簿で、

都合の悪い取引を削除してしまったら、

何が起きたのか後から分からなくなります。

MiniBankでは、訂正が必要な場合、

元の仕訳を残したうえで、

反対方向の仕訳を追加する

逆仕訳

を扱います。

逆仕訳の考え方
記録借方貸方扱い
元の仕訳勘定 X勘定 Y残す
逆仕訳勘定 Y勘定 X追加(反対方向)
概念図元の仕訳は削除せず、反対方向の仕訳を追加する。
  • 元の記録。
  • 訂正。
  • 訂正理由。

何が起きたのかを後から追えることを重視します。

第11章 Ledger

残高の裏側には、帳簿がある。

MiniBankは、

口座テーブルの残高数字だけを増減させるアプリではありません。

取引の裏側には、

銀行側の台帳があります。

CUSTOMER VIEW顧客の普通預金資産
BANK VIEW銀行から見れば負債
概念図同じ預金が、顧客から見れば資産、銀行から見れば負債。
  • 顧客の普通預金は、顧客にとっては「資産」。銀行から見れば「負債」。
  • 利息を払えば、銀行側には費用が発生する。
  • 定期預金へ資金を移せば、銀行内部でも勘定間の動きが生じる。

顧客に見えるお金の動きと、銀行側の会計をつなぐ。

ここは、経理・財務の視点からMiniBankを見ると特に面白い部分です。

PART IVBusiness Day / Recovery

銀行の一日を締め、問題の後まで扱う。

論理営業日・EOD / BOD・照合・調査・Backup / Restore。

第12章 Business Day

銀行の一日は、0時になっただけでは終わらない。

MiniBankには、システムが管理する論理営業日があります。

  1. OPEN営業中。
  2. CLOSING締め処理開始。
  3. EOD日次処理。
  4. RECONCILE照合。
  5. REVIEW確認。
  6. CLOSED営業日終了。
  7. BOD翌営業日開始。
金融取引を受け付ける新しい金融更新を止める(結果の確認は止めない)
概念図論理営業日の流れ。締め処理が始まれば、新しい金融更新を止める。

という流れを管理します。

締め処理が始まれば、新しい金融更新を止める。

一方で、すでに依頼された取引の結果確認まで止めてしまうわけではない。

「金融取引を受け付ける時間」と「結果を確認すること」を分けます。

第13章 EOD / BOD

一日を締める。
翌日を始める。

End of Day。Beginning of Day。

MiniBankでは、単なる日付更新ではなく、銀行業務として扱います。

  • 定期預金の満期処理。
  • 取引状況。
  • 帳簿。
  • 残高。
  • 各種照合。
  • 異常の有無。
概念図必要な日次処理を確認してから締める。

必要な日次処理を確認してから締める。

問題があれば、

「なかったこと」にせず、

調査対象へ回します。

第14章 Reconciliation

帳簿と残高は、本当に合っているか。

金融システムでは、

複数の場所に似た数字が存在します。

  • 台帳。
  • 表示用残高。
  • 業務取引。
  • 商品残高。
  • 補助元帳。
RECONCILIATION一致しているか差異 → 運用上の問題として扱う
概念図複数の場所にある似た数字が、一致しているかを確認する。

これらが一致しているか確認する。

それが照合です。

MiniBankでは、

「画面上の残高がそれっぽい」

だけで正常とは判断しません。

差異を検出したら、

それ自体を運用上の問題として扱います。

第15章 Investigation / Recovery

問題が起きた後までが、システム。

  • 日次処理の失敗。
  • 支払予定の問題。
  • 残高差異。
  • 結果不明。

こうしたものを調査案件として扱います。

  1. 根拠を残す。
  2. 履歴を残す。
  3. 別担当者が確認する。

そして、

CASE案件を「完了」にする
≠
MONEYお金を動かす
概念図案件の完了と、お金を動かすことは別の操作。

案件を「完了」にすることと、お金を動かすことを分離する。

調査画面で完了ボタンを押したからといって、

金融記録まで都合よく書き換わるわけではありません。

第16章 Backup / Restore

バックアップがあることと、
安全に再開できることは違う。

バックアップを復元できた。

アプリも起動した。

だから復旧完了。

……ではありません。

  • そのバックアップの後に成立した取引はどうなるのか。
  • 台帳は正しいか。
  • 残高は正しいか。
  • 権限は戻っているか。
  • 監査記録は残っているか。
  • 同じ取引を再度送ったらどうなるのか。
  1. RESTORE隔離した検証環境で復元
  2. RECONCILE復元後のデータを照合
  3. SAFE RESTART?安全に金融更新を再開できる状態か
概念図「起動できる」と「安全に再開できる」の間にある確認。

MiniBankでは隔離した検証環境で、

復元後のデータを照合し、

安全に金融更新を再開できる状態かを確認する考え方まで扱っています。

起動できることと、安全に再開できることを分ける。

これも金融システムの重要なテーマです。

PART Vv8 – v10 · Posting / Interbank / Accounting

v8〜v13:銀行の内側へ。

v8 Ledger & Posting Engine から、v13 Treasury / ALM Simulator まで。

第17章 Ledger & Posting Enginev8

そしてMiniBankは、
「仕訳を書くアプリ」から
「仕訳を生み出す基盤」へ。

v8では、Ledger & Posting Engineを追加しました。

それまで各業務の中に存在していた記帳を、

より体系的な仕組みとして扱います。

Business Event
業務で何が起きたのか。
Posting Rule
そのイベントなら、どの勘定へ、どちら側に、いくら記帳するのか。
Journal
ルールによって生成された仕訳。
Ledger
それらを積み上げる銀行の帳簿。
  1. BUSINESS EVENT業務で何が起きたか
  2. POSTING RULEどの勘定へ・どちら側に・いくら
  3. JOURNAL ENTRY生成された仕訳借方 / 貸方
  4. LEDGER銀行の帳簿
概念図Posting Engine:業務イベントからルールで仕訳を生成し、帳簿へ積み上げる。

つまり、Business Event → Posting Rule → Journal Entry → Ledger という流れです。

「振込処理のコードの中で仕訳を書いた」

だけではありません。

銀行取引を会計記録へ変換する仕組みそのものを、一つの基盤として扱う。

MiniBankはここで、一段階違うシステムになりました。

第18章 Integrity Check

記帳できれば、それで終わりではない。

Posting Engineでは、

帳簿そのものの整合性も確認します。

  • 残高。
  • 元帳。
  • 仕訳。
  • 勘定。
  • 取引記録。
INTEGRITY ISSUE → CLOSINGBLOCKED運用者に対応を求める
概念図整合性チェックで問題が見つかった締めは、CLOSEDではなくBLOCKEDとして記録される。

差異を抱えたまま締め処理を完了させてしまえば、

問題を含んだ帳簿が「締めた結果」として残ってしまいます。

だから、

異常を検知したら、締め処理を完了させない。

整合性チェックで問題が見つかった日次・月次の締めは、

CLOSEDではなくBLOCKEDとして記録し、

運用者に対応を求めます。

「とりあえず締める」ではなく、

金融システムでは安全側に倒すことも重要な設計です。

第19章 Interbank Payment Simulatorv9

MiniBankの中だけで終わらない。
他の銀行へ送る。

v9では、Interbank Payment Simulatorを追加しました。

MiniBank内部の口座振替だけでなく、

別の銀行へ送金するケースを扱います。

Participant Bank
架空の参加銀行。
Interbank Payment
他行宛の支払。
Clearing
誰から誰へ、いくら送るのかを整理する。
Settlement
実際の銀行間資金決済を確定する。

MiniBankでは、この流れを学習用にシミュレーションします。

実際の銀行ネットワークへ接続するわけではありません。

しかし、

自分の銀行内だけで残高を減らせば他行送金が終わるわけではない

という重要な考え方を、動く形で扱います。

第20章 Central Bank Money

顧客の預金と、銀行同士のお金は同じではない。

MINIBANK顧客A顧客の預金(銀行内部の帳簿)
INTERBANK PAYMENT銀行間支払CENTRAL BANK中央銀行預け金銀行側の決済用資金
PARTICIPANT BANK顧客B架空の参加銀行
概念図顧客の振込(銀行内の帳簿)と、銀行間の資金決済(中央銀行預け金)を分けて考える。架空の参加銀行によるシミュレーション。

顧客Aから顧客Bへ送る。

二人が同じ銀行なら、銀行内部の帳簿で完結できます。

しかし、相手が別の銀行なら、銀行同士の決済が必要になります。

そこで登場するのが、銀行側の決済用資金です。

MiniBankでは、銀行間支払と中央銀行預け金を意識した勘定をつなぎます。

これにより、

顧客の振込
と
銀行間の資金決済

を分けて考えられます。

第21章 RESULT_UNKNOWN — Interbank

他行送金で、結果が分からない。
だからもう一度送る。
……は危険です。

v9では、銀行間決済でも RESULT_UNKNOWN を重要な状態として扱います。

送信した。

しかし返答がない。

この状態で同じ決済を再送したら、

二重決済になる可能性があります。

そこで、再送ではなく照会を行います。

  1. SENT送信した。
  2. RESULT_UNKNOWNしかし返答がない。
  3. INQUIRY照会:相手側・決済側の確定状態を確認する
  4. SETTLED結果に合わせてMiniBank側の状態を解決する
RESEND安易な再送 → 二重決済の可能性
概念図結果不明の取引は、再送ではなく照会で SETTLED へ解決する。

相手側・決済側の確定状態を確認し、

その結果に合わせてMiniBank側の状態を解決する。

実装上も、

結果不明の取引に対して安易な再送をさせず、

照会によってSETTLEDへ解決する流れを用意しています。

第22章 Bank Accounting & Closingv10

銀行取引を、
最後は「銀行の決算」までつなげる。

v10では、Bank Accounting & Closingへ進みました。

BANKING TRANSACTIONS
  • 顧客が振り込んだ。
  • 定期預金を作った。
  • 利息を支払った。
  • 他行から入金があった。
  1. JOURNAL仕訳Posting Engine(v8)
  2. GENERAL LEDGER総勘定元帳
  3. TRIAL BALANCE試算表借方と貸方を確認
  4. BS / PLBalance Sheet / Profit & Loss
概念図銀行取引が仕訳・総勘定元帳を経て、試算表・BS・PLへ集約される。
General Ledger
銀行の総勘定元帳。
Trial Balance
勘定残高を一覧化し、借方と貸方を確認する。
Balance Sheet
資産。負債。純資産。
Profit & Loss
収益。費用。
Subsidiary Ledger Reconciliation
補助元帳とGLの整合を確認する。
Daily Closing
一日の締め。
Monthly Closing
月次の締め。

顧客が振り込んだ。定期預金を作った。利息を支払った。他行から入金があった。

それらは最後に、

銀行の会計へ集約されます。

第23章 Balance Sheet

資産 = 負債 + 純資産

ASSETS資産
LIABILITIES負債
EQUITY純資産
概念図取引を積み上げた結果として、この関係が保たれていること。

これは会計の基本です。

しかし、

画面へ式を書くだけなら簡単です。

重要なのは、

実際の取引を積み上げた結果として、

その関係が保たれていること。

MiniBankでは、

  • GL。
  • 補助元帳。
  • BS。
  • PL。

それぞれをつなぎ、

銀行業務の結果を会計として確認します。

第24章 Closing

締めるということは、
「ボタンを押した」ではない。

  • 日次締め。
  • 月次締め。
  1. 必要な確認を実施する。
  2. 問題があれば警告を残す。
  3. 照合結果を確認する。
  4. そして、締めた状態を記録する。

「会計画面があります」から、「締め処理まで動く」へ。

v10でMiniBankはそこまで広がりました。

PART VIv11 – v13 · AML / Operations / Treasury

v11〜v13:監視し、運用し、資金を管理する。

v11 Fraud / AML Simulator・v12 Banking Operations Center・v13 Treasury / ALM Simulator。

第25章 Fraud / AML Simulatorv11

不審な取引を見つける。
しかし、「怪しい」だけで犯人にしない。

v11では、Fraud / AML Simulatorを追加しました。

Ledgerに記録された取引を監視し、

一定のルールに該当するものを検出します。

しかし、

アラートが出たからといって、

その時点で不正と決めつけるわけではありません。

  1. SCAN取引を監視する。
  2. ALERTルールに該当する取引を検出する。
  3. CASE調査案件を作る。
  4. INVESTIGATION何が起きたかを調べる。
  5. EVIDENCE判断の根拠を集める。
  6. DECISION調査結果を判断する。
概念図検知から判断まで。アラートは調査の入口であり、不正の確定ではない。
Alert≠Fraud

アラートと不正確定を分ける。これはAMLを扱ううえで非常に重要な考え方です。

第26章 Evidence before Decision

証拠なしで、判断しない。

MiniBankのAMLフローでは、

必要な調査を行わないまま、

いきなり判断しようとすると拒否される設計があります。

ALERT → DECISION調査なしで、いきなり判断拒否
INVESTIGATE → EVIDENCE → DECISION調査する。根拠を残す。そのうえで判断する。判断へ
概念図調査・根拠を経ない判断は拒否される。
  1. 調査する。
  2. 根拠を残す。
  3. そのうえで判断する。

誤検知なら、

誤検知として完了する。

「怪しいから自動で口座凍結」

だけの単純な仕組みにしない。

検知・調査・判断・実処理を分けています。

第27章 Banking Operations Centerv12

銀行は、正常時だけ動けばいいわけではない。

v12では、Banking Operations Centerを追加しました。

ここでMiniBankは、

「機能を持つシステム」から

「運用するシステム」

へ進みます。

  • SYSTEM STATUS現在、銀行システムの各業務がどの状態なのか。
  • EXCEPTION QUEUE正常に終わっていないものは何か。
  • APPROVAL QUEUE人の判断を待っているものは何か。
  • RECONCILIATION ISSUE帳簿と補助記録に差異はないか。
  • RESULT_UNKNOWN結果が分からない取引は残っていないか。
  • TRACEその取引は、どこまで処理されたのか。
  • INCIDENT何が起きたのか。
  • RUNBOOKその状況で、何を確認すべきなのか。
UIモック(概念図)Operations Centerが扱う観点を並べた概念図です。実際の画面ではありません。

第28章 Trace

「エラーです」ではなく、
何が起きたかを追う。

金融システムで問題が起きたとき、

ただログを眺めるだけでは判断できないことがあります。

  1. どの依頼なのか。
  2. 誰の取引なのか。
  3. どの処理まで成功したのか。
  4. 仕訳は作られたのか。
  5. 決済は確定したのか。
  6. 結果は利用者へ返ったのか。
概念図取引を「業務の流れ」として追う。

MiniBankでは、

運用画面から原因を追跡するための情報をつなぎます。

取引を「業務の流れ」として追う。

それがOperations Centerの役割です。

第29章 Incident Management

システム障害を、「何となく直った」で終わらせない。

  1. 異常を検知する。
  2. インシデントとして扱う。
  3. 対象を特定する。
  4. 状況を確認する。
  5. 必要な手順を確認する。
  6. 安全な操作だけを行う。
  7. そして、再開できるかを判断する。

MiniBankでは、

問題発生後の運用までをシステム設計の対象にしています。

第30章 Treasury / ALM Simulatorv13

そして、MiniBankは
「銀行の資金繰り」へ。

v13では、Treasury / ALM Simulatorを追加しました。

ここまで来ると、

顧客向け銀行アプリという枠を大きく超えます。

銀行には、資金繰りがある。
  • 預金が減った。
  • 支払いが増えた。
  • 金利が上がった。
  • 調達コストが変わった。

銀行は、

資産と負債を見ながら、

必要な資金を確保しなければなりません。

第31章 Liquidity

預金が流出したら、銀行は大丈夫なのか。

Treasury / ALM Simulatorでは、

預金流出シナリオを設定できます。

預金が20%流出したら。−20%
さらに40%流出したら。−40%
概念図預金流出シナリオの考え方(棒の長さは流出率のイメージ)。
  • 現在の流動性で耐えられるのか。
  • 足りなければ、いくら調達する必要があるのか。
  • その調達に、いくらコストがかかるのか。

数字で確認します。

第32章 Interest Rate Shock

金利が変われば、銀行の収益も変わる。

  1. MARKET RATE ↑市場金利が上昇したら。
  2. FUNDING RATE ↑調達金利が上がったら。
  3. FUNDING COST銀行の資金調達費用はどうなるのか。
  4. NIINet Interest Income、NIIはどう変化するのか。

MiniBankでは、

市場シナリオを使ったWhat-if分析を行います。

第33章 What-if

「もし」を、実際に計算する。

架空の銀行条件を入力し、

再現可能なシナリオとして計算します。

例えば、

預金流出
20%
必要調達額
150万円
調達コスト
5,250円
NIIへの影響
−6,100円
計算例MiniBankの学習用シナリオに基づく計算例(原稿記載の数値)。

さらに流出率を大きくすれば、

資金ショートが発生するケースも確認できます。

これらはMiniBankの学習用シナリオに基づく計算例であり、実在銀行の財務状況や規制指標ではありません。

第34章 GL → ALM

Treasuryは、突然別の数字を使わない。

v13で重要なのは、

ALM画面だけを独立して作ったのではないことです。

  1. v10までに作ったGL。
  2. そこから銀行のポジションを取得する。
  3. 市場シナリオを与える。
  4. 流動性を見る。
  5. 必要調達額を計算する。
  6. 資金取引が必要なら、v8のPosting Engineへつなぐ。
  7. その結果は、再び銀行会計へ反映される。
v8 · v10 · v13と循環します。
  1. GL銀行のポジション
  2. Treasury / ALM市場シナリオ・流動性
  3. Funding必要調達額
  4. Posting Engine資金取引を仕訳へ
  5. GL / BS / PL銀行会計へ反映
概念図GL → Treasury / ALM → Funding → Posting Engine → GL / BS / PL と循環する。

第35章 One Transaction. One Bank.

MiniBankの本当の特徴は、機能の数ではない。

1件の取引を考えてみます。

一つひとつ別々のデモを作ったのではありません。

できる限り、

一つの銀行の中でつなげる。

それがMiniBankの設計思想です。

  1. 利用者がログインする。AUTH
  2. 本人確認・口座状態を確認する。PERSONAL
  3. 振込先と金額を入力する。PERSONAL
  4. MFAで認証する。MFA
  5. 権限・上限・残高を確認する。CONTROL
  6. 振込を確定する。TRANSFER
  7. Posting Engineが仕訳を生成する。POSTING · v8
  8. Ledgerへ記録する。LEDGER · v8
  9. 他行宛ならInterbank Paymentへ進む。INTERBANK · v9
  10. 銀行間決済を行う。SETTLEMENT · v9
  11. GLへ集約する。GL · v10
  12. AMLが取引を監視する。AML · v11
  13. 異常があればAlert / Caseへ。AML · v11
  14. Operations Centerから状態を確認する。OPS · v12
  15. 営業日終了時に照合・Closingを行う。EOD / CLOSING
  16. BS / PLを確認する。BS / PL · v10
  17. Treasury / ALMが銀行全体の流動性・金利影響を見る。ALM · v13
概念図1件の振込が、認証から会計・監視・運用・資金管理まで通っていく経路。

PART VIISecurity & Control

セキュリティと統制、そして監査。

認証・認可・RLS・Database Privilege・RPC・Fail Closed・MFA・Maker / Checker・監査記録。

第36章 Security & Control

セキュリティは、ログイン画面では終わらない。

MiniBankでは、画面を非表示にするだけで権限管理を終わらせません。

  1. L1IDENTITY認証。MFA。
  2. L2ACCESS認可。法人所属。法人ロール。
  3. L3DATABASERLS。データベース権限。RPC。
  4. L4TRANSACTION口座状態。振込限度額。Maker / Checker。
  5. L5EVIDENCE監査記録。
概念図認証から監査記録まで、複数の制御を組み合わせる。

認証。認可。RLS。データベース権限。RPC。口座状態。法人所属。法人ロール。振込限度額。Maker / Checker。MFA。監査記録。

これらを組み合わせます。

UI ONLY見えない画面を非表示にするだけ
ENFORCEDできないRLS・権限・RPCで拒否する
概念図画面で隠すことと、データベースが拒否することは違う。
Row Level Security
そのユーザーが参照できるデータを制限する。
Database Privilege
そのロールが実行できる操作を制限する。
RPC
許可された業務処理を通して更新する。
Fail Closed
必要な設定や認証条件が満たされないとき、「とりあえず通す」のではなく、拒否する。

「見えない」だけではなく、「できない」。

この境界を重要視しています。

第37章 Auditability

後から説明できること。

AUDIT TRAIL

  • 誰が。
  • いつ。
  • 何をしたのか。
  • 何が成功したのか。
  • 何が失敗したのか。
  • 何を承認したのか。
  • 何を取り消したのか。
  • 何を調査したのか。
  • 何を根拠に判断したのか。
概念図監査記録で後からたどれるようにしたい観点。

金融システムでは、

結果だけではなく、

経緯をたどれること

も重要です。

MiniBankでは、

重要操作と監査記録をつなげます。

PART VIIIArchitecture

この銀行が、どう動くのか。
構造まで見える。

MiniBankでは、利用者画面だけでなく、システム内部の責任分界も学習対象です。

第38章 Architecture

画面から帳簿、そして銀行機能まで。

概念的には、

  1. 01Customer / Corporate / Admin UI
  2. 02Next.js / TypeScript
  3. 03Authentication / Authorization
  4. 04Application Service / API
  5. 05PostgREST / Business RPC
  6. 06PostgreSQL Business Logic
  7. 07Posting Engine
  8. 08Ledger / GL
  9. 09AML / Operations / Treasury
概念図MiniBankの概念構成(原稿記載の構成を上から下へ)。

という関係になっています。

第39章 Responsibility

技術スタックより、「誰が何を守るか」。

  • 画面は何を担当するのか。
  • APIは何を確認するのか。
  • データベースは何を保証するのか。
  • 金融取引はどこで確定するのか。
  • 帳簿の正はどこなのか。
  • 異常を誰が検知するのか。
  • 運用担当者は何を確認するのか。

MiniBank Architectureでは、単に

  • Next.js。
  • TypeScript。
  • Supabase。
  • PostgreSQL。
  • Vercel。
  • Java。
  • Spring Boot。
RESPONSIBILITYその技術に、どの責任を持たせているか
概念図製品名を並べるのではなく、その技術に持たせた責任を見る。

と製品名を並べるのではありません。

その技術に、どの責任を持たせているか

を見ることを重視します。

第40章 Java / Spring Boot

別の技術スタックでも、同じ金融取引を考える。

MiniBankには、

Java / Spring BootによるPayment Serviceもあります。

  1. JAVAAPI
  2. SPRING BOOTController
  3. SPRING BOOTService
  4. SPRING BOOTRepository
概念図Payment Serviceの構成要素。
  • Controller。
  • Service。
  • Repository。
  • API。
  • 金融取引の責務。
  • エラー処理。

Next.js / PostgreSQLだけではなく、

エンタープライズ開発で広く使われるJavaの構成からも、

銀行システムを学べます。

重要なのは、

  • 別の実装経路だからといって、勝手に別の帳簿を作らないこと。
  • エラー時に何でも別経路へ流して二重処理を起こさないこと。

技術が違っても、金融取引の正しさは一つ。

その考え方を共有します。

PART IXMiniBank Academy

動かして終わりにしない。
なぜ動くのかまで学ぶ。

振込ができる。

それと、振込がなぜ安全に処理できるのか説明できる。

これは違います。

第41章 MiniBank Academy

動いているMiniBankを教材にする。

  • なぜ台帳が必要なのか。
  • なぜ二重送金を防ぐ必要があるのか。
  • なぜ法人では承認と実行を分けるのか。
  • なぜRESULT_UNKNOWNですぐ再送してはいけないのか。
  • なぜBSは貸借一致するのか。
  • なぜAMLではAlertとDecisionを分けるのか。
  • なぜ営業日を管理するのか。
  • なぜALMが必要なのか。

MiniBank Academyは、

動いているMiniBankを教材にして、銀行業務とシステム設計をつなげて学ぶコンテンツです。

MINIBANK動く
ARCHITECTURE構造が見える
ACADEMY仕組みを学べる
概念図MiniBank・Architecture・Academyが一体になっている。
MiniBank Academyのトップ画面。左に教材一覧と学習進捗、中央に「銀行の動きを、自分の言葉で説明する。」という見出しがある。
実際のMiniBank画面MiniBank Academyのトップ画面。左側に教材一覧と学習進捗が並びます(撮影時点の画面)。

第42章 9 Courses

基礎から専門領域まで。

Academyは、基礎から専門領域まで広がっています。

  1. COURSE 01

    基礎

    MiniBankの全体像、基本用語、画面・API・DBの関係。

  2. COURSE 02

    銀行業務

    口座、決済、預金、銀行ビジネスなど。

  3. COURSE 03

    銀行システム

    台帳、会計、振込、認証、監査、照合。

  4. COURSE 04

    ソフトウェア工学

    トランザクション、並行処理、API、DB、テスト、障害対応。

  5. COURSE 05

    Java / Enterprise Development

    Java、Spring Boot、Controller / Service / Repositoryなど。

  6. COURSE 06

    金融IT・信頼性

    安定稼働、品質、技術選択、金融システムの信頼性。

  7. COURSE 07

    Enterprise Architecture

    業務、アプリケーション、データ、技術を横断して設計する。

  8. COURSE 08

    法人銀行業務

    法人金融、企業財務、融資、コミットメントライン、シンジケートローンなど。

  9. COURSE 09

    Bank Engineering

    Posting。Interbank Payment。Bank Accounting。AML。Operations Center。Treasury / ALM。MiniBank v8〜v13で実装した銀行内部機能を、実装と結びつけて学びます。

    v8〜v13

第43章 107 Lessons

合計107レッスン。

既存教材を残しながら、

v8〜v13に合わせて銀行エンジニアリング教材を追加。

合計
107レッスン
新しい銀行エンジニアリング
29レッスン
Lab
6つのLab
そして
総まとめ

新しい銀行エンジニアリングには、29レッスン。6つのLab。総まとめ。を用意しています。

第44章 7 Learning Paths + Full Course

学び方は一つではありません。

目的から選ぶLearning Pathは7つ。

  • PATH 1 · 最初の1周Minibankを説明できるようになりたい全体像から振込、台帳、監査、照合までを最短距離でつなぎます。
  • PATH 2 · 設計・開発安全な金融transactionを設計したい境界、並行制御、脅威、テスト、障害対応をFailure Firstで追います。
  • PATH 3 · 金融IT・EA金融ITアーキテクトの視点を持ちたい実銀行の全体像から品質・信頼性・EAへ視野を広げます。
  • PATH 4 · 法人金融法人融資を銀行と企業の両面から学びたい信用分析から商品、契約、事務、モニタリング、Treasury、Dataまでを追います。
  • PATH 5 · はじめて学ぶ人初心者ルート:銀行システムの基本を学ぶ口座・残高・振込・台帳を、専門知識なしで順に理解します。
  • PATH 6 · 経理・財務・監査経理・財務ルート:Ledgerから照合まで台帳、記帳ルール、取消・訂正、照合を、銀行会計の視点で追います。
  • PATH 7 · 設計・開発エンジニアルート:取引の安全性と障害回復トランザクション境界、冪等性、同時実行、整合性検査、障害対応を実装で確かめます。

さらに、

FULL COURSE · 全体を体系的にフルコース:すべてを順番に学ぶCOURSE 01 から最新のコースまで、定義順にすべてのレッスンを学びます。

自分のバックグラウンドから、銀行システムへ入れます。

第45章 LAB

読むだけではなく、考える。

Labでは、

正解だけを読むのではありません。

  • 取引で問題が起きたら。
  • RESULT_UNKNOWNになったら。
  • 帳簿が合わなかったら。
  • 銀行間決済の結果が分からなかったら。
  • 流動性が不足したら。

自分ならどう判断するのか。

実装を見ながら考えます。

第46章 Implementation ≠ Real Bank

「教材にある」と「MiniBankで実装済み」は分ける。

Academyでは、

実銀行の仕組みについても扱います。

しかし、

教材で説明していることが、

すべてMiniBankの実行機能として存在するわけではありません。

例えば、

  • 実在金融機関との接続。
  • 実際の銀行間決済ネットワーク。
  • 実在のKYCサービス。
  • 実際の金融規制対応。
  • 実資金。
  • 本番銀行向けの可用性保証。

これらを提供しているわけではありません。

  • IMPLEMENTED実装済み。
  • SIMULATIONシミュレーション。
  • CONCEPT概念学習。
  • NOT IMPLEMENTED未実装。

を混同しない。

これもMiniBank Academyの重要な方針です。

PART XEvolution / Verification / Process

一つの口座から、銀行全体へ。
「作った」だけでは終わらせない。

第47章 v1 → v13

一つの口座から、銀行全体へ。

MiniBankは、

最初からこの規模だったわけではありません。

  1. v1–v2
    口座。取引。台帳。認証。本人確認。個人振込。銀行システムの基礎を作る。
  2. v3
    法人口座。法人メンバー。役割。権限。企業向け銀行業務へ拡張。
  3. v4
    申請。承認。実行。二者統制。重要設定変更。企業内部統制へ。
  4. v5
    指定日支払。支払予定。実行条件。日付を持つ金融業務へ。
  5. v6
    調査案件。根拠。独立確認。問題発生後の業務へ。
  6. v7
    確定境界。RESULT_UNKNOWN。営業日。EOD / BOD。照合。復旧。安全な再開。金融システムの信頼性へ。
  7. v8
    Ledger & Posting Engine銀行取引を仕訳へ変換する基盤へ。
  8. v9
    Interbank Payment Simulator銀行内振込から、銀行間決済へ。
  9. v10
    Bank Accounting & ClosingGL、試算表、BS / PL、日次・月次締めへ。
  10. v11
    Fraud / AML Simulator取引監視、Alert、Case、Investigation、Evidence、Decisionへ。
  11. v12
    Banking Operations CenterException、Approval、Trace、Incident、Runbook。銀行の運用へ。
  12. v13
    Treasury / ALM Simulator流動性、金利、調達、NII。銀行の資金管理へ。

第48章 Verified, not just Built.

「作った」だけでは終わらせない。

MiniBankでは、

機能追加だけでなく、

継続的に検証を行っています。

v13の検証では、

  • DB Tests106 / 106PASS
  • Privilege Tests226 / 226PASS
  • Unit TestsPASS
  • TypecheckPASS
  • BuildPASS
  • Academy ValidatorPASS

さらにRelease Candidateでは、

  • Regression Test
  • Browser / E2E Verification(Playwright・実TOTP)

をローカルの検証環境で実施しました。

また、

Academy全ルート。内部リンク。管理画面。顧客画面。モバイル表示。

なども確認しています。

テスト数が多ければ安全だ、と単純に言うつもりはありません。

しかし、

「動いたから完成」ではなく、何を確認したのかを残す。

それを開発プロセスの一部にしています。

第49章 AI Development

AIでつくる。
だからこそ、確認する。

MiniBankは、

AIを活用して開発してきたプロジェクトです。

AIは大量のコードを作ることができます。

しかし、

コードが生成されたことと、

正しい銀行システムになったことは同じではありません。

だから、

  1. 設計。
  2. 実装。
  3. テスト。
  4. 実ブラウザ確認。
  5. 権限確認。
  6. DB整合性。
  7. Migration。
  8. Release Gate。
  9. Production確認。
概念図工程を分けて進める。

を分けて進める。

AIが速いからこそ、

人間は「何を正しいとするのか」を決める。

MiniBankは、

AI時代のシステム開発そのものを学ぶプロジェクトでもあります。

第50章 Finance × Engineering

経理・財務から、銀行システムを見る。

MiniBankの特徴の一つは、

技術だけから銀行を見ていないことです。

  • 仕訳。
  • 元帳。
  • 残高。
  • 試算表。
  • BS。
  • PL。
  • 日次締め。
  • 月次締め。
  • 流動性。
  • 金利。
  • 資金調達。
  • 内部統制。

これらを、

システム実装と結びつけています。

  • 金融業務を知らずにシステムだけを見るのでもない。
  • システムを知らずに会計だけを見るのでもない。
業務。会計。システム。運用。
概念図業務・会計・システム・運用を横断する。

それらを横断することを目指しています。

PART XIScope

本物の銀行を丸ごと再現した。
とは言わない。

第51章 MiniBank is not a Real Bank.

できていることと、できていないことを分けて説明します。

MiniBankは、

実在の銀行システムと同等ではありません。

  • 実資金を扱いません。
  • 実在銀行ネットワークへ接続しません。
  • 金融機関としての認可を持ちません。
  • 実銀行と同等のセキュリティ・可用性・法令適合性を保証しません。
  • 実在のAML基盤やKYC基盤をそのまま再現しているわけでもありません。
  • ALMも学習用シナリオです。

だからこそ、

できていることと、できていないことを分けて説明します。

第52章 But it is more than a UI Demo.

それでも、単なる銀行風UIではありません。

  • 口座
  • 本人確認
  • 預金
  • 振込
  • MFA
  • 法人
  • 権限
  • 申請
  • 承認
  • 指定日支払
  • 調査
  • Idempotency
  • Concurrency
  • RESULT_UNKNOWN
  • 逆仕訳
  • 営業日
  • EOD / BOD
  • 照合
  • 復旧
  • Posting Engine
  • Interbank Payment
  • GL
  • Trial Balance
  • BS
  • PL
  • Closing
  • AML
  • Operations Center
  • Trace
  • Incident
  • Treasury
  • Liquidity
  • ALM
  • Architecture
  • Academy

銀行という題材を通じて、
業務・会計・技術・運用を、
一つのシステムとしてつなげる。

それがMiniBankです。

銀行を使うだけでは見えないものを、
動かして理解する。

  1. 口座を開く。
  2. 振り込む。
  3. 企業の支払いを承認する。
  4. 仕訳する。
  5. 他行へ決済する。
  6. 帳簿を締める。
  7. 異常を検知する。
  8. 原因を追う。
  9. 資金繰りを考える。

そして、その仕組みをAcademyで学ぶ。

  • MINIBANK動くMiniBank。
  • ARCHITECTURE構造が見えるArchitecture。
  • ACADEMY仕組みを学べるAcademy。