第4章:検証(再現手順、最小構成、環境固定)

この章で学ぶこと

  • 検証を“再現性”で設計する(最小構成/環境固定)
  • 観測点(ログ/メトリクス)を事前に決める
  • 失敗時のロールバックを用意する

成果物(または判断基準)

本文

検証の目的は“正しさ”ではなく“差分の特定”である。最小構成に落とすことで、原因候補を減らす。

手順(最小)

  1. 目的(何の差分を見たいか)と成功条件(期待結果)を定義する
  2. 環境(OS/ランタイム/依存バージョン/設定/入力)を固定する
  3. 最小構成に落とし、再現手順と観測点(ログ/メトリクス)を決める
  4. 失敗時のロールバック手順を用意してから実行する
  5. 手順・結果・否定結果をログとして残し、再利用できる粒度にする

最小構成の考え方

  • 依存を減らす(外部サービスをモックにする等)
  • 条件を固定する(バージョン、設定、入力データ)
  • 期待結果と観測点を明記する

検証結果は、手順とログをセットで残す(再利用できる粒度)。必要に応じて、付録の 再現ログテンプレ検証計画テンプレ を使い分ける。

注意点

  • 本番環境での「試しながら検証」は最終手段とする(影響範囲とロールバックの準備が必要)
  • ログを共有する場合は、秘密情報/個人情報の混入を前提にマスキングする

具体例(悪い例→良い例)

悪い例

本番で試しながら原因を探す
手順は頭の中、ログは残していない

良い例

staging で最小構成を作り、バージョンと設定を固定
手順: 1) 設定A 2) 入力B 3) 期待C
観測点: ログX、メトリクスY
失敗時: 設定を元に戻す(ロールバック手順)

検証例(再現): タイムアウトのデフォルト値を確かめる

目的: 「libraryX のデフォルトタイムアウト」が 10 秒か 30 秒かを確定し、設定変更の影響を評価する。

前提固定(例):

  • libraryX のバージョンを固定する(lockfile 等)
  • 実行環境(OS/ランタイム/コンテナ)を固定する

最小構成(例):

  • 外部APIの代わりに、意図的に遅延させるダミーHTTPサーバを用意する
  • クライアントは1リクエストのみ実行する(並列/リトライはオフ)

手順(例):

  1. タイムアウト未指定で実行し、成功/失敗と経過時間を記録する
  2. タイムアウトを 30 秒に設定して再実行し、差分を確認する
  3. ログ(開始/終了、例外、リトライ回数)を保存する

観測点(例):

  • 経過時間(秒)
  • 例外種別/エラーメッセージ
  • リトライ有無(あれば回数)

ロールバック(例):

  • 設定変更は feature flag / 環境変数で切り替え、即時に元に戻せるようにする

チェックリスト

  • 最小構成に落とした
  • 環境(バージョン/設定/入力)を固定した
  • 期待結果と観測点を定義した
  • ロールバック手順がある

まとめ

  • 検証は最小構成と環境固定で差分を切り分け、観測点/期待結果を事前定義する
  • 設定変更にはロールバック手順をセットにし、安全に切り戻せる状態を維持する

次章への接続