はじめに
8月28日にパシフィコ横浜で開催されたMicrosoft Tech・Ed Japan 2009内のコンテンツ「Birds of a Feather(以下、BoF)」の1コマ、著者も登壇した「ASP.NET Web Form vs. ASP.NET MVC in Japan」についてレポートします。
BoFではタイトル通り、ASP.NET Web Form(以下、Web Form)の開発と、ASP.NET MVCの開発についてそれぞれのメリット、デメリットをディスカッションしました。
また、本レポートを書くにあたり、登壇者の小野さん、竹原さん、また参加者として多くの発言をしてくださったほか、改めて背景を説明してくださった菊池さん。さらにBoFに参加して下さった皆さんに感謝致します。
登壇者紹介
- 小野 修司(Web Form担当)
- 竹原 貴司(MVC担当)
- 長田 直樹(司会進行:ナオキ)
日本語のことわざで言うと「類は友を呼ぶ」という意味にあたり、ある特定のテーマを取り上げるセッション形式で、コミュニティイベントでよく実施されています。講師への質問に対して参加者も交えて意見交換をするなど、有用な情報が共有される取り組みの一環として多くの参加者の方から好評です。
参加者全員がASP.NET開発経験あり!
開催趣旨
ナオキ:Web Form vs. ASP.NET MVCと書かれていますが、現場の皆さんがどのような使い方をしているのか? どのようなシナリオで、Web Formを使うのか? どんな時にASP.NET MVCを使えばいいのか? をディスカッションをしていきたいと思います。
それでは、ディスカッション前にそれぞれのフレームワークの特徴を説明して頂きます。まずはWeb Formからです。
Web Form概説
小野:最初に、ASP.NETを触ったことがないい方挙手してください。
――会場内で誰も挙手せず、参加者50名以上がASP.NET開発経験者という中でのBoFの開始となりました。
小野:基本的な特徴は皆さんご存じだと思いますが、ASP.NETは1.0の頃からWeb Formという形で開発を行ってきました。最近はASP.NET MVCというフレームワークが出てきたため、従来の開発方法を区別してWeb Formと呼んでいます。Web Form開発の特徴はコントロールをドラッグアンドドロップし、昔のVisual Basic的な作り方(コントロールを画面に配置し、クリックしてイベントハンドラに処理を記述する)をすることが多く、RAD(Rapid Application Development)的な開発ができるのが一番の特徴です。どちらかというと、外部インターネット上で公開というよりも内部(イントラネット内)でデータを収集・活用するアプリケーションに向いているともいえます。
小野:Web Formでは、コントロールを張り付けてプロパティを変えることで、生成されるHTMLなどが変わってきます。このように自動化/隠蔽化された部分がWeb Formには多いです。
意外と簡単にアプリケーションが作れる反面、簡単にできるが故に内部をしっかり把握していないと思わぬ落とし穴にはまってしまうことがあるとも言えます。
Web Form~完成系の1つDynamic Dataアプリケーション~
小野:このWeb Formのサンプルアプリケーションとして皆さんがあまり見てないであろう、「ListViewコントロールを利用するDynamic Data」のデモをお見せします。Dynamic Dataアプリケーションは、LINQ to SQLやEntity Data Modeの定義をするだけで、簡単にデータベースの操作ができるというのが特徴です。
――ここで、Dynamic Dataの特徴であるValidationや、Dynamic Dataのプロジェクトソリューションの解説が行われました。Dynamic Dataに関しては「簡単なデータ編集はお任せ!ASP.NET Dynamic Dataアプリケーション」も参照してください。
小野:DynamicDataManagerコントロールの設定だけは行っていますが、それ以外のコーディングは行っていません。検証や、表示方法は全て自動で行われます。Dynamic Dataの場合、コントロールを独自に張り付けているわけではなく、データに応じたユーザーコントロールが用意され、その中にValidationコントロールなども格納されています。このようにコントロールを組み合わせて、できる限りコードを書かないでシステムを構築することがWeb Formの最終的な形だと言えると思います。
ナオキ:以上が、Web Formの紹介です。続いて、ASP.NET MVCの紹介を竹原さんの方から説明とデモを行っていただきます。