OSX El CapitanにJupyterLabをインストールする


## pythonのインストール
2系と3系があり、今回は3系をインストールする。

```Bash
$ brew install python3
$ python3 -V
Python 3.5.2
```

## pip3が入っていることを確認
```Bash
$ pip3 -V
pip 8.1.2 from /usr/local/lib/python3.5/site-packages (python 3.5)
```

## jupyter本体のインストール
```Bash
pip3 install jupyter
```

## Jupyterの設定
```Bash
$ jupyter notebook --generate-config
Writing default config to: /Users/(ユーザー名)/.jupyter/jupyter_notebook_config.py
```

上記で作成されたファイルをエディタで開いて編集。
該当箇所のコメントを外す。
今回はDropboxに作成したjupyterディレクトリを指定。

```
# root directory
c.NotebookApp.notebook_dir = '/Users/(ユーザー名)/Dropbox/jupyter'

# port
c.NotebookApp.port = 65432
```

## Jupyterの起動

```Bash
$ jupyter notebook
```

ブラウザが開いて立ち上がる。

## JupyterLabのインストール
```Bash
$ pip3 install jupyterlab
$ jupyter serverextension enable --py jupyterlab
```

## JupyterLabの起動

```Bash
$ jupyter lab
```

## 追加カーネルのインストール
ここまででpython3のみ扱えるようになっているが、各種カーネルを入れることによって、いろいろな言語に対応可能になる。
今回はJupyterLab対応の、Javascript、Scala、Golang、PHP、Bash用カーネルを入れる。

これ以外のカーネルのリストは以下を見る。
[IPython kernels for other languages · ipython/ipython Wiki](https://github.com/ipython/ipython/wiki/IPython-kernels-for-other-languages)

### Javascript
[n\-riesco/ijavascript: IJavascript is a javascript kernel for the Jupyter notebook](https://github.com/n-riesco/ijavascript)

```Bash
$ brew install npm pkg-config zeromq
$ npm -v
3.10.3
$ node -v
v6.3.1
$ npm install -g ijavascript
```

初回だけ以下を実行。
ブラウザでnotebookが起動するので、終了する。
以後は jupyter lab でOK。

```
$ ijs
```

### Scala
[alexarchambault/jupyter\-scala: Lightweight Scala kernel for Jupyter / IPython 3](https://github.com/alexarchambault/jupyter-scala)

```Bash
$ brew install scala
```

```Bash
$ curl -L -o jupyter-scala https://git.io/vrHhi && chmod +x jupyter-scala && ./jupyter-scala && rm -f jupyter-scala
```

### Golang
[fabian\-z/gopherlab: It's time to use Go in notebooks\. Fork from the original gophernotes project, supporting message spec v5 \(JupyterLab\)](https://github.com/fabian-z/gopherlab)

```Bash
$ brew install go
$ go version
go version go1.6.3 darwin/amd64
```

```Bash
$ go get golang.org/x/tools/cmd/goimports
$ go get github.com/fabian-z/gopherlab
$ mkdir -p ~/Library/Jupyter/kernels/gopherlab
$ cp -r $GOPATH/src/github.com/fabian-z/gopherlab/kernel/* ~/Library/Jupyter/kernels/gopherlab
$ jupyter --data-dir
```

~/Library/Jupyter/kernels/gopherlab/kernel.jsonを編集。
argvをインストールしたパスに合わせる。

```~/Library/Jupyter/kernels/gophernotes/kernel.json
{
    "argv": [
      "/Users/(ユーザー名)/go/bin/gopherlab",
      "{connection_file}"
      ],
    "display_name": "Golang",
    "language": "go",
    "name": "go"
}
```

### PHP
[Litipk/Jupyter\-PHP: A PHP Kernel for Jupyter](https://github.com/Litipk/Jupyter-PHP)

```Bash
$ brew install homebrew/php/php56 homebrew/php/php56-zmq composer
$ php -v
PHP 5.6.24 (cli) (built: Jul 22 2016 02:41:22) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
```

忘れずにtimezoneを設定する。

```/usr/local/etc/php/5.6/php.ini
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Tokyo
```

[Jupyter\-PHP's Installer by Litipk](https://litipk.github.io/Jupyter-PHP-Installer/)
から、jupyter-php-installer.pharをダウンロードしておく。

```Bash
$ php ./jupyter-php-installer.phar install
The Jupyter-PHP kernel has been successfully installed.
```

### Bash
[takluyver/bash\_kernel: A bash kernel for IPython](https://github.com/takluyver/bash_kernel)

```Bash
$ pip3 install bash_kernel
$ python3 -m bash_kernel.install
```


## インストール済みのカーネルを確認
```Bash
$ jupyter kernelspec list
  python3        /usr/local/lib/python3.5/site-packages/ipykernel/resources
  bash           /Users/maccotsan/Library/Jupyter/kernels/bash
  gopherlab      /Users/maccotsan/Library/Jupyter/kernels/gopherlab
  javascript     /Users/maccotsan/Library/Jupyter/kernels/javascript
  jupyter-php    /Users/maccotsan/Library/Jupyter/kernels/jupyter-php
  scala211       /Users/maccotsan/Library/Jupyter/kernels/scala211
```

## 拡張機能の追加
JupyterLabではまだ使えない（notebookのみ）が、あると便利な拡張機能を入れておく。
実際、これらが使えるようになるまではnotebookの方が良いかも・・・。
[ipython\-contrib/jupyter\_contrib\_nbextensions: A collection of various different notebook extensions for Jupyter](https://github.com/ipython-contrib/jupyter_contrib_nbextensions)

```Bash
$ pip3 install jupyter_contrib_nbextensions
$ jupyter contrib nbextension install --user
$ jupyter nootbook
```

http://localhost:65432/nbextensions/ にアクセスして有効にする拡張機能を選ぶ。

### 有効にしたもの
・Nbextensions edit menu item（メニューに拡張機能設定画面へのリンク追加）
・AutoSaveTime（ファイルの自動保存）
・Move selected cells（セルの上下入れ替えボタンを追加）
・Rubberband（シフトキー押しながらドラッグで複数セル選択）
・Table of Contents (2)（目次を自動生成）
・Search-Replace（検索、置換）
・ExcuteTime（コードの実行時間測定）
・Collapsible Headings（ヘッダの折りたたみ）
・Codefolding（コードの折りたたみ）
・Drag and Drop（ドラッグアンドドロップで画像追加）


# 参考

[Installing Jupyter Notebook — Jupyter Documentation 4\.1\.1 alpha documentation](http://jupyter.readthedocs.io/en/latest/install.html)

[MacでPython使う時の最低限のメモ（Homebrew編） \- Qiita](http://qiita.com/zaburo/items/fbdaf6c04151671407db)


[Jupyter Notebookをインストール・設定して勉強ノート作成環境をつくる \[Mac\] \- Qiita](http://qiita.com/sasaki77/items/bfa53828c973ba46e34d)


[Jupyter Notebook（IPython）のインストールと始め方 \- TASK NOTES](http://www.task-notes.com/entry/20151129/1448794509)

[Jupyter Notebookの次世代版、JupyterLabのこれが凄いポイントの紹介 \- のんびりしているエンジニアの日記](http://nonbiri-tereka.hatenablog.com/entry/2016/07/16/233703)

[Jupyter Notebookの拡張機能を使ってみる \- はしくれエンジニアもどきのメモ](http://cartman0.hatenablog.com/entry/2016/03/28/170319)