Python未経験エンジニアがMacでTensorFlowの実行環境+快適なコーディング環境を構築するまで

Python未経験者がGoogleが公開した機械学習ライブラリである[TensorFlow](https://www.tensorflow.org/)の実行環境と快適なコーディング環境を整えるためしっくはっくした記録です
Python自体も快適にコーディングしたかったので、Mac上で本記事作成時点の最新版であるPython 3.5.2 + PyCharmでTensorFlowのMNISTデモをワンクリックで実行できるまでの環境を構築してみます

## Homebrewのインストール

パッケージ管理ツールである[Homebrew](http://brew.sh/index_ja.html)を初めにインストールします

```console:console
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```
既にインストールされている場合も念のためアップデートしておくことをおすすめします

```console:console
$ brew update
```

※インストール時にエラーが起こる場合はXcodeのコマンドラインツールをインストールすると解決する場合があります。Xcodeは事前にインストールしてください！

```console:console
$ xcode-select --install
```

## pyenv-virtualenvのインストール

Macには初めからPythonがインストールされていますがバージョンが2.x系だったり、El Capitanから導入されたSIPのせいで融通が効かなかったりするので
pyenvから最新版のPythonを入れ、さらに[pyenv-virtualenv](https://github.com/yyuu/pyenv-virtualenv)を使って環境を切り分けるのが良いと思います

以下のコマンドからツールのインストールを行ってください

```console:console
$ brew install pyenv-virtualenv
```

## Python最新版のインストール

まずはPython最新版をインストールします（ここでは3.5.2をインストールしています）
インストールできる一覧を表示するには`pyenv install -l`と打ち込んで下さい

```console:console
$ pyenv install 3.5.2
$ pyenv rehash
```

pyenv installでエラーが起こる場合はXcodeのコマンドラインツールをインストールすると解決する場合があります（２度目）

```console:console
$ xcode-select --install
```

## Python 3.5.2のTensorFlow用の環境を作成

TensorFlowの実行環境を独立させるため、インストールしたPython 3.5.2を元に名前をつけて環境を作ります。こうしておくことでプラグイン同士の競合によるエラーを減らしたり気軽に別のバージョンを試したりと仮想環境に近いことが出来ます

以下の"TensorFlow"の部分は環境の名前なので適宜変更して下さい

```console:console
$ pyenv virtualenv 3.5.2 TensorFlow
$ pyenv rehash
```
## 作成したTensorFlow用の環境へ切り替え

`pyenv global`を使って、作成したTensorFlow環境へ変更します

```console:console
$ pyenv global TensorFlow
```

その後でpythonコマンドをたたくと3.5.2に変わっているはずです

```console:console
$ python -V
Python 3.5.2
```

もし以下のようにpyenv内ではちゃんと切り替わっているのに、pythonコマンドでは参照が変更されていない場合は、、、

```console:console
$ pyenv version
TensorFlow (set by /Users/hogehoge/.pyenv/version)
$ python -V
Python 2.7.10
```

この辺の設定を追加してみて下さい（3行目だけでもいいかも）

```console:console
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
```

またTensorFlowインストール後は必要に応じて以下で環境を元に戻せます

```console:console
$ pyenv global system
```

環境の指定は後述するPyCharmで行うので、必ずしもpythonコマンドがTensorFlow環境になっている必要はありません
もちろんpythonコマンドから実行する場合は必要ですが。

## pipのインストール

次にPython向けのプラグイン管理ツールである[pip](https://pip.pypa.io/en/stable/)をインストールします
最新のPythonをインストールしていれば最初から入ってるらしいですが念のため。

```console:console
$ sudo easy_install pip
$ sudo pip install --upgrade pip
```

## TensorFlowのインストール

ここでようやく[TensorFlow](https://www.tensorflow.org/)のインストールに移ります。

```console:console
$ pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.9.0-py3-none-any.whl
```

TensorFlowのインストールURLはバージョン指定のようなので最新版は[公式](https://www.tensorflow.org/)から確認して下さい。ここではv0.9を指定しています。

## PyCharmのインストール

そして快適なPythonコーディング環境を構築するため、JetBrainネ申が開発したIDEである[PyCharm](https://www.jetbrains.com/pycharm/)を以下からダウンロードします
https://www.jetbrains.com/pycharm/download/

補完やブレークポイントもバッチリ動作するしCommunity Editionなら無料で使うことが出来ます。スバラシイ！

## PyCharmでプロジェクト作成＆TensorFlow環境にプロジェクト設定を適用

PyCharmを起動したら適当にプロジェクトを作成して下さい。
その際にCreate Projectダイアログ上のInterpreterプルダウンから「3.5.2 virtualenv at ~/.pyenv/versions/TensorFlow」を指定して下さい。

また、あとから実行環境を変更する場合にはPreferences -> Project: PROJECT_NAME -> Project Interpreterのプルダウンからも変更できます

## TensorFlowのMNISTデモを稼働させる

TensorFlowのMNISTデモの実装自体は[公式のチュートリアル](https://www.tensorflow.org/versions/r0.9/tutorials/mnist/beginners/index.html)や他の解説記事を参考にソースとデータを配置して下さい（丸投げ）
とりあえず動かすだけならお手軽だったので私は↓のサイトの手順に従いました。
http://www.trifields.jp/try-tutorial-mnist-for-ml-beginners-of-tensorflow-1713

一通りソースとデータが用意出来たらおもむろにRunをクリックすれば画面下のコンソールに結果が出るはず
※コンソール上で実行する場合はpyenvで環境がTensorFlow用のものになっているか注意してください

## おわり

すでにPythonをガリガリ使っている方はなんてことないと思いますが、TensorFlowを動かしてみたいがためにPythonを初めて触る私みたいな人だと、色々と勝手が違ってつまずくことがあったので備忘録として流れをまとめました。

インストールの手順はこの記事を参考にしました
http://qiita.com/hatapu/items/054dbab03607c47cb84f