MacOSでHomebrew+pyenv+Anaconda3 を用いた環境構築(2018年)

#1. はじめに
先日、長年の愛用していたSurface PRO4 を手放し、Mac Book PRO 2018年モデルを購入しました。
早速、開発環境構築に取り掛かりましたが、Windowsとは少し勝手が違う事もあり、想像以上に苦戦しました。
そこで、備忘録として、今回の開発環構築で行なった操作を簡単にまとめておこうと思います。
この記事が、少しでも多くの人の役に立てば幸いです。


##対象読者
Homebew+pyenv+Anaconda3で環境構築がしたい人

##前提条件
MacBooK Pro (15inch,2018) 
macOS High Sierra 10.13.6

#2. 今回導入するツールの概要説明
今回導入するツールは以下の３つです。
１）Homebrew 1.8.4
２）pyenv 1.2.8
３）Anaconda3-5.3.0
上から順に、概要を簡単に説明していきます。

##Homebrewの概要
Wikipedia大先生には、

>「Mac OS Xオペレーティングシステム上でソフトウェアの導入を単純化するパッケージ管理システムのひとつである」

とありました。

パッケージ管理システムを導入するメリットは、

１） あるパッケージをインストールする際に、依存関係にあるパッケージを自動的にインストール・更新することができる
２）パッケージを一元管理出来るようになるため、後々のパッケージ管理が楽である

などがあります。後々楽なので、取り敢えず導入しておくことをお勧めします。
他にも、macportやfinkといったパッケージ管理システムがありますが、今回は情報量が１番多かったHomebrewを採用しました。Homebrewについて更に詳しく知りたい人は下記の記事が詳しいので参照してみて下さい。

https://qiita.com/omega999/items/6f65217b81ad3fffe7e6

##pyenvの概要
pyenvとは様々なバージョンのPythonを管理するツールです。
pyenvを用いる事により、Python v2系とPython v3系の開発環境を独立して構築することが可能になります。
今回ご紹介する一連の操作を行うと、以下の様に、デフォルトでインストール済みのPython v2系環境とAnaconda3由来のPython v3系環境を個別に構築することができます。

```:Terminal
$ pyenv versions  #存在するPythonの環境をすべて表示するコマンド
* system (set by /Users/snow67675476/.pyenv/version) 
  anaconda3-5.3.0
```
"*"はグローバル指定されている環境であることを示しており、```$ pyenv global```コマンドを用いて切り替える事が可能です。また、```$ pyenv local```コマンドを用いれば、特定のディレクトリで優先されるPython環境をローカルに指定する事が可能です。後に再登場するので頭の片隅に置いておいて下さい。

##Anacondaの概要
Anacondaとは、データ分析や科学技術計算に特化した、データサイエンティストや機械学習エンジニア御用達の開発プラットフォームです。
numpy/pandas/scikit-learn/scipy/matplotlib/seaborn等の必須モジュールや、Jupyter notebookなどの超優秀な開発ツールが一式揃います。
個人的には、最大のメリットは、Anaconda cloud 経由で大抵のモジュールを簡単にインストールできる点だと思います。cmakeでビルドして...などの初学者殺しの作業が不要になります。これはデカイ。
データ分析目的なら、Anacondaを入れておけば間違いないと思います。

#3. 環境構築
実際に行った環境構築の手順を紹介します。下記の操作は全てMacの標準アプリであるTerminal上で行って下さい。


##構築手順
<b>STEP1 : </b> Homebrewのインストール
<b>STEP2 : </b> pyenvのインストール
<b>STEP3 : </b> Anacondaのインストール
<b>STEP4 : </b> 作業用ディレクトリの作成

