クリーンなHTML生成は本当にASP.NET MVCだけ?
参加者:Web Formだと、レンダリングされるHTMLはViewStateやstyleなど様々な物が付随してきますが、ASP.NET MVCだとどれくらい綺麗にレンダリングされますか?
竹原:ほぼ全て自分が記述したHTMLしか生成されません。ポストバックもViewStateも無いので、デザイナの方が記述したHTMLがそのまま活用されます。
小野:HTMLヘルパーを使っても結局はHTMLの要素を組み合わせているだけですので、綺麗にレンダリングされます。自作でHTMLヘルパークラスも作れますが、逆に言うと、自分たちが正しくHTMLを知っていないと書けません。
参加者:同じようなことがWeb Formでも書けますよね?
小野:ひとつの方法としてリテラルコントロールを使う、ということはあります。まぁ、この場合は、リテラルコントロールに自分で組み立てたHTMLの文字列を突っ込むだけですが。
もうひとつ、ControlAdapterを利用して生成されるHTMLを書き換えてしまう、という方法があります。例えば、CheckBoxListコントロールは既定で、テーブルタグを生成しますが、これを<ul>/<li>タグへ置き換えることもできます。
コントロールがレンダリングする既定のHTMLをブラウザごとに変更したい場合に利用できます。
ControlAdapterは便利ですが、これを利用する場合もHTMLを熟知している必要はありますね。
参加者:ControlAdapterをうまく活用できるようにしたCSS Friendly Control Adaptersがダウンロードできるので、コントロールが生成するレンダリングが嫌な場合は、それを利用することでWeb Formでも綺麗なHTMLが生成できるようになります。
参加者:ASP.NETでの開発はしていませんが、ASP.NETだと固有の拡張レンダラーを利用すれば、制御できるのは分かりました。しかし、そこまで利用して開発する方っているんですか? FlexやSilverlightでもそうですが、レンダラーを記述するにはスキルが必要で、専門の開発者が一人でしていることが多いです。その辺りASP.NETではどうなんでしょうか?
小野:ControlAdapterクラスを知っているか知らないかになってしまうので、それ程スキルが必要な部分ではありません。カスタムコントロールを作れるのであれば問題ありません。確かに力技で、面倒な部分ではありますが。
参加者:Perlを書ける人なら簡単です。HTMLをどう記述するかが重要な気がします。
参加者:こうなってくるとWeb FormもASP.NET MVCもHTMLを知っていないと利用できないんじゃないでしょうか?
小野:標準コントロールが生成する物で、我慢できる仕様であればWeb Formの生産性の高さは魅力です。
参加者:結局 Web Formであっても、ASP.NET MVCであっても、ASP.NETを使う場合は要件で絞り込んだ方が開発はしやすそうに感じます。
小野:フレームワークは対象とする分野の開発パターンのうち7~8割を満足させられるものを狙って作られているものだと思います。Web Formの場合はHTMLをよく知らない開発者でも利用でき、ロジックに集中して生産性をあげるような仕組みとして提供されていると考えるべきだと思います。
今から学習するのならどちらが最適か?
ナオキ:気がつけば残り時間が短くなっているので次で最後の質問とさせてください。
参加者:あまりWebアプリケーションを作らないのですが、Windows FormやSilverlightアプリケーションを開発したことがある開発者が今からWebアプリケーションを始める場合はどちらを選択する方がいいでしょうか?
ナオキ:BoFタイトルらしい質問ですね! これは、意見が分かれるところだと思うので会場全体にアンケートを取ってみたいと思います。いかがでしょうか?
――Web Form側が良い方が2/3、ASP.NET MVC側1/3という結果になりました。
参加者:Windows Formなどの開発しかしたことない開発者にとってWeb Formを知らないとASP.NET MVCを教えづらいという部分は確かにあると思います。
小野:Java開発者の方たちにとっては、ASP.NET MVCの方が圧倒的に分かりやすいかと思います。最初にASP.NETが出てきたときはさておき、ASP.NET 2.0ではVisual BasicでWindows Form開発者に対するアプローチを多く取ってきています。Web開発を行ってきた人たちに対しては分かりづらい概念なども多く入っているため、そのような方たちにとってもASP.NET MVCの方が入りやすいですね。
ナオキ:同意です。自分も司会という立場上あまり発言していなかったので発言させてください(笑)。私の場合はWebの知識がない時にWeb Formを触れました。その時に感じたのはWeb FormはWindows Formっぽく開発ができるんだなぁ。という点です。しかし、ちょっと凝ったことをしようとするとポストバックの落とし穴にはまってしまうなど、決定的にWindows Formと違う点が出てきてしまいました。大抵落とし穴にはまってしまう時はWeb知識が求められる部分です。Webアプリケーション向けのフレームワークである以上Web FormでもWeb知識は多く求められます。
まとめると、Web開発入門者の方がさっとWeb開発を学ぶもしくは開発するのであればWeb Formを、時間がある、または新人にじっくりWeb開発を学ばせるには、HTML/CSSの静的なところからJavaScript、DOMを教えて、ASP.NET MVCがいいのではないでしょうか。
また、IronRubyが先日バージョン0.9をリリースしました。近々1.0が正式リリースされる予定です。IronRuby開発者がRails代わりにASP.NET MVCを使うというシナリオも…。
参加者:Ruby開発者は間違いなくRailsを使いますね!(会場:笑)
ナオキ:確かにそうですね。ただ、海外のRuby+Railsユーザーの方もIronRuby+ASP.NET MVCに注目はしているので、何かきっかけがあれば国内でもニッチな市場が開けるんじゃないでしょうか?
竹原:最後に僕から質問させてください。Web FormとASP.NET MVCの開発どちらの方が楽しそうでしょうか?
――Web Form3割、ASP.NET MVC7割というアンケート結果でした。
ナオキ:本BoFの結論として、Web技術を堪能するのであればASP.NET MVCということになりました。これでBoFの最終セッション「ASP.NET Web Form vs. ASP.NET ASP.NET MVC in Japan」を締めたいと思います。ご参加いただきありがとうございました。
まとめ
参加者全員がASP.NET開発験者ということにも驚きましたが、ディスカッションしたテーマも登壇者の当初の予測とはかなり異なっていました。その分深い話もすることができたため、BoFの参加者からの満足度も高かったです。
Web Form vs. ASP.NET MVCとしてのディスカッションとして、Webを触れたことの開発者の入門として優しいのはWeb Form。開発が楽しそうなのはASP.NET MVC。という意見が多かったのが印象的です。また、既にWeb開発を行ってきた方々にとってもASP.NET MVCの方が入門しやすいという結論も出ました。
もちろん様々な要素によってこれらは変わってきますが、また何かの機会があれば、Web Form vs. ASP.NET MVCのディスカッションができればと登壇者一同感じています。また、Web Form/ASP.NET MVC共に開発者から期待されていたことも分かったため、今後国内におけるASP.NET開発を盛り上げていければと思いました。
参考文献
- ASP.NET MVC公式ページ(英語)
- 無聊を託つ(竹原氏の個人ブログ)
- どっとねっとふぁんBlog(小野氏の個人ブログ)