「私のPCでは動くんですけど、もう一度試してもらえますか?」
チームの誰かがこの「名言」を口にしたとき、私は今日の午後が無駄になることを悟る。
ジュニア開発者は「自分だけが再現できない」バグを前に途方に暮れ、シニア開発者は環境問題のせいで同僚のデバッグに1時間を費やし、結局PHPのバージョン違いが原因だと気づく。プロジェクトマネージャーは、緊急のホットフィックスがなかなかマージされず、針の筵に座っている。
これは、私たちの技術チームで毎日演じられている、最もコストのかかるドラマだ。私たちはこれを**「環境による消耗」**と呼んでいる。
チームのテックリードとして、私はこの慢性疾患を「根治」するためにあらゆる方法を試してきた。手順書を統一し、全員がそれに従うようにした。結果はどうだったか?AさんのPCはM1チップ、BさんはIntel。CさんのHomebrewは古く、DさんはうっかりグローバルのNode.jsをアップグレードしてしまった…
環境の「エントロピー増大」は不可逆のようだ。些細な違いが積み重なり、やがて些細なバグで爆発し、私たちの最も貴重なリソース、すなわち開発者のフロー状態と時間を食い尽くす。
私たちはDockerを全プロジェクトで強制するような重量級の解決策も検討した。理論上は完璧な「Environment as Code」だが、我々のようなWeb開発が主で、迅速なイテレーションが求められるチームにとっては、その学習曲線、リソース消費、そしてmacOS上での不安定なパフォーマンスは、新たな苦痛をもたらした。一つの問題を解決するために、別の問題を生み出してしまったのだ。
私たちが必要としていたのは**「環境の処方箋」**だった。Dockerの「一貫性」という魂を持ちながら、ローカル開発に求められる「軽快さとシンプルさ」という肉体を持つもの。
長期間の模索と試行の末、私たちのmacOSベースのチームは、ついにその処方箋を見つけ出した。それがServbayチーム版だ。
それは、私たちのチームの協力モデルを根底から変えた。
環境の「セントラルキッチン」モデル
テックリードである私は、Servbay内で各プロジェクトの標準化された「環境スナップショット」を定義できる。例えば、「ECプロジェクトA」はPHP 8.2、PostgreSQL 15、Redisを使用し 、「公式サイトプロジェクトB」はNode.js 20とMySQL 8.0を使用する 、といった具合だ。そして、この設定をチームに共有する。
新メンバーの「ゼロコスト」オンボーディング
先週、新しい仲間が加わった。以前なら、彼が様々な環境をセットアップするのに丸一日かそれ以上かかっただろう。しかし今、プロセスはこうだ:Servbayをインストール -> 私のチームに参加 -> 終了。彼のServbayはチームの環境設定を自動的に同期し、必要なサービスとバージョンが瞬時に準備される。 彼は最初の1時間でコードを書き始めていた。
複数プロジェクトのシームレスな切り替え、相互干渉なし
私たちのチームは複数のクライアントプロジェクトを同時にメンテナンスしており、それぞれの技術スタックは異なる。Servbayを使えば、各開発者が自分のPCで何十ものプロジェクトを簡単に管理でき、各プロジェクトは独立したPHP、Node.jsバージョンとデータベースに紐付けることができ、互いに衝突しない。 これは以前では考えられなかったことだ。
即時共有、アジャイルなコミュニケーション
同僚が機能を完成させ、UIデザイナーに効果を見せたいとき、もはやテストサーバーにデプロイする必要はない。Servbay v1.13.0に統合されたfrpやngrokを使えば、ワンクリックで公開リンクを生成し、ローカルサイトを直接共有できる。 この機敏性が、私たちのコミュニケーション効率を劇的に加速させた。
テックリードの価値は、優れたコードを書くだけでなく、チームのために「摩擦のない」ワークフローを構築することにある。
「私のPCでは動くんですけど」という言葉は、今や私たちのチームから消え去った。節約できた時間は、より創造的な仕事やコードのリファクタリング、あるいは単に早く帰宅するために使われている。