nbdevの使い方

fastaiで最近作り始めたnbdevを開発の中心に使おうかと思って試している。JupyterLabでノートを書いたものをgit経由でhtmlに変換してマニュアルの公開や、 .pyのライブラリにしてPiPiで公開などが1箇所でできる。

書籍に変換するにはhtmlだけでは物足りないが、fastaiでは7月に出す本をこれで書いているというので何かあるのかもしれない。文芸的プログラミングというのが昔あったがあまり成功しなかった。これで本まで行ければ、書く気が起きるので、友人の出版社の方に相談してみようかしら。

それにはhtml => markdownやlatex=>htmlの変換が必要だ。色々出ているので試す必要があるが、htlatexやpandocが有力だ。

htlatex ***.tex "xhtml, mathml, charset=utf-8" " -cunihtf -utf8"

pandoc ***.html -o cv.md

マークダウンにすれば、多少お化粧をすれば本になる。監修したpandasで最適化という本は、マークダウンで書いていた気がする。

nbdevのインストールはgitの準備やsetting.iniファイルの書き換えなど色々ある。こちらを参照されたい。

ただしprivateリポジトリでやる場合には、

git clone https://ユーザー名@github.com/リポジトリアドレス

とユーザー名@を追加する必要がある。

setting.iniファイルで、ノートを保管するフォルダを以下のように設定しておくと、デフォルトの直下でなく、nbsフォルダにファイルが置けるので、スッキリする。

nbs_path = nbs

目次のタイトルは、最初のマークダウンセルに以下の形式で記述する。

#  タイトル
> (サマリー)

# export をセルの最初に入れると、 *.pyに入れてもモジュールを自動生成してくれる。

セルに記述した関数やクラスは '''コメント'''をつけておくと、それを元にドキュメントが自動生成される。

クラスの中のメソッドを表示したい場合には、

#hide
from nbdev.showdoc import *

と最初に隠しセルで記述しておいてから、

show_doc(メソッド名)

とする。

Jupyterで書いた後に、コンソール(一番上のdirectory)でやることは、

nbdev_build_lib
nbdev_build_docs

の2つだ。

gitとの接続は、最初に

nbdev_install_git_hooks

git remote add origin https://ユーザー名@github.com/mikiokubo/scmopt.git

と、originという名前でリモートと接続しておいてから、毎回

git add .
git commit -m "Comment"
git push origin master

とすれば良い。

たまにgitと整合性が取れないとか言ってくる。その時には以下のコマンドでリセットする。

nbdev_fix_merge filename.ipynb.

とりあえず、以前作ったものをおいたが、公開できないものもあるので、そのうち友人たちを誘って、gitの引越しをするかもしれない。

追記:
引っ越しました:HPは https://mikiokubo.github.io/scmopt で、PrivateにしたのでGUIとかのソースは非公開にしました。

必要なモジュール(特にマイナーなもの)がないと文句をいうので、setting.iniのrequirementに羅列しておく。例えば、

requirements = colorlover pandas dash_table dash_bootstrap_components matplotlib dash networkx numpy plotly chart_studio jupyterlab_dash requests seaborn rfpimp fbprophet geopy scikit-learn statsmodels

という感じ。gurobiは商用なので入れられない。どうやってやるのだろう?

他にもwindowsでクローンして見たら、nbdev_build_docsの漢字コードでエラーした。nbdevはそこまでは対応していないのか、何か方法があるのかわからない。

いろいろ分からないことだらけだが、とりあえず便利なので使っていこう。使用する人が増えれば、色々解決するのかもしれない。




この記事が気に入ったらサポートをしてみませんか?