🍣

ローカルPCでの開発環境について深掘りする

に公開

※前提:Windows PCを使用する場合で記事を作成している。

ローカルの開発基盤の選択肢

以下の3つが考えられる。

  1. 素のWindows上でする
  2. WSL on 素のWindows 上でする
  3. VM on 素のWindows 上でする

3つの方法のメリデメを整理する。

基盤 メリット デメリット 向いている用途
1. 素のWindows上 - セットアップが一番簡単
- Windows向けのIDE/ツールがそのまま使える
- リソース効率が良い(VMなし)
- Linux前提の開発に弱い(コマンドやパッケージが異なる)
- 本番Linuxとの差が大きく「動いたのに本番で動かない」問題が起きやすい
- Docker環境が複雑になりがち(Docker Desktop必須)
- Windows向けアプリ開発 (.NET, C#, Excel VBAなど)
- Linux非依存の軽い開発(Webフロント・Python小規模スクリプトなど)
2. WSL上 - Linuxコマンドやパッケージがそのまま使える
- DockerもWSL2上で快適に動作
- Windowsとファイル連携しやすい
- VMより軽量で高速
- WindowsとのファイルI/Oが遅いことがある
- ネットワーク周りの挙動が本番と微妙に違う場合あり
- Web開発(Python, Node.jsなど)
- Dockerを活用する開発
- 本番Linuxを意識した個人開発
3. VM上 - Linuxを完全に再現できる(本番環境に近い)
- ネットワークや複数サーバー構成の検証が可能
- Windows環境と完全に分離できる
- 起動が重い、リソースを多く消費
- Windowsとのファイル共有が手間
- Dockerを使うとVMの中のさらにコンテナで二重管理になる
- 本番サーバーに近い環境を再現したい
- ネットワーク実験やインフラの練習
- OSごと複数立ち上げたい場合(Ubuntu + CentOSなど)

→ 個人開発では、2. WSL上で開発することを選択することが多い。

なぜWSL上で開発すべきなのか

  • Webアプリを世に公開する際には、サーバーを立てて、その上にアプリを乗せて公開する
  • 上記サーバーの多くはLinux OSが載っている
  • 開発段階からWSL(Linux環境)を利用しておくと、本番環境への移行がスムーズになる!

補足:Webアプリ以外のアプリ開発でもWSL上で行うべきなのか

  • デスクトップアプリは、PC単体で動作するもの(例:電卓や画像ビューア)も多く、サーバーを立てずに済む場合がある
  • ただし、データを複数の端末で共有・同期したい場合 や、ユーザー情報を一元管理したい場合 には、裏側でサーバーが必要になる
  • そのようなケースでは、Webアプリと同じくサーバー側の仕組みをLinux上に構築することが多いため、WSLで開発しておくと環境の差異が少なく移行がスムーズ
  • 一方で、サーバーに依存しない純粋なデスクトップアプリの開発であれば、必ずしもWSLは必要ではない

ここから出てくる疑問

APサーバとDBサーバを分けて立てたい場合は、VMを使わないといけないのか?
→ わかったら記載する

Discussion