BT

あなたのご意見でInfoQが変わる! InfoQアンケートに答える

MicrosoftはEntity Frameworkのリリースペースを落とし、セマンティックバージョニングを採用する

| 作者: Jonathan Allen フォローする 641 人のフォロワー , 翻訳者 竹中 翔 - (株)ポータルアイランド フォローする 0 人のフォロワー 投稿日 2011年8月18日. 推定読書時間: 3 分 |

原文(投稿日:2011/08/16)へのリンク

.NET 4をリリースした後、Microsoftはかつてないくらい早いテンポで.NETライブラリをリリースしている。新たな機能を備えたライブラリが、これまでのような数年ごとのリリースではなく、数ヶ月ごとにリリースされている。このようなリリースの仕方は多くのユーザーから歓迎されているが、不満の声も上がっている。特に懸念されているのが、他の全ての.NETベースのデータベースアクセステクノロジを置き換えるORマッパーと位置づけられている、ADO.NET Entity Frameworkである。

この話は、Entity Framework 4.1 Update 1がリリースされた7月にさかのぼる。これは非常に小規模なリリースであり、変更点はマイナーバグフィックスとデザインタイムのツール用のいくつかの小さなヘルパークラスのみだった。その時点では、我々はこれについてリポートする必要すら感じず、ほとんど無視しているようなものだった。ツールベンダー達が不満を訴え始めるまでは。

Frans Bouma氏の報告によれば、GetProviderInvariantNameの内部のバグにより、ジェネリックのDbProviderFactoryを使おうとするとエラーが発生する。Update 1にはパブリックベータ版がなかったため、Update 1が製品コードの中で使われ始めるまで、誰もこのバグに気がつかなかった。これは主にORマッパーのプロファイラに影響を与える。Frans氏は次のように述べている。

ご存知かも知れませんが、我々はこのところデータアクセスプロファイラの件で非常に忙しい思いをしています。このプロファイラは、任意のDbProviderFactoryのプロファイリングが可能なのですが、これはプロファイラが動いているAppDomainのDbProviderFactoriesテーブルを上書きすることで実現しています。具体的に言うと、ADO.NETプロバイダのDbProviderFactoryの型名を、ジェネリック型引数で実際のファクトリを受け取るラッパーファクトリ(例えば、ProfilerDbProviderFactory<System.Data.SqlClient.SqlClientFactory>)で上書きするのです。これは一般的なテクニックです。

このテクニックはHibernating Rhinoのプロファイラなどでも使われており、簡単に使えて煩わしい副作用がないというメリットがあります。ユーザーはアプリケーションのコードにたった1行追加するだけで、アプリケーションのプロファイリングが可能です。

このようなばつの悪い思いをしたことを受けて、ADO.NETチームは小規模リリースでも以前のようにベータ版をリリースすることを約束した。Entity Framework 4.2 ベータは今週中にはNuGet経由で取得できるようになるだろう。

Entity Frameworkは、セマンティックバージョニングの考え方も採用する予定だ。セマンティックバージョニングは、実際に意味のあるバージョン番号をつけるためのもので、これにより、“.NET 3.0”や“.NET 3.5”、“.NET 4.0 Service Pack 1”のようにブランディングされたライブラリを目にすることはなくなるかもしれない。ベータやプレリリースバージョンを取り扱うバージョニングルールはたくさんあるが、その中核となる考え方は以下の通りだ。

  • バグフィックスのみで下位互換性がある場合は、パッチバージョン Z (x.y.Z | x > 0) をインクリメントしなければならない。バグフィックスとは、不正な動作を修正するための内部変更、と定義される。
  • 下位互換性を保ちつつ、新たにパブリックAPIが追加される場合は、マイナーバージョン Y (x.Y.z | x > 0) をインクリメントしなければならない。プライベートコードに新たな機能が追加されたり、改修されたりする場合は、マイナーバージョンがインクリメントされる可能性がある。また、パッチレベルの変更も含んでいる可能性がある。
  • パブリックAPIに下位互換でない変更が加えられた場合は、メジャーバージョン X (X.y.z | X > 0) をインクリメントしなければならない。マイナーレベルやパッチレベルの変更も含んでいる可能性がある。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション
BT