TensorFlow(1.0.0)の開発環境構築方法(Mac)

## はじめに

Pythonの開発環境が全くない状態からTensorFlowの開発環境を構築する方法を説明します。
なので、すでにPythonでプログラミングしている方はTensorFlowの部分だけかいつまんで読んでください。本記事のターゲットは「Python？ ピー…ツォン？ よくわからんけどTensorFlow使いたいぜ」的な人です(ちょっと前までの私)。

## 環境

- OS：macOS Sierra 10.12.3
- Homebrew：1.1.11
Homebrew/homebrew-core (git revision f9140; last commit 2017-03-26)
- pyenv：1.0.9
- Python：3.6.1
- TensorFlow：1.0.0
- PyCharm：Community Edition 2017.1 (PC-171.3780.115)

## 開発環境構築

### Homebrewのインストール・アップデート

インストール手順は省略します。
すでにインストールされている場合、アップデートのみ実行します。

```shell-session
$ brew update
```

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

pyenv-virtualenvは、Python環境の仮想化ツールです。実環境を汚さずにTensorFlow用のPython環境を構築できるので導入します。

```shell-session
$ brew install pyenv-virtualenv
```

`~/.bash_profile` に以下を追記し、パスを通します。

```diff_shell:.bash_profile
+ export PYENV_ROOT="$HOME/.pyenv"
+ if [ -d "${PYENV_ROOT}" ]; then
+   export PATH="$PATH:$HOME/.pyenv/bin"
+   eval "$(pyenv init -)"
+   eval "$(pyenv virtualenv-init -)"
+ fi
```

### Python3系のインストール

PythonをAnacondaでインストールします。Anacondaとは、Pythonとその主なパッケージを一括でインストールできるパッケージです。
以下のコマンドを実行し、Anacondaの最新バージョンを確認します。2017/03/27時点では「anaconda3-4.3.0」が最新です。

```shell-session
$ pyenv install -l
Available versions:
  …
  anaconda-1.4.0
  anaconda-1.5.0
  …
  anaconda3-4.3.0
  …
```

Anacondaの最新バージョンをインストールします。通信環境によっては時間がかかります。

```shell-session
$ pyenv install anaconda3-4.3.0
```

エラーが発生した場合、以下を実行してから再度Anacondaをインストールします。

```shell-session
$ xcode-select --install
$ pyenv rehash
```

Anacondaのインストールが完了したら、インストールされたか確認します。「anaconda3-4.3.0」があればOKです。

```shell-session
$ pyenv versions
* system (set by /Users/{ユーザー名}/.pyenv/version)
  anaconda3-4.3.0

$ ls ~/.pyenv/versions/
anaconda3-4.3.0
```

### 仮想環境作成

「anaconda3-4.3.0」を元に、任意の名前の仮想環境を作成します。ここでは「tensorFlow」とします。

```shell-session
$ pyenv virtualenv anaconda3-4.3.0 tensorFlow
$ pyenv rehash
```

仮想環境が作成されたか確認します。「anaconda3-4.3.0/envs/tensorFlow」と「tensorFlow」があればOKです。この2つの違いはまだわかっていません。。

```shell-session
$ pyenv versions
* system (set by /Users/{ユーザー名}/.pyenv/version)
  anaconda3-4.3.0
  anaconda3-4.3.0/envs/tensorFlow
  tensorFlow
```

### 仮想環境の切替

先ほど作成した仮想環境に切り替えます。

```shell-session
$ pyenv global tensorFlow
```

環境が切り替わったか確認します。「tensorFlow」の先頭に「*」が付いていれば環境が切り替わっています。Pythonのバージョンも確認しておきます。anaconda3-4.3.0では3.6.1のようです。

```shell-session
$ pyenv versions
  system
  anaconda3-4.3.0
  anaconda3-4.3.0/envs/tensorFlow
* tensorFlow (set by /Users/{ユーザー名}/.pyenv/version)

$ python --version
Python 3.6.1 :: Continuum Analytics, Inc.
```

### pip3のインストール・アップデート

Python3系のパッケージ管理ツールであるpip3をインストールします。

```shell-session
$ sudo easy_install pip
$ sudo easy_install --upgrade six
$ pip install --upgrade pip
```

