
開発環境についてですが、
便利なソフトが多いためソースコードを編集したりは基本的に Windows で行っています。
実際にデプロイする先は Linux OS のため開発時も VM を利用して同バージョンの Linux 環境で実行するようにしています。
その際、編集したソースコードを VM の Linux と共有する必要があるのですがベストな方法は何があるでしょうか?
ありがちなケースかと思うのですが調べてもこれがベストと言えそうな方法が見当たりません。
いろいろ試したけどとりあえず妥協してこれ、とかそういうのが多いです。
個人開発の人の日記とかであっても高度なことを書いてる本職の人らしき人が紹介してるのは全然見当たりませんでした。
仕事で開発してる人たちにもありそうなことだと思うのですが、そうないケースなのでしょうか?
想定してる開発内容は、Node.js、PHP、Pythonなど Web 系のサービスを作ることです。
以下は自分が試したことや考えてることです。
- 共有ツールを使う
編集するのは Windows 側のみのため、 WinSCP 等を利用して Windows の編集を監視して Linux に反映させる。
簡単ではあるものの、毎回開発開始時に同期を開始する必要がある。
忘れててうまく反映されずエラー探して見つからなくて困った結果同期が始まってなかったということも何度か。
また、反映されるまでに少し遅延があるので編集後に保存ボタン押してすぐに確認してもまだソースが反映されてなくてもう一度リロードしないといけないときもある。
- Linux が Windows をマウント
マウントしてるので同期の開始とか不要ですぐに反映される。
しかし OS 管理のファイルシステムではないため不都合もある。
1つ目はシンボリックリンクが作れないこと。
例えば npm のインストールではシンボリックリンクが作れないとエラーになる。
シンボリックリンクを作成しないオプションもあるがシンボリックリンクがないと npm run で実行できないなど不便になる。
ネットワーク経由のマウントではなく、 VirtualBox を使ってマウントをする場合は、管理者権限が必要だがシンボリックリンクの作成を許可できる。
ただし、起動時に管理者として実行をしないといけない他VirtualBoxを使わないといけないという制限ができる。
2つ目はファイルの監視ができないこと。
フロントエンドのビルドツールはいろいろあるがいくつか試してもマウント環境の場合はエラーになり正常に自動更新できなかった。
フロントエンドならば Windows 側で監視してビルドした結果を Linux が参照ともできる。
だが、 Node.js での node-dev や pm2 を使って編集があればサーバサイドプログラムを再起動するということはどうしようもないと思う。
- Windows が Linux をマウント
まだ試していないが、 1. や 2. は使ってるという話は聞いたことはあるがこれは全然聞かない。
一見 2. の問題が解決しそうなのに使われていないのなら知らないだけで欠点があるのかと思う。
考えられるのだと、使い捨て感のある VM にコード本体を置いておくのが不安、もしくは VM が起動していないときにちょっとコードを確認したいということができないということ。
しかし、 git を使ってリモートに置いておけば VM が吹き飛んでも困らないし github 等のブラウザから確認できるものだと見るのにも困らない。
IDE によっては変更監視を行っていて 2. のようなことが Windows 側で起きるのだろうか。
- git pull
即変更を反映させるのではなく、コミットしてから push/pull で Linux で確認する。
コミットできる単位になるまでは確認しない。
そういうことしてる人がいたから候補に上げてみたが、コミット単位になる前に作業中にどんな感じに動くかこまめに確認したいのでこれは無理だと思う。
コミット後にバグあって直してまたコミットは無駄なコミットが増えるし。
Windows にも実行環境を用意した上で、普段は Windows で実行してコミット後に Linux でも同じように動くか確認というのならありかもしれないが二度手間感が否めない。


回答2件
あなたの回答
tips
プレビュー