WindowsとLinux両方使うならWSL2を使え！ (初心者歓迎)

# 0. 本シリーズについて
このシリーズでは，Pythonによる機械学習を始める人や，もっと効率的に研究開発を行いたい人に向けて，**再現性が高く・開発しやすく・すぐに使える環境構築方法**を紹介していきます．

もちろん，好きな記事だけつまんで読むのも大歓迎！

### 目次
- [【第0回】初心者歓迎！機械学習の開発環境に迷ったらこれ！Poetry × Hydra × W&B × PyTorchで始めるMLライフ](https://qiita.com/gajitaku/items/48c9b1441ee8fe512c9f)
- 【第1回】WindowsとLinux両方使うならWSL2を使え！ (初心者歓迎)（⬅️ **この記事** ）
- [【第2回】pyenv × PoetryでPythonのパッケージ管理を効率化！（Windows / Linux 両対応・初心者歓迎）](https://qiita.com/gajitaku/items/c50b945725fcf8d75bb8)
- 【第3回】PyTorchを使った初めてのディープラーニング体験！(初心者歓迎)
- 【第4回】ごちゃごちゃファイルとはサヨナラ！Hydraでパラメータ管理（Python 機械学習・初心者歓迎）
- 【第5回】神ツールW&Bで訓練の可視化・比較・ログ化が一瞬（Python 機械学習・初心者歓迎）
- 【第6回】Hydra × W&B × PyTorchテンプレ作ったから使ってほしい（Python 機械学習・初心者歓迎）

---

# 1. この記事でわかること
- WSL2を使ってWindows環境に仮想Linux環境を構築する方法．  
- VSCodeを使って仮想Linux環境内のファイルを扱う方法．  

### おねがい
今回の手順でうまくいかなかった箇所や，つまずいたところがあれば，
ぜひコメントなどで共有してもらえると，他の人（筆者含む）の助けにもなります！
自分で調べてみるのも大事ですが，困ったら誰かに頼るのも大切です．

# 2. なぜWindows民に仮想Linux環境が必要なの？
機械学習や深層学習をWindows環境だけで進めようとすると，  
意外と「思ったより遅い」「なんか動かない」「人の記事と挙動が違う」といったことが起きがちです．

たとえば私の場合，`PyTorch` で学習時に `DataLoader` の `num_workers` を2以上に設定すると，**Windowsではプロセス生成が極端に遅くなってしまい，学習速度がガクッと落ちました．**  

本来は学習速度が早くなるはずなのに， **逆に遅くなってしまいました．** 

---

### 🔧 その他にもこんな理由があります

- 多くの機械学習ライブラリ・フレームワークが **Linux前提で開発** されている  
- QiitaやGitHubなどの技術記事の多くが **Linux環境を前提に書かれている事が多い**  
- 研究や業務のサーバ環境はほとんど **Linux（UbuntuやCentOSなど）**  
- Dockerやクラウドの知識と連携しやすいのも Linux の利点

---

### 💡 WSL2なら，こんな良いことが！

- **Windows上にそのままLinux環境が作れる（再起動なしで切り替え可能）**  
- ファイルは **Windowsと共有可能**  
- GPUやDockerも対応（対応GPUならCUDAが使える！）  

---

- 機械学習用のサーバーがあるならLinuxをそのまま入れれば良いけど，Windowsが入ったデスクトップPCやノートパソコンをそのまま使いたいなら， **WSL2が手っ取り早くLinux環境を構築できる！**

- もっと基本的な仕組みやら概要が知りたい人は[公式サイト](https://learn.microsoft.com/ja-jp/windows/wsl/about)へ．  


## 3. さっそく導入

※ここから先で再起動することになるので，必要なものは保存しといてください．
- 今回使用するOSは **Windows11** です．  

（Window10だとうまく動作しない可能性があります．）  

### 3.1. 管理者でWindows PowerShellを開く

- 左下のWindowsマークを右クリックして「検索」
- 「PowerShell」と検索して「Windows PowerShell」を **管理者として** 実行

### 3.2. WSL2のインストール

- `wsl --install` と入力
<details><summary>実行結果</summary>

```:PowerShell(管理者)
PS C:\Windows\system32> wsl --install
インストール中: Linux 用 Windows サブシステム
Linux 用 Windows サブシステム はインストールされました。
インストール中: Ubuntu
Ubuntu はインストールされました。
要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。
```
</details>

- 再起動を促されたら，言うことを聞きましょう
- 再起動後は，この記事に戻ってきて！

### 3.3. 再起動後

- 自動で以下のようなウィンドウが表示されるかと思います．  
- 表示されない場合は「検索」から「Ubuntu」と検索し，開く． 

(下の画像とは異なり，左上のウィンドウ名は「Ubuntu」になってるはずです．)

![Ubuntsu初期設定画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077793/0844b659-c5af-4a43-bac7-947cd1737fc6.png)

- 上から順に **設定したいユーザー名**，**設定したいパスワード×2**を入力します 
- ※ローカルでのみ使うなら，簡単なものでOK．短い方が良い．（ここではuser）  
- 下の例はパスワードまで入力し終わった後の画面
```:Ubuntu
Enter new UNIX username: user
New password: '設定したいパスワード'
Retype new password: '設定したいパスワード'
passwd: password updated successfully
Installation successful!
```

- インストール完了！

### 3.4. 一応インストールできてるか確認

- 前と同じようにPowerShellを，今度は **普通に開く** 
- `wsl --list --verbose` と入力
- 以下の画面のように，NameにUbuntuがあればOK!

![Ubuntu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077793/31843078-55ff-44fc-ae2c-4c225e69f722.png)

## 4. VSCodeと連携しよう
これから先は，基本的にVSCodeで作業をします．
VSCodeってなに？という方は以下の解説ページを見て，インストールを済ませてください．

https://www.kikagaku.co.jp/kikagaku-blog/visual-studio-code-windows/


- さて，手順は簡単．VSCodeを開いたら，左下の青い >< みたいなマークを押します

![vscode.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077793/d91c87b6-a488-47d6-a5fa-bb7e233b0b0e.png)

- WSLへの接続を押す

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077793/a2c49988-53ef-445d-bace-edd27709e7e3.png)

- 左下の青いとこが， `><WSL: Ubuntu` となってれば完了！

VSCodeの詳しい使い方や，Linuxのコマンドなどは詳しく説明してくれている記事がたくさんあるので，今回は最小限必要なところだけ記述します．その他は各自で調べて勉強しましょう！

### 使い方

- 下画像の青矢印の先を押すと，ターミナル (bash) が開けます．  

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077793/d5d0178e-06a0-4c78-b744-44613dfb9dcd.png)

- こんな感じ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077793/4155f8b4-a203-46a0-a32a-e652406b42f1.png)

