質問: `node.js`のパッケージ管理マネージャーである`npm`と`yarn`についてです。 パッケージを管理するためのツールであることは分かりますが、そもそもなぜパッケージを管理する必要があるのでしょうか? * パッケージの依存関係が`package.json`に記載してあるので、第三者などの環境での再現が容易。 * 言語やパッケージのバージョンを管理し動作を保証する。 上記など考えてみたのですが、私は趣味でプログラミングをしている程度です。 実務としての開発などの経験がまったくないので、これ以上思い浮かびませんでした。 初歩的で恐縮ですが、間違いのご指摘など、ご回答いただけたらと思います。
回答: 「保証する」のはもちろんそうなのですが、 むしろ「不具合が発生した時の再現させやすい」というメリットが大きいですね。 不具合は再現するまでが大変で、再現さえさせてしまえば対策も浮かびますし、修正後の確認も容易ですからね。 現場で手順書を元に環境構築をしていた時代がありましたが、 本番環境や他のメンバーの所で出てきた不具合を、 持ち帰って検証した時に不具合が出ないという超困るケースがあります。 コードを見れば「なんとなくここが悪いのかな?」という箇所はわかるものの、 「直ったという保証」は自分の環境内ではできず、 「本番環境にリリースしてみる」や「他人に修正箇所を適用してもらい確認してもらう」などといったIT全否定みたいな行動が必要になります。 パッケージ管理というのはもちろんですが、 VagrantやAnsible、Dockerなどのツールを駆使して、コードとして書かれている事以外の環境構築は一切やらんぞ、これでシステムが動くようにしろ ...という発想はとても重要です。 これを一気通貫して行っているプロジェクトでは 「ぼくの環境では再現しませんでした」問題が極めて少なくなります。 いくつか転職を重ね、そういうプロジェクトにジョインしましたが、こういった問題は凄く減りましたね。 今後業務とかで他のエンジニアと組むケースがある場合、その辺聞いてみてください。 もし何も対策してない、考えてない、ツール?なにそれ?みたいなメンバーだと炎上する可能性が高いので注意してください。