Pythonの環境構築からTensorFlowインストール

## 概要
pythonにあまり触れたことのない人が、Pythonでの開発環境を構築して、TensorFlowをインストールするところまで解説します。

## 前提
mac OSX Yosemite以上を想定しています。Linuxの場合は、ツール等のインストール方法が異なるため、注意してください。  

## pythonの仮想環境の整備 (オプション)
ここは必須ではありません。必要でない方は次の章まで飛ばしてください。

Macには初めからPythonが入っています。しかし、Python界隈では、Python2系とPython3系があり、ライブラリの充実度の関係から、なかなか3系に移行していけていません。そこで共存が必要になることもあります。  
  
また、プロジェクトごとにライブラリのバージョンを管理したいことがあると思います。機械学習系のライブラリは数多く出ていますが、まだまだ黎明期で、高速でアップデートが行われています。前のバージョンで書いたものがすぐに動かなくなるので、迂闊にアップデートできません。そこで、同じライブラリでもプロジェクトごとに管理できると便利です。  
  
これらを簡単にできる以下の２つのツールを導入します。

* pyenv 　　　→Pythonのバージョン切り替え
* virtualenv　　→プロジェクトごとの仮想環境ツール

参考:
 [Python3なTensorFlow環境構築 (Macとpyenv virtualenv)](http://qiita.com/hatapu/items/054dbab03607c47cb84f)
[pyenvを使ってMacにPythonの環境を構築する](http://qiita.com/1000ch/items/93841f76ea52551b6a97)  

### pyenv
pyenvは、pythonのバージョンを切り替えるツールです。python2.7やpython3.5などを切り替えられます。
インストールは、  

```
$ brew install pyenv
```

~/.profileに下記を記述します。

```
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
```

これでpyenvのインストールは終わりです。
しかし最初は、systemという名前の、インストール時のシステムのpythonのバージョンしか入っていません。
```pyenv versions```というコマンドで、現在入っているバージョンが確認できます。

```
$ pyenv versions
* system (set by /Users/someone/.pyenv/version)
```

Pythonが最初からシステム用に入っているので、これでも使えますが、とりあえず現状のpython2系最新の2.7.11と3系最新の3.51をインストールします。  

```
$ pyenv install 2.7.11
Downloading Python-2.7.11.tgz...
-> https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz
Installing Python-2.7.11...
Installed Python-2.7.11 to /Users/someone/.pyenv/versions/2.7.11

$ pyenv install 3.5.1
Downloading Python-3.5.1.tgz...
-> https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
Installing Python-3.5.1...
Installed Python-3.5.1 to /Users/someone/.pyenv/versions/3.5.1
```

再度```pyenv versions```で確認すると

```
$ pyenv versions
* system (set by /Users/someone/.pyenv/version)
  2.7.11
  3.5.1
```

と、2.7.11と3.5.1がインストールされています。  
現在の環境はsystemが選択されているため、```pyenv global```コマンドで環境を切り替えます。

```
$ pyenv global 2.7.11
$ pyenv versions
  system
* 2.7.11 (set by /Users/someone/.pyenv/version)
  3.5.1
```

これでPython2.7.11上で作業することができます。  

### pyenv-virtualenv 
さらに細かく仮想環境を作るときには、pyenv-virtualenvを使います。とても紛らわしいのですが、単体でvirtualenvというツールも存在し、pyenv-virtualenvと、単体のvirtualenvの２種類があるので、ドキュメントの調査等ではご注意ください。詳しくは[こちら](http://dackdive.hateblo.jp/entry/2015/12/12/163400)。今回は、pyenvの拡張であるpyenv-virtualenvを使います。

pyenv-virtualenvのインストールは

```
$ brew install pyenv-virtualenv
```

で終わります。
仮想環境の作成は、

```
$ pyenv virtualenv {pyenvのバージョン} {仮想環境名}
```
で作成することができます。それでは、TensorFlowの0.9.0をインストールする環境として、tensorflow0.9.0という名前で作ってみます。

```
$ pyenv virtualenv 2.7.11 tensorflow0.9.0
........
........
$ pyenv versions
  system
* 2.7.11 (set by /Users/ishiday/.pyenv/version)
  2.7.11/envs/tensorflow0.9.0
  3.5.1
  tensorflow0.9.0
$ pyenv global tensorflow0.9.0
$ pyenv versions
  system
  2.7.11
  2.7.11/envs/tensorflow0.9.0
  3.5.1
* tensorflow0.9.0 (set by /Users/ishiday/.pyenv/version)
```

仮想環境が作成できました。
しかしこの状態は、まだ仮想環境に入っていません。```pyenv activate```で仮想環境をアクティベートします。

```
$ pyenv activate
(tensorflow0.9.0) $ 
```

このように、アクティベートすると、仮想環境内であることを示すように、(仮想環境名) が前に付きます。次に紹介するpipでライブラリをインストールするときには、この状態で行います。
仮想環境から出る際は、```pyenv deactivate```でできます。

これでPython2.7.11でTensorFlowをインストールする仮想環境が整いました。

## TensowFlow周りの開発環境の整備
TensowFlowを使う際に必要なライブラリをインストールします。

### PyPI
PyPIはPythonのパッケージ管理ツールです。パイパイと呼びます。通常使うときのコマンドはpipです。ほとんど必須ツールなのでいれましょう。以下の場合は、デフォルトでPyPIはインストールされています。

* Python2.7.9以降
* Python3.4以降
* pyenvを使用してインストールした場合

PyPIが入ってるか確かめるときは、

```
$ pip -V
pip 8.1.1 from /Library/Python/2.7/site-packages/pip-8.1.1-py2.7.egg (python 2.7)
```

でわかります。
入ってない場合は、以下のコマンドでインストールします。

```
curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python
```

参考：
[Pythonインストール（Mac編）](http://qiita.com/ms-rock/items/6e4498a5963f3d9c4a67)
[声に出して読みたい７つのPython用語](http://doloopwhile.hatenablog.com/entry/20120120/1327062714)

## TensorFlowのインストール
PyPIでインストールできます。しかしパッケージ登録されているのではなく、ダウンロード先を指定してのインストールになります。環境に応じてソースが異なるため、適切に選択する必要があります。分かれるポイントは以下の通りです。

* GPUの有無　CPUのみ/GPUあり
* OSの種類  Linux / Mac
* Pythonのバージョン 2系 / 3.4 / 3.5

選択するソースについては、公式サイトから確認されることを強くお勧めします。
https://www.tensorflow.org/versions/r0.9/get_started/os_setup.html#pip-installation

GPUがあると、学習速度が格段に向上します。NVidiaのグラフィックボード搭載したPCの場合、GPUをお勧めします。GPUありのバージョンをインストールする場合、Cuda Toolkit 7.5と cuDNN v4という、グラフィックボードを数値計算に用いるためのツールキットのインストールが必要です。この２つがないとインストールに失敗します。CUDAのインストールは鬼門で、かなりハマる場合があるのでご注意ください。

ここでは、

* CPUのみ
* Mac
* Python2系

の条件で、現状で最新版の0.9.0をインストールします。この場合のソースは、
https://storage.googleapis.com/tensorflow/mac/tensorflow-0.9.0-py2-none-any.whl
となります。インストール方法は以下です。

```
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/tensorflow-0.9.0-py2-none-any.whl
$ pip install --upgrade $TF_BINARY_URL
```

## TensorFlowの動作確認
エラーなくインストールされたら、TensorFlowがちゃんと動作するか確認します。
[公式](https://www.tensorflow.org/versions/r0.9/get_started/os_setup.html#test-the-tensorflow-installation)のインストールテストをそのまま実行しましょう。

```
(tensorflow0.9.0) $ python
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
>>> 

```

pythonとコマンドを打つと、コマンドラインでpythonが実行できるモードになります。
```exit()```で終了することができます。

ここまでくれば、無事、インストールが終わりました。
引き続いて、チュートリアルを行いましょう。
続きを執筆中です。