name: go-code-review description: Go コードレビュー。コード実装後やPR作成前に使用し、並行処理の安全性と一般的なGoのコーディング規約をレビューします。git diffを自動取得して変更されたコードを分析し、race condition、goroutineリーク、エラーハンドリング、命名規則などをチェックして詳細なフィードバックを提供します。
Go Code Review
Overview
このスキルは、Goコードの品質を向上させるためのコードレビューを実施します。以下を重点的にチェックします:
- 並行処理の安全性: goroutine、channel、mutex、race conditionの検出
- 一般的なGoコーディング規約: Effective Go、命名規則、エラーハンドリング
レビューワークフロー
1. レビュー対象の特定
以下のいずれかの方法でレビュー対象を特定します:
方法A: git diffから自動取得(推奨)
# 変更されたファイルを確認
git status
# 変更差分を取得
git diff
変更されたGoファイル(*.go)を特定し、それらをレビュー対象とします。
方法B: ユーザー指定
ユーザーが明示的に指定したファイルやコードスニペットをレビューします。
2. コードの読み込み
レビュー対象のファイルを読み込みます:
# Readツールを使用
Read tool: path/to/file.go
重要: 必ず実際のファイルを読んでからレビューしてください。推測でレビューしないこと。
3. コンテキストの理解
必要に応じて、以下のreferencesファイルを読み込んでレビュー基準を確認します:
- go-coding-standards.md: 一般的なGoのコーディング規約
- concurrency-review.md: 並行処理の安全性レビューガイド
- review-checklist.md: 体系的なレビューチェックリスト
読み込みタイミング:
- コーディング規約の確認:
references/go-coding-standards.md - goroutineやchannel使用時:
references/concurrency-review.md - 体系的にレビューしたい場合:
references/review-checklist.md
4. レビューの実施
以下の優先順位でレビューします:
優先度1: 並行処理の安全性
Goroutineリーク:
- 終了条件が明確か
- Contextでキャンセルを制御しているか
-
defer wg.Done()を使っているか
Race Condition:
- 共有変数へのアクセスが保護されているか
- Mapへの並行書き込みがないか
- Sliceへの並行appendがないか
Channel使用:
- バッファサイズが適切か
- 全結果を待っているか
- Busy loopになっていないか
詳細は references/concurrency-review.md を参照。
優先度2: エラーハンドリング
- 全てのエラーをチェックしているか
-
fmt.Errorfの%wでwrapしているか - エラーメッセージに具体的なコンテキストがあるか
- panicを通常処理で使っていないか
優先度3: コーディング規約
命名規則:
- パッケージ名が小文字の単一単語か
- 公開関数/型が大文字で始まっているか
- スネークケースを使っていないか
関数設計:
- 1つの関数が1つの責務を持っているか
- 関数が適切な長さか(目安: 50行以内)
- 早期リターンでネストを浅くしているか
リソース管理:
-
deferでリソース解放しているか - Contextが適切に伝播されているか
詳細は references/go-coding-standards.md を参照。
優先度4: テストコード
テーブルドリブンテスト:
- テストケース名が具体的か
-
t.Runでサブテストを実行しているか - エッジケースがカバーされているか
テストの独立性:
- テストが他のテストに依存していないか
- グローバル状態を変更していないか
5. レビューコメントの作成
以下の形式でフィードバックを提供します:
重大な問題(修正必須):
❌ [並行処理] Race conditionの可能性があります
ファイル: xxx.go:70
理由: 共有変数への並行アクセスが保護されていません
提案: mutexまたはchannelで保護してください
参照: references/concurrency-review.md#race-conditionの検出
改善提案(推奨):
⚠️ [コーディング規約] 早期リターンを推奨します
ファイル: xxx.go:45
理由: ネストが深く読みにくいです
提案: if err != nil { return err } パターンを使ってください
参照: references/go-coding-standards.md#if文
良い点(称賛):
✅ [並行処理] goroutineとchannelの使い方が適切です
ファイル: xxx.go:68-86
理由: バッファサイズが適切で、全ての結果を待っています
質問:
❓ [設計] この関数は分割できませんか?
ファイル: xxx.go:95
理由: 100行を超えており、複数の責務を持っているように見えます
使用例
例1: 変更されたコードのレビュー
ユーザー: "現在の変更をレビューしてください"
実行手順:
-
git statusで変更ファイルを確認 -
git diffで差分を取得 - 変更されたGoファイルをReadで読み込み
- 上記のワークフローに従ってレビュー
- フィードバックを提供
例2: 特定ファイルのレビュー
ユーザー: "server.goをレビューしてください"
実行手順:
- 指定されたファイルをReadで読み込み
- 必要に応じてreferencesを参照
- 並行処理、エラーハンドリング、コーディング規約をチェック
- フィードバックを提供
例3: 並行処理に特化したレビュー
ユーザー: "goroutineの使い方をレビューしてください"
実行手順:
- 対象ファイルをReadで読み込み
-
references/concurrency-review.mdを読み込み - goroutine、channel、sync関連のコードを重点的にチェック
- Race conditionやリークの可能性を指摘
- フィードバックを提供
静的解析ツールの併用
レビュー前に以下のツールを実行することを推奨します(スキル内では実行しません):
# 基本チェック
go vet ./...
# Race detector
go test -race ./...
# 静的解析
staticcheck ./...
# 総合Linter
golangci-lint run
これらのツールで検出されない、コードの設計や可読性の問題を本スキルで検出します。
レビュー時の注意事項
やるべきこと
- ✅ 実際のコードを読んでからレビューする
- ✅ 具体的なファイル名と行番号を指摘する
- ✅ 改善案を提示する
- ✅ 良い点も積極的に評価する
- ✅ 必要に応じてreferencesを参照する
やらないこと
- ❌ コードを読まずに推測でレビューする
- ❌ 抽象的な指摘のみで終わらせる
- ❌ 批判のみでポジティブなフィードバックを忘れる
- ❌ referencesを無視して主観的に評価する
Resources
このスキルには以下のreferencesが含まれています:
references/go-coding-standards.md
一般的なGoのコーディング規約とベストプラクティス。Effective Go、命名規則、エラーハンドリング、関数設計、パッケージ構成などを網羅しています。
使用タイミング: コーディング規約の確認、命名規則、関数設計のレビュー時
references/concurrency-review.md
Go並行処理の安全性レビューガイド。goroutineリーク、race condition、channelの適切な使用方法、mutexの使い方などを網羅しています。
使用タイミング: goroutine、channel、mutex、sync.*を使っているコードのレビュー時
references/review-checklist.md
レビュー時の体系的なチェックリスト。コーディング規約、エラーハンドリング、並行処理、関数設計、テスト、セキュリティ、パフォーマンスの全項目を網羅しています。
使用タイミング: 包括的なレビューを実施したい場合、レビュー漏れを防ぎたい場合
よくある質問
Q: referencesを全て読む必要がありますか? A: いいえ。レビュー対象のコードに応じて、必要なreferencesのみを読んでください。例えば、goroutineを使っていない場合はconcurrency-review.mdを読む必要はありません。
Q: レビューコメントの優先度は? A: ❌(重大な問題) > ⚠️(改善提案) > ❓(質問) > ✅(良い点) の順です。
Q: 全てのチェック項目を確認する必要がありますか? A: 対象コードに応じて、該当する項目のみをチェックしてください。例えば、テストコードでない場合、テストパターンの確認は不要です。
chat Comments (0)
Sign in to join the discussion and leave a comment.
Skill Details
Related Skills
Build your own?
Join 12,000+ developers contributing to the Claude ecosystem.
No comments yet. Be the first to share your thoughts!