LoginSignup
18
12

More than 3 years have passed since last update.

Jupyterで全てを完結させる 〜nbdevの紹介〜

Last updated at Posted at 2019-12-04

この記事はバカン Advent Calendar 2019の4日目の投稿です。
Jupyterer向けの記事となります。
理解不十分な部分もあるため、詳細は公式を確認してください。

nbdevとは

おそらく簡潔にいうと、IDEの役割を含めることで、Jupyter Notebook1つで作業を完結させるPythonのプログラム環境のことです。
fast.aiが作成しており、現在開発中のfastai v2もnbdevを用いているとのことです。

現状、EDAやモデル構築などの試行錯誤はJupyter Notebookを用いて行われることが多く、"exploring"の役割として存在しています。ですが、それ以降のフェーズではIDEを使うのが一般的とされています。

nbdevでは以下のような機能を提供することで、jupyter上で完結することを試みています。
・pyファイルの作成
・READMEの作成
・Visual diff
・merge conflictの確認、修正

以下公式から拝借
image.png

チュートリアル・使い方

以下はMacで行なっていますが、Winでも手順は変わらないです。

インストール 〜 Jupyter開くまで

1- ターミナルから以下コマンドでインストールします。
pip install nbdev

2- 公式がテンプレートを作成しているので、それをもとにRepositoryを作成します。
image.png

3- 作成したRepositoryをCloneします。
git clone [以下URL]

image.png

4- 連携するRepositoryの情報を加えるため、settings.iniを編集します。
  settings.iniの以下項目のコメントアウトを外し、記入例のように編集します。

<編集前>
image.png

<記入例>
image.png

lib_name, user, descriptionは作成したrepositoryに対応させます。
keywordsは何を指しているか不明ですが、適当な文字列を入れてください。
※ copyrightまで記載しないと、次の手順でコケます。

5- ターミナルから以下コマンドを打ちこみ、lib_nameのディレクトリを作成します。
nbdev_build_lib

image.png

(上の画像ではPipfileとPipfile.lockが表示されてますが、関係ないので無視してください)

6- jupyter notebookでJupyter Notebookを開きます。

pyファイルの作成

00_core.ipynbを開き、以下手順でモジュール作成を行います。
1. python moduleに変換するものに関して、該当セルの先頭に#exportを加えます。
2. 以下2行をセルに打ち込み実行します。(もしくはterminal上でnbdev_build_libを実行します。)
from nbdev.export import *
notebook2script()

<以下例>
image.png

これによって、#exportで指定したものが、lib_nameディレクトリ配下のcore.pyに記載されます。
手順2を実行するたびにcore.pyが更新されるため、追加に加え、既存セルを消去すれば削除も可能です。

image.png

READMEの編集

99_index.ipynbを開くと以下テンプレートが表示されます。
#hideが記載されたセルは非表示となるため、ここで#exportしたもの含めモジュールをimportしていきます。

<テンプレート>
image.png

<以下例>
image.png

編集完了後、terminal上でnbdev_build_docsを実行することで、ディレクトリにあるREADME.mdが更新されます。

その後、remote repositoryにpushするとgithub上のREADMEでは以下のよう表示されます。

image.png

おわりに

いかがでしたか?
nbdevの概要、使い方の一部を紹介してみました。
本記事を通して、nbdevを使ってみるきっかけになれば幸いです。
カバーできていない部分もあるため、以下の参考文献を確認してみてください。

参考文献

nbdev: use Jupyter Notebooks for everything
Welcome to nbdev
Nbdev discussion
A Step-by-Step Introduction to Starting nbdev — Exploratory Programming
今度こそ挫折しない git 入門 第1回

参考リンク

株式会社バカン(Vacan, Inc.)
バカン (Vacan) Advent Calendar 2019

参考情報

弊社代表取締役はKaggle推しです。

18
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
12