(注意が多い)WSLを個人開発で使う時の環境構築

## ごあいさつ
古い記事を参考にしながら試行錯誤をしていたが、既にリンク切れになっていたりもっと良い物が出ていたりしたので、古い記事を修正するより新しく出した方がわかりやすいな、と思って新記事にしてます。
似たような記事はいくつか出してますが、ここでは過去の記事を見なくても良いよう、重複を含む事にしました。
必要であれば適宜参考リンクを張りますが、原則リンク先から引用する形でまとめておきたいと思います。
（後日、自分で見たときに絶対にハマるだろうことを見越して）

## 本稿のゴール
- WSLをリセット・クリーンインストールした後でも**安心・安全**な状態で稼働できるようにする
- 同じディストリビューションなら使い回せるように手順やコードを整備する

## 結論
環境が壊れるかもしれないので、はじめてやる場合は使っていないディストリビューションでやりましょう。
Windows10 ProユーザーならHyper-Vも使えますので、いきなり手元にできあがっている開発環境を使って動かなくなって困るような状況にしないように注意しましょう。

## 前提
- 本稿ではUbuntuでやってます。
- 事前にWindows側のWSL関連の設定を完了されているものとします。
- 再起動もお忘れなく！
- **どうせ後で削除（修復・リセット）をするだろうと考えているので動けばOKの現場猫主義な構築です。**

## 手順
### 1. なにはともあれ、`apt`
```
sudo apt update && \
sudo apt upgrade -y
```

説明不要ですね。
`echo (password) | sudo -S`で実行するとパスワード入力をスキップできます。
念の為、`history -c`をやっておくとウッカリパスワードを流出！という事も防げます。（※悪用厳禁）

初回実施時は`sudo apt autoremove -y`は要らないですが、気がついたタイミングで使われなくなったパッケージを削除しておきましょう。

### 2. linuxbrewをインストールする

```
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"

# 実行後に ==> Next steps:が出てくるので、その手順を実施
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> /home/ubuntu/.profile
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
sudo apt install build-essential

brew update  # Already up-to-date.と出力されるはずだが、何らかの成功メッセージが表示されれば完了
```

これで心置きなく、(brewが使えるようになったので)Mac環境の記事も参照できるようになります。

#### 補足
updateはaptとbrewの両方を実施する必要があります。

```
brew upgrade
```

`brew update`はbrew自体の更新で、upgradeはbrew自体とパッケージも含みます。
なので、基本的には`brew upgrade`だけで良さそうです。

ウッカリやりがちですが、`apt install`より`brew install`を心がけたほうが、せっかくのbrewを活かしやすいです。

#### 注意！
`brew`は`sudo`で実行できません。
つまり`brew`で入れたパッケージを`sudo`で実行できません。

よくあるのが、`npm`やら`gem`で入れたパッケージをグローバルで使いたい場合やどうしても`sudo`を求められる場合は`brew`で入れることができません。
あえて使い分けるなら、globalで実行するものは環境に依存しないもの、brewで実行するもの(local)は環境に依存するものとして管理するとバージョン差異を吸収できます。

### 3. 開発環境を整備する
**長期的に運用するなら、運用専門のディストリビューションを決めてそちらで使ったほうが良いです。**
というのも、linuxbrew + anyenv + ○○envの構成は、パッケージ管理のアプローチが冗長すぎてパスで躓く事が考えられます。
（例：`github-changes`、`github_changelog_generator`）

こういう可能性もあるので、凝った運用をする場合はパッケージ管理しすぎ問題を回避する方が望ましいでしょう。
とはいえ、anyenv自体は非常に便利で使い勝手が良く、これ自体が干渉することはないのでお使いの環境にあった構成をするのが良いでしょう。

#### 3.0. anyenvを導入する前に
1. まずは`brew`で環境を整えてみて、動く状態を作ります。
1. 動くものをanyenvで実行するディストリビューションに移行し、環境を作ります。
1. anyenvで入れた環境で動けばOK、動かなければ再検討をする

ぐらいで良いでしょう。
何度も言いますが、**凝った運用をしなければ**anyenvは非常に便利です。

#### 3.1. anyenvをインストールする
```
brew install anyenv 
```

超簡単！

#### 3.2. anyenvを使えるようにする
```
anyenv install --init
echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >>~/.profile
echo eval "$(anyenv init -)" >>~/.profile
source ~/.profile
```

これは上記コマンドを実行した後にも、コンソール上で実施するように促されるのでおそらく大丈夫。

#### 3.3. お好みの○○envをインストールする
```
anyenv install -l
```

でインストールできるものが一覧表示されるので、任意で入れていきましょう。
試しに、rbenvを入れてrubyを使えるようにしてみます。

https://qiita.com/nomurasan/items/5c7f70d7c0979b478639

### 4. Dockerを入れる
厳密に言うとWSLにDockerではなく、WindowsのHyper-VにDockerを入れるのでPro限定です。
解説すると長くなるので、別記事にします（後日：参考リンクのみ）

https://blog.ecbeing.tech/entry/2021/09/07/150000

## Ubuntuを削除・初期化したい時は

https://zenn.dev/kawacdev/articles/3de7892fd13df3

1. Windows10のコントロールパネルを開く
1. アプリ
1. アプリと機能
1. Ubuntu
    1. 詳細オプション
1. 修復、あるいはリセット。場合によりアンインストール

ここで削除したディストリビューションは「MS Sore」を開いて検索すればまたダウンロード・インストールできます。
※Windowsの再起動が必要な事もあります。

## 参考
- [Linuxbrewのインストール方法(執筆時点の最終更新日:2019/4/6)](https://fukatsu.tech/linuxbrew)