WSL（Windows Subsystem for Linux）のススメ

2020年夏、いまさらWSLです。

会社の業務用PCは、基本的にWindowsを使っていることが多いと思います。私もそうです。クリエイティブな業種などMacを使っていますという会社もありますが。
最近はアプリの開発やクラウドを利用するにあたって、Linux・macOSの方がツール・ノウハウが充実している場合がありますし、某社製品などではセットアップに必要なツールがLinux・macOS向けにしか提供してないということもありました。そういった場合にWSLはかなり重宝します。

しかし、私の周りで意外とWSL知られてない・使われてないんです。Linuxの環境が欲しくてWindowsに仮想環境（VMware Player、Virtual Boxなど）を入れて使っていますという方が、結構多いです。

私は問いたい、、、
**「本 当 に 仮 想 環 境 が 必 要 で す か ？」**

#・WSLのいいところ
**・（当たり前ですが）Linuxのコマンドが使える。**
**・MS Storeからアプリとして導入できるため、煩わしいLinuxインストールが不要。**
→ 仮想マシンを作成して、Linuxのメディアをダウンロードして、インストールして、、、不要です。
**・起動が高速。**
→ 仮想ソフトを起動して、仮想マシンをスイッチオンして、、、不要です。
**・ネットワーク周りの設定が不要。**
→ 仮想ソフトでブリッジ・NATを定義して、仮想マシンにログインしてLinuxのネットワーク設定、、、不要です。
**・Windows Terminalを使っていれば、コマンドプロンプト・Power Shell・Linux環境が1画面から操作可能。**
→ 仮想マシンのLinuxにSSHでログインして、、、不要です。
**・Dockerも動く。**
**・クラウド用CLIも動く。**
※あと、仮想環境に比べるとメモリの使用率なども少ないと思われますが、比較したことがないです。


#・仮想環境じゃなきゃできないこと
**・好きなLinuxディストリビューションを使う。**
→ WSLでもUbuntu・Debian・SUSE・CentOSなど使えますが、MS Storeで提供されているものに限ります。
**・Linux向けのソフトウェアの検証をしたい。**
→ WSLではLinuxのカーネルが存在しないなど通常のLinux環境と100％の互換性はありません。
ソフトウェアによっては正常動作しないと思われます、特にサーバのインフラで利用するクラスタソフトとかデータ複製ソフトとか。
**・複雑なネットワークの構成が必要。**
→ WSLはWindowsのネットワークをそのまま使うので、ネットワークの設定変更ができません。

早い話、Linuxを導入するサーバの構築や設定を検証したいといった用途には向きません。


#1. WSLのインストール（有効化）
「コントロールパネル」→「プログラム」→「Windowsの機能の有効化または無効化」→「Windwos Subsystem for Linux」にチェックを入れる。これだけ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/375120/d1a60c85-42e3-53da-c0b3-e2aa424e140b.png)


#2. MS StoreからLinuxをインストール
MS Storeアプリを起動して、「WSL」で検索すれば色々出てきます。お好きなものをどうぞと言いたいのですが、CentOSなどは有料のようです。私はUbuntuを使っています。仕事ではRedHat・CentOSを中心に使っているので、Ubuntuは慣れていないのですが。。。
※Windows Terminalも入れておけばなお便利。（下の画像、上段のアイコン列で左から3番目）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/375120/b75c36c3-5dfc-7fc8-5b90-754b71f77e21.png)


#3. 起動と初期設定
MS Storeアプリからインストールが完了したら起動。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/375120/e01f136f-e0f2-cde1-1a63-083d7aa5efa6.png)
スタートメニューからも、アプリとして起動可能。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/375120/8a9db805-859b-dc0a-ac04-bbd74fb610f2.png)
初回起動時はインストール処理のため、「Installing, this may take a few minutes...」という表示で少々待ちます。2～3分だったかしら。
インストール処理が完了したら、「Please create a default UNIX user account. The username does not need to match your Windows username.」という表示が出るので、ユーザを作成しパスワードを設定します。Windowsのユーザと一致させる必要はないので、WSL独自に作成してOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/375120/2d036990-d4aa-1cee-c339-717f0b24f139.png)

#4. やっといた方がいいこと
###パッケージのアップデート
通常のLinux同様、パッケージの更新を定期的にチェック・更新しておきます。

```
sudo apt update
sudo apt upgrade
```

#5. その他
###Windows Terminal
Windows Terminalを使えば、いわゆるDOSコマンド、PowerShell、WSLへ切り替えてLinuxコマンドというのが、1画面で対応可能。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/375120/69d71b98-d40e-830a-d0a4-2e32eb1ab952.png)

###Linux環境とWindows間でファイルのやりとり
「 \\\WSL$ 」 というネットワーク共有を指定すると、WSLに導入されたLinux環境へファイル送受信ができます。
※日本語Windowsだと、\\（バックスラッシュ）ではなく、￥（円マーク）ですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/375120/c2e18d5f-82ae-59ea-437d-22dad18e8504.png)

###Dockerも使える
Windows版のDocker for Windowsは、Hyper-V上で動く仮想マシンにLinux＋Dockerが導入されます。Windows 10 HomeはHyper-V使えないし、Docker使いたい場合はSSHで仮想マシンにログインして、、、安心してくださいWSLで使えます。
以下の情報を参考にさせてもらいました、多謝。
[[2019年1月版]WSL + Ubuntu で Docker が動くっ！動くぞコイツッ！](https://qiita.com/koinori/items/78a946fc74452af9afba)

###Linux向けの各種ツールも使える（64bit版）
私がLinuxの環境を必要とした最大の理由が、
・各社クラウドのCLIを使いたい
・RedHat OpenShiftのCLIを使いたい
64bit Intel・AMD CPU向けLinux用であれば利用可能でした。
※もちろん、ARM・POWERなどなど非IntelなCPU向けのLinuxツールは使えないです。

以上のように、作業でLinuxコマンドの環境が欲しい場合は、仮想環境を使うよりWSLを使う方が便利かと思います。

#おまけ：WSL2
WSLではLinuxのカーネルが存在しないのですが、WSL2ではHyper-Vの仮想マシンを利用することでLinuxカーネルが含まれる環境になるとのこと。結局WSLも仮想環境になるの？ということですが、アプリ導入で手軽・ネットワーク設定不要・起動が高速といったところは踏襲する模様です。

[完全なLinuxがWindows 10上で稼働する？　「WSL 2」とは](https://www.atmarkit.co.jp/ait/articles/1906/14/news019.html)
[「WSL 2」が今後の主流に？ LinuxのGUIアプリも動作可能？ ～「WSL」のこれからに注目](https://forest.watch.impress.co.jp/docs/serial/yajiuma/1257032.html)

Linuxとの互換性が高くなり、LinuxのGUIアプリが使える、GPUによる機械学習（いわゆるAI）も利用しやすくなるそうです。
はぁ、もうLinux環境を「主」にして、Windows環境の方を「従」にした方がいいようなｗ