Eric Hexter,Jeffery Palermo両氏は,オープンソースのMicrosoft ASP.NET MVCエクステンションであるMVC Contribプロジェクトの設立者である。MVC Contrib は開始から1年を少し過ぎ,まもなくプロジェクトとして最初となる製品レベルのリリースを行う。
1. まずはこのプロジェクトについて詳しく知らない読者のために,MVC Contrib が何を提供するものなのかについての説明をお願いします。
Eric:
MVC Contribはオープンソースコミュニティによるプロジェクトで,ASP.Net MVC フレームワークのアドオンを提供することにによるフレームワークの強化を目指しています。ビュー用のhtmlを生成するヘルパや,mvcテストの冗長性を軽減するテストヘルパを提供します。また依存性注入フレームワーク(Dependency Injection Framework)への組み込み機能,新しいビューエンジン,さらにルート設定まわりの強く型付けされた(strongly typed)ヘルパや,いくつかのデバッグヘルパなども提供します。
2. 公式なプロジェクトとして開発を始めたのはなぜでしょう?
Eric:
MVC Contribプロジェクトを始めたのは MVC Community Technology Preview が初めて公開された日,2007年11月だったと思います。
Jeffery:
Microsoft社外でASP.NET MVCフレームワークを採用したのは,おそらく私が初めてでしょう。最初にScott Guthrie氏が公開したプロトタイプビルド上でpartywithpalemo.comをデプロイしました。ASP.NET MVC製品チームがCTP1の開発を開始するより前のことです。当初から機能の拡張が必要になりそうだと思っていましたし,開発したエクステンションの共有についても考えていました。同じような考えを持つ人が他にもいるだろうとも思っていました。Eric と会ったのは,ASP.NET MVCフレームワークなどASP.NET技術に関するソフトウェア設計レビューがMicrosoft で行われたときです。プロジェクトの立ち上げについて決めたのもその時です。私たちは,開発者がどこにいてもフレームワークの拡張機能を共有できるような,広く知られた場を実現したいと考えました。このフレームワークはもともとPluggableですので(DevDivとしては初めてです),これまでに数多くのエクステンションが現れています。
3. MVC Contrib の大半はASP.NET MVC自体と並行して開発されました。Microsoftからは十分なサポートがあったのでしょうか,あるいは大部分をあなた方自身で行ったのですか?
Eric:
解析に関して手を借りたことはありませんが,コミュニティの皆さんからはコードやパッチを頂きました。MVCチームメンバのブログにあったプロトタイプもこれには含まれています。私たちが開発したのはフレームワークのエクステンションなのですが,ASP.Net MVCチームがCTPリリースの一部としてソースコードを公開してくれたという行為自体が,ある意味で私たちを助けてくれました。拡張ポイントの動作に関して,より多くの情報が必要になったときに,ソースコードを直接調べることができたからです。Microsoft のフレームワーク提供方法として,これは根本的な方針変更でした。Microsoft の他のグループ,例えば Patterns and Practices チームなどもソースコードを公開してはいますが,彼らP&Pチームが.Net フレームワークを書いていないという点は重視すべきでしょう。彼らが提供しているのはリファレンス実装であり,サンプルアプリケーション,ガイダンスなどです。ですからMVCソースコードのリリースは,プロダクト開発サイクルの透過化という観点でまさしく最初の例なのです。
4. 他のプロジェクトで,MVC Contrib と競合する,または補完すると思われるものはあるでしょうか?もし機会があったとしたなら,そのようなプロジェクトと統合する考えはありますか?
Eric:
MVC Contrib プロジェクトの機能の大部分は,最終的にMVCフレームワーク自体に実装することを目標にしています。そのため私たちはフレームワークのリリースごとに各ネームスペースを調査して,機能の重複がないかを判断しています。もしそのような機能があれば,私たちの実装は削除するつもりです。競合するプロジェクトに関してはこのような調査をしていません。私たちはビューエンジンをたくさん持っていますが,当初はSparkとMHamlの2つをメンテナンスしていました。そしてこれらのエンジンが十分に普及した時点で,適切なサポートとメンテナンスが受けられるように別プロジェクトに分割することを共同で決定したのです。私たちのゴールはウィジェットの巨大なツールボックスを実現することではありません。メンテナンス性の高いソフトウェアプロジェクトをより簡単に作るためのフレームワークのエクステンションにフォーカスすることであって,キッチンシンク(kitchen sink)を用意することではないのです。
5. ASP.NET MVC の最大の利点は何とお考えですか?また,最大の欠点は?
Eric:
MVCフレームワークのもっとも大きな利点は,それが開発者のやりたいことを妨げないWEB UI フレームワークであるということです。拡張ポイントがたくさんあるので,もしフレームワークに不足部分があったとしても,簡単にエクステンションを作成することができます。最大の欠点は,MVCチームが提供したものがある固定的なガイダンスではなく,複数のシナリオであったということでしょう。ただし,彼らがひとつの方法に固執して,それが私の好みではなかったような状況を想像すると,これは短所ではないかも知れませんが…
Jeffery:
- 最大の利点はそれがフレームワークであるという,まさにそのことです。多くのことをしようとはしていません。あくまで裏方であって“機能”開発を妨げないのです。ASP.NET には何年にもわたって蓄積された”機能”があるがために,それがフレームワークとして利用する上では障害になっています。ASP.NET はそれ自体が,メンバーシップ,パーソナル化などの機能を持った製品になってしまっているのです。ASP.NET MVC は,シンプルなインターフェースをベースとした基礎部分を提供します。”機能”にあたる部分はエクステンションとして,コミュニティで共有しようとしています。よいものは使われ続けるでしょうが,製品の一部として出荷された場合のように,よくないものを何十年にもわたってサポートする必要はなくなると思います。
- 最大の欠点は導入時のストーリーと,そのためのガイダンスにあります。私がこれまでに見た ASP.NET MVC フレームワークに関するプレゼンテーションでは,基本原則の説明と一緒に,よくない実例をあげていました。人々は往々にして説明されたものを,悪例を含めてすべて実行しようとするものです。Ben Sheirman,Jimmy Bogard と共著の私の本 ASP.NET MVC in Action では,この部分を救済したいと思っています。