WSLに開発環境完全移行してみる

# はじめに
最近DockerがWSLで使えるようになったらしいというのが、話題に上がっていました[^1]。
[^1]: [WSL上でDocker Engineが動くようになっていたっぽいという話](https://qiita.com/yanoshi/items/dcecbf117d9cbd14af87)

しかも、Visual Studio Codeも使えるようになっていたらしい[^2][^3]。
[^2]: [Visual Studio Code on Windows Subsystem for Linux - GeekFactory](https://int128.hatenablog.com/entry/2018/03/26/235159)
[^3]: [Running VSCode for Linux in WSL · Issue #2760 · Microsoft/WSL · GitHub](https://github.com/Microsoft/WSL/issues/2760)

じゃあ、いっそ開発環境全部全部WSLに移行できるんじゃ！？

情報は各サイトにまとまってはいるのですが、一か所にまとめておきたいのでメモ。
詳しいことは各リンクにあります。先人達に感謝です。


# 流れ

* WSLの導入
* X Window Serverのインストール＋日本語化
* Visual Studio Codeのインストール
* Dockerのインストール


## WSLの導入
章立てといてあれですが、省略。
Ubuntu16.04想定です。

```:初めて起動したらやっておく
$ sudo apt update
$ sudo apt upgrade -y
```


## X Window Serverのインストール[^4]
[^4]: [Windows Subsystem for Linux + X Windowを1.024倍くらい使いこなすための方法](https://qiita.com/nishemon/items/bb3aca972404f68bfcd6)


### VcXsrvのインストール
https://sourceforge.net/projects/vcxsrv/
からダウンロードし、手順通りに進めるだけです。

```:ディスプレイ設定
$ echo 'export DISPLAY=:0.0' >> .bashrc
$ source .bashrc
```

### スケーリング設定
1. タスクバーのVcXsrvアイコンを右クリック
2. XLaunchを右クリック
3. プロパティをクリック
4. `互換性`タブをクリック
5. `高DPI設定の変更`をクリック
6. `高いDPIスケールの操作を上書きします`にチェック

これをしないをフォントがぼやけます。

### Windowsフォントを読み込む
```:Windowsフォントを読み込む
$ sudo apt install -y fontconfig
$ sudo ln -s /mnt/c/Windows/Fonts /usr/share/fonts/windows
$ sudo fc-cache -fv
```
これをしないとVisual Studio Codeを日本語化したときに豆腐になりました。

[Windows側でエラーが出るケースがあるとのコメントを頂きました。](
https://qiita.com/LeftLetter/items/0eda1834a46c3b3bff60#comment-a3f0a71aa2ab18eee2bd
https://qiita.com/LeftLetter/items/0eda1834a46c3b3bff60#comment-a3f0a71aa2ab18eee2bd)
その場合はWSLを管理者権限で再起動すれば良いようです。

### Windowsフォントに設定
```:GUIのフォント設定
$ sudo apt install -y lxappearance
$ lxappearance
```

なんかワーニングが出ますが設定はできるようです。
Windowsに合わせるなら、`Yu Gothic UI`の`Regular`で文字サイズは10か11。理想は10.5？

### 日本語入力の設定[^7]
[^7]: [fcitxで作るWSL日本語開発環境](https://qiita.com/dozo/items/97ac6c80f4cd13b84558)
[^7]の通りにやったらできました。
日本語と英語の変換はCtrl＋スペースか半角/全角キーでできます。

## Visual Studio Codeのインストール[^5]

[^5]: [Running Visual Studio Code on Linux](https://code.visualstudio.com/docs/setup/linux)

[^5]からdebファイルをダウンロードします（以下の`<file>.deb`）。

```
$ sudo dpkg -i <file>.deb
$ sudo apt-get install -f 
$ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
$ sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
$ sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
$ sudo apt-get update
$ sudo apt-get install code 
```

以下のコマンドも必要。

```
$ sudo apt install -y libxss1
$ sudo apt install -y libgtk2.0-0
$ sudo apt install -y libasound2
```

起動は以下のコマンド。

```
$ code
```

## Dockerのインストール[^6]
[^6]: [Windows Subsystem for Linux（Hyper-Vなし）でDockerを動かす - nuits.jp blog](http://www.nuits.jp/entry/docker-on-wsl)


```:Dockerのインストール
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install -y docker.io
$ sudo cgroupfs-mount
$ sudo usermod -aG docker $USER
```

ここでWSLを再起動し、管理者権限で起動する。

```:Dockerの起動
$ sudo cgroupfs-mount && sudo service docker start
```





# おわりに
ひとまずセッティングはできたのでまともに動くかはこれから試します。
あと、EclipseとAndroid Studioも入れてみたいです。
あと、毎回VcXsrvを起動したり、WSLを管理者権限で起動するのが面倒なので、自動化したいです。

# やってみて
* 毎回VcXsrvとWSLを起動するのが面倒
* VSCodeの画面が頻繁にバグる（XサーバやWSLを再起動しても直らないことも多い）
* VcXsrvを立ち上げていると、ChromeのフォントやExcelの表示、操作がおかしくなる
* 動作が微妙に遅い

などから、あまり満足はしていません・・・。
自分だけなのかなー、そうだといいな。

# もっといい方法？
[wlinux](https://www.microsoft.com/ja-jp/p/wlinux/9nv1gv1pxz6p?activetab=pivot:overviewtab)というWSLに特化したディストリビューションが出ています。有償ですが、VSCodeのインストール、日本語化や各種言語のインストールまでコマンド一発でやってくれるのでおすすめ。
少し前までVSCodeが起動しないバグがあったが・・・。

[X410](https://www.microsoft.com/ja-jp/p/x410/9nlp712zmn9q?activetab=pivot:overviewtab)というX Window serverもあります。同じく有償ですが、より安定しているっぽい？

両者ともよくセールしているので、もし買うならその時がいいと思います。


# もっともっといい方法？
今でもたまにいいねがくるので・・・

VS Codeでカバーしている言語の開発なら、[VS Code Remote Development](https://code.visualstudio.com/docs/remote/remote-overview)がいいと思います。WSLにGUIやVS Codeを入れる必要もなくなります。