このリポジトリは、クリーンアーキテクチャを採用したECサイトのバックエンドAPIの開発を学ぶためのものです。本リポジトリは、『Go言語で構築するクリーンアーキテクチャ設計』を参考にしながら、オリジナルの改変を加えた教育目的のコードを含んでいます。
- Go1.21.0
- MySQL 8.0
- Redis 6.0
このプロジェクトでは、ロバート・C. マーチン(Uncle Bob)によって提唱されたクリーンアーキテクチャの原則を採用しています。クリーンアーキテクチャは、ソフトウェア設計において依存性ルールを守ることで、システムの柔軟性、拡張性、テスタビリティを向上させるアーキテクチャです。
- 独立性: このAPIは、UI、フレームワーク、データベースから独立しています。
- テスタビリティ: ビジネスルールをクリーンに分離しているため、外部要素に依存しないユニットテストが容易です。
- 拡張性: 新しい機能や要求に対して、最小限の変更で対応可能です。
ドメイン層には、ビジネスロジックが含まれています。これはアプリケーションの核となるルールや例外を扱います。
アプリケーション層は、ドメイン層を使って具体的なビジネスケースを実行します。データの流れを制御し、ドメイン層とプレゼンテーション層の橋渡しを行います。
インフラストラクチャ層は、データベースや外部サービスとの通信を担います。この層はドメイン層やアプリケーション層から独立しています。
プレゼンテーション層は、APIエンドポイントを通じて外部からのリクエストを受け取ります。これには認証や入力データのバリデーションが含まれます。
このプロジェクトは学習用です。商用利用や実際のプロダクト開発には使用しておりません。