Rails 開発者から見た ASP.NET MVC
Simon Tokumine からです。
.NET MVC vs Ruby on Rails
国内では、多分 Rails メインで開発を行っていたけど、ASP.NET MVC で開発を~~という方はまだ余りいないかと思いますが、海外では既にいるようで、Rails ユーザーから見た ASP.NET MVC という投稿がありました。非常に面白いです。コミュニティの違いとか、オープンソースの考え方の違い等がある事を知ったんですが、あくまで「Rails ユーザーで .NET の事を全て知っている訳では無い」という事で、海外の MVP の方から指摘等を受け、さらに良質な投稿へと変貌しています。
英語が読める方は直接上の投稿を参照して見てください。
以下は、自分用に超意訳した内容です。()内は個人的感想。当然のことながら内容は違うかもしれないですし、細かなニュアンスは表現しきれていないと思うので、以下を参照する場合は自己責任でお願いします。
Rails開発者にとってASP.NET MVCは出来立てと言うこともあるけど、退行してるように感じる。
しかし、Railsの変わりにASP.NET MVCを利用しなきゃいけないシナリオがあったとして、どういう風に学習すればすんなり利用できるか?
1.Pro C# 2008 and the .NET 3.5 Platform(洋書で翻訳版は無い)を読む。
http://www.amazon.co.jp/Pro-2008-NET-Platform-Windows-Net/dp/1590598849
前半だけ読めばOKとの事ですが、和書だと何がいいのかなー。
Head First C# 頭とからだで覚えるC#の基本とか・・・?
2.ASP.NET MVCは、RailsのようなMVCフレームワークを利用したことがあるならば、コツを掴むのは簡単。ASP.NET公式ページのビデオでも見ればOK
3.ASP.NET MCは実はASP.NET VCである。RailsのActionpackコンポーネントのようなもの。
Modelsというフォルダがあるけど、何も含まれていない。O/Rマッピングとして、LINQ to SQLやEntity
Frameworkがあるけど、Railsと同様にフレームワークに統合されていないのが注意!
4.プラグイン/モジュールや、Blogのポスト/チュートリアルについてコミュニティがあまりやる気を出していない。Railsの良くできた開発生態系(コミュニティによる活動など含む)をASP.NET MVCであまり期待しないほうがいい。.NETライブラリや、MVCのコア機能、Controlライブリのパッケージ(どれをさしているか不明・・・HTMLヘルパークラス以外のサードパーティコンポーネント?コミュニティが作成するフリーコントロールライブラリ??)と少しだけあるBlogにしか頼れない。
まだASP.NET MVCは時期早々ではあるけど、コミュニティリソースの欠如はカルチャーショックにしかならない。Tipsのためのいいリソースはstackoverflow.com(http://stackoverflow.com/)。このサイトはASP.NET MVCで作られている。
コードの観点から、いい勉強になるよ!(例えば、.NETコンポーネント周りが典型的なラッパーを書いてる)
5.ASP.NET公式ページのドキュメントは基本的なことが書かれている。フレームワーク内のメソッドのコメントもところどころ抜け落ちている。DocRailsとRails
Guidesプロジェクトのようなものが無い。MSDNもまだ文書量少ないかな(この部分他以上に、意訳なのでリンク先見て確認してみることお勧めします)。
6.APIは、類似したメソッドがあったりして、ドキュメントが少ない状況では、インテリセンスがあるとはいえ、結構イライラさせられる(この部分RCだからかも?)
7.ASP.NET MVCはオープンソースじゃない。MVC開発チームは、いかなる発言も受け入れていない(提案は聞くけど、受け入れてくれないなど。)。もし提案しても、必ず受け入れられるわけではないですよ(優先度的な問題やあくまで Rails ではなく、 ASP.NET MVC として開発しているから受け入れられない項目もあったのかも?)。
8.ルーティングは、構造を送るシンプルな割りに冗長に見えたりする。
9.AJAX処理は全てて入力する必要がある。ただし、jQuery含んでるからあんまり問題じゃない。
10.Viewに変数(ASP.NET MVCで言う、ViewDataっぽい)を通過させるのは面倒。スキャフォールディングを利用して、強く型付けされたViewに自動的に1つの型を渡すことができる。それ以外で、Viewに送る配列に、上へパッケージ/ボックス(ViewDataこと?)に変数を持てる。
渡した変数をViewで取り出さなくてはいけないが、最初にキャストしないといけない(ViewDataをキャストすること?)。
追記:カスタム Compositeオブジェクトを作ればViewに値を渡せる。Scott Guthrieさんのこの投稿を見るといいよ(コメント投稿者)
http://weblogs.asp.net/scottgu/archive/2007/12/06/asp-net-mvc-framework-part-3-passing-viewdata-from-controllers-to-views.aspx
11.ASP.NET MVCはあまり生産的ではなく、ASP.NET MVCを従来のASP.NET開発者が利用させる(学習させる)には、仕組みが違いすぎて難しく、従来のWeb開発者にアプローチするには、後退しているように感じてしまう。
今後も続く予定。短時間だが、実際に触れてみたところの感想だそうです。
ちなみに、上記投稿に対してコメントしているのが codeclimber の Simone さん。
ASP.NET MVC for RoR developers: do as locals do
こちらの内容の意訳も書こうかなぁと思ったんですが、全く時間が取れないので気になる方はこちらも読んでみると良いと思います。
特に、RoR 開発者の方!(ただし、Rails 開発者の方がこの投稿を見るかは…)
RoR 開発者の型が ASP.NET MVC を扱う際に知っておいた方が良い素敵な情報が詰まっています。ドキュメントやら MSDN の見方や、できる事できない事等も纏まっています。