啓蒙活動の前に…

「え? JavaScript って、バリデーションでしか使えないと思われてるの?」
関西で Ext JS を普及させるべく、かつて一緒に仕事をしていた人と飲んでいたのだが…。

「オレも Ext JS が一番いいできだと思ってるから、スタンダードになることを期待してんねんけどな〜」と言ってはいたものの、Ext JS の前に、JavaScript がバリデーションとエフェクトぐらいでしか使われてないのが現場の現実なのだそうな。Ext JS に出会って数年が経ち、どっぷりハマっている身としては、一般の現場との乖離に驚きを隠せないのだが…。

言語としての JavaScript はとても柔軟で強力。他のクラス指向言語に慣れてると、どうやってクラスを作ればいいのか分からないとか、"this" の振る舞いが意味不明とか、少しばかり戸惑う点は確かにある。素の JavaScript で HTML を操作してると、やたらと長い文を書かなきゃならないってのも使い難い点かもしれない。潔く JavaScript の世界にどっぷりと入れば、いろいろと解決手段があるし、慣れてしまうものなのだが、暗黙知が多かったり、形式知にしても散らばってしまっている状況では、バリデーションぐらいでしか使われないのもやむを得ないのかもしれない。JavaScript をマスターしても、会社に評価されなさそうだとゆー社会状況も JavaScript の評価が上がらない一因だろうし…。

Ext JS は、JavaScript の単なる機能拡張ではなく、ビジュアルパーツの集合だけでもない。そーゆー使い方もできるのだが、JavaScript で作られた、Web アプリケーションのフレームワークであるところが、他の ajax ライブラリと一線を画すところでもある。これまでの Web アプリケーションの作り方を大きく変えてしまうほどのパワーを持っているのだ。

最新ブラウザでは JavaScript のパフォーマンスが向上し、HTML 5 ではクライアント DB が使えるようになる。この流れは、Ext JS に追い風に思える…ってのは、一先ず置いておくとして….。今の Web 技術の流れから見て、オフラインでも使えて、オンラインになった時にサーバーと同期するようなのが、これからの Web アプリの一つの形になるだろうし、iPhoneAndroid の登場で、リモートでの作業もサポートするようにもなってゆくはず。そうするとサーバーの役割が、かつてのクラサバのように整合性のあるデータの保持に集中してゆき、一つのサーバーアプリでいくつかのクライアントアプリをサポートするのが、これから 10 年ぐらいのアプリの形になると思う。

それらを全部、一つのアーキテクチャで賄えるのが理想型のように思えるが、たぶん、無理があるんぢゃないかな? サーバーアプリ、ブラウザアプリ、モバイルアプリでは、それぞれ役割と制限が違い過ぎる。大きな中華鍋があれば、どんな料理も作れるぢゃないかぁ〜って気もするのだが、やはり卵料理は専用のフライパンを使いたいし、パンはオーブンで焼きたい…ってゆーメタファーは、ちと大味か。:-P

サーバートランザクションとデータの整合性を保証し、データが消失したりしないことが求められる。ブラウザは必要なデータを見やすく、使いやすい操作性を提供することが重要だろう。モバイルでは少ないメモリや狭い表示領域内での工夫が必要だし、バッテリーやネットが切れたりすることも考慮しなきゃならない。一方では大量のメモリを使ってでも高速な動作が必要で、他方では少ないメモリをうまく使い回すことが重要になったりする訳だが、一つのアーキテクチャで両立できるのかな? …いや、そこに意味があるのかな? と、考えるべきかもしれない。短い開発期間の中で、どーせ並行開発することになる。それぞれに特化したアーキテクチャで、特化したエンジニアが設計 & 実装した方が、高品質なモノを早く実現できるように思うのだが、どうだろう?

そうなった時に、一端を担うのが Ext JS になるかどうか、未来のことは分からない。Silverlightflex がいいのかもしれない。早い段階で Ext JS に出逢い、プラグイン不要で動く(クライアント側にプラグインバージョンアップを求める必要がない) ところに魅力を感じてはいるけれど、競合は MicrosoftAdobe と超有名企業だから、Ext JS はマイナー路線を突っ走ることになるかもしれない。(--; ま、Ext JS の行く末はともかく…。

ずいぶん脱線したけれども、要は JavaScript はバリデーションでしか使えなかった、HMTL を補完する存在だったのは過去のことで、今や未来のアプリを支える技術の中心にあるってことだ。ブラウザのおまけだった時代から、すでに次のフェーズに移っている。アンテナの高い人にとっては、何を今さら…だと思うんだけれども、もっと広く一般に認知されることが必要なようだ。

…って他人事ぢゃぁないんだよなぁ…。"Ext JS 超入門" でもブログで連載すれば、少しは認知されるかな?