Webとローカル

ITJapan Co.,Ltd. CEO Tadanobu Kinoshita

2004/02/10 22:30 - www.itj.jp

21世紀に入ったあたりから、それまでのプログラミングモデルとは革新的に違う一つのプログラミングモデルが、開発の現場に持ち込まれた。その名を「Webアプリケーション・プログラミング」と言う。簡単に言えば、インターネットで買い物したりするアレらの事を言う。ここ1~2年で最も流行ったのはインターネット・オークションだ。

それまでソフトウェアというのは、ローカル・アプリケーションという、言うなれば個別のパソコン単体の上で動作するものだった。もちろんネットワークを介したクライアント・サーバ型の開発はできたが、基本的には一つの大きな弱点を抱えていた。それは、クライアントローカルで動作するソフトのため、クライアントの環境に依存し、何か一つバージョンが違っただけで、致命的なエラーを引き起こしかねないといった、開発する者にとっては常に冷や汗をかいているような状況だったのだ。Aというパソコンで動くアプリが、その隣りに置いてあるBというパソコンで必ずしも同じように動くとは限らない…現在でも状況はあまり変わっていないが、それがローカル・アプリケーションだ。

Webアプリは、クライアントの環境に依存したソフトではなく、動作するのはあくまでWebブラウザを介して接続されるサーバ上であり、そのためソフトウェアのバージョンアップは、サーバ側に対して1回だけ行えばそれで良かった。それまでの、大げさに言えばクライアント1台1台に気を配って開発しなければならなかったローカル・アプリケーションは、一気に過去のものとなった。ほとんどの人が、次世代は全てWebアプリになると思ったはずだし、市場にはとにかくWebアプリが溢れた。市場の原理として、新しいものを訴えた方が売りやすかったのだろう。

今、Webアプリは一つの岐路に立っている。大半の人が、Webアプリがローカルアプリを超えている訳ではないことに気が付いてしまった。「Web」と「ローカル」はお互い得意な分野が違う、別の土俵の技術だったのだ。Webアプリはブラウザを使う。ところがこのブラウザには「入力に適していない(ユーザーインターフェイスが悪い)」「反応が遅い」「レイアウトが難しい」「印刷の自由度が低い」といった、専門的に使う際にはかなり気になる弱点を抱えている。これは私が思うに、「セキュリティに優れたキャッシュ機能」を搭載していないのが問題の根元だ。1画面をダウンロードして、それをユーザーが眺めている間にその周辺のフォームを取り込みキャッシュする事でレスポンスはいくらでも上げられるはずだが、ブラウザは一般的にキャッシュはセキュリティが弱くそれが出来ない(サーバに対する負荷等の問題もあると思うが…今からの時代、もうそろそろそれらは数値的に計算できないと)。それがため、何より開発者がWebアプリをある程度開発して思うのが「ローカルアプリでやった方が良いんじゃないの?」という感想を持ってしまうのだ。

現時点で私は、実際に「入力操作」が頻繁に発生するようなソフトウェアは、ローカル・アプリ(Windows開発環境で言うとノータッチデプロイメント)にするべきだと考えている。そして、「閲覧操作」が頻繁に発生するようなソフトウェア、もしくは軽度の入力作業は、Webアプリにするべきだと考えている。今はサーバの性能が上がっているので、1台のサーバにWebサーバとデータベースサーバの役割を持たせるのは、それほど無茶な事ではなくなってきている。開発者にとってみれば、Webアプリとローカルアプリの混在は、使う人がとまどうのではないか?と思うみたいだが、それは開発者側幻想だ。実際に使ってみれば、用途を分けた方が便利だし、使いやすいのでほとんど誰も違和感を持たない。

もっとも、ブラウザがもっと進化して、それ単体でミドルウェアのような性質になれば、ローカル・アプリが消える時代はくるかもしれない。Webアプリケーションは、今のパソコンの形でのソフトウェア開発の、最終第4コーナーを回る直前に出てきたような技術だ。これからLonghorn(次世代Windows)が出て、最終形態に向かって進んでいく事だろう。前述してしまったが、Webブラウザが単なるミドルウェアであり、必ずしもそれに固執するべきものではない事をWebアプリケーションは気づかせてくれた。今までのプログラミングモデルとは全く違う分野のプログラミングであり、過去のしきたりにとらわれない、新しい発想が必要なものだったのも十分に存在意義がある。

今後、ライブラリやテンプレートの充実によりプログラミングは劇的に進化するだろう。もうメモリがどうとか、CPUがどうとか、インターネットの速さがどうとか気にする必要のない時代がすぐそこまで来ている。