開発あるあるです。
新しいメンバーが入ります。
リポジトリをクローンします。
READMEを見ます。
環境構築を始めます。
そして30分後。
「すみません、動きません」
始まりました。
環境構築ガチャです。
昔からあります。
たぶんこれからもあります。
でも実は、この手の問題って技術力不足が原因じゃないことがほとんどです。
環境の作り方の問題だったりします。
属人化した開発環境でよくあること
まず一番多いのがこれです。
「〇〇さんのPCでは動いてます」
出ました。
最強の呪文です。
いや、動いてるのは知ってるんです。
問題は、
なぜ動いているのか誰も分からない
ことです。
いつ入れたか分からないツール。
どこで設定したか分からない環境変数。
誰も知らないローカル設定。
結果、
「本人以外再現できません。」
「本人が休むと止まります。」
「本人が退職するともっと止まります。」
あとよくあるのが、
「聞けば分かります」
問題。
READMEはありません。
手順書もありません。
でも詳しい人に聞けば解決します。
確かに解決します。
ただし毎回聞くことになります。
新しいメンバーが入るたびに。
半年ぶりに触るたびに。
案件を引き継ぐたびに。
そのうち、
チャット履歴が手順書になります。
なかなか危険な状態です。
さらに、
環境構築だけで半日かかる
なんてこともあります。
開発を始める前に疲れます。
まだコード1行も書いてないのに。
なぜ属人化が起きるのか
理由は意外とシンプルです。
みんな、
「動いたら終わり」
になってしまうからです。
開発中は忙しいです。
納期もあります。
なので、
「動いた。」
「よし。」
となります。
でもチーム開発では、
そこがスタートラインです。
他の人も作れるか。
新しいPCでも作れるか。
半年後でも再現できるか。
ここまで考えないと、
環境はどんどん属人化していきます。
そして気付いた頃には、
〇〇さんしか分からないシステム
が完成します。
開発者なら一度は見たことがあるはずです。
じゃあどうすればいいの?
答えはシンプルです。
「誰のPCでも同じ環境を作れるようにする」
です。
記憶に頼らない。
チャット履歴に頼らない。
特定の人に頼らない。
環境構築の手順は残す。
必要なツールのバージョンは明記する。
できるだけ自動化する。
最近ならDockerを使うケースも多いですが、
Dockerを使うことが目的ではありません。
大事なのは、
同じ手順で、
同じ環境が再現できること。
です。
極端な話、
新人が手順書を見ながら構築して動けば合格です。
逆にベテランしか構築できないなら、
どれだけ最新技術を使っていても危険です。
大事なのは「再現できること」
めっちゃ乱暴に言うと、
開発環境は料理のレシピみたいなものです。
料理人Aしか作れない料理。
これはお店としては困ります。
誰が作っても同じ料理が出てくる。
だからレシピがあります。
開発環境も同じです。
〇〇さんしか作れない環境ではなく、
誰が触っても同じ状態になる環境。
これが理想です。
開発環境って裏方なので、
つい後回しになりがちです。
でも実際には、
新メンバーの立ち上がり速度
トラブル対応のしやすさ
引き継ぎのしやすさ
全部に影響します。
だから環境構築は単なる準備作業ではありません。
チーム開発の土台そのものだったりするんですよね。