TechEdをふりかえる Part2
さて、前回に引き続き復習がてらTechEd情報を色々とまとめてみます。今日は、データアクセスという観点で、LINQ、ADO.NET Entity Frameworkなどを中心に。ここらへんは苦手分野なんで議事録程度にまとめる。ここは実践的に使っていかないと、なかなか習得できないものですね。記述が間違ってた場合はご指摘下さい。。。
関連セッションとしては下記2セッション
LINQ概要
今更LINQについて説明することもないが、とりあえずざっくりとまとめる。LINQとは「.NET Framework 3.5に搭載される予定の言語埋め込み技術」。ロジック内のデータクエリーとして次のようなコードが書ける(LINQ to Objects)。様々なデータソースに対するアクセスを同等なプログラムモデルで記述できる(LINQ to SQL、LINQ to Objects、LINQ to XML、LINQ to LDAP、etc)。
public void Linq1() { int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; var lowNums = from n in numbers where n < 5 select n; Console.WriteLine("Numbers < 5:"); foreach (var x in lowNums) { Console.WriteLine(x); } }
LINQ to SQLによるデータアクセスの流れは、1. O/Rマッパーとして.dmblファイルを作成、2.LINQコード記述、3.実行時の動的T-SQL変換のようなイメージ。LINQコード記述は上のLINQ to Objectsと全く同じ。
ADO.NET Entity Framework
オブジェクトモデル実装におけるRDBアクセスの問題として、インピーダンスミスマッチの問題があるが、ADO.NET Entity Frameworkでは「EDM(Entity Data Mode):概念データベースモデル」、「eSQL(Entity SQL):EDMに対するクエリ言語」という概念をベースとする。実装モデルを概念データモデル層で扱えることにより、それによりリレーショナル、オブジェクトの両方に対してシームレスに落とし込めるようになる=インピーダンスミスマッチの解消。O/Rマッピングを洗練させるというよりも一気に概念データモデルにおいてアクセスをしていこうというスタンス(ちと怪しいかも。そもそも.NETのO/Rマッピングってどうなってたんだっけ?)。具体的な実装のイメージとしてはこちらを参照(CSDL、MSL、SSDLまわりがまだわかってない;)。
LINQの本質
LINQとADO.NET Entity Frameworkを合わせてみてみると、LINQとは「eSQLのマッピング仕様」(訂正:正しくは、「LINQ や eSQL を使うと、概念レベルのクエリが記述できる」)ということがわかる。つまり、LINQとは概念データモデルを操作するためのプログラミングモデルということ。なんで、データソースがなんであれシームレスにアクセスすることができる。これがLINQの本質。
考察
ということで、LINQはソフトウェア開発におけるデータモデリング手法を大きく変えるような技術であることはわかるが、実際にどうやってモデリングして開発していくのかが、今いちまだわからない(自分の技術力の無さのせいだけど。。。)。今のDBまわりの開発は、基本的にDBモデリングから始まり、それをコード(オブジェクト)にマッピングして実現していくという流れのような気がする。つまり、いきなり論理モデルによるモデリングをやるというスタンス。概念モデルのレイヤーでモデリングをするというとは現実としてあまりないような気がする。やはり概念モデリングにおける実践的な手法をよく考察していく必要がありそうです。
関連情報などなどはこちら。
- http://msdn.microsoft.com/msdnmag/issues/07/07/DataPoints/default.aspx?loc=jp
- http://www.divakk.co.jp/blog/aoyagi/archive/2006/06/24/7285.aspx
- 101 LINQ Samples in C#
下写真はTechEd休憩中の参加者。皆さんくつろいでましたね。
ネタ
今日のエントリと近いネタ。いい加減すんなりと英語を聞きこなしたいものです。。。
実際のblogはこちら。どんな内容がかかれていくんでしょうね。ちょっとおってみます。どんんどんとRSSリーダのエントリが増えてきた。やっぱり今後は情報の個人適応化という分野でビジネスができるような気がします。世の中情報が多すぎ!
So yes, Microsoft does have hackers, and its time to introduce you to some of them and show you what it is, exactly that they do.
文字まわりをやっている人を大きく泣かせてくれるのが、JIS X0213:2004と合わせてやはりサロゲートペアの問題。何が問題かって基本的な情報を的確に整理して抑えていくのが面倒なこと。
AptanaってAIRもiPhoneアプリも統合的に開発できるし結構使える開発環境だと思うんですが、皆さん使っているんですかね。
次回は、TechEd Part3としてWCF拡張についてか、マッシュアップエンジン機能比較(HugeDomains.com - Shop for over 300,000 Premium Domains←Good!)、とかを書いていこうと思います。