ちょっと前に、JupyterをNode.jsで書き直しているという話を書いた。
いろいろあって手のつけられない日もあったのだが、とりあえず第一段階と考えている、
Jupyterのノートを読み込んでkernelを起動して、
そこで実行したものをノートに表示する
というところまで動くようになった。
出来てしまえばどうってことはないのだが、
- Jupyterの呼び出しているAPIの主だったものをNode(Express)で実装して
- フロントエンドのリクエストに応じてkernelを起動し
- Nodeとkernelの間にZeroMQのコネクションを張り
- フロントエンドのリクエストに応じてkernelにメッセージを送り
- kernelからのメッセージをフロントエンドに返す
ということの骨格が動くようになった。もちろん、実装したAPIの中身はmockだったりするものも多数ではあるが。
もちろんまだまだ無駄とゆーか稚拙なところは多いし、「とりあえず動いた」という以上のものにはなっていないのであるが、ここまで動いてしまえばあとは完成度を上げて行くとゆー退屈な作業をして行くだけである。
Jupyterのサーバとして「ちゃんとする」ことを第二段階の目標として、コードを書いて行こうと思う。
ちなみに、ここまでのところでマトモにJupyterのサーバのコードは読んでいない。もちろん全く見てないわけでもないのだが、あまりマジメには読んでない。いや、読もうと思ったんだけど、なかなか手強いんだよ。それよりは、外部から挙動を観察した方が、話が早かったのさ。