Mac初心者の方にオススメする大失敗しない環境構築

この記事では、これから初めてMacを使って開発を始める人を対象に、初歩的な開発用ツールのインストールや、便利なパッケージ管理ツール関連をまとめて紹介したいと思います。

##Xcode
とにもかくにも、Xcodeを入れなければMacの開発環境構築は始まりません。やるべきことは次の三つです。
・Apple Developer登録（[Apple Developerの"メンバーセンター"から](https://developer.apple.com/jp/)）
・AppストアからXcodeをダウンロード
・Xcode command line toolsをインストール

*参考*
[Mac での Xcode コマンド ライン ツールのインストール](http://docwiki.embarcadero.com/RADStudio/XE4/ja/Mac_%E3%81%A7%E3%81%AE_Xcode_%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89_%E3%83%A9%E3%82%A4%E3%83%B3_%E3%83%84%E3%83%BC%E3%83%AB%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)
[MavericksでCommand Line Tools for Xcodeをインストールする](http://qiita.com/3yatsu/items/47470091277d46f3fde2)

##Homebrew
Homebrewは、Mac上で開発用ソフトウェアなどの導入プロセスを簡単にしてくれるパッケージ管理ツールです。え、Macports？知らない子ですね...。
[Homebrew公式](http://brew.sh/)

```bash:terminal
$ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
```

```bash:terminal
$ brew doctor
```

brew doctorで警告が出たら、それを１つずつ潰していきます。だいたいはパッケージインストーラで入れたソフトが邪魔だよっていう感じのメッセージだと思うので、必要じゃなければ消してしまいましょう。
いるのかいらないのか分からないときは、エラーメッセージをそのままGoogle先生に投げてみましょう。きっとStack Overflowあたりのなんかの記事がひっかかります。

Homebrewでは、searchコマンドを使って、欲しいソフトがHomebrew経由で提供されているかどうか調べることができます。例えば、Node.jsが欲しいときは

```bash:terminal
$ brew search node
```

という風にやると、提供されている「node」に関するパッケージ一覧を見ることができます。
もし、欲しいものが見つかれば

```bash:terminal
$ brew install node
```

のようにしてあげれば、あとは必要な環境をHomebrewが勝手に整えてインストールしてくれます。

さて、Homebrewで入れる前に元からシステムに入っていたもの（gitとか）をHomebrewで入れ直しても、入れ直した方をシステムが使ってくれないことがあります。こういうときは、大体パスの設定が原因です。「システムデフォルトよりも、Homebrewでインストールしたものを優先して使う」という記述が必要になります。Homebrewでインストールしたものへのパスは大体、/usr/local/binの下にありますので、これを最優先パスとして設定の先頭に持ってきてあげれば解決です。

macはデフォルトがbashなので、今回は~/.bash_profileにパスの設定を書きます。zsh使いの人は~/.zshenvに書いてください。（「~」はmacのホームディレクトリ、つまり/Users/username/を指します）
emacsなりvimなり、好きなエディタをお使いください。

```bash:~/.bash_profile
export PATH=/usr/local/bin:$PATH
```
```bash:terminal
$ source ~/.bash_profile
```
これで、Homebrewから入れた方が優先されるようになりました。
*参考*
[パッケージ管理システムHomebrew](http://qiita.com/b4b4r07/items/6efebc2f3d1cbbd393fc)

##pyenv
pythonの2系と3系の両方使って開発したい、という方にオススメ。pythonがあればいいやという人はhomebrewでpythonを入れるだけで十分でしょう。

```bash:terminal
$ brew install python
```

pythonのバージョン管理ツールはいくつかありますが、pyenvが一番使いやすいのではないかと思います。pythonbrewはサポート終了してて、とんでもないバグのあるpython3.3.1までしか提供されてないのでおすすめしません。pythonzはそもそもちょっと思想が違うので割愛。
[pyenv公式](https://github.com/yyuu/pyenv)

```bash:terminal
$ brew install pyenv
```

```bash:terminal
$ echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile
```
（zsh使いの人は、.bash_profileを.zshenvに書き換えてください）


pyenv install -lでインストールできるpython一覧が見れます。

```bash:terminal
$ pyenv install -l
```

たとえば、バージョン2.7.6をインストールしたいときは

```bash:terminal
$ pyenv install 2.7.6
```
```bash:terminal
$ pyenv rehash
```
というようにしてあげればOK


さて、brewでインストールしたものの、pythonのconfigが~/.pyenvの中（つまりhomebrewの外）にあるとhomebrewは嫌がります。あと、homebrewはpythonの2系を使っているので、pyenvでインストールした3系にパスが通っているとそれも嫌がります。

```bash:terminal
$ brew doctor

Warning: "config" scripts exist outside your system or Homebrew directories.
`./configure` scripts often look for *-config scripts to determine if
software packages are installed, and what additional flags to use when
compiling and linking.

Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew provided
script of the same name. We found the following "config" scripts:

    /Users/username/.pyenv/shims/python-config
    /Users/username/.pyenv/shims/python2-config
    /Users/username/.pyenv/shims/python2.7-config
    /Users/username/.pyenv/shims/python3-config
    /Users/username/.pyenv/shims/python3.3-config
    /Users/username/.pyenv/shims/python3.3m-config

```
こんな感じの警告が出ます。
解決方法としては、普段使いのpythonはhomebrewで入れておいて、開発の時のみpyenvのpythonを使うという方法があります。具体的にすることは、

* さっき紹介した、brew install python
* /usr/local/bin/brewに、/Users/username/.pyenv/shimsを抜いたパスを追記

の二つです。

```sh:/usr/local/bin/brew
#!/bin/sh

#ここから
PATH=/Users/username/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin
#ここまで追記
#（お使いの環境の$PATHから/Users/username/.pyenv/shimsを抜いて追記してください）

BREW_FILE_DIRECTORY=$(dirname "$0")
BREW_FILE_DIRECTORY=$(cd "$BREW_FILE_DIRECTORY" && pwd -P)

##...以下略
```

これで、brewコマンドを使うときにはPATHからpyenvのpythonが外れるため、brew doctorしてもエラーが出なくなります。

では、pyenvの基本的な使い方をちょろっと紹介します。

pyenv versionsでインストールされたpythonの一覧と現在有効になっているpythonが見れます（*が付いているのが現在有効なpython）

```bash:terminal
$ pyenv versions
* system (set by /Users/username/.pyenv/version)
  2.7.6
  3.3.5
```

デフォルトのpythonをpyenvでインストールしたpython2.7.6に設定したいときは

```bash:terminal
$ pyenv global 2.7.6
```

プロジェクトで使うpythonを指定したい時は

```bash:terminal
$ cd /path/to/projectDirectory
$ pyenv local 2.7.6
```

デフォルトを本来（homebrew）のpythonに戻したいときは

```bash:terminal
$ pyenv global system
```

有効になっているpythonの場所は

```bash:terminal
$ pyenv which python
```


*参考*
[Macでpyenv+virtualenv](http://qiita.com/maosanhioro/items/47a52f96fefba7126f9b)

##rbenv
複数バージョンのrubyを使い分けたい、gemでシステム環境を汚したくない、という人にオススメ。ちょっと前のmacはシステムデフォルトのrubyが全然ダメで、rbenvにはそれを補うという暗黙の役割的なものもありましたが、今のMavericksはデフォルトも結構安定しているようです。よくrvmと比べられますが、断然rbenvです。bundlerありますからね。それにpyenvと使い方は一緒なので慣れやすいと思います。
[rbenv公式](https://github.com/sstephenson/rbenv)

```bash:terminal
$ brew install ruby-build
$ brew install rbenv
```

```bash:terminal
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile
```
（zsh使いの人は、.bash_profileを.zshenvに書き換えてください）

rbenv install -lでインストールできるruby一覧が見れます。

```bash:terminal
$ rbenv install -l
```

たとえば、rubyのバージョン2.1.1をインストールしたいときは

```bash:terminal
$ rbenv install 2.1.1
```
```bash:terminal
$ rbenv rehash
```
というようにしてあげればOK

rbenv versionsでインストールされたrubyの一覧と現在有効になっているrubyが見れます（*が付いているのが現在有効なruby）

```bash:terminal
$ rbenv versions
  system
  2.0.0-p353
* 2.1.1 (set by /Users/username/.rbenv/version)
```

デフォルトのrubyをrbenvでインストールしたruby2.1.1に設定したいときは

```bash:terminal
$ rbenv global 2.1.1
```

プロジェクトで使うrubyを指定したい時は

```bash:terminal
$ cd /path/to/projectDirectory
$ rbenv local 2.1.1
```

システム本来のrubyに戻したいときは

```bash:terminal
$ rbenv global system
```

有効になっているrubyの場所は

```bash:terminal
$ rbenv which ruby
```

また、rbenvとbundlerを用いた開発環境の構築にはこちらの記事が非常に参考になります↓

[Rails開発環境の構築（rbenvでRuby導入からBundler、Rails導入まで）](http://qiita.com/emadurandal/items/a60886152a4c99ce1017)



##まとめ
* まず$PATHを見よ
* 欲しいものがあったらbrew search
* pythonはいつも１つ
* rvmに頼らずrbenv+bundler
* 基本的に公式docが正義。英語でも敬遠せずに読もう