Mistake #04 : Works on My Machine

「私(ローカル)の環境
では動きました」

開発者のPCではサクサク動く。
しかし、本番サーバーにデプロイした瞬間、エラーで真っ白になる。
「おかしいな、さっきまでは...」
この言葉は、免罪符にはなりません。顧客にとっては「動かない」という事実だけが真実です。

💻 環境差異診断
  • 開発者はMac、本番はLinuxで、微妙に挙動が違う
  • 本番環境の設定ファイルを手作業で修正している(Config Drift)
  • 「手順書通りに環境構築したが動かない」という新人が後を絶たない
  • DBのデータが本番と開発で全然違うため、バグが再現できない
⚠️ 警告:あなたのチームは「運」で開発しています。
環境の一致(Parity)が保証されていない開発は、ロシアンルーレットと同じです。

01. Dockerを使おう

WORKS ON MY MACHINE
💻💥

「私の環境では動く」なら、その「環境」ごと出荷してしまえばいい。
それがDocker(コンテナ技術)の発想です。
OS、ライブラリ、設定ファイル。全てをコード化(Infrastructure as Code)し、
開発環境と本番環境を「1bitの狂いもなく」同じにする。
これはもはや選択肢ではなく、現代開発の義務です。

環境の違いは
バグではない。
「仕様」にせよ。

02. 手順書を捨てよ、スクリプトを書け

「環境構築手順書.xlsx」は、書いた瞬間から腐り始めます。
人間は必ず読み間違え、手順を飛ばします。
環境構築は、コマンド一発(`docker-compose up`)で完了しなければなりません。
機械ができることを人間にやらせるのは、非人道的であり、かつ非効率的です。

03. バージョン固定の重要性

「最新版を使う」というのは聞こえはいいですが、
ライブラリのバージョンを固定(Pinning)しないのは自殺行為です。
今日動いていたコードが、明日の朝、ライブラリのアップデートで突然死ぬ。
`package-lock.json` や `Gemfile.lock` をコミットし、再現性を担保してください。

執筆:DevOpsスペシャリスト

再現性の鬼。
「環境の差異」という不確定要素を完全に排除し、デプロイを「恐怖の儀式」から「日常の業務」に変える。