WinFS について (4)

昨年レドモンドに行ったときに,WinFS の混迷が何をもたらしたかについて,断片的ですが某氏に教えていただく機会がありました.

情報ストレージに関するMicrosoftの挫折は今回が初めてではない。さまざまな犠牲をはらいながら、やっとOSへと統合されることになっていたWinFS実装の断念は、他製品にも影響を及ぼすものだ。

それは,ここに書かれているように「他製品にも影響を及ぼすものだ」という話ではなく,どのように「他製品に影響を及ぼしたのか」という話でした.その話を聞いたとき,「ああ,WinFS のスリップは Microsoft の中では『過去』になっているんだなぁ」と感じたのを憶えています.
そのせいか,今現在書かれている本田雅一氏や元麻布春男氏の記事やネット上の議論には,いくつか時系列の認識について違和感を感じる箇所があります.
そこのところを整理してみましょう.
「混乱」が具体的にいつ頃だったのかは明言されませんでしたが,.NET Framework 1.1 がリリースされ,Visual Studio .NET 2003 に沸いた2003年の翌年,2004 年始めごろまでの話だったのではないかと思っています.

The Wall Street Journal紙の記事とは異なり,「the reset」によればAllchin氏がLonghornの開発遅れを認めたのは,2004年7月よりも何カ月も前のことであったという。Microsoftが「リセットする前」のLonghorn評価版を社外の開発者に対して配った最後の機会は,2004年4月に開催した「Windows Hardware Engineering Conference(WinHEC) 2004」であった。しかしその時点でMicrosoftの重役は,開発状況が制御不能になっており,開発を初めからやり直して,既に開発したコードのほとんどを廃棄する必要があることを知っていたのだ。

つまりこのリセット以前は,Microsoft は実際に WinFS の存在を前提に製品開発をしていたことになります.言い換えれば,現実的な意味での「他製品にも影響」は,このリセットの決断と,それによってリリースの遅延が明らかになることで,ひとまずの精算が行われたことになります.遅延はその影響そのものなのですから.
そして2004年8月27日,WinFSLonghorn から取り除かれることが発表されました.

ところが27日の発表でMicrosoftは、WinFSの提供はLonghornリリース後になるとした。ただし、Longhornクライアント版のリリース時にはWinFSのβ版が用意できるはずという。

その後,Visual Studio 2005 のベータ版が次々とリリースされ,C# 2.0 や SQL Server 2005 のネタで盛り上がりつつあった 2005年3月,突如 WinFS の「復活」が宣言されることとなります.しかしメインの製品と絡まない以上,この WinFS は将来の将来への布石という性質のものであったことになります.現在ネット上で議論されている多くは,明らかにこの時点で語られるべきでした.

ところが27日の発表でMicrosoftは、WinFSの提供はLonghornリリース後になるとした。ただし、Longhornクライアント版のリリース時にはWinFSのβ版が用意できるはずという。

さらにしばらくして2005年9月,米国で開催された PDC にて,C# 3.0 と LINQ の話が沸いて出ます.さて,この人達,いつからこんなものを作り始めていたんでしょうねというわけですよ*1
今回,WinFS の成果物から将来の ADO.NET への反映が示唆されたわけですが,その将来の ADO.NET とやらはどういうものなのでしょうか? 青柳さんのところで紹介されています.

ADO.NET vNext っていうのは ADO.NET の次のバージョンのことです。Orcas といっしょにリリースされるんだと思います。一部では ADO.NET 3.0 と呼ばれてたりもします。

ADO.NET vNext: The Entity Framework, LINQ and more
今までの ADO.NET は SqlConnection とか Sql Command とかデータベースとやり取りするためのクラスライブラリでしたが、ADO.NET vNext ではそういったローレベルだけでなく、抽象化したもっとハイレベルのレイヤも受け持つようになるようです。

(中略)

エンティティデータモデルもおもろいですが、LINQ を使った時点でマッププロバイダとかを気にする必要がほとんどなくなっちゃうとこもかなりおもしろく感じました。相手がデータベースなのか ADO.NET Entity Framework なのかは LINQ の中で勝手にうまいことやってくれるので、コード上はたいした違いはないっていうことですね。

メタデータストアが先か,クエリ言語が先かという点では,今の Microsoft はクエリ言語の整備に比重を置いているように見えます.まずクエリを書けるようにし,次にクエリを書くだけですむようにし,最後に来るのは何なのでしょうかね?

*1:入れ替えトリック