概要
Repositoryパターンとは、
プログラムの中でデータの取得・保存などの処理を専用のクラスにまとめて管理する設計パターンです。
ビジネスロジック(アプリの本質的な処理)とデータ操作(DBとのやりとり)を分離でき、
コードが見やすく・保守しやすくなります。
正式名称
Repository Pattern(リポジトリパターン)
略称
特になし
特徴
- データベース操作のコードを1カ所(Repository)にまとめられる
- ビジネスロジックとデータアクセスを分離できる(関心の分離)
- 単体テストがしやすくなる(DBを使わずモックでテストできる)
- 保守性・再利用性が高まる
- ORM(例:Entity Framework、Hibernate)との相性が良い
- DDD(ドメイン駆動設計)でもよく使われる
具体例
たとえば「ユーザー情報を扱うシステム」がある場合
Repositoryクラスの例(擬似コード)
class UserRepository:
def find_by_id(self, user_id):
# DBからユーザーを検索する処理
pass
def save(self, user):
# ユーザー情報をDBに保存する処理
pass
サービス側の利用例
repo = UserRepository()
user = repo.find_by_id(1)
user.name = "山田太郎"
repo.save(user)
→ データベースの具体的な操作はすべて UserRepository
に隠され、他のコードはシンプルになります。
関連用語
用語 | 解説 |
---|---|
DAO(Data Access Object) | Repositoryと似た役割。特にデータベース操作に特化した設計パターン |
ORM(Object-Relational Mapping) | オブジェクトとDBのテーブルを自動で対応させる仕組み (例:SQLAlchemy, Hibernate) |
サービス層(Service Layer) | ビジネスロジックをまとめる層。Repositoryとは役割を分けて設計する |
DDD(ドメイン駆動設計) | ビジネスの本質(ドメイン)を中心にソフトウェアを設計する考え方。 Repositoryは重要なパターンの一つ |
MVCモデル | アプリを「モデル・ビュー・コントローラ」に分けて構成する設計。 Repositoryは「モデル層」によく登場する |