v1.0.0 の歴史資料当時の説明です。現在の仕様とは異なる箇所があります。現行版の対応記事 →資料一覧へ

DEEP GUIDE 09

一つの変更の影響を見積もる

仮の「送金上限」追加を、要件からテストまで通して考える。

このガイドで追う一件

ここだけは新機能の実装例ではなく、設計の練習です。「一回の送金は10万円まで」という新しい要件が来たら、どこを変える必要があるでしょうか。

コードを読む順番

以下は MiniBank v1.0.0 の確認先です。マイグレーションは順に適用されるため、関数の最終形を調べるときは後続の変更も確認してください。

  1. 1

    約束を具体的にする

    1回あたりの上限か、1日合計の上限かを分けます。対象者、通貨、上限の変更方法、超過時の返答も決めないと、コードの条件を書けません。

    確認するファイルdocs/requirements.md

  2. 2

    入力と API の境界を探す

    送金の入力スキーマと API 応答を読み、利用者が誤入力に気付ける場所を探します。ただし画面だけの制限で実行を止めたことにはなりません。

    確認するファイルsrc/domain/transfer/schema.ts

  3. 3

    確定時の条件を考える

    execute_transfer で金額と現在の状態を確認する位置を探します。日次合計なら、同時実行でも上限を超えない集計とロックの設計が必要です。

    確認するファイルsupabase/migrations/20260819163038_create_execute_transfer_function.sql

  4. 4

    境界値と再送を試す

    上限ちょうど、1円超過、同じキーの再送、同時送金をテスト候補にします。変更が仕訳や監査の記録を壊していないことも確かめます。

    確認するファイルscripts/regression/suites/transfer.mjs

失敗時・範囲外の確認

この「10万円の上限」は MiniBank v1.0.0 に実装済みだと主張するものではありません。変更するなら、要件・API・データベース・テストにどんな影響が及ぶかを考える題材です。

ここまでで説明できること

一つの新しい条件を、画面だけでなく確定処理とテストまで通して設計できます。