オフライン機能は,ネットワークにつながっていない状態でもWebアプリケーションを使えるようにする仕組みだ。大まかには,Webサーバー側ではなくパソコン側にWebアプリケーションをキャッシュして利用し,そこで入力したデータもネットにつながるまではパソコン側に蓄積する。

 オフラインでのWeb利用は,米グーグルが2007年に「Google Gears」を公開したことで脚光を浴びるようになった。Google Gearsは,Webブラウザと連携して動く単体のツール。パソコンへのインストールが必要で,インストール後はこのツールに対応したWebアプリケーションをオフライン環境で使える。例えばグーグルが提供する文書作成・共有のWebアプリケーション・サービス「Googleドキュメント」が対応している。ユーザーはどんな状況でも,Googleドキュメントを一般的なワープロ・ソフトと同じ感覚で使える。

 ブラウザでのサポートにより,ユーザーにとってはオフライン対応アプリケーションを利用できる環境が整う。SaaS事業者はもちろん,情報提供サイトや企業のシステム担当者は,いつでもどこでも使えるWebアプリケーションを提供しやすくなる。

ブラウザが小型データベースを搭載

 最新ブラウザでは,Safari 3.1とFirefox 3がオフライン機能を搭載している。Firefoxは,バージョン2でも「SQLite」と呼ぶ軽量のリレーショナル・データベースを搭載していたが,Firefox 3ではこれをオフライン機能に活用する(図1)。

図1●Firefox 3が備えるオフライン対応の仕組み(予想図)
図1●Firefox 3が備えるオフライン対応の仕組み(予想図)
HTML 5にあるOffline Web applicationsなど次世代の標準仕様の一部を先行実装する。
[画像のクリックで拡大表示]

 一連の動作は次のようになる。まずブラウザがWebアプリケーションをダウンロードしてきて蓄積(キャッシュ)。このキャッシュされたWebアプリケーションが応答を返し,入力されたデータはSQLiteに保存する。オンライン状態のときにサーバーとの間でデータを同期させる。

 このオフライン機能は,標準仕様をベースに実装される。具体的にはW3CWHATWGで標準化作業を進めているHTML 5を使う。ここに盛り込まれている,Webアプリケーションをオフライン対応にする仕様に沿って,キャッシュ可能なアプリケーションを開発できる。

 実際のところ,HTML 5はまだ標準化作業中の段階で,正式な標準仕様ではない。それでもMozilla Foundationとアップルはドラフト仕様に合わせて実装した。Firefox 3のアプリケーションをキャッシュする仕組みは,HTML 5の「Offline Web applications」を先取りしたものだ。

 Safari 3.1も,基本的には標準仕様に則った形でオフライン機能を搭載している。データベース部分はSQLiteで,これはHTML 5の仕様で規定した「Client-side database storage」を先行実装したものである(写真1)。

写真1●Safari 3.1もオフラインに対応
写真1●Safari 3.1もオフラインに対応
これもHTML 5にある「Client-side database storage」の先行実装である。

 オープンソースのタスク管理ツール「tugboat」を開発したサイオステクノロジーの原陽亮OSSテクノロジーセンター開発支援グループマネージャーは,「Google Gearsと,FirefoxやSafariのオフライン機能がHTML 5ベースに統一されれば,開発工数を少なくできる」と期待を寄せる。

企業利用は可能性大,ただしアプリは要改造

 ただ,トランザクション処理を伴うようなWebアプリケーションをオフラインで使えるようにするのは簡単ではない(図2)。オフライン対応にするだけでは,入力データや決済処理などの欠落,あるいは2重処理が発生しかねないからだ。

図2●クリティカルな処理をするWebアプリケーションをオフライン対応にする際の注意点
図2●クリティカルな処理をするWebアプリケーションをオフライン対応にする際の注意点
「オフライン時にブラウザ側では何が起こるか」を踏まえた設計が必要になる。

 日立製作所の小林敦ソフトウェア事業部企画本部計画部担当部長は,「例えば,セッションの状態を管理できていないために決済が完了したことになってしまう,あるいは2重決済になるといった事態が起こり得る。これを回避する仕組みがWebアプリケーションに必要になる」と説明する。オフラインで使い続けるケースが加わるために,今までのように「セッションが切れた処理を無効にする」とはできないわけである。

 ブラウザにキャッシュしたWebアプリケーションとサーバー側のWebアプリケーションが,きちんとデータを同期できることも重要だ。「長期間オフラインでWebアプリケーションを使うユーザーがいることを,設計時に考慮しておくべき。オフラインにしている間にサーバー側のアプリケーションをバージョンアップして,データを同期できなくなるかもしれない」(富士通研究所ソフトウェアイノベーション研究部の松塚貴英氏)。同期に際してWebアプリケーションのバージョンやデータの整合性チェック,データの変換などを実行する仕組みを設ける必要がある。