Skip to content

Go-DDDマーケットプレイスアプリケーション セットアップガイド

このドキュメントでは、Go-DDDマーケットプレイスアプリケーションを0から構築するためのセットアップ手順を説明します。

1. 概要

Go-DDDマーケットプレイスアプリケーションは、ドメイン駆動設計(Domain-Driven Design, DDD)の原則に従って構築されたGoアプリケーションです。このセットアップガイドでは、開発環境の構築から、アプリケーションの実行、テストまでの一連の手順を説明します。

uml diagram

2. 前提条件

Go-DDDマーケットプレイスアプリケーションを構築するには、以下のソフトウェアが必要です:

ソフトウェア バージョン 備考
Go 1.23 プログラミング言語
Docker 最新 コンテナ化
Docker Compose 最新 マルチコンテナ管理
Git 最新 バージョン管理
Node.js 20.x フロントエンド開発

3. セットアップ手順

以下のステップに従って、Go-DDDマーケットプレイスアプリケーションを構築します。

uml diagram

3.1 前提条件のインストール

各プラットフォームに応じて、必要なソフトウェアをインストールします。

3.1.1 Go のインストール

uml diagram

macOS:

brew install go

Linux (Ubuntu/Debian):

sudo apt-get update
sudo apt-get install golang-go

Windows: 1. Go公式サイトからインストーラーをダウンロード 2. インストーラーを実行し、指示に従う

インストールを確認:

go version

3.1.2 Docker と Docker Compose のインストール

uml diagram

macOS & Windows: 1. Docker Desktopをダウンロードしてインストール

Linux (Ubuntu/Debian):

sudo apt-get update
sudo apt-get install docker.io

インストールを確認:

docker --version
docker compose --version

3.1.3 Node.js のインストール

uml diagram

macOS:

brew install node@20

Linux (Ubuntu/Debian):

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs

Windows: 1. Node.js公式サイトからインストーラーをダウンロード 2. インストーラーを実行し、指示に従う

インストールを確認:

node --version
npm --version

3.2 リポジトリのクローン

uml diagram

リポジトリをクローンし、プロジェクトディレクトリに移動します:

git clone https://github.com/yourusername/go-ddd.git
cd go-ddd

3.3 依存関係のインストール

uml diagram

Node.js の依存関係をインストールします:

npm install

Go の依存関係をダウンロードします:

go mod download

3.4 開発環境の起動

uml diagram

Docker Compose を使用して、開発環境を起動します:

docker compose up -d

起動したサービスを確認します:

docker compose ps

以下のサービスが起動します: - PostgreSQL (ポート 9920) - MySQL (ポート 3306) - Wiki.js (ポート 80) - PlantUML Server (ポート 9999)

3.5 データベースのセットアップ

uml diagram

アプリケーションは起動時に自動的にデータベースマイグレーションを実行します。データベース接続情報は以下の通りです:

PostgreSQL: - ホスト: localhost - ポート: 9920 - ユーザー: root - パスワード: password - データベース: mydb

3.6 アプリケーションの構築

uml diagram

アプリケーションをビルドします:

go build -o app/backend/cmd/marketplace/marketplace app/backend/cmd/marketplace/main.go

3.7 アプリケーションの実行

uml diagram

ビルドしたアプリケーションを実行します:

./app/backend/cmd/marketplace/marketplace

アプリケーションはデフォルトでポート9090で起動します。ヘルスチェックエンドポイントにアクセスして、アプリケーションが正常に動作していることを確認します:

http://localhost:9090/api/v1/health

3.8 テストの実行

uml diagram

テストを実行します:

cd app/backend
go test ./...

4. アプリケーション構造

Go-DDDマーケットプレイスアプリケーションは、ドメイン駆動設計の原則に従って、以下のレイヤーで構成されています:

uml diagram

4.1 プロジェクト構造

