レイヤードアーキテクチャは、ソフトウェア開発における設計パターンの一つで、複雑なシステムを異なるレイヤーに分割することで、保守性や再利用性を向上させることを目的としています。このアーキテクチャスタイルは、特に大規模なアプリケーションやエンタープライズアプリケーションで広く使用されており、各レイヤーが特定の役割を持つことで、ソフトウェアの各コンポーネントを明確に分離します。
レイヤードアーキテクチャは、一般的に以下の4つのレイヤーで構成されます。
プレゼンテーション層: ユーザーインターフェースを担当し、ユーザーからの入力を受け取ります。データをビジネスロジック層に渡し、ビジネスロジック層からの結果をユーザーに表示します。
ビジネスロジック層: アプリケーションのビジネスルールやロジックを実装します。この層は、データの処理や計算を行い、プレゼンテーション層とデータアクセス層の間の仲介役を果たします。
データアクセス層: データベースや外部サービスとのやり取りを担当します。この層は、データの取得、保存、更新、削除を行うためのインターフェースを提供します。
共通層: 他のレイヤーで共通して使用されるユーティリティやサービスを提供します。この層は、ログや設定管理などの機能を含むことがあります。
以下は、Pythonで簡単なレイヤードアーキテクチャを構築するためのサンプルコードを示します。この例では、ユーザー情報を管理するシステムを作成します。
まずはデータアクセス層(DAO)を実装します。この層では、ユーザー情報の取得と保存を行います。
class UserDAO:
def __init__(self):
# 仮のデータベースとしてリストを使用
self.users = []
def add_user(self, user):
self.users.append(user)
return user
def get_all_users(self):
return self.users
UserDAO
クラスは、ユーザーを保存するリストを持ちます。add_user
メソッドはユーザーを追加し、get_all_users
メソッドはすべてのユーザーを取得します。次に、ビジネスロジック層を実装します。この層では、ユーザーの追加と取得のロジックを定義します。
class UserService:
def __init__(self):
self.user_dao = UserDAO()
def register_user(self, user):
return self.user_dao.add_user(user)
def list_users(self):
return self.user_dao.get_all_users()
UserService
クラスは、UserDAO
を使用してユーザーの追加と取得を行います。register_user
メソッドはユーザーを登録し、list_users
メソッドはすべてのユーザーをリストします。最後に、プレゼンテーション層を実装します。この層では、ユーザーインターフェースを提供し、ビジネスロジック層とのやり取りを行います。
class UserInterface:
def __init__(self):
self.user_service = UserService()
def add_user(self, user):
self.user_service.register_user(user)
def show_users(self):
users = self.user_service.list_users()
for user in users:
print(f'User: {user}')
# 実行例
if __name__ == "__main__":
ui = UserInterface()
ui.add_user("Alice")
ui.add_user("Bob")
ui.show_users()
UserInterface
クラスは、ユーザーを追加し表示するメソッドを持ちます。add_user
メソッドはビジネスロジック層を介してユーザーを登録し、show_users
メソッドは登録されたユーザーを表示します。このように、レイヤードアーキテクチャを使用することで、システムの各部分を明確に分離し、保守性や再利用性を高めることができます。次の章では、プレゼンテーション層の設計と実装について詳しく見ていきましょう。