Jupyter Notebookをインストール・設定して勉強ノート作成環境をつくる [Mac]


# Jupyter Notebookとは
Jupyter Notebookはプログラムコードや数式、図、説明文などを含む文書を作成し、共有することが出来るWebアプリケーションです。

以下の様な特徴が公式サイトで挙げられています。

- PythonやR、Scalaなど40以上のプログラミング言語をサポート
- 作成したノートブックはemailやDropbox、GitHub、[Jupyter Notebook Viewer](http://nbviewer.jupyter.org/)で共有することが出来る。
- ノートブックはipynbという拡張子でjson形式に保存されるが、htmlやpdfなど他の形式に変換が可能
- 入力されたコードはインタラクティブに処理され、画像やビデオ、LaTeXやJavaScriptなどとして出力が可能

他にも

- 説明文としてMarkdownを使用する事ができる
- $$で囲うとLaTeXのコマンドが認識されて使用可能（基本的に数式しか対応していないはず）
 
といったところが気に入っています。

基本的にはローカルなサーバを立てて、個人で利用する用途向けですが、[Jupyterhub](https://github.com/jupyter/jupyterhub)というのを利用すればマルチユーザ環境でも使用することができます。

他にもいくつかのサブプロジェクトがオフィシャルにサポートされているので、気になる場合は以下を参照してみると良いと思います。

- http://jupyter.readthedocs.org/en/latest/subprojects.html

## カーネル
Jupyterにおいてカーネルとは入力されたコードをインタラクティブに処理して結果を返却するプロセスのことを指します。

Pythonの処理を実行するカーネルはIPythonが利用されますが、その他の言語を処理したい場合には、その言語のカーネルを別途インストールする必要があります。

勉強したいプログラミングをインストールするとよいかもしれません。

使用できるカーネルは以下を参照ください。

- https://github.com/ipython/ipython/wiki/IPython-kernels-for-other-languages

## Kobitoとの違い
大きな違いはコードをインタラクティブに処理できる部分だと思います。

そのため、試しに動かしたコードをちょっと修正して、Markdownで説明を書いて保存するとそのままドキュメントとして形になるので便利です。

[Jupyter Notebook Viewer](http://nbviewer.jupyter.org/)を見ると参考になると思います。

# Jupyterのインストール
## 環境
- Mac OS Yosemite 10.10.5

## インストール
インストール方法は以下に詳しく書いてます。

- http://jupyter.readthedocs.org/en/latest/install.html

私はPython2系でインストールしたのでpipを使用しましたが、pip3を利用すればPython3系でインストールされるはずです。

```bash
pip install jupyter
```

## 起動
jupyter notebookで起動できます。

このまま実行すると、実行したディレクトリをノートブックのホームとして使用するので、ノートブック用のディレクトリを作成、移動してから実行するほうがよいかもしれません。

```bash
jupyter notebook
```

コマンドオプションは以下で確認です。

```bash
jupyter notebook --help
# or
jupyter notebook --help-all
```

## Python3のカーネル追加
pipでインストールすると使用できるカーネルはPython2のみでPython3ははじめから利用できません。

以下を実行してPython3のカーネルも使用できるようにします。

```bash
python3 -m IPython kernelspec install-self
```

実行すると`/usr/local/share/jupyter/kernels`にPython3のカーネルが追加されます。

pip3でインストールしてPython2を利用したい場合は以下となります。

```bash
python2 -m IPython kernelspec install-self
```

# Jupyterで使用できるMarkdown
以下を参照してください。

大抵の表記は利用できますし、プログラミング言語のシンタックスハイライトも可能です。

- http://jupyter.cs.brynmawr.edu/hub/dblank/public/Jupyter%20Notebook%20Users%20Manual.ipynb#4.-Using-Markdown-Cells-for-Writing

# Jupyterの設定
Jupyterの設定ファイルはデフォルトで`~/.jupyter`に入れられます。

まずは、以下のコマンドを実行してコンフィグファイルの作成を行います。実行すると`jupyter_application_config.py`と言うファイルが`~/.jupyter`に作成されます。

```bash
jupyter notebook --generate-config
```

作成されたファイルを開くと、コメントアウトされた設定が並んでいます。内容を確認して、必要な設定を有効にしましょう。

設定を全て確認してはいませんが、とりあえず以下を設定しています。

```bash
# The port the notebook server will listen on.
c.NotebookApp.port = 8080

# The directory to use for notebooks and kernels.
c.NotebookApp.notebook_dir = u'/Path/to/notebooks/'
```
notebook_dirはJupyterのノートブックのホームとなるディレクトリの設定です。

デフォルトではJupyterを実行したディレクトリがホームとなりますが、いつも特定のディレクトリをノートブック置き場としたかったので設定しています。

# LaTeXコマンドの実行
数式などの一部のLaTeXコマンドは$$で囲むことで実行することができます。

```bash
$$
\begin{align}
\sum_{k=1}^{\infty} \frac{1}{k^2} = \frac{\pi^2}{6}
\end{align}
$$
```
といった感じです。

[こちら](http://nbviewer.ipython.org/github/sasaki77/notebooks/blob/master/sample/Tex_Math.ipynb)に簡単な例を用意したので確認してみてください。

newcommandなども使用できるようです。

# GitHubを利用したノートブックの共有と閲覧
作成したノートブックをGitHubのレポジトリとして管理すると、GitHubのページからもノートブックがエンコードされて閲覧することができるほか、[Jupyter Notebook Viewer](http://nbviewer.jupyter.org/)からも閲覧できます。

私の場合はノートブックのディレクトリとして設定したディレクトリをそのままGitHubにpushしていつでも、どこでもノートブックを閲覧できるようにしています。

.ipynb_checkpointsというのが各所にできるので、gitignoreで無視するようにしています。