go-ddd/
├── app/
│   └── backend/
│       ├── cmd/
│       │   └── marketplace/
│       │       └── main.go
│       └── internal/
│           ├── domain/
│           │   ├── entities/
│           │   └── repositories/
│           ├── application/
│           │   ├── services/
│           │   ├── command/
│           │   └── query/
│           ├── infrastructure/
│           │   └── db/
│           └── interface/
│               └── api/
│                   └── rest/
├── docs/
│   └── wiki/
├── ops/
│   └── docker/
└── docker-compose.yml

4.2 主要なコンポーネント

4.2.1 ドメインレイヤー

ドメインレイヤーはアプリケーションの中心であり、ビジネスロジックとルールを含みます。

  • エンティティ: 商品(Product)や出品者(Seller)などのビジネスオブジェクト
  • リポジトリインターフェース: データの永続化を担当するインターフェース

4.2.2 アプリケーションレイヤー

アプリケーションレイヤーはユースケースを実装し、ドメインレイヤーのオブジェクトを調整します。

  • サービス: 商品サービスや出品者サービスなど、ユースケースを実装するサービス
  • コマンド: ドメインの状態を変更する操作(書き込み操作)
  • クエリ: ドメインから情報を取得する操作(読み取り操作)

4.2.3 インフラストラクチャレイヤー

インフラストラクチャレイヤーは、永続化やその他の技術的な関心事を処理します。

  • データベース実装: リポジトリインターフェースのデータベース実装(GORM を使用)

4.2.4 インターフェースレイヤー

インターフェースレイヤーは、外部世界とのインタラクションを処理します。

  • REST API: 商品や出品者に関するREST APIエンドポイントを提供

5. API エンドポイント

Go-DDDマーケットプレイスアプリケーションは、以下のREST APIエンドポイントを提供します:

uml diagram

5.1 商品 API

メソッド エンドポイント 説明
POST /api/v1/products 新しい商品を作成
GET /api/v1/products すべての商品を取得
GET /api/v1/products/{id} 指定IDの商品を取得
PUT /api/v1/products/{id} 指定IDの商品を更新

5.2 出品者 API

メソッド エンドポイント 説明
POST /api/v1/sellers 新しい出品者を作成
GET /api/v1/sellers すべての出品者を取得
GET /api/v1/sellers/{id} 指定IDの出品者を取得
PUT /api/v1/sellers/{id}/name 指定IDの出品者の名前を更新
PUT /api/v1/sellers/{id}/email 指定IDの出品者のメールアドレスを更新
DELETE /api/v1/sellers/{id} 指定IDの出品者を削除

5.3 システム API

メソッド エンドポイント 説明
GET /api/v1/health ヘルスチェック

6. トラブルシューティング

uml diagram

6.1 よくある問題と解決策

データベース接続エラー

症状: アプリケーション起動時に「Failed to connect to database」などのエラーが表示される

解決策: 1. Docker Composeが起動しているか確認: docker compose ps 2. データベース接続情報が正しいか確認 3. データベースコンテナに直接接続してみる: docker compose exec db_postgresql psql -U root -d mydb

ビルドエラー

症状: go build コマンド実行時にエラーが発生する

解決策: 1. Go依存関係が正しくインストールされているか確認: go mod download 2. 依存関係を整理: go mod tidy 3. Goのバージョンが1.23以上であることを確認: go version

実行時エラー

症状: アプリケーション実行時にエラーが発生する

解決策: 1. ログを確認して具体的なエラーメッセージを特定 2. データベースマイグレーションが成功したか確認 3. 必要なテーブルがデータベースに作成されているか確認

7. まとめ

このセットアップガイドでは、Go-DDDマーケットプレイスアプリケーションを0から構築するための手順を説明しました。ドメイン駆動設計の原則に従って構築されたこのアプリケーションは、クリーンアーキテクチャを採用し、各レイヤーが明確に分離されています。

uml diagram

このガイドに従うことで、Go-DDDマーケットプレイスアプリケーションを簡単に構築し、実行することができます。また、ドメイン駆動設計の原則を学び、実践するための良い例としても活用できます。

8. 参考リンク