よくある質問
新規参加者がよく抱く疑問とその回答です。
開発環境
Q: ポートが既に使用されています
A: 別のプロセスがポートを使用している可能性があります。
# 使用中のポートを確認
sudo lsof -i :5432 # PostgreSQL
sudo lsof -i :8080 # API Server
# ポートを変更する場合は
# infra/env/dev/ports.env を編集
Q: Docker Composeが起動しません
A: 以下の確認をしてください:
- Docker Desktopが起動しているか確認
- ポートが競合していないか確認
make compose/downで一度停止してからmake compose/upを実行
Q: マイグレーションが失敗します
A: データベースをリセットして再実行:
make compose/db.reset
make db/reset
コードベース
Q: 新しい機能はどこに実装すればいいですか?
A: 機能の種類によって異なります:
- ビジネスロジック:
server-core/配下に新しいパッケージを作成 - DB操作:
server-platform/datastore/postgres/にRepository実装 - APIハンドラー:
server-apps/gateway/handlers/またはserver-apps/api/handlers/
Q: Protocol Buffersを変更したら何をすべきですか?
A: 以下の順序で実行:
.protoファイル編集make proto/lint- リントチェックmake proto/gen- コード生成- 生成コード(
packages/proto-gen-go/,packages/proto-gen-ts/)をコミット
詳しくはProtocol Buffersを参照してください。
Q: データベーススキーマを変更するには?
A: マイグレーションファイルを作成:
infra/db/migrations/に新しいマイグレーションファイル作成make db/mig-upでマイグレーション実行- 問題があれば
make db/mig-downでロールバック
詳しくはデータベース設計を参照してください。
アーキテクチャ
Q: server-coreとserver-platformの違いは?
A:
- server-core: ビジネスロジックとドメインモデル。外部依存なし。
- server-platform: server-coreで定義されたインターフェースの実装(DB、ログなど)。
詳しくはレイヤー構成を参照してください。
Q: GatewayとAPI Serverの役割の違いは?
A:
- Gateway: HTTP/JSON ↔ gRPC変換、認証、レート制限など境界の責務
- API Server: ビジネスロジック実行、データ永続化
詳しくは境界と責務を参照してください。
トラブルシューティング
Q: テストが失敗します
A: 以下を確認:
# 依存関係を整理
make go/tidy
# テストを再実行
make go/test
# 特定のパッケージのテストのみ実行
cd server-core/post
go test ./...
Q: ビルドエラーが出ます
A: 以下を試してください:
# Go依存関係整理
make go/tidy
# キャッシュクリア
make go/clean
# 再ビルド
make compose/build
Q: Protocol Buffersの生成コードが古い
A: 再生成してください:
make proto/gen
生成コードの差分を確認してコミットしてください。
関連ドキュメント
- クイックスタート - 5分で動かす
- 開発環境セットアップ - 詳細なセットアップ
- 開発ワークフロー - 開発フロー