2009年7月25日土曜日

HTML5に期待することと期待していないこと

最近何かと話題のHTML5とChrome OS関連(?)の記事より

@IT: 進化するHTML 5、OS化するChrome

講演の中盤を過ぎて耳に飛び込んできた言葉の数々に思わず顔を上げた。HTML 5の枠組みで、ノーティフィケーション、P2P、Webカメラ、ドラッグ&ドロップ、リッチテキスト編集のAPIを標準化するというような話をしていたのだ。極めつけは、質疑応答での次のようなやり取りだった。Webブラウザ内の複数ウィンドウ管理のAPIを標準化してはどうか、という聴衆の提案に対して「それは考えたことがなかったが、確かにいいアイデアだ」とグーグルの担当者が即答していた。HTML 5には、このまま行けばかつてデスクトップOS上のアプリケーションだけが利用できた機能が次々と取り込まれていきそうだ。

うーーん。。。ありのような、なしのような。。。

便利さと大変さはトレードオフ

思い起こせばプログラミング始めたころは、HTML+JavaScriptのセットではローカルファイルが扱えないことを不便だなと思っていましたが、物心が付いてくると、それができないからこそセキュリティ的に安全なんだなと納得したものです。

確かにHTMLだけでローカルファイルの操作ができたり、3Dグラフィックス関連のAPIがあれば便利なのでしょうが、そのアプリケーションにWeb上のリンクをクリックするだけでアクセスできてしまうのならば、開発者はあらゆるセキュリティ項目を考慮する必要が出てくると思います。

ひょっとしたらHTML5のいくつかの機能は、セキュリティの考慮のために、ブラウザ機能でデフォルトOFFになるかもしれませんね。そしてGoogleを始めとする各種サービスを実行するにはそれらをONにする必要があり、ONにしたままWeb上をうろうろすると色んなウイルスに侵入され、ON/OFFを使い分けるということをユーザに意識させ、情弱は付いていけないという大変息苦しい世の中になるかもしれませんね。

Javaの失敗とFlashの成功という教訓

そもそもWebの世界にはJavaという偉大なる失敗の先住民がいます。Javaを使えば確かに色々なことができます。できることで言ったらJavaScripの比ではありません。しかし信じられないほど起動が遅く、メモリを大量に食うわりには、できることはネイティブには遠く及ばない上に速度もそこそこ。加えてセキュリティ面では穴だらけという分かりやすい特徴があるため、結果として一部の信者を除いて全く使われていないという現実があります。

そのような先住民の失敗から、JavaやActiveXのようなブラウザ上で動作するプラグインが忌避された時代もありましたが、そのいわれなき差別を払拭したのがAdobe Flashです。

Adobe Flashもれっきとしたブラウザのプラグインです。しかしインストールが手軽で、読み込みが速く、動作が軽くて、そしてできることもかなり広いという便利プラグインです。おかげでFlashは、プロプライエタリなプラグインであるにもかかわらず、普及率がかなり高いものになっています。Youtubeの普及がそれを示していますよね。

以上より、HTML5の普及には起動が速くとても軽いAPIであることが必須であると言えます。どんなにネイティブアプリケーションと同じスピードでも、起動や読み込みに何秒も待たされるようではダメですよ。;)

ブラウザはアプリケーションの共通基盤として腰を据えてほしい

冒頭で引用した記事にはマルチスレッド用のAPIや通信用のAPIについて書いてあり、それによって完全にバックグラウンドで動作するスレッドやタブ間通信、ノーティフィケーション機能が盛り込まれると書かれていますが、そこまで高度なアプリケーションをブラウザ上で動かす必要があるんでしょうか? アプリケーションをブラウザ上で動かす利点は、いわゆるS/Cモデルのシステムのように、クライアント側に特別な環境を用意することなく、サーバとやりとりするだけで色んな事が出来る、という点だと思います。であれば、そこまで複雑なマルチスレッドプログラミングは不要ですし、通信もリクエスト送信/レスポンス受信の機能だけ整理してくれればいいんじゃないでしょうか? バックグラウンドスレッドやノーティフィケーションはブラウザ固有のプラグイン(Firefoxの拡張機能等)で実現すればいいのではないでしょうか?

ブラウザは現在でもOSを(ある程度)意識しないで使えるプラットフォームとして便利に使っています。単純な計算やテキスト処理ならJavaScriptだけで作れば、クライアントはアプリケーションのインストールなしにそれを利用できます。Wikiをサーバ上に作れば、誰でも簡単に情報共有ができます。これをブラウザを使わずに実装するとしたら大変なことです。ブラウザさまさまです。

色々書きましたが、HTML5には大いに期待しています。今できないことがブラウザ1つでできるようになれば、開発者がアプリケーションのプラットフォームを何にするか悩まなくて済みます。ですが、飽くまでHTMLに期待することはページ(タブ)単位の表現力であり、タブをまたいだ通信や、デバイスを制御する機能は(個人的には)不要だと思います。

間違ってもJavaの二の舞にならないようにしてください。

0 件のコメント: