仮想環境(VM)を使って開発を行っている場合、プロジェクトファイルをホストと仮想環境内でどのように共有すれば良いのか頭を悩ませた経験のある方は多いかもしれません。
今回PHP開発者のMantas Šimkūnas氏はブログ記事「Why you should keep files inside your VM(VM内にファイルを保存すべき理由)」を公開し、VM内でファイルを保持する利点を説明しています。
同氏によると、VMで開発環境を仮想化した場合、ホストとVMの間でプロジェクトファイルを共有・同期する方法は多数存在するものの、それらの多くには欠点があるとのこと。NFS、Samba、Rsync、SSHFS、Virtualboxの共有フォルダ・ドライバなど、ホストのファイルをVMへ共有したり同期したりする複数の方法を試してみたものの、パフォーマンスや互換性の問題、複雑さなど、多くの問題が残っていることがわかったそうです。
同氏は、これらの問題を解決する方法として、ホストではなくVM内にプロジェクトファイルを保持する方法を提案しています。VMのネイティブファイルシステムにファイルを保持し、ホストへ共有することで、ネイティブレベルのパフォーマンスと互換性を得ることができ、またVM内での作業をより分離することができる利点もあるとしています。唯一の欠点は、VMが稼働している間しかファイルにアクセスできないことだそうです。
VM内のファイルをホストから利用しなければならない場合、NFSやSambaなどのファイルサーバーを利用することができます。ホスト側でのパフォーマンス低下やマウント操作などの欠点があるものの、それらは許容できる範囲内で、VSCodeなどのリモート開発拡張機能を使うことで、SSH経由で直接ファイルを閲覧することも可能です。
ファイルを共有する責任がホストに委ねられないため、試した中ではこの方法が最も堅牢なセットアップだと感じてるとまとめています。
この提案に対する議論がHacker Newsでも行われています。VM用いた開発環境のヒントを得たい方は参考にしてみてはいかがでしょうか。