anyenvの導入方法

# はじめに
実務に入って3日が経ちました。

初日はオリエンテーションや歓迎会やPC周りの設定など、2日目は事業の詳細説明、そして3日目はサービスの開発環境構築を実施しました。

「Rubyだけじゃなくて、PthonとかNode.jsとかも使うからanyenvが便利でオススメだよ」と言われ、anyenvとは何ぞや？どうやって入れるのだ？ということを調べながらインストールしたので、今回は自分用にanyenvについての備忘録を書いていこうと思います。

# anyenvとは
「anyenvとは」でググると以下の記事がヒットし、概要をとても簡単に書いてくれていました。

[Mac に anyenv でサクッとマルチ開発環境構築](https://qiita.com/yutackall/items/6c48cf56317d8501f6df)

> anyenv とは、ざっくり言うと、rbenv とか、nbenv とか複数バージョンをインストールできる **env 系をまとめて管理できるツール。

とのことです。

# 環境
- macOS Mojave
- Homebrew 2.0.2

# いざ導入

僕の場合はbashを使用しているので環境変数を.bash_profileに保存するようにしました。

```
$ brew install anyenv
$ echo 'eval "$(anyenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l
```

ここでふと既にrbenvが入ってても問題ないのか？という素朴な疑問が発生。「anyenv」でググりました。

すると、[anyenvを使う](https://qiita.com/zaburo/items/8ac16133c3823c6e6ad6)を発見。

> 既に**envを利用している人は、いままでの設定フィルを削除するか移動します。こちらの記事が参考になります。

とのこと。

念の為確認。

```
ls -d ~/.*env

/Users/username/.anyenv
/Users/username/.rbenv
```

rbenvが入っていることを確認したので削除することにしました。

```
# .rbenvを削除
$ rm -rf ~/.rbenv
$ rm -rf /usr/local/bin/rbenv
$ rm -rf /usr/local/Cellar/rbenv

# 削除されたか確認
$ ls -d ~/.*env
-> /Users/fukuzawa_masashi/.anyenv  # .rbenvがなくなっていることを確認
$ rbenv -v
bash: /usr/local/bin/rbenv: No such file or directory # bin/rbenvがなくなっていることを確認
```

```
# Homebrewに問題ないか確認
$ brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry or file an issue; just ignore this. Thanks!

Warning: Broken symlinks were found. Remove them with `brew cleanup`:
  /usr/local/opt/rbenv
  /usr/local/var/homebrew/linked/rbenv
```

問題あるとのことなので指示通りbrew cleanupを実行。

```
$ brew cleanup
Pruned 2 symbolic links from /usr/local

$ brew doctor
Your system is ready to brew.
```

問題解決。

念のためHomebrewのバージョンを確認。

```
$ brew --version
Homebrew 2.0.2
Homebrew/homebrew-core (git revision 3005; last commit 2019-03-04)
```

Homebrewも問題なし。

更に調べてみると[既に入っている**envを全てanyenv管理にする](https://qiita.com/sutoh/items/0894f0895a5f6264faee#%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E7%B7%A8%E9%9B%86)という記事に.bash_profileのrbenvに関する部分を削除する必要があるとのことだったので削除。

```:.bash_profile
# .bash_profileのこの部分を削除
export PATH="~/.rbenv/shims:/usr/local/bin:$PATH"
eval "$(rbenv init -)"
```

今の状態はhomebrewあり、.anyenvありという状態なので続きから開始することにしました。

```
$ echo 'eval "$(anyenv init -)"' >> ~/.your_profile
$ exec $SHELL -l

# エラー発生
\e[33mANYENV_DEFINITION_ROOT(/Users/fukuzawa_masashi/.config/anyenv/anyenv-install) doesn't exist. You can initialize it by:\e[0m
\e[33m> anyenv install --init\e[0m
```

指示通り`anyenv install --init`を実行。

```
$ anyenv install --init
Manifest directory doesn't exist: /Users/fukuzawa_masashi/.config/anyenv/anyenv-install
Do you want to checkout ? [y/N]: y
Cloning https://github.com/anyenv/anyenv-install.git master to /Users/fukuzawa_masashi/.config/anyenv/anyenv-install...
Cloning into '/Users/fukuzawa_masashi/.config/anyenv/anyenv-install'...
remote: Enumerating objects: 44, done.
remote: Counting objects: 100% (44/44), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 44 (delta 1), reused 43 (delta 1), pack-reused 0
Unpacking objects: 100% (44/44), done.

Completed!
```

再度シェルをリフレッシュ。

```
$ exec $SHELL -l
```

エラーが出なくなりました。

動作確認。いい感じ。

```
$ anyenv install -l
  Renv
  crenv
  denv
  erlenv
  exenv
  goenv
  hsenv
  jenv
  luaenv
  nodenv
  phpenv
  plenv
  pyenv
  rbenv
  sbtenv
  scalaenv
  swiftenv
```

rbenvをインストール

```
 $ anyenv install rbenv
```

[anyenvを使う](https://qiita.com/zaburo/items/8ac16133c3823c6e6ad6)に従って、
> 各**env環境をUpdateするためのプラグインをインストール。

```
$ mkdir -p $(anyenv root)/plugins
$ git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
$ anyenv update
```

いざrbenvをインストール。

```
$ rbenv install 2.6.1  # 入れたいバージョンを記述
$ rbenv global 2.6.1   # 2.6.1を基本的に使用するように指示
$ ruby -v              # この例の場合、バージョンを確認、2.6.1になっていればOK
```

これにてrbenvのインストールは完了！

その他Node.jsなども以下のようにインストールができました。

```
$ anyenv install nodenv
$ nodenv install -l
$ nodenv install 11.10.1
$ nodenv global 11.10.1
```

# まとめ
- anyenvを導入した時の流れや躓いた箇所をまとめました。
- anyenvを入れると様々な言語のインストールやバージョン管理が簡単にできました。
- プラグインなどについては今後適宜入れていきたいと思います。

# 参考URL
- [anyenv(GitHub)](https://github.com/anyenv/anyenv/tree/bba4c286946532c9f90dfa0ac6ab8350e9c7021b)
- [Mac に anyenv でサクッとマルチ開発環境構築](https://qiita.com/yutackall/items/6c48cf56317d8501f6df)
- [anyenvを使う](https://qiita.com/zaburo/items/8ac16133c3823c6e6ad6)
- [Git で入れてしまった rbenv を削除して Homebrew で入れなおした時のメモ](https://qiita.com/astronaughts/items/760d56fb5674707a9a0f)
- [既に入っている**envを全てanyenv管理にする](https://qiita.com/sutoh/items/0894f0895a5f6264faee)
- [MacにHomebrewを導入する方法](https://qiita.com/balius_1064/items/ac7dff5ef10eaf69996f)