1. hikarut

    No comment

    hikarut
Changes in body
Source | HTML | Preview
@@ -1,88 +1,88 @@
# 概要
最近はデータサイエンスの勉強で統計学の本を読んでいるのですが、本を読んでいるだけだとなかなかイメージしにくいこともあるので、Jupyter Notebookを使って手元でコードを書きながらやりたいなと思いました。
Jupyter Notebookでコード書くならvimのキーバインドが使えないとテンションが上がらないのでvimが使えるようにしたいと思いましたが、多少ハマった部分などあったのでやり方をまとめました。
# 環境
||バージョン|
|:--|:--|
|Mac|10.15.3|
|Docker|19.03.4|
|docker-compose|1.24.1|
# 環境構築手順
Dockerfileとdocker-composeを使ってvimのキーバインドが使えるJupyter Notebookを起動します。
※以下ファイルはGitHubにもまとめているのでご参考ください。
-https://github.com/hikarut/Data-Science
+https://github.com/hikarut/Jupyter-Notebook
##### 1. notebook保存用のディレクトリ作成
```
$ mkdir notebooks
```
##### 2. Dockerfileの作成
```dockerfile:Dockerfile
FROM jupyter/minimal-notebook:latest
USER root
RUN pip install jupyter_contrib_nbextensions && \
jupyter contrib nbextension install --user && \
git clone https://github.com/lambdalisue/jupyter-vim-binding /home/jovyan/.local/share/jupyter/nbextensions/vim_binding && \
jupyter nbextension enable vim_binding/vim_binding
EXPOSE 10000
CMD ["bash"]
```
※`jupyter-vim-binding`レポジトリのクローン先はコマンドjupyterのpathと合わせる必要があります。(`jupyter --path`コマンドで確認出来ます)
##### 3. docker-compose.ymlの作成
```yml:docker-compose.yml
version: '3'
services:
data-science:
restart: always
build: .
container_name: 'data-science'
ports:
- "10000:10000"
working_dir: '/root/'
tty: true
volumes:
- ./notebooks:/root/notebooks/
```
##### 4. コンテナのビルド
```bash
$ docker-compose up -d --build
```
##### 5. コンテナにログイン
```bash
$ docker-compose exec data-science bash
```
##### 6. Jupyter Notebookの起動
```bash
/root# jupyter notebook --port 10000 --allow-root
```
表示される`http://127.0.0.1:10000/?token=xxxxxxxxxxxxxxxx`にアクセスします。
##### 7. VIM bindingのエクステンションを有効にする
デフォルトだとエクステンションの設定に`disable`にチェックが入っているのでチェックを外して有効にします。
<img width="1204" alt="スクリーンショット 2020-02-16 9.41.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110485/78a474d2-796b-cc24-795c-8088e57d2888.png">
これでnotebook上でvimが使えるようになります
<img width="1173" alt="スクリーンショット 2020-02-16 9.47.41.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110485/fda13e04-b8eb-cefe-997c-ecd9c0895a7d.png">
# 最後に
Jupyter Notebookでvimのキーバインドを使えるようにするやり方は結構まとまっていたのですが、色々試していたら以外とハマった部分もあったので自分なりにまとめてみました。
これで快適なNotebookが書けそうです!
(ただ今回はユーザーを全てrootにしちゃったのでその辺は変えた方が良いかもです。。)
##### 参考
* [Jupyter Notebook on Docker でvim_bindingを使う](https://www.social-impacts.net/2019/02/jupyter-notebook-on-docker-%E3%81%A7vim_binding%E3%82%92%E4%BD%BF%E3%81%86/)
* [Jupyter Notebook on DockerでVim keybindsを利用する](https://qiita.com/izumin5210/items/90adb4fd1f59d1aeaaa7)
* [JupyterNotebookにVimの力を加えると、光と闇が両方そなわり最強に見える](https://qiita.com/_snow_narcissus/items/80f81926707807ee9bf1)