コンテンツへスキップ
ものがたり
戻る

Linq to SQLが死滅するようです。って当然じゃん。

id:atsushieno:20080609:p1 の時は憶測で終わっていた話だけど、Linq to SQLはどうやらdisconの方向らしい。ADO.NET team blogにUpdate on LINQ to SQL and LINQ to Entities Roadmapという投稿があって、今後はLinq to Entitiesが開発されていくということが書かれている。

上記エントリには大量のフレーミングが押し寄せていて、そのうちのいくつかは、何というか、腹立たしい。

ちょうど良い機会なので裏話?も含めて書いておくと(といっても僕が噂レベルで聞いた話だけど)、Linq to SQLは、C#コンパイラチームがLINQの機能を売り込むために、C#チームの中で開発されたものだった。これは.NET 3.5に組み込まれた。

一方、LINQの機能を真面目にフレームワークに取り込むべく、ADO.NETチームはEntity Framework (Linq to Entities)を開発した。これは3.5 SP1まで間に合わなかったけど、ADO.NET同様、ちゃんとデータベース中立に設計されている。重要なのは、ADO.NETチームが開発したのはLinq to EntitiesであってLinq to SQLではない、ということだ。

これらの目的は大半がかぶっていて、両方を継続的に開発していくメリットはほとんど無い。そしてC#チームの目的はADO.NETの開発ではないのだから、Linq to SQLの継続的な開発にコミットするはずはない。どちらがこの先生きのこるかは、どちらがどこで開発されているかを知っていれば、自明のことだった。

上記ADO.NET team blogのエントリには、「貴様、おれはLinq to SQLの応用技術に投資してるんだぞ」(意訳)だの「これでLinq to SQLがなくなるなら、Entity Frameworkなんて使ってやらないし、新技術が落ち着いて普及するまでは使わねえ」(意訳)だのといったコメントが付いているが、以前のエントリで書いたとおり、新しいライブラリを使うのであれば、それが継続的に開発されなくなる可能性を常に考慮すべきだ。ましてやLinq to SQLの将来性の無さなんて、以前にも書いたとおり、自明のことだ。“It just works”で動作するコンポーネントに、それ以上の過度な期待を勝手に寄せた挙げ句、disconの発表を受けて非難を寄せるなどというのは(それもLinq to SQLを開発したわけでもなんでもないADO.NETチームにだ)愚の骨頂である。

サポートを引き取った挙げ句Entity FrameworkのuseにまでとばっちりをくらうADO.NETチームの心中も大変複雑であろう。

だいたい、Linq to EntitiesよりもLinq to SQLの設計の方が優れていると主張するのなら、Linq to SQLと同等以上の機能を提供し、SQL Server以外のDBMSまでサポートを広げるとしているDBLinqプロジェクトに参加して、自らの主張を自ら立証すべきだろう(DBLinqはMonoサポートのためにAPIをLinq to SQL互換にまで修正している)。自分はクレームを投げるだけとか、考えが甘すぎるんじゃねえの?

どうせあなたが書くくだらないアプリケーションのライフサイクルなんて、Linq to SQLを含む.NET 3.5のサポートが終了するより早く終わるだろうし、変更のないコンポーネントを使用するコードなんて、放っておいても古いバージョンで動き続けるだろう。何を心配することがあるのか。1

そんなわけで、僕は以前にも書いたとおり、Linq to SQLは死滅して一向に構わないと思っているし、ひさびさにランタイムへの変更を伴うであろう.NET 4.0において、消えて無くなるわけではないというだけでもありがたく思えよ、くらいに思っている。

追記: コメントとtrackbackをいただいたので書き忘れていたのを思い出した。
http://efvote.wufoo.com/forms/ado-net-entity-framework-vote-of-no-confidence/
EFもまだいろいろ批判されてはいるのだよという話。ここが話題になったかな。

ついでに書いておくけど、いまMonoではLinq to SQL統合の作業をやっていて、その担当は他ならぬ僕なのである。SoC終わっちゃったし。予想されていた事態ではあるけど学生の子は夏が終わったらハイサヨナラだし。だから僕がポジショントークするなら、今回の決定については大いにADO.NETチームをdisるところなんだろうと思う。dblinqチームから裏切者扱いされちゃうかもしれないし。けどやっぱりそれって不毛じゃん。今回の決定はどう考えても正しいよ。


コメント

tokumei — 11/03/2008 23:45:06

Entity FxはADO.NETチームというより旧WinFSチームからSQL Serverチームに移ってきた連中だと思う。
まぁ正直Linq To SQLに肩入れするなんてばかげてルシア補だと思うし、同情の余地無いけど。ただ、Entity Fxも昔のUDAのにおいがぷんぷんするからどうなんでしょっていうのはある。

atsushieno — 11/04/2008 01:31:41

あー確かにEFだっていろいろツッコミどころはあるよっていう話は紹介した方が良いかも。というわけで追記しておきやした。

NyaRuRu — 11/04/2008 11:27:46

C#コンパイラチームがLINQの機能を売り込むために、C#チームの中で開発されたものだった。

この辺読むと面白いです.Matt Warren の “THE ORIGIN OF LINQ TO SQL”
書かれた日付にしてはぶっちゃけすぎてて「わお,これ明日には消されてるかもな.今のうちに魚拓とっておいた方がいいんじゃね?(意訳)」的な会話も中の人の間でされてたとかされてないとか.
http://blogs.msdn.com/mattwar/archive/2007/05/31/the-origin-of-linq-to-sql.aspx

これにあわせて読みたいと言えば,Paul Vick の “Black hole projects”
日付的に WinFS あたりの話なんですかねぇ.
http://www.panopticoncentral.net/archive/2004/12/01/2598.aspx

atsushieno — 11/05/2008 05:54:16

なんだー、けっこう書いてあるんですね。上の方はInfoQの”Is LINQ to SQL Truly Dead?”でも言及されていました
http://www.infoq.com/news/2008/11/DLINQ-Future

black hole projects、大体そうなんですよねえ。体感している気がする。MSレベルになると、無駄に期待する人がたくさん出てくるから、うっかり公開もできなくて面倒そうです。

NyaRuRu — 11/05/2008 13:56:28

一点だけ追記っす.WinFS はこっちぽかた.

http://www.panopticoncentral.net/archive/2006/06/26/12870.aspx

Footnotes

  1. 補足すると、つまるところ、DLinqを使ってきてしまった、先見の明が無かった、といって後悔しなくてもいいだろ、ということを言っておきたい。MSはそういうユーザのサポートはちゃんとしていくところだと思う。


この記事を共有:

前の記事
moonlight 1.0 branched
次の記事
Mono on PDC 2008 video