学習・技術検証用デモ — 本システムは実際の銀行サービスではありません。

公開情報をもとに構築した教育目的のシステムです。実在する個人情報・口座情報・機密情報・認証情報等を入力しないでください。

ミニ銀行ACADEMY SYSTEM LEARNING
教材メニュー
学習進捗0 / 134
あと134項目
INTERMEDIATE · 中級COURSE 06 · FINANCIAL IT / RELIABILITY

業界知識:技術的負債と銀行の信用

システムは完成した瞬間から古くなります。負債をゼロにするのではなく、信用を傷つける前に見つけ、測り、返す方法を学びます。

01 / 07
FINANCIAL IT / RELIABILITY · 金融IT・信頼性

金融ITの技術選択、品質保証、安定稼働、業界の変化を設計判断へつなげる。

先に学ぶ内容 — Prerequisite: 銀行システム / ソフトウェア工学

学ぶこと — LEARNING GOALS

このページで学ぶこと

  • 技術的負債の正しい意味
  • AI時代の理解負債・認知負債
  • SLOとerror budgetによる運用判断

体験45 · INDUSTRY(技術的負債と信用)

技術的負債は、見つけたらすべて即座に解消すべきものか確かめよう

まずは予想をひと言。本文を読んだ後、教材内の参照元で実際の回帰testとmigration履歴を確認します。

体験学習 · STEP 1 / 5
  1. 01
    まず予想する — PREDICT

    まずここだけ:思ったことをひと言書く

    技術的負債は、見つけたら悪いものとして即座にすべて解消すべきだと思いますか?

    正解でなくて大丈夫です。「〜だと思う」から始めてみましょう。

    ヒント1を見る

    負債をすべて即座に返そうとすると、他に何を犠牲にするでしょうか?

    ヒント2を見る

    『放置』と『理由を記録して意図的に保有する』は同じでしょうか?

    もっと詳しく:この問いで使う専門用語
    • 技術的負債は、今の速さと引き換えに将来の変更へ追加コストを残す状態です。
    • 理解負債は、仕組みは動くがなぜその設計か人が説明できない状態です。
    • SLOは、利用者にとって大切な安定性を測定可能な目標値にしたものです。
まずはひと言だけで大丈夫です。

この後の本文を最後まで読んでから、実際に操作して確かめるステップへ進みます。

日常語で理解する — PLAIN LANGUAGE

まず、ここだけつかむ

1

技術的負債とは、急いだ実装や後から分かった設計不足によって、将来の変更・保守・障害対応へ追加コストがかかる状態です。すべてが悪ではありませんが、把握と返済判断が必要です。

2

AIが大量のコードを作れる時代には、『動くが誰も理由を説明できない』という理解負債や、複雑すぎて変更範囲を判断できない認知負債も増えます。

3

金融システムでは、負債を見た目の古さではなく、金額・権限・監査・安定稼働へ与えるriskで優先順位付けします。

順番に理解する — DIFFICULT PARTS, STEP BY STEP

難しいポイントを、順番にほどく

専門用語を覚えることより、「なぜ必要か」「このシステムのどこで使うか」を理解することが目標です。

01

技術的負債

やさしく言うと

今の速さと引き換えに、将来の変更へ追加コストを残す状態です。

なぜ必要?

負債を単なるコード品質の議論にせず、事業価値・risk・返済時期として話せます。

Minibankでは

負荷試験、運用runbook、復旧訓練などの不足を、影響と期限付きで管理する対象にします。

02

理解負債

やさしく言うと

仕組みは動くが、なぜその設計なのか人が説明できない状態です。

なぜ必要?

理由を知らずに安全装置を削除すると、テストが通っても金融不変条件を壊す可能性があります。

Minibankでは

なぜledgerが正か、なぜlock順序が必要かを教材・ADR・testで残します。

03

SLO

やさしく言うと

利用者にとって大切な安定性を、測定可能な目標値にしたものです。

なぜ必要?

『十分安定』を感覚ではなく数字で判断し、改善の優先順位を決められます。

Minibankでは

振込成功率、応答時間、照合異常件数、復旧時間などを候補にします。現時点では正式SLOは未設定です。

04

Error Budget

やさしく言うと

SLO上、一定期間に許容できる失敗量です。

なぜ必要?

新機能と安定性を対立させず、失敗量が多いときは改善を優先する共通ルールになります。

Minibankでは

