Windowsじゃダメじゃん

Windowsじゃダメじゃん

2026/6/16

あ、Linuxで動かすじゃん。

Ploigi-Webのデプロイまであと少し、という感覚になったところで表題の通りに気づきました。本来であれば初手で意識すべきことだったのでしょうが...

最初に行ったPloigi-Devの開発は、Ubuntu serverを乗せたラズパイにSSHして開発をしていました。それが今回のPloigi-WebはWindows PC上で開発していたのですが、恥ずかしながらOSが違うということを全く意識していませんでした。気づくところはいっぱいあったのに。今後の開発環境も考え、どうするかを探しているとWSL2というものにたどり着きました。

WSL2とは

Windows Subsystem for Linux 2はWindowsの機能で、WindowsマシンでLinux環境を実行できるようにするものです。別の仮想マシンやデュアルブートを必要とせず、1台のWindows PCで開発できるようになります。

WSL2をインストール

まずはWSL2をインストールするところからです。

管理者権限でPowerShellを開き以下のコマンドを実行します。

wsl --install

問題なく処理が終了したら一度再起動が必要です。

デフォルトで使用されるLinuxのディストロビューションはUbuntuが使用されるようです。自分が使用したい特定のディストロビューションがある場合、以下のコマンドで使用可能な一覧を確認できます。

その後もう一つのコマンドを、自身が指定したいものを[]部分で指定し実行してください。

/使用可可能なディストリビューション一覧表示
wsl.exe --list --online

/使用したいディストリビューションを[]で指定
wsl.exe --install [ディストリビューション名]

アカウント作成が済んだら以下のコマンドを実行し、インストールされたディストリビューションの一覧とバージョンを確認します。ディストリビューション名とバージョンが表示されれば問題なくインストールされています。

アカウント作成までが済んだら以下のコマンドを実行し、インストールされたLinuxディストリビューションの一覧とバージョンを確認します。ディストリビューション名とバージョンが表示されれば問題なくインストールされています。

wsl.exe --list --verbose

次に、デフォルトのWSLバージョンを2に設定します。

wsl.exe --set-default-version 2

以下のコマンドで使用するディストリビューションをデフォルトに設定して完了です。

/私の場合はwsl.exe --set-default Ubuntu-26.04
wsl.exe --set-default <Distro>

ターミナルで開く場合はwslと入力し実行すると以下のようになりLinuxが使用できるようになります。

wsl
アカウント名@ユーザ名:/mnt/c/WINDOWS/system32$

なぜLinux環境へ移行が必要か

最もシンプルな理由は「本番環境がLinuxだから」です。Ploigi-WebはConoha VPS(Linux)上にデプロイする予定です。開発環境と本番環境のOSが異なると、ローカルでは問題なく動いていたものが本番で突然動かなくなる、いわゆる「It works on my machine」問題が起こりやすくなります。

開発と本番の環境を揃えることで、こうした問題を未然に防ぐことができます。これが今回WSL2でLinux環境に移行しようと思った最大の理由です。

何が異なるために障壁となるのでLinux環境での開発が必要かWindowsとLinuxの間には、一見わかりにくいながらも開発に影響する違いがいくつかあります。

ファイルパスの区切り文字

Windowsはバックスラッシュ(`\`)、Linuxはスラッシュ(`/`)を使います。コード中でパスをハードコードしていると、環境が変わったとたんにエラーになることがあります。

改行コードの違い(CRLF vs LF)

Windowsの改行コードはCRLF(`\r\n`)、LinuxはLF(`\n`)です。Gitの設定次第では、Windows上で書いたコードをLinuxに持っていったとき、シェルスクリプトが動かなくなる原因になります。

ファイル名の大文字・小文字の区別

Windowsのファイルシステム(NTFS)は大文字・小文字を区別しません。`App.tsx`と`app.tsx`を同じファイルとして扱います。一方Linuxは厳密に区別するため、Windows上では動いていたimport文がLinuxで「ファイルが見つからない」となるケースがあります。

シェルとコマンドの違い

WindowsはデフォルトでPowerShellが使われますが、LinuxではBashが基本です。`npm scripts`の中でLinux系のコマンド(`rm -rf`など)を使っていると、Windows環境では実行できないことがあります。

どのように行うかまとめ

WSL2のインストールが完了したら、プロジェクトをLinux環境へ移行します。ポイントは、プロジェクトのファイルをWSL2のファイルシステム(`/home/<ユーザ名>/`以下)に置くことです。

Windowsのファイルシステム(`/mnt/c/`以下)のままでも動作はしますが、ファイルI/Oのパフォーマンスが著しく低下するため、WSL2のネイティブファイルシステム上に置くことが推奨されています。

VS Codeを使っている場合は「WSL」拡張機能を導入することで、Windows側のVS CodeからWSL2内のファイルをシームレスに編集できます。コマンドは必ずWSL側のターミナルから実行することが重要で、これを怠ると権限エラーの原因になります(詳しくは別記事で紹介しています)。

Gitの設定として、改行コードの自動変換も無効化しておくと安心です。

git config --global core.autocrlf false

### おわりに

これまでWSLといえばWorld Surf Leagだったのに、ある日突然WSL=Windows Subsystem for Linuxになり、感覚が塗り替えられた瞬間でした。

WSLとはとても便利でありがたい。

https://learn.microsoft.com/en-us/windows/wsl/install