コードジンのヘッダーが入ります
近年、SaaSが急速に普及し、ブラウザを経由してインターネットの向こうのアプリケーションで作業することが増えた。そのようなときに困るのが、ブラウザのフリーズである。突然の事故で制作中のデータが消えてしまうことは、これまでOfficeアプリケーションでも起きていたが、ウェブアプリケーションではデータがリモートのみに存在するだけにやっかいである。
また、出先や野外では、そもそも常に安定してサーバーにアクセスできるとも限らない。モバイル環境が整っていなかったり、圏外になってしまうこともあるだろう。そうなると全く何の作業もできなくなってしまう。
そこで有用になってくるのが、オフライン機能を有したウェブプラットフォームだ。実際、GoogleのGearsやFirefoxなど、多くのベンダーやオープンソース団体によって、オフラインでも動くWebアプリケーションのプラットフォームが出始めてきている。
なかでも特徴的なオフライン機能を有するウェブリッチクライアント(以下、RIA)のプログラミング言語&開発ツールが「Curl」だ。Curlは米国MITで開発され、国内350社以上で基幹業務採用の実績がある。オフライン機能は、2003年のバージョン3から対応しており、すでに5年間の実績と多くのノウハウが蓄積している。
デベロッパーズサミット2日目の13-C-4セッションでは、株式会社カールの三野凡希氏が「もう業務はとまらない! オフライン機能を使った業務アプリケーションの実例と最新Curl情報」と題して、Curlアプリケーションの高い実用性をアピールした。
Curlのオフライン機能は、OCC(Occasionally Connected Computing、随時接続コンピューティング)と呼ばれる仕組みで実現している。URLの先頭にCurlプレフィックス(curl://occ/)を付けてアプリケーションを起動すると、オンラインであれば、WebサーバーからCurlのコンテンツがローカルPCのサンドボックス内にコピーされ、実行される。一方、オフラインの場合は、先ほどのローカルコピーからアプリケーションが実行される、といった具合だ。
curl://occ/https://www.curlap.com/start.dcurl
ユーザーから見れば、URLにプリフィックスを付けるだけで、従来のRIAと変わらない操作性でオフラインでもアプリケーションを利用できることになる。また、オフライン対応に必要な開発の作業も、起動ファイルに「ローカルにアプリケーションをコピー/更新します」という宣言文を追加して、オフライン専用のデプロイを行うだけと簡単な点も、開発者にとってありがたい。作り手、使い手の双方にメリットのある設計となっている。
もっともこの場合、サーバーとローカルで「データの同期」の取り扱いが気になってくる。Curlでは、データベースの同期に「リアルタイム方式」「ポーリング方式」「イベント駆動」「プッシュ型」と、さまざまな仕組みが利用できる。また、他のプラットフォームが対応しているSQLiteだけでなく、Microsoft Office AccessといったADO接続が可能なデータベースへのアクセス手段も提供されているので、ニーズに合わせた柔軟な対応が可能となっている。
セッションでは、実際にCurlのOCCを利用したアプリケーションの実行例として、佐川急便の「e飛伝II」がデモンストレーションされた。佐川急便の非常におなじみの「送り状」を発行するシステムだ。
e飛伝Ⅱでは、システムの特性からデータの同期はログイン時のポーリングで行っている。 また、ユーザーデータの共有するために、サーバ側でダウンロードの日付、端末側でアップロードした日付が管理され、その差分と端末IDにより端末間の同期を実現している。
おもしろかったのは、プリンタ設定のような情報は、クライアントのみで管理されているということで、クイックなレスポンスのために考えられた仕組みだという。帳票の生成もクライアント側で実現している。問い合わせ番号も、オフライン環境でもユニークに採番する仕組みが実現されており興味深い。
ローカルアプリにネットワーク機能を持たせるというアプローチではなく、ローカル環境でもウェブアプリケーションが同じように動作する、データの分散と協調を実現するCurlの仕組みは、多くの分野で応用できると実感させるセッションだった。