Martini風のAPIを備え、REST API、Webアプリ、マイクロサービス向けに作られた、高性能なGo用HTTP Webフレームワークです。
evrone/go-clean-template
REST、gRPC、AMQP RPC、NATS RPCの各トランスポートにまたがるコード構成を示す、Goサービス向けClean Architectureプロジェクトテンプレート。
- スター
- 7,708
- フォーク
- 665
- 未解決の Issue
- 3
- 最終コミット
- 11 日前
これは何?
go-clean-templateは、Clean Architectureの原則に沿ったGoマイクロサービスの出発点となるテンプレートです。ビジネスロジックを、データベースやWebフレームワーク、メッセージブローカーなどのインフラから分離し、中核となるユースケースがインターフェースと標準ライブラリだけに依存する構成にしています。サービスの成長に合わせて整理された構成を保てるよう設計されています。
このテンプレートには、JWTによるユーザー認証、ステータス遷移を伴うタスク管理、履歴追跡機能付きのテキスト翻訳という3つのサンプルドメインが含まれています。各ドメインは、FiberベースのREST API、gRPC、RabbitMQ(AMQP)およびNATSを使ったRPCという4つのトランスポートで公開されます。依存性注入にはNewコンストラクターを使用し、リポジトリにはPostgres、RabbitMQ、NATS、Jaegerを起動するDocker Composeの設定が含まれています。
また、4つすべてのトランスポート間でコンテキストを伝播するOpenTelemetryトレースをはじめ、Prometheusメトリクス、Swaggerドキュメント、結合テスト、データベースマイグレーションによる可観測性にも対応しています。
主な機能
- 01Newコンストラクターによる依存性注入を備えたClean Architectureのレイヤー構成
- 02swagでSwaggerドキュメントを生成する、FiberベースのREST API
- 03protobufで定義されたgRPCサービス
- 04RabbitMQ(AMQP)とNATSのリクエスト・リプライに対応するRPCサーバー
- 05OpenTelemetryトレースとPrometheusメトリクス
- 06Postgres、RabbitMQ、NATS、Jaegerを含むDocker Compose構成
ユースケース
- 一貫性のあるプロジェクト構成でGoマイクロサービスを立ち上げる
- Goでビジネスロジックをトランスポートやストレージから分離する方法を学ぶ
- 同じロジックをREST、gRPC、メッセージキュー経由で公開する必要があるサービスを構築する
クイックスタート
- 1
Docker ComposeでPostgres、RabbitMQ、NATSを起動する
make compose-up - 2
マイグレーションを実行してアプリを起動する
make run
使う前に知っておきたいこと
- ローカル開発では、Postgres、RabbitMQ、NATSの実行にDocker Composeが必要です。
トピック
よくある質問
- go-clean-template とは?
- REST、gRPC、AMQP RPC、NATS RPCの各トランスポートにまたがるコード構成を示す、Goサービス向けClean Architectureプロジェクトテンプレート。 go-clean-templateは、Clean Architectureの原則に沿ったGoマイクロサービスの出発点となるテンプレートです。ビジネスロジックを、データベースやWebフレームワーク、メッセージブローカーなどのインフラから分離し、中核となるユースケースがインターフェースと標準ライブラリだけに依存する構成にしています。サービスの成長に合わせて整理された構成を保てるよう設計されています。
- go-clean-template は無料で使えますか?ライセンスは?
- go-clean-template は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- go-clean-template は今もメンテナンスされていますか?
- 活発にメンテナンス中。go-clean-template の最終コミットは 2026年10月11日 です。
- go-clean-template は何に使えますか?
- 一貫性のあるプロジェクト構成でGoマイクロサービスを立ち上げる Goでビジネスロジックをトランスポートやストレージから分離する方法を学ぶ 同じロジックをREST、gRPC、メッセージキュー経由で公開する必要があるサービスを構築する
- go-clean-template のインストール方法は?
- Docker ComposeでPostgres、RabbitMQ、NATSを起動する: make compose-up マイグレーションを実行してアプリを起動する: make run
- go-clean-template はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/evrone/go-clean-template
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
GoWAは、複数アカウント、webhook、MCP、Chatwoot連携に対応した、Go製のセルフホスト型WhatsApp REST APIです。
Ethereum実行レイヤーのGo実装。フルノードまたはアーカイブノードとして稼働し、JSON-RPC APIや開発者向けツールを提供します。
リアルタイムの音声・映像・データによるP2P接続を構築するための、WebRTC APIの純粋なGo実装。
Caddyをベースに構築されたモダンなPHPアプリケーションサーバー。ワーカーモード、Early Hints、HTTP/3、自動HTTPSに対応。
Go製の高性能でステートレスな宣言型API Gateway。バックエンドのマイクロサービスへの呼び出しをルーティング、集約、保護します。