#### よく使うLinuxコマンド

| コマンド | 意味 |
|--------|------|
| `pwd` | 今いるディレクトリ（場所）を表示 |
| `ls` | 中にあるファイルやフォルダを表示 |
| `cd ディレクトリ名` | ディレクトリを移動（Change Directory） |
| `mkdir ディレクトリ名` | 新しいフォルダを作成（Make Directory） |
| `rm -r ディレクトリ名` | ディレクトリごと削除（※注意！） |
| `clear` | 画面をスッキリさせる（ログを一時消去） |

- では，現在のディレクトリを確認してみましょう．  

```bash:bash
pwd
```

```bash:実行結果
/home/user
```

このディレクトリは，Windowsで言うところの，`C:\Users\user` ですね．


- 今後のプロジェクト（作業ディレクトリ）を整理しやすいように，ここに `projects` ディレクトリを作成しましょう

```bash:bash
mkdir projects
```

- 作成できているか，`ls` で確認しましょう

```bash:bash
ls
```

```bash:実行結果
projects
```

この `projects` の中に，プロジェクトごとにディレクトリを作成すれば分かりやすいかなって思います．今回は `sample` ディレクトリを作成して，その中で今後は作業しよう．

- `projects` に移動して，`sample` を作るには，以下のコマンドを順に実行

```bash:bash
cd projects
mkdir sample
```

- 作業ディレクトリ `sample` を作成できたので，VSCodeに認識させます
- これを押して，

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077793/0e07835e-878f-4b1a-a9fe-78fddaf4eeb7.png)

- 「フォルダーを開く」を押して，

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077793/b125a88e-c478-4aa2-b210-49b52dc58b08.png)

- 「projects」「sample」の順に押して，

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077793/ada86c25-943d-4ac6-8a5c-dea8060c3bff.png)

- 「OK」を押す

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077793/e2cb5bee-4838-47f7-83a3-4709ad2cf035.png)

- 完了！

その他VSCodeの使い方は各自で調べてください！  
ファイル作成やフォルダ作成，エディタ分割などなど．  
最近 (2025) だとCopilotを入れれば，コードの予測や自動修正とかしてくれるので便利！

## 5. WindowsのエクスプローラーでLinux内のディレクトリを操作可能

今までの手順でLinux環境を構築していれば，Windowsのエクスプローラーに見慣れないペンギンのマークがいると思います．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077793/6b76834c-67ae-4f9d-b9eb-074f60ba9982.png)

ここから，Windowsと同様の操作でLinux内のファイルをいじれます．便利．  
基本的にいじるのは以下の画像に示すフォルダ内だけにしておこう．
さっきの `projects` や `sample` もいつもの操作で作れます．

Windows内のデータをLinuxで扱いたいときは，いつもの操作でコピペや移動ができますよ．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077793/f79342ba-d974-48a3-a19c-1274a8b87bab.png)

## 6. おわりに
ここまでで，Windows環境にWSL2でLinuxを導入し，VSCodeと連携して開発できる環境が整いました！
筆者も3年間ほどはWindows直下で開発してましたが，今はメリットの多いLinux環境で開発・研究しています．
今のうちに，Linux環境に慣れておくのは将来役立つはずです．

### 次回はこちら

- [【第2回】pyenv × PoetryでPythonのパッケージ管理を効率化！（Windows / Linux 両対応・初心者歓迎）](https://qiita.com/gajitaku/items/c50b945725fcf8d75bb8)

またお会いしましょう！