第4章:検証(再現手順、最小構成、環境固定)
この章で学ぶこと
- 検証を“再現性”で設計する(最小構成/環境固定)
- 観測点(ログ/メトリクス)を事前に決める
- 失敗時のロールバックを用意する
成果物(または判断基準)
- 検証計画(付録: 検証計画テンプレ)
- 再現手順と成功条件(期待結果)
本文
検証の目的は“正しさ”ではなく“差分の特定”である。最小構成に落とすことで、原因候補を減らす。
手順(最小)
- 目的(何の差分を見たいか)と成功条件(期待結果)を定義する
- 環境(OS/ランタイム/依存バージョン/設定/入力)を固定する
- 最小構成に落とし、再現手順と観測点(ログ/メトリクス)を決める
- 失敗時のロールバック手順を用意してから実行する
- 手順・結果・否定結果をログとして残し、再利用できる粒度にする
最小構成の考え方
- 依存を減らす(外部サービスをモックにする等)
- 条件を固定する(バージョン、設定、入力データ)
- 期待結果と観測点を明記する
検証結果は、手順とログをセットで残す(再利用できる粒度)。必要に応じて、付録の 再現ログテンプレ と 検証計画テンプレ を使い分ける。
注意点
- 本番環境での「試しながら検証」は最終手段とする(影響範囲とロールバックの準備が必要)
- ログを共有する場合は、秘密情報/個人情報の混入を前提にマスキングする
具体例(悪い例→良い例)
悪い例
本番で試しながら原因を探す
手順は頭の中、ログは残していない
良い例
staging で最小構成を作り、バージョンと設定を固定
手順: 1) 設定A 2) 入力B 3) 期待C
観測点: ログX、メトリクスY
失敗時: 設定を元に戻す(ロールバック手順)
検証例(再現): タイムアウトのデフォルト値を確かめる
目的: 「libraryX のデフォルトタイムアウト」が 10 秒か 30 秒かを確定し、設定変更の影響を評価する。
前提固定(例):
- libraryX のバージョンを固定する(lockfile 等)
- 実行環境(OS/ランタイム/コンテナ)を固定する
最小構成(例):
- 外部APIの代わりに、意図的に遅延させるダミーHTTPサーバを用意する
- クライアントは1リクエストのみ実行する(並列/リトライはオフ)
手順(例):
- タイムアウト未指定で実行し、成功/失敗と経過時間を記録する
- タイムアウトを 30 秒に設定して再実行し、差分を確認する
- ログ(開始/終了、例外、リトライ回数)を保存する
観測点(例):
- 経過時間(秒)
- 例外種別/エラーメッセージ
- リトライ有無(あれば回数)
ロールバック(例):
- 設定変更は feature flag / 環境変数で切り替え、即時に元に戻せるようにする
チェックリスト
- 最小構成に落とした
- 環境(バージョン/設定/入力)を固定した
- 期待結果と観測点を定義した
- ロールバック手順がある
まとめ
- 検証は最小構成と環境固定で差分を切り分け、観測点/期待結果を事前定義する
- 設定変更にはロールバック手順をセットにし、安全に切り戻せる状態を維持する
次章への接続
- 次章: 第5章