Firefox 3 のオフライン機能って何だ?

2007年3月17日(土) 11時58分 by level
B ?

Firefox 3 にはオフライン機能が入るそうですが、どういうことができるようになるかいまいち理解できていませんでしたが、Open Tech Press | ウェブベースのアプリケーションをオフラインでもなどを読んでみて、イメージがつかめてきました。

Firefoxにもしばらく前から簡素なオフライン機能が実装されているが、ページの表示に通常のディスクキャッシュを使用するというだけのものであり、これだけではGmailやZimbraなどのアプリケーションを利用するのには十分ではない。Firefox開発者のFinkle氏によると新機能は「WHATWG仕様のオフライン機能にいくぶん触発されて」開発されたものであり、Firefoxのオフライン機能のためのパッチやコードは昨年5月から現れ始めたという。

WHATWG の Web Applications 1.0 の仕様をベースに、一部 Firefox 独自の API を追加して実装されており、追加された API は標準に取り込んでもらうことをもくろんでいるようです。また、Opera もオフライン機能に取り組んでいて、やはり WHATWG 標準に準拠するようです。

Standal氏によるとメールアプリケーションの場合、ウェブアプリケーション開発者は、ユーザのメールの大半はサーバ上に置いておき、ローカルには未読メールや最近のメールだけを保存するようにするだろうという。「ほとんどの開発者の場合、クライアントサイドのストレージにキャッシュしておくのは、エンドユーザにとって意味や関心のある可能性が高いデータだけにするのではないかと思います」。

なるほど、Gmail がオフラインでも利用できるようになるかもしれないということですね! これこそ本当の意味での「Gmail との統合」でしょう。

この話題で、よく引き合いに出される、Mark Finkle のブログエントリ Offline App Demo をさくっと翻訳してみました。

簡単なデモ - Task Helper

これは Mark Finkle's Weblog » Firefox 3 - Offline App Demo の翻訳です。一部独自にリンクを追加してあります。(2008/5/17追記:このブログエントリの内容は古く、新しい仕様に基づいたエントリが公開されています。)

この機能がどのように動くのかを示すために簡単なオフラインアプリケーションを作ってみました。アプリケーションは簡単なタスクリストです。現在の機能は以下のとおりです。

  • タスクを追加 - テキストを入力して‘Add’をクリックする
  • タスクを完了 - 完了したタスクをマークして‘Complete’をクリックする
  • タスクを削除 - タスクをマークして‘Remove’をくりっくする
  • データは JSON として保存され、サーバ(PHP)と更新するために XHR(訳注:XMLHttpRequest のこと?)が使用される

簡単なデモ - Task Helper

面白いものは何もありません。でも、このアプリケーションは“オフラインを意識”しています。つまり:

  • アプリケーションのリソースは (HTML & JS) はオフラインキャッシュ可能であるとタグ付けられています。
  • サーバと交信する前に、オンライン状態がチェックされます。オンラインであれば、XHR を使います。オフラインであれば DOMStorage を使います。
  • オンライン/オフライン状態はイベントを使って監視されます。アプリケーションがオフラインからオンラインに変わると、データはサーバと同期されます。

オフラインの機能としてもたいしたことはないですが、(オンラインとオフラインの機能を)ひとつにまとめることによりすっきりしたアプリケーションになります。最新の Firefox 3 alpha を利用すると、次のようなことができるはずです:

  • アプリケーションをオンラインで使用する。
  • “Work Offline”メニューを使ってオフラインに移行する。イベントログにはアプリケーションがオフラインになったと記録される。
  • オフラインでアプリケーションを利用し続ける。
  • “Work Offline”メニューを使ってオンラインに移行する。イベントログにはアプリケーションがオンラインに戻り、オフラインでの変更をサーバに反映したと記録される。

オフラインパッチ(Bug 367447)の当たった Firefox 3 を使用していれば(訳注:最新版では適用済みです)、もう少し進んだことができます:

  • アプリケーションをオンラインで使用する。
  • “Work Offline”メニューを使ってオフラインに移行する。イベントログにはアプリケーションがオフラインになったと記録される。
  • オフラインでアプリケーションを利用し続ける。
  • ブラウザを再起動する。
  • オフラインに切り替える(またはネットワーク接続を切る)
  • アプリケーションの URL を入力する(またはブックマークを使う)
  • アプリケーションを最後のセッションのデータで開始する。
  • オンラインに移行するとサーバがオフラインデータで更新される。

今のところ、オフラインイベントはオフラインが“Work Offline”メニューから変更されたときのみ発生します。ネットワーク接続を監視することでイベントを発生させることが目標であり、これによりユーザにとってより使いやすくなるでしょう。

task helper アプリケーションのソースが提供されています: taskhelper-src.zip


このサンプルアプリケーションは php を実行できるサーバがあれば簡単に実行することができます。オンラインの機能は Firefox 2 でも使えますが、オフライン機能は Firefox 3 の最新版(nightly)が必要です。(一時期サンプルプログラムを公開していましたが、セキュリティ的に一般公開できるものではないので取りやめました。ご自分の環境にインストールして確認してみてください)

サーバ側のデータは JSON 形式で保存されます。オフライン側のデータは、プロファイルフォルダの OfflineCache というフォルダの _CACHE_MAP_、_CACHE_001_というようなファイルで管理されているようです。中身はバイナリのため不明です。

最終更新: 2008年5月17日(土) 22時13分

コメント

コメントはありません。

トラックバック (1)

トラックバックは検索対象外です。

この記事にリンクしているページ < >

  1. [57] http://gmail.1o4.jp/firefox.html