リッチなアプリ開発はデータバインディングが一つのキモがGood!

どうも。夏休みボケなDQNです。

id:kagamihogeさんの「リッチなアプリ開発はデータバインディングが一つのキモ」が
非常によいエントリです。

とりあえず重要なのは、Web ベースの業務アプリの流行の一つに、
再びクライアント側重視の流れがあるらしいこと。Web アプリは、サーバサイドで
色々ゴチャゴチャ処理したあと最後にヴァーンと html を吐き出して終わり、というシンプルなのが
基本形である。しかし、Ajax, Flex, Silverlight などなど―どんな技術を採用するのかの
違いはあるが―こうしたリッチな技術を使う場合、データ表現は html、サーバ側で何がしか処理、
とシンプルな分離だけでは収まらなくなる。

http://d.hatena.ne.jp/kagamihoge/20080925/1222337488

この辺に激しく同意ですね。言い方を変えれば、クライアント側のリソースを
どのように使うか、により注力が向いてきていて、今後ますますその傾向が強くなると
感じています。

どうしてそういえるのか。
自分の持論は簡単です。そこが差別化要因になりうるからです。
何度も述べているかもしれないけど、重要なのでもう一度言っておくと、
サーバサイドのテクノロジはかなり固定化してきて、大きな変化は起こりにくくなっています。
安定しているといえばそうですが、提供する側としてはサーバサイドだけで価値提供が
しにくくなってきているともいえます。そこで、よりユーザの操作性などクライアントに近い部分が
より差別化要因につながるというのが自分の仮説です。


こうなると、Web ベースといえどもユーザインタフェースに近い部分のアプリケーションの設計は、
一世代前の流行であった C/S のそれに近い性質を帯びるようになる。
つまり、C/S 時代に直面していた設計課題と再び向き合うことになる。
そして、その設計課題の一つにデータバインディングがある。

http://d.hatena.ne.jp/kagamihoge/20080925/1222337488

C/Sと同じようになるかはわかりませんが、まずRIA固有のパターンや
ベストプラクティスが今後必要になってくるはずです。
重要なのは固有の製品を超えた設計ノウハウや、クライアントサイドが変わっても
サーバサイドまで影響を及ぼしにくい仕組みであり、それをサポートするフレームワークです。
前者に関してはまだ研究中ですが、後者はT2という形で徐々に作っていってます。

データバインディングを自力で作りこむメンドウさは先に述べたが、
その上 Web とも親和性の高いモノを自力で作るのは、業務アプリ屋さんレベルでは
もはや現実的ではないだろう。このため、俺は、ある RIA テクノロジがデータバインディング
有しているか・使いやすいかどうか、は一つのキーポイントになるのでは、と考えている。

http://d.hatena.ne.jp/kagamihoge/20080925/1222337488

ちなみにJSPでもJSFでもデータバインディングの仕組みはELという形であります。
Flexでもそうですが一般的にはデータバインディングは単方向のバインディングが多いですね。
つまりViewはコードの状態のみをあらわしてるのみで、Viewの状態変更がコードの方に
通知されない形です。
有名どころのRIA製品だと、Silverlightだけは単方向・双方向選べます。


具体的には、RESTful の思想が業務アプリに対してどんなインパクトを与えるのかが
今ひとつよくわからない。RESTful Webサービス で論じられている ROA の思想はとても美しいとは
思うが、ちょっと理想論すぎるんじゃないのか、と(今のところは、だが)感じているため。
ちょっと大げさすぎるんじゃないの、と思っちゃうんだよね。
でなければ、RESTful Webサービス で言うところの、RPC スタイルないし
REST-RPC ハイブリッドなアーキテクチャが流行っちゃうようなことは無かっただろうし。

ただし「これから」はどーなるかわからんなーというのが正直な感想。
Web 全体としては、ROA な方向になっていくだろうとは思うけど、
その結果が業務アプリのアーキテクチャにどんな風に影響与えるのかが今ひとつ分からないんだよなぁ。

http://d.hatena.ne.jp/kagamihoge/20080925/1222337488

私もROAな考え方は今後徐々に受け入れられていくと思っています。
ただしRESTful Webサービスに書かれていることが全て受け入れられるとは思っていません。
そこには乗り越えなくてはいけないポイント(認証とセキュリティ、トランザクションリソースなど)がいくつか存在します。
Tech-EDのセッションで萩原さんがおっしゃっていたポイントがほぼその通りだと思っているのですが、
通常の案件でそれを乗り越えられることで大きなメリットが得られるかを
考えると、もう少し妥協案というか折衷案なものが受け入れられる気がしています。


何にせよ、id:kagamihogeさんがあげているポイントは非常に重要なポイントであり、
読んでおいたほうがよいエントリだと思います。
オレも同じようなことを考えていたので、こういうことを考える人が増えているってことは
RIAをどのように使いこなすためのWebアプリケーションアーキテクチャやベストプラクティスを
本当に考えるべきときが来てるんだなあと素直に思いました。