将来SLOを設定した後、budget超過時にreleaseを止めるなどの運用方針へ接続できます。

05

ADR

やさしく言うと

重要な設計判断について、選んだ理由・捨てた案・前提を残す短い記録です。

なぜ必要?

数か月後に理由を忘れても、安全装置を誤って削除せず、前提が変わったか判断できます。

Minibankでは

ledgerを正とする理由、private schema、lock順序などを意思決定として残す対象です。

06

Backpressure

やさしく言うと

処理先が満員のとき、入口側で依頼を待たせる・断る仕組みです。

なぜ必要?

無制限に受け続けると、DBだけでなく正常な照会まで巻き込んで全体停止するからです。

Minibankでは

本番化する場合、DB接続・lock待ち・振込受付へ明示的な上限と応答方針が必要です。

07

Postmortem

やさしく言うと

障害後に時系列・影響・原因・再発防止を整理する振り返りです。

なぜ必要?

個人の注意不足で終わらせず、防御・検知・復旧の仕組みを改善できます。

Minibankでは

incidentと監査・照合結果を結び、test・constraint・alert・runbookへ学びを戻します。

08

RTO / RPO

やさしく言うと

RTOは何時間で復旧するか、RPOはどの時点までのデータを戻せればよいかという目標です。

なぜ必要?

backupがあるだけでは、必要時間内に必要なデータまで戻せるか分からないためです。

Minibankでは

学習用環境では正式目標未設定です。本番化では復元訓練と照合を含めて決める必要があります。

発展 — ADVANCEDもっと詳しく確認する最初の学習では読まなくても問題ありません。仕組みをもっと深く理解したい場合に開いてください。

技術的負債は、単なる汚いコードではない

技術的負債は、短期的な価値を先に得る代わりに、将来の変更・保守・障害対応で継続的な追加コストを払う状態を説明する比喩です。借金と同じように、元本だけでなく『利息』があります。

利息は、機能追加が遅くなる、変更のたびに障害が増える、担当者しか直せない、監査説明に時間がかかる、といった形で現れます。負債があること自体より、把握せず利息を払い続けることが危険です。

分類意味例
慎重・意図的返済計画を持って短期判断する期限優先で一時的に手作業を残し、期限とownerを決める
無謀・意図的危険を知りながら対策なしで急ぐテストや監査を外して本番投入する
慎重・非意図的実装して学んだ結果、より良い設計に気づく利用増加後に口座lockの競合点が分かる
無謀・非意図的知識不足のまま問題を積み上げるRLSと認可を同じものだと思い込む

AI時代に増える、理解負債と認知負債

指定されたTechnical Debt Conference 2026の公開概要では、AIが解決手段になる一方で、『理解負債』『認知負債』を生む可能性がテーマとして挙げられています。カンファレンスは2026年9月開催予定のため、ここでは講演結果ではなく公開済みの問題提起を扱います。

負債やさしい説明金融システムでの危険
理解負債コードは動くが、なぜこの設計か説明できないlock順序や会計制約を理由不明で削除してしまう
認知負債頭に入れる情報と例外が多すぎて判断できない似たRPCや権限経路が増え、変更箇所を見落とす
意図負債当時の意思決定と前提が記録されていないなぜledgerを正とするのか、後任が判断できない
運用負債監視・手順・訓練が実装に追いつかない障害は検知できても、誰も復旧できない

業界では、負債を金額ではなくリスクで並べる

すべての負債を同時には返せません。金融システムでは『事故時の影響』『発生可能性』『検出しにくさ』『復旧しにくさ』『変更頻度』で優先順位を付けます。

優先度判断基準Minibankでの例
P0資金・権限・監査を壊し得る二重送金、台帳改ざん、管理者権限昇格
P1大量取引や障害時に信用を失う負荷試験不足、lock待ち監視不足、復旧手順未検証
P2変更速度や理解を徐々に落とす重複ロジック、設計判断記録不足、複雑な命名
観察利息が小さく変更頻度も低い隔離済みで触らない古い補助処理

SREの考え方:信用を測れる約束に変える

『安定している』という感覚だけでは運用判断ができません。業界では、利用者にとって重要な状態をSLIで測り、目標をSLOとして決めます。SLAは未達時の結果まで含む外部との合意です。

100%を無条件に目指すのではなく、許容できる失敗量をerror budgetとして定義します。budgetを消費しすぎたら新機能より安定性改善を優先するため、開発速度と信頼性を同じ数字で話せます。

