Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

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

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

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/10/05 14:00

 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にテストレコードが追加、編集、削除などが行われることなく安全にテストができます。


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

著者プロフィール

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

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

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

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2017年5月時点での登録メンバは52名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂き...

バックナンバー

連載:ASP.NET MVCフレームワーク 正式版 入門
All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5