ハードウェアからサーバ・アプリまでワンストップで開発

 情報共有システム

ogochan

さっきのエントリの最後の方で「画面の内容が変わってます」という話を書きました。

Jupyter notebookのセルに余分なものがくっついてます。ここについて。

背景

元々、教科書的に書かれた本について潜在的に持っていた不満があります。

それは

式のリファレンスが間違っていることがある

ということです。特に変形しまくったり、途中まで導出してから別の式の話になってその後にまとめるとか、そういった文章にそれが起きると絶望的です。式がうまく続いてくれていないので、「なんでそうなったの?」みたいな気持ちになってしまいます。「数学嫌い」の何割かは、ここに原因があるんじゃないかとさえ思っています。

こういったことは電子化されたドキュメントではかなり少なくなりましたが、それでも「式xxってどこにあるんだ?」みたいなことが起きてしまうことがあります。

それとは別の話として、Jupyter notebookだと

ある計算をしたセルの値を他のところで使いたい

という要求があります。もちろんその必要が予見される場合は、何かグローバルな変数に値を入れるようなコードにしてしまえば良いわけですが、それをやると元のセルを「汚す」ことになってしまうこともあって、あまり嬉しくなかったりします。

また私のようにJupyter notebookをワープロの一種くらいのノリで使ってると、どこかのセルの値を文中で使いたいとかそういった希望があります。

どの問題も割と簡単に解決を考えつくと思うのですが、それらは要するに

セルに名前をつけて必要に応じて参照可能にする

ということになります。

解決

そんなわけで、セルに名前をつけてみるようにしました。

こんな感じで、左下にあるマスに名前を入れます。デザインがちょっとアレなのは、そのうち直しますw

このシステムはJupyter notebookのオイシイ部分をつまみ食いして作っているので、ファイル形式とか完全互換にする必要はないと思うのですが、無駄に非互換を作ってもしょうがないので、この「名前」についてはセル毎にあるメタデータの領域に入れてあります。ちなみにメタデータの領域は、普通のJupyter notebookのファイル(.ipynb)では空です。

使い方

今のところはこのセルの名前を使って、こんなことができます。

上のスプレッドシートになっているセルを参照して、下のセルで出力してます。名前の構造は説明の必要はないと思います。出力が綺麗なJSONになっているのは、consoleを自前で勝手に実装しているためです。

セルに名前がついていることで、とりあえず値を名前で参照することは出来るようになりました。いずれリファレンスとかでも使えるようにしたいと思います。