用語意味Minibankで測るなら
SLI実際の状態を表す指標振込成功率、p95処理時間、台帳不整合件数、復旧時間
SLO達成したい目標値例:正常な振込の99.9%を一定時間内に確定
Error Budget目標上許容する失敗量超過時は機能追加を抑え、安定性改善を優先
SLA未達時の結果を含む合意学習用Minibankには未設定。本番サービスでは事業判断が必要

金融システムに現れる、7種類の負債

負債はソースコードだけに発生するものではありません。データ、権限、運用、組織、外部サービスにも発生します。1つの対策だけでは返せないため、種類を分けてownerを決めます。

種類何が古く・危険になるか代表的な症状
設計負債責務の境界や依存関係1変更で多数の場所が壊れる
データ負債schema、品質、意味、履歴同じ金額の定義がtableごとに違う
セキュリティ負債権限、秘密情報、依存package不要なPUBLIC EXECUTEや長寿命の強権限
テスト負債失敗経路と回帰保証正常系は通るがretry・concurrencyを試せない
運用負債監視、alert、runbook、訓練異常は見えるが誰も対応できない
知識負債設計理由と業務知識特定の担当者しか変更できない
外部依存負債cloud、SaaS、vendor、契約値上げ・障害・仕様変更時に代替できない

負債の『利息』を、観測できる数字にする

負債は抽象的なままだと、機能開発に負け続けます。そこで『この負債のために、毎月どれだけ時間・障害・手作業・待ち時間が増えているか』を測ります。厳密な金額でなくても、傾向が見えれば意思決定に使えます。

観測するもの数字の例何が分かるか
変更の遅さlead time、review待ち、変更ファイル数設計や理解の利息
変更の危険変更失敗率、rollback率、incident件数テスト・結合の利息
運用の重さ手作業時間、夜間呼出し、同じalertの回数自動化・runbook不足の利息
利用者影響振込失敗率、p95/p99遅延、問い合わせ数信用に直結する利息
データrisk照合issue数、未解決期間、手動補正件数会計・データ負債の利息
属人性単独担当領域、引継ぎ日数、復旧可能者数知識負債の利息

大量取引の業界知識:速さより、過負荷時の振る舞い

通常時に速いシステムでも、限界を超えると一気に遅くなるperformance cliffがあります。重要なのは最大件数だけでなく、限界へ近づいたときに待たせるのか、拒否するのか、後で処理するのかを事前に決めることです。

金融処理ではtimeout後に利用者が再送するため、過負荷がさらにretryを生み、障害を増幅するretry stormにも注意します。冪等性は二重計上を防ぎますが、無制限のretry負荷そのものを消すわけではありません。

仕組みやさしい説明守るもの
Capacity Planning何件まで安全に処理できるか予測する給料日・campaign時の余力
Load Test段階的に件数を増やし限界を実測する処理能力と性能劣化点
Backpressure下流が満員なら入口で待機・拒否するDBと全体サービス
Rate Limit利用者や時間あたりの受付数を制限する攻撃・誤動作・公平性
Queue今すぐ処理できない仕事を順番待ちさせる瞬間的な集中への耐性
Circuit Breaker壊れた外部先への呼出しを一時停止する連鎖障害の防止

変更を安全にする業界の手順

大規模障害の多くは、壊れていた機械より『変更』をきっかけに表面化します。金融システムでは、正しい完成形だけでなく、旧versionから新versionへ移る途中も安全に保つ必要があります。

  1. 01ADR/RFCで目的・選択肢・risk・戻し方を記録
  2. 02先に現在動作を固定するcharacterization testを作る
  3. 03DB変更を後方互換にし、旧新両方が動く期間を設ける
  4. 04少量の利用者・trafficから段階的にrelease
  5. 05SLIと照合結果を見ながら拡大し、異常ならrollback
  6. 06移行完了後に古い経路・権限・feature flagを削除

障害対応は、犯人探しではなく学習装置

incident responseは、影響を止め、利用者へ伝え、復旧し、データを検証する一連の活動です。復旧後にはpostmortemを作り、『誰が失敗したか』ではなく『なぜその操作が事故につながり、なぜ防御・検知・復旧が十分でなかったか』を調べます。

人は必ず間違えるため、注意力だけに頼る対策は長続きしません。二人承認、権限分離、自動制約、安全な既定値、訓練可能なrunbookへ変えることが再発防止です。

