golang-base-practices について
Go のコード生成、レビュー、リファクタリングに向けた開発ガイドです。53 のルールを優先度順に整理し、例と参考資料を掲載しています。
主な機能
- 01優先度別の53ルール
- 02フレームワークとデータベースの指針
- 03エラー処理と並行処理の実践
- 04テストと性能改善の提案
- 05例と参考資料
活用シーン
- 01Go プロジェクトやマイクロサービスの開始
- 02コードレビューとリファクタリング
- 03データベース操作やマイグレーションの検討
- 04テストカバレッジと並行処理コードの改善
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ cexll/ golang-base-practices-skills --skill golang-base-practicesインストール後、Claude Code で/golang-base-practicesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdrules/concurrency-sync-primitives.mdconcurrency-channel-size.mddb-goose-migrations.mdconcurrency-goroutine-lifecycle.mdconcurrency-context-cancel.mddb-connection-pool.mdconcurrency-errgroup.mdconcurrency-race-detection.mdconcurrency-channel-patterns.mddb-gorm-transactions.mderror-api-response.mdddd-interface-layer.mdddd-project-layout.mdddd-domain-layer.mddb-gorm-setup.mdddd-infrastructure-layer.mddb-gorm-hooks.mdddd-application-layer.mdddd-dependency-injection.mderror-custom-types.mderror-handling-check.mdframework-gin-simple.mderror-sentinel.mderror-wrap-context.mdframework-kratos-complex.mdframework-middleware.mdidiomatic-blank-identifier.mderror-panic-recover.mdframework-graceful-shutdown.md詳細
Golang の基本プラクティス
コード生成、レビュー、リファクタリング向けに優先度別にまとめた、Go 開発の包括的なベストプラクティスガイドです。Effective Go、Google Go Style Guide、Uber Go Style Guide、Go Code Review Comments を参考にした 53 のルールが含まれています。
適用するタイミング
以下の場合に、これらのガイドラインを参照してください。
- 新しい Go プロジェクトやマイクロサービスを作成するとき
- API インターフェース(REST/gRPC)を構築するとき
- データベース操作やマイグレーションを行うとき
- コードレビューやリファクタリングを実施するとき
- パフォーマンスと並行処理を最適化するとき
- テストカバレッジを改善するとき
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | フレームワークの選択 | CRITICAL | framework- |
| 2 | データベースと ORM | CRITICAL | db- |
| 3 | DDD プロジェクト構成 | HIGH | ddd- |
| 4 | エラー処理 | HIGH | error- |
| 5 | 並行処理パターン | HIGH | concurrency- |
| 6 | Go らしい記述 | MEDIUM | idiomatic- |
| 7 | テストプラクティス | CRITICAL | testing- |
| 8 | パフォーマンス最適化 | MEDIUM | performance- |
| 9 | Lint とツールチェーン | MEDIUM | lint- |
クイックリファレンス
1. フレームワークの選択(CRITICAL)
framework-gin-simple- シンプルなプロジェクトには Gin を使用しますframework-kratos-complex- 複雑なマイクロサービスには Go-Kratos を使用しますframework-middleware- ミドルウェアの設計パターンframework-graceful-shutdown- サーバーのグレースフルシャットダウン
2. データベースと ORM(CRITICAL)
db-gorm-setup- GORM の初期化と設定db-gorm-hooks- GORM Hook の使用ガイドラインdb-gorm-transactions- トランザクション処理のパターンdb-goose-migrations- Goose によるデータベースマイグレーションdb-connection-pool- コネクションプールの設定
3. DDD プロジェクト構成(HIGH)
ddd-project-layout- 標準的なプロジェクトディレクトリ構成ddd-domain-layer- ドメイン層の設計ddd-application-layer- アプリケーション層の設計ddd-infrastructure-layer- インフラストラクチャ層の設計ddd-interface-layer- インターフェース層の設計ddd-dependency-injection- 依存性注入のパターン
4. エラー処理(HIGH)
error-wrap-context- コンテキストを付加したエラーのラップerror-sentinel- センチネルエラーの定義error-custom-types- カスタムエラー型error-handling-check- エラーの戻り値を必ず確認するerror-api-response- API エラーレスポンスの標準error-panic-recover- Panic と recover の使用ガイドライン
5. 並行処理パターン(HIGH)
concurrency-goroutine-lifecycle- Goroutine のライフサイクル管理concurrency-channel-patterns- Channel の使用パターンconcurrency-channel-size- Channel のバッファサイズの選定concurrency-context-cancel- Context キャンセルの伝播concurrency-errgroup- errgroup による並行処理の制御concurrency-sync-primitives- sync パッケージのプリミティブの使用concurrency-race-detection- 競合状態の検出
6. Go らしい記述(MEDIUM)
idiomatic-naming- 命名規則idiomatic-comment- ドキュメントコメントのガイドラインidiomatic-interface- インターフェースの設計(小さなインターフェースを優先)idiomatic-receiver- Receiver の命名と選択idiomatic-struct-init- Struct の初期化idiomatic-functional-options- Functional Options パターンidiomatic-defer- defer の使用ガイドラインidiomatic-slice-map- Slice と Map の操作idiomatic-zero-value- ゼロ値の活用idiomatic-embedding- 型の埋め込みidiomatic-blank-identifier- ブランク識別子の使用
7. テストプラクティス(CRITICAL)
testing-coverage-99- テストカバレッジ 99% を目標にするtesting-table-driven- テーブル駆動テストtesting-mock- モックとインターフェースによる抽象化testing-helper- テストヘルパー関数のガイドラインtesting-benchmark- ベンチマークテストtesting-integration- 結合テストの標準testing-testify- testify アサーションライブラリの使用
8. パフォーマンスの最適化(中)
performance-strconv- fmt の代わりに strconv を使用するperformance-prealloc- コンテナを事前に割り当てる
9. Lint とツールチェーン(中)
lint-golangci- golangci-lint の設定lint-gofmt- コードのフォーマットlint-govet- 静的解析lint-staticcheck- 高度な静的チェックlint-revive- カスタマイズ可能なリンター
使用方法
詳しい説明とコード例については、rules/ ディレクトリ内の各ルールファイルを参照してください。
rules/framework-gin-simple.md
rules/db-gorm-setup.md
rules/testing-table-driven.md
各ルールファイルには、以下が含まれています。
- ルールの説明と重要性
- 分析付きの不適切な例
- 解説付きの適切な例
- 補足情報と参考資料
基本原則
- KISS - シンプルさを保ち、過剰な設計を避けます
- YAGNI - 現時点で必要なものだけを実装します
- 暗黙より明示 - コードの意図を明確にします
- すべてのエラーを処理する - エラーの戻り値を決して無視しません
- テストカバレッジ99% - 高品質なコードの基盤です
コメント
Markdown 対応