地味な変更ほど危ない - 影響範囲の見積もり術
「ボタンの文言を変えるだけ」「バリデーションの閾値を1つ変えるだけ」。そう説明された変更ほど、影響範囲の確認が省略されがちです。しかし実際にバグを引き起こすのは、大きな機能追加よりもこうした小さな変更であることが少なくありません。理由は単純で、大きな変更は最初からレビューや設計の対象になるのに対し、小さな変更は「見ればわかる」という思い込みで工程を素通りしてしまうからです。
なぜ小さな変更ほど評価が飛ばされるのか
要件定義や実装の途中で仕様変更が入ったとき、チームは「これくらいなら」と口頭合意で進めがちです。しかし1行の条件分岐の変更が、別画面の表示ロジックや既存のテストケースの前提を壊すことは珍しくありません。問題は変更そのものの大きさではなく、影響が及ぶ範囲を誰も棚卸ししていないことにあります。
変更影響評価シートを作る
変更が発生するたびに、以下の3つの観点で影響を書き出すシートを用意します。テンプレートはスプレッドシートでも、PRの説明欄に埋め込む形式でも構いません。重要なのは「書く欄がある」ことで、書く欄がなければ人は書きません。
1. 対象画面
- この変更が表示に影響する画面はどこか(直接編集する画面だけでなく、同じデータを参照する一覧・詳細・通知も含める)
- 権限やロールによって表示が変わる画面はあるか
2. 対象API
- 変更するエンドポイントを呼び出しているクライアントは、フロントエンドだけか、モバイルアプリやMCP経由の外部連携も含むか
- レスポンスの型やnull許容の変更は、呼び出し側で握りつぶされずにエラーになるか
3. 既存テストケースへの波及
- この変更によって前提が崩れる既存テストはあるか(境界値・異常系のテストほど見落とされやすい)
- 既存テストが通ったからといって、そのテスト自体が今回の変更を想定していないケースもある
実際にあった例では、「エラーメッセージの文言を変えるだけ」の変更で、フロントエンド側がそのメッセージ文字列を条件分岐に使っていたためにリトライ処理が動かなくなったケースがあります。文言変更は誰の目にも「小さい」ため、影響評価の対象から外れていました。バックエンドの担当者は表示文言の話だと思い、フロントエンドの担当者はバックエンドが変えないだろうと思い込んでおり、両者とも確認を取らないまま本番に出てから発覚しています。
この手のすれ違いは、変更を出す側だけが評価シートを書いても防げません。受け取る側(呼び出し元)にも「この変更は自分に関係あるか」を確認させる欄を用意しておくと、思い込みによる見落としを減らせます。
運用に組み込む工夫
評価シートを別ドキュメントとして管理すると、結局誰も開かなくなります。効果があったのは以下の運用です。
- PRテンプレートに「影響を受ける画面/API/テスト」の3行を必須項目として入れる
- 空欄のまま出されたPRは、レビュアーが機械的に差し戻す(判断せず、ルールとして運用する)
- 「変更なし」と書く場合も、確認した上での「なし」なのか、確認していないだけの「なし」なのかをコメントで区別する
ポイントは、評価の質を上げることではなく、評価を省略できない仕組みにすることです。小さな変更ほど、書く欄がなければ確実に飛ばされます。
Bugoon での実践
変更の影響が実際にバグとして表面化したときは、Bugoon のウィジェットからスクリーンショットとアノテーション付きで報告し、GitHub Issue に連携できます。報告されたバグ票に「どの変更が原因だったか」を書き添えておけば、影響評価シートの精度を上げるための実例として後から見返せます。カンバンボードでバグの発生画面を横断的に眺めると、同じ変更が複数画面に波及していたケースにも気づきやすくなります。
EOF