chrome background task/ウェブアプリケーションのデスクトップ側橋頭堡

Tumblrのdashboardに流れてきた

クライアント技術を単なる付属品ではなく、サーバーサイドのプログラムと同レベル、もしくはそれ以上の主役として扱う
tenjin.web: Home

というのに触発されて、書こうと思いつつ書いてなかったのを書きました。これまでのブラウザの制約が強くクライアントサイドでできることがほとんどなかった状態は、大きく変わりつつあります。

Picture 1-32

ちょうど1週間くらい前にchromeのベースになっているchromium*1の開発者グループChromium-devDesign doc: Background Browser Taskというのがポストされました。

ウェブアプリケーションでブラウザの中でメールを見たりカレンダーに予定を入れたりできるようになったけれど、ウェブアプリケーションの命はユーザがブラウザを終了したらそこでおしまい。サーバからユーザに登録してもらったメールアドレスにメールを送るくらいしかユーザに何かを伝える方法がなくなります。時間のかかる処理、たとえばカレンダーに入っている予定の時間まで待つ、オフラインになる前にサーバとローカルのデータを同期しておく、写真を500枚アップロードする、そういった処理をしている途中に、ユーザがなんとなくウインドウを閉じたら、予定の時間にアラートが出ない、データがちゃんと同期されてない、写真が5枚だけしかアップロードされてなかった、みたいなことになります。

そこで彼らが考えたのがだったらブラウザ閉じても裏でブラウザ動かしとけばいいんじゃないの、という解決策。HTMLに


<bb type="makebgtask" name="event sync" href="http://ido.nu/kuma/eventsync" />

と書いておくと、バックグラウンドで動かすことのできるタスクとして認識されて、ユーザがOKを出してくれたらページがロードされてきて、ブラウザが閉じられても裏でずっと動きますよ、というアホみたいに単純だけど効果絶大なしくみです。さらにPCを起動したときに一緒に起動するようにもしていいですよ、と書いてあります。詳しくはBackground Browser Taskを。個人的には、普通のブラウザウインドウを単に非表示にすれば実装できるよ、と書いてあるところにうけました。

よく考えれば機能的にはWindows VistaのGadget, OSXのDashboardみたいなもんですが、前者がデスクトップアプリケーションをスクリプト言語で作ろうという発想のKonfabulator(いまのYahoo! Widgets)から来ているのに対して、chromiumのbackground taskはおそらくGearsの発想、デスクトップアプリケーションにしかできなかったことをウェブアプリケーションでできるようにする、という発想からきています。そういうのはおいといて、とにかくbackground taskによって、Windowsの常駐アプリとまったく同じようにコンピュータ上で常にjavascriptのアプリケーションを動かすことができるようになります。

コンピュータ上でブラウザが開いているとか開いていないとかを気にせずjavascriptのアプリケーションを動かせるとなれば、それをウェブアプリケーションのおまけとして使う以上のこともできるようになります。
これまでC/C++で書かれていたプログラムが、javascriptで書かれているようになるだけで、ブラウザの持っている制約と同じ制約の範囲の中でならなんでもできるので、ユーザの有り余ってそうなコンピューティングリソースを使ってブログの検索インデックスをクライアントのマシンに作らせたり(サーバ側では検索機能を用意しないでクライアント側に検索させていもいいでしょう)、サーバ側で多数のクライアントマシンを束ねて地球外知的生命体探査をさせるとか、まじめなところではウェブベースのメッセンジャーとか(いつも気がつかない間に閉じていてオフラインになったりしています)、そういうのも作れるようになります。

で、これ実装されるの?

このdesign docをpostしているjianliさん?がどういう人なのかわかんないんですが、ポストに対するGoogleのエンジニアの人の反応は、前に仕様書くよって言ってたやつが出てきたので目を通してレビューした、みたいな感じだし、既にchromiumのリポジトリにbackground_tasksブランチがあってちょくちょくコミットされてるようなので実装されるんじゃないでしょうか。

追記 2008.11.10

jianliさんはGearsの開発者のひとりみたいです。

そんなかんじでGMailを閉じていてもメールが届いたのがわかる機能とか、google calendarを開いていなくても時間になったらアラートが表示される機能とかがそのうちchromeに搭載されるかもしれません。

References

  1. Google Chrome, Chromium, and Google

About this entry