##STEP1 : Homebrewのインストール
[Homebrewの公式サイト](https://docs.brew.sh/Installation)から事前要件を確認することができます。
<img width="646" alt="スクリーンショット 2018-12-22 17.47.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/290878/166a25f0-4f22-8e4d-6321-3e93f844fef5.png">
これによると、Command Line Tools (CLT) for Xcode のインストールが必要とのこと。以下のコマンドを実行すると、

```:Terminal
$ xcode-select --install
xcode-select: note: install requested for command line developer tools
```
Command Line Developer Toolsのダウンロードを要求されると同時にポップアップメッセージが出現します。
<img width="490" alt="スクリーンショット 2018-12-22 18.29.41.png" src="https://qiita-image-store.s3.amazonaws.com/0/290878/7184e658-d022-c058-702e-c28e63311f11.png">
"インストール"を押して利用規約にチェックを入れればオッケーです。
次にHomebrewのインストールですが、公式サイトに
<img width="961" alt="スクリーンショット 2018-12-22 18.20.16.png" src="https://qiita-image-store.s3.amazonaws.com/0/290878/8895ff89-ee2d-da3e-de5c-7e9682a141ca.png">
とあるので、Terminalにコピペして実行します。

```:Terminal
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

（中略）

Press RETURN to continue or any other key to abort
==>

(中略)

Password:

(中略)

==> Installation successful!

==> Homebrew has enabled anonymous aggregate user behaviour analytics.
Read the analytics documentation (and how to opt-out) here:
  https://docs.brew.sh/Analytics.html

==> Next steps:
- Run `brew help` to get started
- Further documentation: 
    https://docs.brew.sh

```
途中でReturnキーとOSのPasswardの入力を求められるので適宜対応して下さい。以上でHomebrewのインストールは完了となりますが、念の為に正常にインストールされているか次のコマンドで確かめておきます。

```:Terminal
$ brew doctor
Your system is ready to brew.
```
このように表示されていれば問題ありません。

参考url： https://qiita.com/pypypyo14/items/4bf3b8bd511b6e93c9f9

##STEP2 : pyenvのインストール
先ほどインストールしたHomebrewを用いて、pyenvを導入します。

```:Terminal
$ brew install pyenv
```
次に、pyenvコマンドをTerminal上で使用できるようにする為に、パスを通します。
ホームディレクトリ直下に作成した.bash_profileをvimで開いて、下記の記述を行います。

```:.bash_profile
PATH=/usr/local/bin:$PATH
  
PYENV_ROOT=~/.pyenv
export PATH=$PATH:$PYENV_ROOT/bin
eval "$(pyenv init -)"
```
その後、以下のコマンドにより、.bash_profileの変更を反映させると、pyenvコマンドがTerminal上で使用できる様になるはずです。

```:Terminal
$ source ~/.bash_profile
$ pyenv --version
pyenv 1.2.8
```
以上でpyenvのインストールは完了となります。

参考url : https://qiita.com/shizuma/items/027167c6257f1c9d2a6f

##STEP3 : Anacondaのインストール
Pyenvを用いて、Anacondaをインストールします。下記のコマンドにより、利用可能なPythonのversion一覧を閲覧することができます。

```:Terminal
$ pyenv install --list
```
今回は、2018年12月26日時点の最新バージョンであるAnaconda3-5.3.0をインストールします。

```:Terminal
$ pyenv install anaconda3-5.3.0  
$ pyenv versions    #システム上に存在する全てのPython環境を表示するコマンド
* system (set by /Users/snow67675476/.pyenv/version) 
  anaconda3-5.3.0
```
以上でAnacondaのインストールは完了となります。

参考url : https://qiita.com/shizuma/items/027167c6257f1c9d2a6f

##STEP4 : 作業用ディレクトリの作成
最後に、Homeディレクトリ直下に作業用のディレクトリを作成し、Anaconda環境を適用させます。

```:Terminal
$ mkdir workspace    # 作業用ディレクトリを作成
$ cd workspace    # 作業用ディレクトリに移動
$ pyenv local anaconda3-5.3.0    
(anaconda3-5.3.0)$ pyenv versions
  system  
* anaconda3-5.3.0  (set by /Users/snow67675476/workspace/.python-version)
```
"$"マーク以前に"(anaconda3-5.3.0)"と表示されていれば成功です。Python環境を確認してみると、
確かにAnaconda環境が適用されていることが分かります。
上記の操作は1度行えば、workspaceディレクトリに移動した瞬間に自動的にAnaconda環境が適用される様になります。

参考url : https://qiita.com/m3y/items/45c7be319e401b24fca8

#おまけ （XGBoostとLightGBMのインストール）
Kaggleで絶大な人気を誇るxgboostとlightgbmのインストール方法を紹介します。
Anaconda環境ならば、Anaconda cloud経由でインストールするのが最も楽です。
インストールしたい環境をアクティブ状態にして、下記のコマンドを叩けば一発で入ります。途中で確認が入りますが、yを押してReturnキーを押せば大丈夫です。

```:Terminal
$ conda install -c conda-forge xgboost    # XGBoostのインストール
$ conda install -c conda-forge lightgbm    # LightGBMのインストール 
```
めちゃくちゃ簡単。