以前より技術系の勉強会はたくさんでているのですが、最近は月1回が限度。今のところ.NETラボだけに出ています。
そんな訳で、.NETラボでは「おいしい関係」の話をしたのですが、これは珍しいほうで、主に microsoft 系の話が中心です。その中で、今回はMSのK高さんがいらっしゃいました。。。って伏字にする必要はなくて、microsoftのエバンジェリスト日高さんの解説でした。
Code Recipe
http://msdn.microsoft.com/ja-jp/samplecode.recipe.aspx
のうち、今後の予定である silverlight で作るショッピングサイトの例です。
http://msdn.microsoft.com/ja-jp/dd266962.aspx#01
このショッピングサイト、ブラウザ全面で silverlight を使います。このあたり、よくある flash のサイトと同じです。逆に言えば、flash と同等なショッピングサイトを siverlight で作ることを目的としている、、、と思うですがどうなんでしょう?
さて、本筋の解説は日高さんが為さるということで、ちょっと横道を私なりに考察していきます。
以前、LAMP上でsilverlightを使うために、いくつか実験をしました。
手始めに Silverlight+WCFの組み合わせで実験
http://www.moonmile.net/blog/archives/358
この手のショッピングサイトで重要な層は、
・ブラウザによるUI層
・データ検索などの通信層
・サーバーでのデータベース層
の3層があります。細かい部分の違いはさておき(特にデータベース層は、DAOの違いなど異論があるでしょうが)設計段階で、どこで何の技術/言語を使うのかを選定してきます。このあたり、要求仕様段階の技術検証も必要なのですが、
・設計のしやすさ
・プログラマの集めやすさ
・人件費(外注、社内など)
も大きく関わってきます。特に外注になる場合、元請けのコンサルタントが技術面を決めてしまうことが多く、後々のコストが考慮されてない場合が多くあります。
# 現実問題として、提案する会社(microsoft や oracle など)の技術(silverlightやjavaなど)に寄ってしまうのも常だったりしますね。営業的にそういうものです。
さて、ショッピングサイトを作るにしても、外注/内製の違いあり、業務系/一般系の違いあり、というわけで、この段階で何が一番いい技術という訳でもありません。それぞれの違い、特に「得手不得手」を考慮するのが良いでしょう。
例えば、先の3つの層を flash で考えると、
・UI層 Flash
・通信層 xmlhttp
・データベース MySQL
が考えられます。
同じく、Ajax で考えると、
・UI層 ajax(prototype.js, jQuery)
・通信層 xmlhttp
・データベース MySQL
となります。
実は、このUI層はブラウザが前提になっていますが、curl などの専用アプリを用意してもいいし、windows アプリでもいいのです。
・UI層 windows/wpf
・通信層 http/soap
・データベース sql server
なんて感じもできます。
このあたり、層の間のインターフェースだけきちんと考えていけば、何にでも応用ができます。
本当のところ、web サービス、wcf、xml soap、soap なんてのはこれらの繋ぎの部分に使う技術なのですが、なんかフロントエンドが決まってしまっていて、microsoft で言えば、wpf と silverlight がうまく切り替えられないのが問題ですね、という話になります。
wpf が広まらない理由にこれも一因があると思うんです。まぁ、もっと根本的には、microsoft も含めて、この手の技術が多様になり過ぎているのが根本的なところですが(この話はまた別の機会に)
そんな訳で、最近の技術は、
・手早くできる
・分かりやすい
ことに重点が置き過ぎていて、
・汎用性/相互結合
が弱くなっているのかなぁと。軽視という訳ではないけれど、経済的に余裕がなくなっている、という印象を受けます。
それはさておき、私のほうでは、
・UI層 silverlight
・通信層 wcf/soap
・データベース php/mysql
の組合せを実験/実装していきます。