段階行うこと金融システム特有の確認
検知影響と重大度を判断残高・台帳・監査への影響有無
封じ込め新しい被害を止める送金停止、口座freeze、権限無効化
復旧安全な状態へ戻す手動UPDATEではなく承認済みreversal等を利用
検証正しく戻ったか確認reconciliationと顧客影響件数
説明時系列・原因・対応を記録actor、金額、対象、訂正記録を保存
改善仕組みを変え再発を防止test、constraint、alert、runbookへ反映

外部サービスとvendor lock-inも負債になる

Supabase、Vercel、認証provider、決済網など、外部サービスは開発を速くします。一方で、障害・値上げ・仕様変更・サービス終了・地域要件が自社だけでは制御できません。これは利用を避ける理由ではなく、依存を把握する理由です。

確認項目非エンジニア向けの質問
代替可能性この会社が使えなくなったら、何日で代替できるか
データ可搬性全データを完全な意味付きで取り出せるか
障害境界外部が止まったとき、残高照会と振込はどうなるか
契約・費用件数が10倍になったとき、費用と制限はどう変わるか
セキュリティ誰が強権限を持ち、鍵の漏洩をどう検知・交換するか
法令・地域データの保存場所、委託先、監査資料を説明できるか

経営と現場が、同じ言葉で判断する

『コードをきれいにしたい』だけでは投資判断ができません。現場は負債を、顧客影響・事故risk・開発速度・運用費・規制対応へ翻訳します。経営は、受け入れるriskと投資優先順位を明示します。

悪い伝え方意思決定できる伝え方
このコードは汚い振込変更に毎回3日余計にかかり、誤変更riskが高い
テストが足りない同時送金の事故をrelease前に検出できない
監視を強化したいlock待ちを障害の15分前に検知し、顧客影響を減らしたい
全面刷新したいP0領域を6分割し、互換性を保って段階移行する
古いので危険support終了日以降、security修正を受けられない

3つの事故シナリオで考える

状況表面の問題背後にある負債先にできる対策
給料日に振込が急増DB接続とlock待ちが増加capacity・負荷試験・backpressure不足段階負荷試験、limit、待ち時間alert、retry制御
AI生成RPCを追加正常系は動くが他人口座も指定可能理解・認可test・review負債脅威model、negative test、権限diff、設計理由記録
DB障害から復旧backupはあるが復元に時間がかかるrunbook・訓練・RTO/RPO未定義定期復元訓練、復旧目標、照合と業務再開基準

負債を返す、現実的な5段階

  1. 01負債台帳へ、症状・影響・owner・期限・根拠を登録
  2. 02利用者影響と金融不変条件からriskを評価
  3. 03先にcharacterization testと観測点を追加
  4. 04小さく分割し、互換性を保ちながら置き換える
  5. 05SLO・incident・変更時間が改善したかを測定

Minibankで今から持つべき負債台帳

この台帳はコードの悪口一覧ではありません。事業と技術が、どのriskを受け入れ、いつ見直すかを共有するための意思決定記録です。

項目記録する内容
事実何が未実装・暫定・複雑なのか
影響金額、顧客、権限、監査、稼働率のどれへ影響するか
利息変更や運用のたびに何分・何件・どのriskが増えるか
安全策現在のtest、alert、手順、feature flag、rollback方法
返済条件いつ、誰が、どの測定値をもって完了とするか
意思決定なぜ今すぐ返さないのか、前提がいつ失効するか

体験学習の続き · LEARNING LOOP

ここまで読めましたか?続けて確認してみましょう

技術的負債と理解負債の考え方を読んだところで、教材内の参照元で実際の回帰testとmigration履歴を確認し、自分の言葉で説明してみます。

