Windows WSL2でストレスフリーな開発環境

Windowsで手軽に開発したいんや！dirコマンドじゃなくてls使いたいんや！
Linuxを使うのもちょっと手間だし、使えたとして処理が早いかというと微妙だし、Webやアプリ開発の上でなにかと不遇なWindowsさん。
最近Microsoftの頑張りでVisualStudioCodeや本題のWSL2など開発環境の充実が目まぐるしいので、思わずQiitaのアカウント作って執筆に至ります。（はじめまして）


前置きが長くなりましたが、2019年6月上旬に発表されたWSL2を用いてストレスフリーな開発環境を作成していきます。

## 最初に
2019年6月現在 Insider Previewを介さないとWSL2搭載のWindowsバージョン(Build 18917)にアップデートできないため、Insider Preview登録の上、Windows Updateをかけます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447567/f5179402-a98d-4d90-1324-90979ba2e6d1.png)
## WSL2の適用
WindowsのPowerShellを管理者として実行し、下記コマンドをうちこみます。

```
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
```

RestartNeeded: Trueと言われたらまず再起動しましょう。

次に、私の場合はLinuxディストリビューションとしてUbuntuを利用したので、
MicroSoft StoreからUbuntuをダウンロードした後に下記コマンドを実行

```
wsl --set-version Ubuntu 2
```
※Ubuntuの部分をご利用のディストリビューション名に変更ください。

これによりUbuntuをWSL2で使用できるようになりました。

念の為ディストリビューションのバージョンを確認しておきましょう。

```
wsl -l -v

  NAME      STATE           VERSION
* Ubuntu    Stopped         2
```
こうなっていたらWSL2の適用が成功しています。
ここまでがWSL2の適用となります。
## ストレスフリーな環境構築
さて、本題です。
私は主に下記を導入して、個人的に使いやすい環境を整えました。

* Windows Terminal
* Git(ssh key)
* fish
* fisher
* Powerline font


### Windows Terminalの導入
こちらも最近リリースされたものでまだPreview版しかでていませんが、Microsoft製のSSHクライアント搭載のターミナルです。タブも使えるし、背景透過もできる。だいたいのニーズは満たしてくれる気がする。なによりMicrosoft製で固めたい欲が出てきたのでとりあえずこれを使います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447567/74ca6849-4c8d-c0e6-d0d7-aefdbb419544.png)

新規タブ追加横の▽からLinuxディストリビューションを選択することができます。
ターミナルのキーバインドや見た目の設定はsettingから **json直書き** です。Rockだ

セクション毎に設定が書かれているので、Ubuntuのセクションに`useAcrylic: true`とすると、ターミナルが半透明になります。

ちなみに\$HOMEが分かりづらい場所にあるので、WindowsのDドライブ(/mnt/d)とかに変更したくなるのですが、後述のgit利用の際にssh keyのパーミッションがWindowsファイル領域だと変更できないといったトラブルに見舞われるため、$HOMEは/home/等にしておきます

### git
/home/以下に.sshディレクトリを作成の上、SSH Keysを作成し

```  
ssh-keygen -t rsa -b 4096 -C "your mail address"
```
このままだとGit Cloneとかした際にPermissionがガバガバだって怒られるので
Permissionを変更しておきましょう

```
sudo chmod 600 id_rsa
```
ここまででGitの疎通のためのSSH Keys設定は終了です。
Git config等設定の上、GitHubに公開鍵置いて疎通を確認しましょう。


### fishの導入
脳死で[fish](https://fishshell.com/)入れます。fish便利やでぇ

```
sudo apt-add-repository ppa:fish-shell/release-3
sudo apt-get update
sudo apt-get install fish
```
ログインシェルをためらいなくfishに変更します

```
chsh -s /usr/bin/fish
```
ログインシェルを変更したら一度Terminalを再起動しましょう。


続いてfishのパッケージマネージャーのfisherを入れます

```
curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs https://git.io/fisher
```
fisherが動作するかバージョンを確認をします

```
fisher -v
fisher version 3.2.9 ~/.config/fish/functions/fisher.fish    
```
これで様々パッケージが手軽に入れられるようになりました。

ためしにテーマぐらい入れておきます。

```
fisher add oh-my-fish/theme-agnoster
```

残念なことにPowerline対応フォントがないので文字化けします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447567/591891bc-8b58-3c27-65b8-5d9e64ff3a4d.png)

### Powerline fontの導入

[Powerline font](https://github.com/powerline/fonts/)からPowerlineに対応したotfをDLしてきます。
Windowsの標準の手順に従ってインストールした後、Windows側のフォント一覧に反映されているか確認します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447567/8e927a63-a324-79be-a2f6-022581c554c0.png" width="400px">

fontのインストールが確認できたら、Windows Terminalの設定からfontを変更します。
前述のセクション毎に分かれているUbuntuのfontFaceを変更ください。

```
  "fontFace" : "Source Code Pro for Powerline"
```

設定反映すると、文字化けせずにpowerlineフォントが表示されました！かっこいい！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447567/4f13b8b2-0930-1107-c4ec-7332ef04b930.png)

fishの入力補完はやっぱりいいですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447567/4b859409-686a-6363-6c24-d1a7e824b405.png)

Windowでここまでの開発環境を築けるとは。感動


## おわりに
以上がWindowsでのストレスフリーな開発環境構築になります。
といってもまだまだtmuxを入れることやvimをカスタマイズすることもできるので、
以降はみなさんの好きなようにカスタマイズいただければと思います。
WSL2の旨味のDocker等にも触れていないので、それはまたの機会にしたいとおもいます。

ありがとう　Microsoft