SHOEISHA iD

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

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

ASP.NET MVCフレームワーク 正式版 入門

ASP.NET MVCの開発応用編1
~リポジトリパターンをマスターする~

ASP.NET MVCフレームワーク 正式版 入門(4)

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

 ASP.NET MVCにおいてメジャーな開発パターンであるリポジトリパターンについて紹介し、実際にリポジトリパターンを利用したアプリケーションの開発を行います。

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

はじめに

 前回は、ASP.NET MVCアプリケーションによる実用的なアプリケーションの便利な機能を紹介しました。今回はメジャーな開発パターンであるリポジトリパターンについて概要とメリットを紹介し、実際にリポジトリパターンを利用したサンプルアプリケーションの開発を行います。現在Web上で公開されているASP.NET MVCのサンプルアプリケーションのほとんどはリポジトリパターンを利用して作られているので、本稿を読んでリポジトリパターンをマスターしてください。

必要な環境

 次の環境が必要です。

  1. Visual Studio 2008
  2. Visual Studio 2008 SP1
  3. ASP.NET MVC RTW版

 Visual Studio 2008(以下、VS2008)のインストールは、『Visual Studio 2008入門 第1回』を参考に行ってください。

 VS2008 SP1のインストールは『簡単なデータ編集はお任せ! ASP.NET Dynamic Dataアプリケーション』を参考に行ってください。

 ASP.NET MVC RTW(Release To Web)は、Microsoftダウンロードセンターから入手できます。インストールはウィザードに従って進めるだけです。

今回触れる部分

 今回触れるのは、以下の部分です。

  • リポジトリパターンの理解
  • リポジトリパターンを利用したアプリケーション構築
  • リポジトリパターンにおける単体テスト

 ASP.NET MVCそのものについては過去の内容も併せて参照してください。

Repository(リポジトリ)パターンとは?

 前回までのサンプルではすべてControllerの中に処理を記述していました。確かにControllerもクラスなので単体テストを行うことはできましたが、Controllerクラス内で直接EDMにアクセスを行った場合、テストを行うのも煩雑になっていました。ASP.NET MVCのウリの1つテストの優位性をより際立たせるために登場するのがRepositoryパターンです。

リポジトリパターンを使った場合のアドバンテージ

 前述した内容を掘り下げてみます。今までのサンプルではアプリケーション(Controller)から直接EDMに接続し、データのやり取りを行っていました(図1)。この場合、ActionResultなどからViewDataを取りだしてテストを行うのと変わりなかったため、テストコードも煩雑に、そして分かりづらくなっていました。では、リポジトリパターンを利用した場合のアドバンテージとは何でしょうか? リポジトリパターンの紹介もしつつ、アドバンテージについても触れていきます。

図1 リポジトリパターン適用前
図1 リポジトリパターン適用前

1. Controllerとデータアクセスロジックの分離

 リポジトリパターンはアプリケーション(Controller)からデータアクセスロジックの部分だけを抜き取ったリポジトリインターフェイスを実装したリポジトリクラスに接続します。こうすることで、アプリケーション側はEDMやDataSetなどのデータプロバイダを意識することなくデータのやり取りを実現できます(図2)。

図2 リポジトリパターン適用後
図2 リポジトリパターン適用後

 これを突き詰めると、Controllerからデータアクセスのロジックを完璧に分離できるので、Controller上では要求に対して返すオブジェクトのテストを、リポジトリクラスでは、データアクセスのロジックだけを単体テストすることもできます。関心の分離によりアプリケーションもスッキリするのは最大の魅力でもあります。

2. モックテストを簡単に実現

 インターフェイスを一枚被せることで、単体テストの容易さも実現できます。アプリケーションプロジェクトでは、インターフェイスを実装したクラスを作成します。テストプロジェクトでは、インターフェイスを実装したモックリポジトリクラス(擬似クラス)を作成することで、モックデータを用意し、DBに対するデータアクセスを行わせずに、モックデータへとアクセスさせることができます。

 これによりDBに対するデータアクセスメソッドをテストする場合にモックデータで指定したデータが返るので、DBにテストレコードが追加、編集、削除などが行われることなく安全にテストができます。

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
リポジトリパターンで実際に構築する

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

  • このエントリーをはてなブックマークに追加
ASP.NET MVCフレームワーク 正式版 入門連載記事一覧

もっと読む

この記事の著者

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、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

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4354 2009/10/05 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング