2013/07/26

繰り返し:何故HTMLとJavaScriptなのか

Packaged Web Appsとか、いよいよもってHTML5とJavaScriptが流行ってきているけどアプリを作るのに本当になんでHTML5とJavaScriptなんだ。

前にも書いたが、所詮HTMLはHyperTextをMarkupする言語であって、「アプリケーション」を構築する言語じゃない。ブログとかの文書の記述方法のリッチ化、動画、音声埋め込みなんてのはわかるけど。
アプリとしてGUIを作るならXULなり、XAMLなり、FXMLなり専用の言語とGUIビルダがあるじゃないか。GUIをシコシコマークアップするなんて正気の沙汰じゃない。

ブラウザの標準搭載がJavaScriptなせいで皆JavaScript使っているけど、CLR的なVMを載せて好きな言語でかけるようにすればいいじゃない。

・マルチデバイス対応
ブラウザにVM載せればいいじゃない。
周りのHTMLのシームレスに連携出来ればいいじゃない。
PCにだってあるデバイス、無いデバイスあるのだから、ハードレイヤを抽象化しプラガブルに使える機能使えない機能判別すればいいじゃない。
画面サイズだって、PCのほうが差異が大きいじゃん。アッパーにだけど。優秀なLayoutManagerをそろそろ入れて欲しい。

・端末が非力だから
クラウドが流行ったおかげでThinクライアント的な動きが流行っているけど、PCは十分に高速だし、スマホも今やQuadCoreな時代です。RAMも2G載っています。ストレージも16GBあります。GUIを動かす十分Fatなスペックがあると思うのだけど。
画面なんて使いまわすものだし、TurboLinksなんて妙なテクニックを使うより表示するデータだけ通信してサーバで処理させればいいじゃない。

・配布が手間だから
CLRで動くオブジェクトをJSの代わりに配布すればいいよね?
GUI周りに関しては、毎回HTML生成の負荷がかかるよりプログラムのバージョンアップまでキャッシュしておけばいいじゃない。クラスとか細かいモジュールごとにバージョンアップできる仕組みを用意すればいいじゃない。Paneだけ差替えたいとかさ。


要はGUI周りのModel、View、Controllerはクライアントサイドにあって、データだけサーバサイドあればいいんじゃないかと思うのですよ。
画面遷移にリクエスト発行してセッション使って引き回しとか面倒でしょ。

実現するにはバックエンドのデータとクライアントサイドのデータの同期化をどうするかなど別な問題がでてくるので、WebSocketなど常時コネクションはりっぱ、サーバからのPush技術の確立が必要だろう。電池が厳しく通信状況の安定しないスマホでの実現にはまだ課題が残る。個人情報マシマシなデバイスのセキュリティを守る方法も重要だし。
この辺りはPackaged Web Appsの方でも色々進んでいるようなので期待。

とにかくどうせモダンブラウザでしか動かない拡張なら後方互換性を維持したHTMLの拡張でなく、ちゃんとアプリを書くための仕組みをブラウザに載せたほうが良いのじゃないかと思う今日此頃なわけです。
HTMLとJavaScriptは枯れているし技術者がたくさんいるからいいというのもあるのかもしれないけどさ。

0 件のコメント: