開発環境は毎日破壊せよ
あなたは開発環境を「秘伝のタレ」にしていませんか?
- 「俺のdev.sqlite3にはコツコツ貯めた開発データが詰まってるんだ!」
- 「開発データを育て上げるのもプログラマーの嗜みの一つだよ」
発想を転換してください。「開発環境は毎日破壊する」——それくらいの心構えで、クリーンで再現性の高い環境を扱う文化を根付かせるべきなのです。
壊れることを恐れるな。そもそも壊れるものなのだから。
そもそも、開発環境は壊れるものです。 新入社員が不慣れな操作で壊すだけでなく、ベテランでも新しいフレームワークを使うときだったり、新しいツールを試したり、あるいは最近話題のAIコーディング支援ツールを導入したりするだけで、昨日まで動いていたものが動かなくなるのは日常茶飯事です。
問題なのは、この「破壊」を過度に恐れることです。環境が壊れるリスクを避けるあまり、新しい技術の検証やツールの導入をためらっていては、変化の速い現代の開発競争から取り残されてしまいます。
「秘伝のタレ」から「共有資産」へ
個人が育て上げた開発環境はその人にとっては最適化されているかもしれません。しかし、本当に価値のある設定やデータ、ノウハウなのであれば、それは個人が抱え込むのではなく、チームの共有資産とすべきです。
セットアップ用のスクリプトやコンテナ(Dockerなど)を用意し、ドキュメントを整備することで、誰でも数分で同じ開発環境を再現できる状態を目指すべきです。
"Disposable"な環境がもたらす真の価値
「いつでも壊せる」ということは、「簡単に構築できる」ということです。このような"Disposable"(使い捨て可能)な開発環境は、インフラの世界で語られる"Disposable Infrastructure"と同様のメリットをもたらします。
開発に使うDockerコンテナ(PostgreSQLやElasticsearchなど)のバージョンを上げたい時はどうしましょう?"秘伝のタレ"であれば本番環境同様の移行作業が必要です。でも、"Disposable"な開発環境なら単にコンテナを削除して作り直すだけでOK。
あるいは、AIコーディングツールを試すためにPC上にAI用環境を立ち上げることもできるでしょう。これにより、複数のAIを同時に動かして開発効率N倍なんてことも可能になります。
開発環境を神聖なものとして扱う時代は終わりました。
これからは環境を「育てる」のではなく、変化を恐れずチーム全体で高速に実験と学習を繰り返していくために「いつでもゼロから再現できる」仕組みを作っていくべきです。
Discussion