Mac に anyenv でサクッとマルチ開発環境構築

# はじめに
今まで開発環境 (Ruby|Node) を Chef + Vagrant を使って VM を構築してそこで開発していたんだけど、プロジェクトを切り替えるとき、
いちいち VM を立ち上げ直すのが、すげーめんどいし、時間もかかってたので、調べたら [anyenv](https://github.com/riywo/anyenv) というめちゃ便利なツールがあったので、
インストールした時のメモ。

[anyenv](https://github.com/riywo/anyenv) とは、ざっくり言うと、rbenv とか、nbenv とか複数バージョンをインストールできる **env 系をまとめて管理できるツール。

自分だと Mac の環境を汚さず、プロジェクト毎にバージョンを切り替えて開発したかったので、
Vagrant を使ってたんだけど、プロジェクトが増えてきて、VM の数が 4 つとか、5 つになってくると、
VM の立ち上げ直しだけでも限界を感じて、anyenv に切り替えた。

# anyenv のインストール (bash)

```bash
$ git clone https://github.com/riywo/anyenv ~/.anyenv
$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(anyenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l                                                    # シェルの再起動
```

# 対応言語
色々な言語に対応しているので、色んな言語をチョット触ってみたいときにもすげー便利
下記コマンドでインストールできる言語の一覧が取得できる

```bash
$ anyenv install -l
Available **envs:
  Renv     # R
  crenv    # Crystal
  denv     # D
  erlenv   # Erlang
  exenv    # Elixir
  goenv    # Go
  hsenv    # Haskell
  jenv     # Java
  luaenv   # Lua
  ndenv    # Node.js
  nenv     # Node.js
  nodenv   # Node.js
  phpenv   # PHP
  plenv    # Perl
  pyenv    # Python
  rbenv    # Ruby
  sbtenv   # Scala
```

# プラグインのインストール

## プラグイン用のフォルダを作成

```bash
$ mkdir -p $(anyenv root)/plugins
```

## [anyenv-update](https://github.com/znz/anyenv-update) のインストール
anyenv-update は、インストールされている **env を update するためのプラグイン

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

### [anyenv-git](https://github.com/znz/anyenv-git) のインストール
anyenv-git は、anyenv で git のコマンドを実行できるようにするためのプラグイン

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


# 各種言語のインストール
## Node.js 用の ndenv をインストール

```bash
$ anyenv install ndenv
var/folders/5h/wz7wkvzs45q6vkp3p7x2g9w00000gn/T/ndenv.20150825004228.37677 ~
Cloning https://github.com/riywo/ndenv.git...
Cloning into 'ndenv'...
remote: Counting objects: 58, done.
remote: Total 58 (delta 0), reused 0 (delta 0), pack-reused 58
Unpacking objects: 100% (58/58), done.
Checking connectivity... done.
~
~/.anyenv/envs/ndenv/plugins ~
Cloning https://github.com/riywo/node-build.git...
Cloning into 'node-build'...
remote: Counting objects: 59, done.
remote: Total 59 (delta 0), reused 0 (delta 0), pack-reused 59
Unpacking objects: 100% (59/59), done.
Checking connectivity... done.
~

Install ndenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.
$ exec $SHELL -l
$ ndenv -v
ndenv 0.4.0-2-gc669ff2
```

## Ruby 用の rbenv をインストール

```bash
$ anyenv install rbenv
/var/folders/5h/wz7wkvzs45q6vkp3p7x2g9w00000gn/T/rbenv.20150825005513.39176 ~
Cloning https://github.com/sstephenson/rbenv.git...
Cloning into 'rbenv'...
remote: Counting objects: 2075, done.
remote: Total 2075 (delta 0), reused 0 (delta 0), pack-reused 2075
Receiving objects: 100% (2075/2075), 352.35 KiB | 262.00 KiB/s, done.
Resolving deltas: 100% (1266/1266), done.
Checking connectivity... done.
~
~/.anyenv/envs/rbenv/plugins ~
Cloning https://github.com/sstephenson/ruby-build.git...
Cloning into 'ruby-build'...
remote: Counting objects: 5015, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 5015 (delta 0), reused 0 (delta 0), pack-reused 5009
Receiving objects: 100% (5015/5015), 930.56 KiB | 310.00 KiB/s, done.
Resolving deltas: 100% (2706/2706), done.
Checking connectivity... done.
~

Install rbenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.
$ exec $SHELL -l
$ rbenv -v
rbenv 0.4.0-153-g3b6faa8
```

## Node.js をインストール
現在の最新バージョンの v0.12.7 をインストール

```bash
$ ndenv install 0.12.7
Downloading node-v0.12.7-darwin-x64.tar.gz...
-> https://nodejs.org/dist/v0.12.7/node-v0.12.7-darwin-x64.tar.gz
Installing node-v0.12.7-darwin-x64...
Installed node-v0.12.7-darwin-x64 to /Users/yutatakuman/.anyenv/envs/ndenv/versions/0.12.7
$ anyenv versions # 現在インストールされているバージョンの一覧を取得
ndenv:
* 0.12.7 (set by /Users/yutackall/.anyenv/envs/ndenv/version)
rbenv:
* system (set by /Users/yutackall/.anyenv/envs/rbenv/version)
$ which npm # npm の確認
/Users/yutackall/.anyenv/envs/ndenv/shims/npm
```

## Ruby をインストール
今回は、system にインストールされているバージョンをそのまま使用するためスキップ

## global の設定
global で使用するバージョンを指定  

```bash
$ ndenv global 0.12.7
$ rbenv global system  # Ruby は Mac にインストールされている Ruby を使用
$ anyenv versions
ndenv:
* 0.12.7 (set by /Users/yutackall/.anyenv/envs/ndenv/version)
rbenv:
* system (set by /Users/yutackall/.anyenv/envs/rbenv/version)
```

# anyenv のコマンド一覧

|コマンド|概要|
|---|---|
|commands|使用できるコマンド一覧を表示|
|completions|入力補完のコマンド？？|
|envs|使用できる **env の一覧を表示|
|git|インストールしたプラグインや、**env に対して git コマンドをそのまま実行できる<br>プラグインによる追加|
|global|グローバルで使用しているバージョンを表示|
|help|ヘルプを表示|
|init|anyenv の初期化<br>プロファイルの読み込み時に実行される|
|install|後ろのコマンドに \*\*env を入れるとインストール<br>`-l` のオプションをつけるとインストールできる \*\*env の一覧が表示される|
|local|ローカルのアプリケーションで使用しているバージョンを表示|
|root|anyenv の root のパスを表示|
|update|インストールした **env のアップデートを実行<br>プラグインによる追加|
|version|**env 毎に現在のバージョンを表示|
|versions|**env 毎に使用できる全てのバージョンを表示|