nbdevとは
nbdevはライブラリ作成の多くを自動化して、少人数での大規模プロジェクト開発をサポートするツール。fastaiなどの開発に使われている。
前記事 https://qiita.com/lilacs/items/780123ecbb2936d493e7
公式トップページ nbdev – Jupyter Notebook で楽しいソフトウェアを作成する
ドキュメント nbdev - Getting started
nbdev1からの更新点
nbdevプロジェクトのセットアップが楽になった
-
nbdev_new
コマンドでセットアップできるようになった。 - 今まではGitHubでnbdev_templateでプロジェクト作成してから、ローカルへクローンする必要があり、ちょっと面倒だった。
ドキュメント生成ツールはjekyllからQuartoに変更
-
今までのjekyllは難点が多かった。
- rubyが必要だったりとインストールの手順が多く環境構築がつらい
- インストール失敗が多い(docフォルダが未準備でjekyllインストールに失敗するなど)
- ドキュメント更新後に、ローカルサーバでのプレビューが失敗したりする。(いったんdocフォルダを削除・再出力で解決したりする)
-
Quartoは比較的新しいツールで、上記の難点がいくつか解決している
- インストールが楽。nbdevユーザとしては
nbdev_install_quarto
を実行するだけ。内部的には1パッケージダウンロード・インストールしてる。
- インストールが楽。nbdevユーザとしては
# https://github.com/fastai/nbdev/blob/263a9af6690587922fc5ce8de162ace8ddc2a530/nbdev/_modidx.py#L28
nbdev_install=nbdev.shortcuts:install
# https://github.com/fastai/nbdev/blob/master/nbdev/shortcuts.py#L26
system(f'curl -LO {BASE_QUARTO_URL}quarto-linux-amd64.deb')
system('sudo dpkg -i *64.deb && rm *64.deb')
- Quartoチームは積極的に対応してくれてるぽい
nbdev+Quarto: A new secret weapon for productivity
Quartoは、Jupyter Notebook、VSCode、Observable、およびプレーンテキスト エディターをサポートするテクニカル パブリッシングを可能にするプロジェクトです。さらに、Quarto を使用すると、高品質の記事、レポート、Web サイト、ブログを HTML、PDF、ePub、PowerPoint スライドなどで公開できます。
...
Quarto と nbdev は多くの目標を共有しており、Quarto チームは私たちの提案に非常に迅速に対応してくれました。
その他
- Windowsでは動かないので、wslを使うこと(2022年8月6日)
- ライブラリ作成コマンドが
nbdev_build_lib
からnbdev_export
に変更- 今までも、ビルドではなくコードを抜き出すだけだったので、妥当な名称になったと思う
- execnb ノートブックをCLIで高速に実行するツール。テストが速くなる(nbdevでは、Notebookの実行成功をテストとするため)
変わらない点
- Notebookの記述方法は同じ
- 例
-
#|export
を付けたセルは*.pyへ出力 -
#|hide
を付けたセルはドキュメントに出力しない
-
- 参考 📖nbdevの記述方法
- 例
利用条件
- macOS, Linux(WSL可), ほとんどのUnix-style OS
- Python 3.9 以上 (nbdev_installで失敗する)
Dockerによる環境構築
🐳Dockerイメージ
pytorchと一緒に使うために作成。nbdevはpython 3.9以上が必要だが、pytorch公式イメージはpython3.8までしかなかったため。(2022年8月6日)
🐳https://hub.docker.com/r/lilacs2039/fastai-nbdev
🐙https://github.com/lilacs2039/docker_fastai-nbdev
利用手順
# 本リポジトリの`docker-compose.yml`を取得
wget https://raw.githubusercontent.com/lilacs2039/docker_fastai-nbdev/main/docker-compose.yml
wget https://raw.githubusercontent.com/lilacs2039/docker_fastai-nbdev/main/Dockerfile
# 環境立ち上げ
sudo service docker start
docker compose up