原則は銀の弾丸ではない (コンテキスト依存性)
定義
**原則は銀の弾丸ではない (コンテキスト依存性)**は、ある要素の変更が別要素の成立や変更を要求する関係である。実務では名称ではなく、利用者から観測できる保証と実装が守る条件をセットで定義する。
仕組みと具体的な規則
安定した抽象へ依存させ、生成時に実装を注入すると単体テストで代替実装へ差し替えられる。たとえば注文処理なら、注文IDと現在状態を入力し、許可された状態遷移だけを適用して新状態または理由付きエラーを返す。この入出力をテストに固定すると、内部の保存方式を変更しても契約を検証できる。
適用判断
原則は銀の弾丸ではない (コンテキスト依存性)を導入する前に、解決対象となる変更理由または障害が実在するかを確認する。導入後は、責務の所有者が一つか、再試行・並行実行・部分失敗でも規則を維持できるか、呼び出し側が内部表現へ依存していないかをレビューする。
限界とトレードオフ
新しい境界には型、変換、検証、運用のコストが生じる。小さく変化しない処理では直接的な実装の方が読みやすい場合もある。性能、一貫性、拡張性のどれを優先したかを記録し、計測や実際の変更頻度に基づいて構造を見直す。