Project ‘ChaosNote’ (5)

さらにいろいろ頑張って、かなりマトモなものになった。

本家にない機能として、マルチユーザ機能が動くようになった。つまり、サーバに1つ動いていれば、分離されたユーザ環境が用意される。つまり、一々自分の環境にインストールしなくても、サーバがあれば良いことになる。

まぁ、単にオンラインサインアップやログイン機能、またユーザセッションを分離するような機能を実装しただけである。まぁ、本家では使いたい人が一々自分の環境にインストールしなきゃいけなかったので、その面倒から解放されるようになった。

今のところ、ノートのための空間は完全に分離されていて、共有とかが出来ない。現在は共有を実現するためにいろいろやっているところである。

異なるブラウザや場所からログインした場合、同じユーザの実行中のカーネルは実行中として表示される。だから、家で起動したカーネルを職場で殺すというようなことが可能になっている。

ipywidgetが最初からインストールしてある。なので、普通にipywidgetは使える。とゆーか、これがちゃんと動くようになった。お陰で、プロトコルあたりの処理がかなりマトモになった。

その他にやったこととして、フロントのJavascriptを、本家Jupyterからかっぱらって来たものを使うのではなくて、独自にbuild出来るようにした。本家はその辺をRequireJSとPythonのスクリプトでやっている。ただ、この辺の整理のために本家のbuild環境をかなりパクっているので、今時bowerを使うことになってしまっているのが残念である。RequireJSを使ってるのも、ちょっとね。

実はbower依存をやめたいので作業をしたのではあるが、同時にnode_modulesのバージョン固定をしなきゃいけないものがあって、一度の作業するのは良くないので、とりあえず本家と同じ構成にした。bootstrapやjQueryが古いままでないと非互換があって一度にやる作業が増えてしまうのでね。

自前buildが出来るようになったので、Javascriptに手を入れても良いかなという感じではある。その前にパッケージを最新にしろよって気もするが、これは本家も同じである。いつまでも古いの使うんじゃねーよ。

共有を実現するためには、データベースを使うのが自然な実装になるので、次の版あたりからはデータベース必須になる。元々このプロジェクトを始めた動機の一つとして、

Nodeでアプリを作るための手順の作成

ということがあるので、データベースを使うとなると、フルセットで手順が完成して都合も良い。この辺を標準化しておくと、外注丸投げする時でも見通しの良いアプリになってくれるだろうし。そろそろRails依存度も下げた方が良いだろうという考えだ。