### パッケージのインストール

matplotlibはグラフ描写ライブラリで、よく使うのでインストールしておきます。
jupyterは簡単にいうとPythonを対話式で動かすツールです。PyCharmを使う場合は不要かもしれませんが、便利なのでインストールしておきます。

```shell-session
$ sudo pip3 install matplotlib
$ sudo pip3 install jupyter
```

どちらもAnacondaに含まれているはずなのに、なぜかここでインストールしないと使えないです。パッケージも引き継がれると思うのですが。。

### TensorFlowのインストール

[公式サイト](https://www.tensorflow.org/install/install_mac)の5.を参照し、環境に合ったTensorFlowをpip3でインストールします。
私が使用しているMacBookはGPUを積んでいないため、CPU onlyを選択しました。

```bash
# Mac OS X, CPU only, Python 3.n
$ pip3 install --upgrade tensorflow
```

### 仮想環境の再切替

後述しますが、別の箇所でPython環境を指定するため、ターミナルで指定した仮想環境は元に戻して構いません。

```shell-session
$ pyenv global system
```

### 仮想環境のアンインストール

もし仮想環境を削除したい場合、以下のコマンドを実行します。

```shell-session
$ sudo pyenv uninstall -f {仮想環境名}
```

### PyCharmのインストール

PythonのIDEであるPyCharm(パイチャーム)をインストールします。
[公式サイト](https://www.jetbrains.com/pycharm/download/)からCommunity(無料版)の[DOWNLOAD]ボタンをクリックしてインストーラをダウンロードします。通信環境によっては時間がかかります。
ダウンロードが完了したら、ダブルクリックで実行してインストールします。
インストールしたら起動します。新規インストールなので、「Do not import settings」を選択して[OK]ボタンをクリックします。
Initial Configuration(初期設定)はSkipしていいです。

### PyCharmの設定

PyCharmの設定を変更します。

#### 1行に80文字以上記述すると警告を出すようにする

∵PEP8(Pythonのコーディング規約)が1行79文字までと定めているため

Preferences…
Editor > Code Style
Default Options
Right margin (columns):120→79

#### 空白行のスペースを可視化する

∵空白行にスペースを含めたくないため

Preferences…
Editor > General > Appearance
Show whitespaces:OFF→ON
  Trailing以外OFFにする

#### 補完時に大文字小文字を区別しない

Preferences…
Editor > General > Code Completion
Code Completion
Case sensitive completion: First letter→None

#### Vimプラグインの導入

こちらはお好みで入れてください。

Preferences…
Plugins
Install JetBrains plugin…
「vim」で検索してIdeaVimをインストールする

### PyCharmのプロジェクト作成

Create New Project
- Location：プロジェクトのパスです。
最後の部分がプロジェクト名になるので、「tensorFlowTest」のように変更します。
- Interpreter：適用するPython環境です。
作成した仮想環境「~/.pyenv/versions/tensorFlow/bin/python」を選択すればOKです。
そのあとに表示されるTipはCloseしていいです。

## おわりに

これでTensorFlowの開発環境構築は完了です。素敵なTensorFlowライフを楽しみましょう！

## 参考リンク

- [Python未経験エンジニアがMacでTensorFlowの実行環境+快適なコーディング環境を構築するまで - Qiita](http://qiita.com/KazaKago/items/587ac1224afc2c9350f1)
- [pyenv/pyenv-virtualenv: a pyenv plugin to manage virtualenv (a.k.a. python-virtualenv)](https://github.com/yyuu/pyenv-virtualenv)
- [仮想環境 バージョン管理 まとめ Python - Qiita](http://qiita.com/hedgehoCrow/items/0733c63c690450b14dcf)
- [pyenv-virtualenvでディレクトリ単位のpython環境構築 - Qiita](http://qiita.com/niwak2/items/5490607be32202ce1314)
- [VimからPyCharmに乗り換え(機能の把握と設定) - c-bata web](http://nwpct1.hatenablog.com/entry/pycharm-vim)
- [【Python】IDEのPyCharmのインストールと初期設定について - TASK NOTES](http://www.task-notes.com/entry/20150804/1438657200)