1. hikarut

    Posted

    hikarut
Changes in title
+Dockerで起動したJupyter Notebookでvimキーバインドを使う
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +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
+
+##### 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)