🍣
ローカルPCでの開発環境について深掘りする
※前提:Windows PCを使用する場合で記事を作成している。
ローカルの開発基盤の選択肢
以下の3つが考えられる。
- 素のWindows上でする
- WSL on 素のWindows 上でする
- 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