ASP.NET 4.5の「Scaffolding(スキャフォールディング)」機能を試す(前編)

CodeZine / 2013年11月26日 14時0分

図15:「Delete Location」画面

 本連載の最後に、今回と次回を使ってScaffolding(スキャフォールディング)を説明します。ScaffoldingはASP.NET 4.5の新機能ではありませんが、Webフォームをより活用するための機能の一つで、今後Visual StudioのUpdateで追加される予定です。Scaffoldingを使い、会議室予約システムの一部を作りながら、その動作を見ていきましょう。

■Scaffolding(スキャフォールディング)とは

 Scaffolding(スキャフォールディング)とは、データモデルとなる型を元に、いわゆるCRUD(Create/Read/Upadate/Delete)と呼ばれる追加、読込、変更、削除を行う画面とそのコードを自動で生成する機能のことです(図1)。Scaffoldingを和訳すると「足場」という言葉であり、その名のとおり少ない手間でアプリケーションの「足場」となる大枠の構造を作ることを目的としています。従って、Scaffoldingは完全なアプリケーションを作るための機能ではない、ということは認識しておく必要があります。

 使いどころとしては、ほかのマスタとの関連がないシンプルなマスタメンテナンス機能の生成や、多少複雑な画面の「スケルトン」として使うといったものが考えられます。

図1:Scaffoldingのイメージ


 ちなみに、ScaffoldingはASP.NET MVCでは初期のころからおなじみの機能でした。その機能をWebフォームアプリケーションでも使えるようにしようと、現在も開発が進められています。その成果の一部が、Visual Studio 2012向けの拡張機能として2013年2月にプレリリースされており、本稿ではこのバージョンのScaffolding機能について説明していきます。従って、正式にリリースされる機能とは一部異なる可能性があることを、あらかじめご了承ください。

 また、今回は拡張機能を使用することから、「Visual Studio Express 2012 for Web」は対象外です。Professional以上のVisual Studioを持っていない方は、下記のページより90日評価版をダウンロードしてインストールしてみてください。

Microsoft Visual Studio Professional 2012 - Microsoft Download Centerプレリリース版Scaffolding機能の制限事項
 本稿で使用するScaffolding機能はプレリリースということもあって、いくつか制限事項があります。主なものを以下に示します。

 

関連付のデータモデル未サポート:会議室予約システムで言えば、MeetingRoomクラスの中にLocation型のフィールドを定義していますが、こういった他のデータモデルへの関連があるデータモデルについては、プレリリースでは対応していないということです。.NET 4.0およびVisual Basicプロジェクト未サポート:Scaffoldingを利用するには、必ず.NET 4.5のC#のプロジェクトである必要があります。 その他、詳しい情報は以下のblogエントリを参照ください。

Pre-release of ASP.NET Scaffolding with a Web Forms scaffold generator - .NET Web Development and Tools Blog - Site Home - MSDN Blogs なお、2013年10月17日にリリースされた最新のVisual Studio 2013には、WebフォームのScaffolding機能は付属していません。現在Visual Studio 2013 Update 1をターゲットとして、開発が進められているようです。以下のblogエントリより引用します。

Announcing release of ASP.NET and Web Tools for Visual Studio 2013 RC - .NET Web Development and Tools Blog - Site Home - MSDN Blogs "We removed WebForm Scaffolding from this release because it's not ready yet. We’ll put the new bits in future release, possibly targeting update 1."

 (抄訳)まだ準備できていないため、Webフォームスキャフォールディングについては、今回のリリースから除外しました。我々は、将来のリリースで(おそらくUpdate 1をターゲットとして)その新機能を追加します。





CodeZine

トピックスRSS

ランキング