SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ASP.NET Dynamic Data活用編

ASP.NET Dynamic Dataのカスタマイズのポイントを知ろう!

ASP.NET Dynamic Data活用編(1)

  • X ポスト
  • このエントリーをはてなブックマークに追加

ASP.NET Dynamic Dataとは?

 ASP.NET Dynamic Data(以下、Dynamic Data)は、ASP.NET 3.5 SP1(.NET Framework 3.5 SP1)で追加されたデータありきのアプリケーションで、データ駆動のWebアプリケーションを開発する際に利用するプロジェクトテンプレートです(図1)。

図1 Dynamic Data概要図
図1 Dynamic Data概要図

 エンティティ化されたデータをもとに、どのデータ型をどういうデータフィールド(データ表示を行うテーブルの列)で表示するかなどの関連付けを、スキャフォールディングと呼ばれる機能で指定します。スキャフォールディング機能を利用すると次のようなメリットが挙げられます。

  • データモデルと動的ユーザーコントロールのマッピングを自動で実施してくれるのでコードがほぼ不要
  • 動的にページが生成されるのでCRUD機能やページング、ソートなどを提供してくれる
  • 動的ユーザーコントロールの作成や外観の変更など、カスタマイズが容易にできる

 データドリブンのWebアプリケーションとして簡単に作成できるDynamic Dataは魅力的ですが、現場での活用シナリオはWeb版の簡易マスタメンテとしての利用が最適かもしれないという印象を受けます。一括取り込み、一括削除などは、現時点ではLINQの制約から難しいので、1つずつの項目の編集、追加や全体を鳥瞰するという用途であれば、便利なアプリケーションが構築できるのではないでしょうか。

 さらっと説明しましたが、Dynamic Dataを使いこなすために必要なコアの知識は次の3つです。

  • フィールドテンプレート
  • 属性クラス
  • フィルタ

 本稿ではこれらの基本的なコアの知識について紹介し、次回以降に組み込みやカスタマイズについて紹介していきます。

 また、Dynamic Dataを活用するにあたり重要な用語として「メタデータ」があります。Dynamic Dataにおけるメタデータとはテーブルのデータ構成などの情報を扱うデータです。Dynamic Dataではメタデータを効率的に使用することで、データ駆動アプリケーションの簡単な作成と、拡張性の高いカスタマイズを実現しています。

[コラム]LightSwitchとの棲み分けは?

 Microsoftから現在、SilverlightアプリケーションでAccessアプリケーションのようなものを作ることができる業務プロフェッショナル向けのツール「LightSwitch」のBetaが登場しました。データを扱うという部分においてDynamic Dataと同じ方向性ではありますが、違いもあります。ざっと列挙すると次のとおりです。

  • LightSwitchはSilverlightプラグインが必要(Silverlightアプリケーションです)
  • Dynamic Dataは無償のExpress Editionでも開発ができるが、2010年10月の時点ではLightSwitchは有償提供の予定
  • LightSwitchはスキーマを利用者が設定する必要がある

 今後の動向がどうなるか不明ですが、プラグイン無しで利用でき、イントラネット内でもブラウザがあれば利用できるDynamic Dataは確実にニーズがあると言えます(Silverlightをイントラネット内で利用する場合には少々手間がかかります)。後は、開発者側のカスタマイズやプロジェクトの要件に合致するかどうかなので、Dynamic Dataの学習が無駄になることはありません。

ASP.NET Dynamic Dataのソリューション構成とサンプルアプリケーション

 カスタマイズをするためにはソリューションの構成を理解しておくことが大前提となるため、最初にDynamic Dataのソリューション構成とサンプルアプリケーションを説明します。この部分は前述の記事にて紹介されていますが、.NET 4で機能拡張されたDynamic Dataではソリューション構成も若干変更されています。

 Dynamic Dataでは、アプリケーション作成時に多くのフォルダと動的データフィールドが用意されています(図2)。

図2 Dynamic Dataソリューション構成図
図2 Dynamic Dataソリューション構成図

 Dynamic Dataにおけるフォルダやファイルの概要は次のとおりです。

Dynamic Dataのソリューション構成
フォルダ名 概要
Dynamic Dataフォルダ Dynamic Dataアプリケーションで使用する情報が詰め込まれているフォルダ
Contentフォルダ Dynamic Dataアプリケーションにおいて、FieldTemplate/Filtersフォルダ以外に利用するユーザーコントロールや、Imageファイルを配置するフォルダ
Imagesフォルダ Contentフォルダ内にあるImage画像を配置するフォルダ
CustomPagesフォルダ PagesTemplatesのテンプレートではなく、独自のページを利用したい場合に利用
EntityTemplatesフォルダ データテーブル(既定ではGridView)のテーブルレイアウトをカスタマイズしたいときに使用するフォルダ
FieldTemplatesフォルダ データテーブル(既定ではGridView)に表示されるべきデータを型推論し、動的にデータを表示するためのユーザーコントロールを格納するフォルダ
Filtersフォルダ .NET 4版のDynamic Dataで追加。ユーザーが選択した項目や値からフィルタ機能を実施するためのユーザーコントロールを格納するフォルダ
PageTemplatesフォルダ Dynamic Dataを利用するページのテンプレートをすべて格納するフォルダ。標準ではすべてここのページファイルを利用
Scriptsフォルダ .NET 4版のDynamic Dataで追加。jQuery 1.4.1が格納されているフォルダ。必要に応じてスクリプトファイルを配置
Default.aspx 実行時のトップページ
Global.asax スキャフォールディング機能の利用の有無や、データモデルの登録、URLルーティングの設定などを実施

 上記のとおり、Dynamic Dataアプリケーションは多くのユーザーコントロールとテンプレートの組み合わせで実現されるアプリケーションです。つまり、カスタマイズの基本はユーザーコントロール単位で実施することになります。どの部分にどのようなユーザーコントロールを配置するのかを押さえておきましょう。

 簡単なサンプルアプリケーションですが、基本的に.NET 3.5版と変わりありませんので、過去の記事『簡単なデータ編集はお任せ!ASP.NET Dynamic Dataアプリケーション』(CodeZine)を参照ください。または、サンプルファイルを参照ください。

 Dynamic Dataのソリューション構成を押さえた所で、最大のキモ「フィールドテンプレート」について解説します。

次のページ
最大のキモ「フィールドテンプレート」

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ASP.NET Dynamic Data活用編連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト ナオキ(ナオキ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5595 2010/12/09 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング