最近ヒサビサに Web アプリなんぞを作っている。
実は、Web アプリである必然はまったくないというか、デバイスを扱うのでホントは Web アプリにはあんまり向いてないモノなんだけれども、世間的な風潮として、「Web 版はないの?」というハナシになることが少なからずある。
ホントはデスクトップアプリとして作った方がはるかに簡単なんだけど、だからといって Web 版とデスクトップ版と、同じものを2つも作るのはヤだなぁ、と思って、サーバ側はなるたけシンプルにして、クライアント側はスタンドアロン版もネット版も同じものを使えるようにする予定。
具体的にはアノト方式デジタルペンで記入したものを OCR でテキスト化して、それを SQLite でローカル DB にためとく。
デジタルペンの SDK や OCR の都合上、ここは Windows の CLR 環境でデータを吸い上げる必要があるため、C# で実装している。
ついで、極簡単な Web サーバ機能も実装して、データは REST Web サービスとして JSON データでやりとりするようにし、クライアントは JavaScript でガシガシ操作できるようになる予定。
もちろん、ほぼ実装の目処がたったのでこういうところで言ってるわけだが。
今回は直前まで HTML5 というか、Gears を使ってデータの吸出し以外をすべてブラウザだけですましてはどうかという誘惑があったのだ。Google Chrome の登場によって Gears 標準搭載ブラウザが実在のものとなったので、そう突飛なことではあるまい!と思ったのである<いや、業務システムにそんな「枯れてない」技術を使おうというのは充分突飛かもしれないけど。
しかし、今回は見送った。
少なくともデジタルペン→OCR されたテキストデータは、Web とは全然関係なく、C# で実装されたアプリケーションによって行われるのであって、そのデータを Gears の SQLite DB に格納できれば良いのだが、ブラウザやログインユーザーによってこの DB の格納パスが変わってしまうため、あまりにメンド臭かった。実際、当方のように気分次第でその日使用する Web ブラウザを変えるようなユーザーはどうすんだよ!と。
実際すべてのユーザーに Chrome や Gears プラグインをインストールしてくれ!というのも少々無理があるわなぁということもあって、結局ローカルサーバ機能とローカルDBを作って、「なんちゃって Gears」みたいなモノを作ってしまった。さらに、CLR とか Java とかの O/R マッピングライブラリがイマイチどれも好きになれず (と・ゆーか、使い方わからん!)、CLR 用に簡単な O/R マッピングライブラリを自作したりと、予想外の工数がかかってしまった…。
この「なんちゃって O/R マッピング」は、なんらかの形で公開したいなぁとも思っているのだけれども。
まあそんなこんなで、それも一山超えた感じなので、ラストスパートをこれからかける感じである。
最近 Google や Apple がなにかと「HTML5」というキーワードを持ち出している。
それを、規格化をまたずに「先やったもん勝ち」として Google が実装したのが Gears である。
Gears が先行実装した機能を、今規格として HTML5 に落とし込む作業が行われているようだ。
HTML や CSS は、これまで「見た目の表現力」に力点がおかれてきた。
しかし、Gears / HTML5 は大きく方向性が異なる。
いくつかある機能のうち、おおきなものは「ローカルサーバ」と「ローカルストレージ」だ。
「ローカルサーバ」とは、いったんネットごしに取得したファイルをローカルにキャッシュしておいて、つぎからブラウザはそのキャッシュを使うようになる。
これはブラウザのキャッシュ機能のような不確かなものではなく、Web サーバがローカル環境で動作しているのと同じように振舞う。
つまり、画面を構成する HTML や画像なんかをこのローカルサーバにためておくことで、ネットワークから切断されても画面表示が行える仕組みである。
「ローカルストレージ」は、ハヤイハナシが JavaScript から使える SQL データベースである。
ネットワークからデータを JSON や XML 形式で取得して (YAML でもいいけど…)、ローカルのデータベースにためておく。
ネットワークから切断されている際には、そのローカルデータベースにアクセスする。
もちろん、オフラインの時だけでなく、いったんデータをローカルにキャッシュすることで、動作効率をよくすることを狙ったアプリも存在する (MySpace のメッセージ検索機能とか)。
そう、前々からワシが公言していたように、Gears / HTML5 は「アプリケーションプラットフォーム」なのである。
Web 2.0 とか言っていた頃、やれマーケティングがどうとか、SEO がなんだとか、ソーシャルコミュニケーションだの、デザインだのコンサルタントだの、あきらかに山師の道具になっていた Web が、やっと (広義の) プラグラマー達の手に本格的に戻ってこようとしているのである。
もちろん、真剣にやってらっしゃる方々を貶めるつもりはないけれども。
さらに、iPhone や Android といったスマートフォン達のアプリケーションも見逃せない。
いくら JavaScript やら Flash やら Silverlight やらでリッチなインターフェースを作って、バックエンドをセマンティック Web サービスでやればいいんだ!つったところで、やはりそれらのランタイムはまだまだ枯れたもんではない。
だったら、GUI は従来のデスクトップアプリと同じ手法で作って、バックエンドを Web にすれば…と長いこと言われていたのにも関わらず、なかなかそれを実現したモノは登場しなかった。
しかし、ココ最近、とにかく数だけは大量にでてきた。それが iPhone や Android で動くアプリケーション群である。
HTML5 に代表されるこれらの技術は、やっと (広義の) プログラマー達の手に、Web を取り返す非常に有効な道具になるはずである。
…惜しむらくは、先行者である Gears が SQLite べったりになっていることと、実際 SQL は方言が強すぎて規格化にはかなりの困難が予想されることと、当方のようにデジタルペンのようなデバイスから Web と関係なくデータをつっこみたい場合にはその手段が用意されていないことであるが。
まあ、そうは言っても規格化を待っていたら、たぶんずっと完成されたモノにはならないだろうな、とも思う。だからこそ Google は Gears などというプロジェクトを遂行中なワケで。
それにしても、ブームの時は「もうダメなんじゃないか」と思っていた Web が、本格的に「コッチ側」に来たなぁと。
正直ワクワクしている昨今なのであった。
コメント