STEP 2〜5 / 5
  1. 02
    仕組みを確かめる — CONCEPT CHECK

    画面操作なしで、仕組みを確かめる

    この仕組みは、Mini Bankの画面には現れません。次のEvidenceとCode Trail、教材本文だけで理解を進めます。

  2. 03
    証拠を確認する — EVIDENCE

    何を見たか、1つずつ確かめる

    Evidence(判断の根拠となる記録)を確認したらチェックします。各項目の「何を見るか」を手がかりにしてください。

    画面を開けない項目は、Source Trail(教材の参照元)と教材の説明で確認できます。失敗を実際に起こす必要はありません。

  3. 04
    コードの処理経路を追う — CODE TRAIL

    コードを書く必要はありません

    ここでは「説明されている仕組みが、実際のMini Bankのどこに実装されているか」を確認します。まずは日本語の役割説明を読み、入力した依頼がどこへ渡るかをつかみましょう。コードの全文を読む必要はありません。

    まず回帰testが何を継続的に守っているかを見て、次にmigration履歴がどう意図を残しているかを見ます。

    返済前後の契約を守る回帰テスト。

    scripts/regression/

    DB設計変更の意思と順序を残す履歴。

    supabase/migrations/
    教材の参照元を確認する — Source Trail ↓
  4. 05
    自分の言葉で説明する — EXPLAIN

    LEVEL 1 — やさしい説明(まずここだけ)

    なぜ技術的負債は『返すか、意図的に保有し続けるか』を判断すべきものであり、単純な善悪では語れないのでしょうか? 短い2文を目安に説明してください。

    日常語だけで完了できます。専門用語の数や正誤を自動採点するものではありません。

    ヒント1を見る

    「利息」という比喩を使って書いてみましょう。

    ヒント2を見る

    負債を優先順位付けする基準を考えてみましょう。

    もっと詳しく:LEVEL 2 — 専門用語を使った説明(任意)

    技術的負債、理解負債、SLO、Error Budget、ADRの中から3つを使って、負債を管理可能にする方法を説明してみましょう。

    挑戦する場合は、上の説明欄に追記できます。追加しなくても完了できます。

    説明の確認ポイント — Checkpoint
    • 負債は放置ではなく意図的な判断の対象だと説明できる
    • 利息を観測可能な数字に変える意義を説明できる
予想5文字以上・証拠2項目・説明20文字以上で完了できます。

証拠の確認:0 / 2。LEVEL 2(専門用語での説明)は任意です。

入力はこのブラウザに保存されます。Academy教材の進捗とは別の学習メモです。

理解を確かめる — CHECK YOUR UNDERSTANDING

5問で理解チェック

答えを頭の中で考えてから、各項目を開いて確認してください。

Q1技術的負債は、見つけたらすべて即時に返すべきですか?
答え

いいえ。利息、変更頻度、事故影響、検出・復旧可能性を評価し、事業判断として優先順位を付けます。

Q2AIが正しいコードを生成すれば理解負債はありませんか?
答え

あります。出力が正しくても、人が設計理由・不変条件・失敗時挙動を説明できなければ安全に変更できません。

Q3安定稼働は100%を目標にすればよいですか?
答え

単純ではありません。利用者が必要とするSLIと現実的なSLOを定め、error budgetで信頼性と変更速度を管理します。

Q4backupを毎日取得していれば、災害復旧対策は完成ですか?
答え

完成ではありません。実際に復元し、RTO/RPO内で業務再開できるか、台帳と残高が整合するかを訓練で証明する必要があります。

Q5大量取引に耐えるには、DBを大きくすれば十分ですか?
答え

十分ではありません。負荷試験、接続上限、backpressure、rate limit、retry制御、queue、監視を組み合わせ、限界時の振る舞いを設計します。

ここまで読めましたか?

完全に暗記する必要はありません。大切な考え方を説明できそうなら押してください。

業界・外部の参照元 — INDUSTRY / EXTERNAL SOURCE

業界資料・参考文献

一般論と業界知識の根拠です。外部サイトを新しいタブで開きます。

教材の参照元 — SOURCE TRAIL

根拠と関連教材

CURRENT IMPLEMENTATIONは確認したrepository内の実装です。HISTORICAL IMPLEMENTATIONは導入・修正の履歴で、後続migrationによる再定義があり得ます。RELATED LESSONは教材への案内で、実装の一次Sourceではありません。ASSUMPTIONは仮定、UNKNOWNは未確認を表します。

確認基点: d02eae8914f39cbf06bfe422dc39c71886f82b3e / 2026-09-11。稼働環境への適用確認: UNKNOWN。パス実在の自動検査と、記述した技術的事実の確認は別です。

  • 現在の実装 — CURRENT IMPLEMENTATIONsrc/components/docs/ArchitectureMap.tsx大量取引・信用・現在の実装境界
  • 現在の実装 — CURRENT IMPLEMENTATIONscripts/regression/返済前後の契約を守る回帰テスト
  • 過去の実装 — HISTORICAL IMPLEMENTATIONsupabase/migrations/DB設計変更の意思と順序を残す履歴