uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

TiddlyWiki+DropBoxはある意味Google Gears対抗

「ひとりWiki」として孤高の未知のエリアに到達しつつあるTiddlyWiki(※)っていうのがあります。

これおもしろい。「テキスト処理に特化した個人用のHTMLアプリにHTTPサーバなんか要らない」というコンセプト。つくりとしての面白さもあるんですが(つまりWikiなんでページ単位なんですが、多くの追加機能がJavaScriptを含むページ=プラグインで実装されていて、プラグイン間・データプラグイン間はタグを媒介に疎結合します。インポートによってページデータと実行コード区別せずに取り込める)、非常にユニーク。

これをDropBoxと組み合わせるとえらい便利です。

これって、私見ですが、おおげさかもしれませんが、次世代のアプリのありかたのひとつを予感させます。キーワードは「クラウド&HTML5&モバイル」です。(モバイルというか、「複数PCから共有」か)

考えてみると、WEBアプリ開発って、クライアントサイド(HTMLとCSSJavaScript)とサーバサイド(アプリサーバ、apache、cgi,スクリプト言語、RDBMS設定、SQLフレームワーク、ORマッピング、負荷分散クラスタスキーママイグレーション、・・・)とバカみたいに複雑でした。クライアントサイドはしょうがないとして、サーバサイドの面倒を一気に除去するのがTiddlyWikiの仕組みで、データ+JavaScriptコード+CSSを丸ごとHTMLとしてドカンと保存してして検索はオンメモリで JavaScriptでブラウザだけでいいだろうと。ちなみにTiddlyWikiではCSSもレイアウトもページとして編集できます。

結果として、昨今のブラウザ上のJavaScript実行速度の向上とあいまって、TiddlyWikiのようなアプリの作り方によって、JavaScriptCSS+HTMLさえ知ってれば書ける、非常にレスポンスの良いアプリが実現されます。sync時以外の作業時には通信もストレージアクセスもしないブラウザ内のオンメモリ処理なんだからそりゃ速いわいよ。一人分のデータなんて、画像や動画がなければ、プログラム込みでたかだか数メガバイトでおさまるんですね。RDBMもHTTPサーバも(SYNC時以外の)通信もいらんと。ネットに接続して無くても使えるってのはノートPCとかモバイル結構大きい利点。認証はDropBoxにおんぶさしてもらって、DropBoxの特性上オフラインでも使えるし、接続したらSYNCします。通常のAJAXアクセスは・・・ローカル保存だと出来ないか。JSONPならできるのだろうかどうなんだろうか。

さらにいうと、前述の様にTiddlyWikiは、Wiki上で動作するコードの多くがWikiページ中にあり、Wikiページと同様にコード自体を自由に編集(あるいはインポート)できます。通常これは共有型のWikiでは危険すぎることです。なぜかというと第三者に書き換えられると危険だし下手を打つとアプリ自体がこわれ修復はネットワーク経由になります。でも、ひとり用のWikiなら誤操作だけに注意すれば、このような「ページとコードの一元管理」が初めて実用となるのです。なぜならローカルファイルの修正だしDropBoxは間違って修正してもバックアップも残りますしね。TiddlyWikはDropBoxと組み合わさって(他のWikiが到達し得なかったレベルでの)本当にWikiらしい使い方を可能とするのです。



(結論)

TiddlyWiki+DropBoxは、クラウド&HTML5時代のWEBサービスのありようの一つを垣間見せてくれた気がした春の日。

あ、なんでHTML5かというと、HTML5ではローカル実行に関するその手の機能が増えてるからでした。もちろん今TiddlyWikiHTML5を使ってるわけではなくて、HTML5になると、この手のアプリの作り方がもっと有効になるんじゃないかなーということです。

(※)ちなみに私は、 TiddlyWikiを改造して作られたTiddlyWikidu2というのにさらにGTDWikiのタスク管理機能をimportして適当にいじりつつ使おうとしています。