0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Codeをチーム導入して3ヶ月──権限管理・コスト管理・レビュー体制で決めた11のルール

0
Posted at

結論:Claude Codeのチーム導入は「運用設計」が9割

個人で使う分には最高だったClaude Codeを、5人チームに導入した瞬間に噴出した問題──その全てに対して今のところ機能しているルールを共有します。

先に結論を書きます。Claude Codeはツールとして優秀ですが、チームで使うと「誰がどこまで使っていいのか」「コストが青天井にならないか」「AI生成コードの品質は誰が担保するのか」という3つの問題が即座に発生します。 この記事では、3ヶ月の試行錯誤で定着した11のルールと、逆に失敗して撤廃した3つのルールを具体的に紹介します。

前提:チーム規模・技術スタック・導入前の開発フロー

項目 内容
チーム人数 5人(バックエンド3人、フロントエンド2人)
技術スタック TypeScript / Next.js / NestJS / PostgreSQL
リポジトリ数 モノレポ1つ + マイクロサービス3つ
開発フロー GitHub Flow(mainブランチ + featureブランチ)
CI/CD GitHub Actions
Claude Code契約 Max plan(5アカウント)

導入前はCopilotをエディタ補完として使っていましたが、Claude Codeのように「タスク単位でコードを生成・修正できるエージェント」の導入は初めてでした。

ワークフロー全体像と11のルールの適用箇所

まず、現在のチーム開発ワークフロー全体を示します。各ステップにどのルールが関わっているかをアノテーションしています。

カテゴリ① 権限管理(ルール1〜3)

ルール1:リポジトリ単位のallowlist制

Claude Codeを使えるリポジトリを明示的にallowlistで管理しています。

理由: 導入初週に、本番DBのマイグレーションスクリプトを含むリポジトリでClaude Codeが意図しないスキーマ変更を提案し、危うくそのままPRが出るところでした。

# チームで管理している allowlist(社内Wiki管理)
allowed_repos:
  - org/web-frontend        # フロントエンド → 全員利用可
  - org/api-server           # バックエンド → バックエンドメンバーのみ
  - org/shared-libs          # 共有ライブラリ → テックリード承認制

denied_repos:
  - org/infra-terraform      # インフラ定義 → Claude Code利用禁止
  - org/db-migrations        # DBマイグレーション → Claude Code利用禁止

ルール2:--allowedTools による実行権限の段階管理

Claude Codeが実行できるツール(シェルコマンド、ファイル編集など)を段階的に制限しています。

// .claude/settings.json(リポジトリルートに配置)
{
  "permissions": {
    "allow": [
      "Read",
      "Edit",
      "WebSearch"
    ],
    "deny": [
      "Bash(rm *)",
      "Bash(docker *)",
      "Bash(psql *)",
      "Bash(npx prisma migrate deploy*)"
    ]
  }
}

ポイント: denyを先に決めるのではなく、「何を許可するか」から設計しました。破壊的操作のdenylistは最低限のセーフティネットです。

ルール3:新メンバーは最初の2週間「読み取り専用モード」

新しくチームに入ったメンバーは、最初の2週間はClaude CodeをReadWebSearchのみで利用します。

狙い: Claude Codeの出力傾向を理解してから書き込み権限を渡すことで、「AIが書いたコードの意味がわからないままPRを出す」事態を防いでいます。

カテゴリ② コスト管理(ルール4〜6)

ルール4:メンバー別の月額トークン消費上限

Max planではアカウント単位の利用状況を管理画面で確認できます。チームでは以下の目安を設定しています。

ロール 月額トークン目安 超過時の対応
一般メンバー 〜$200相当 テックリードに相談
テックリード 〜$350相当 CTO判断

厳密な「ハードリミット」ではなく、週次ミーティングで消費量を共有する運用です。

ルール5:トークン消費の可視化

Claude Codeの利用状況を週次で可視化しています。

現時点ではAPIの利用量ダッシュボードを手動で集計していますが、今後はClaude Code CLIの--output-format jsonオプションを活用した自動集計を検討中です。

ルール6:「高コストタスク」の事前申請制

以下に該当するタスクは、着手前にSlackの#claude-code-opsチャンネルで事前申告します。

  • 大規模リファクタリング(10ファイル以上の変更が見込まれる)
  • 新規モジュールの0→1生成
  • テストコードの一括生成(対象ファイル数が多いとトークンが膨らむ)

事前申告のテンプレートはこれだけです。

📋 高コストタスク申告
- タスク: [Jiraチケット番号]
- 想定変更規模: [ファイル数・行数の概算]
- 理由: [なぜClaude Codeに任せるのが妥当か]
- 承認者: [テックリードがスタンプで承認]

カテゴリ③ レビュー体制(ルール7〜9)

ルール7:AI生成コードにはai-generatedラベルを必ず付与

PRにai-generatedラベルを付けることで、レビュアーのレビュー観点を切り替えます。

これはGitHub Actionsで自動化しています。PR本文やコミットメッセージにClaudeai-generatedのキーワードが含まれていれば自動でラベルを付与します。

# .github/workflows/ai-label.yml
name: Auto AI Label
on:
  pull_request:
    types: [opened, edited]

jobs:
  label:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/github-script@v7
        with:
          script: |
            const body = context.payload.pull_request.body || '';
            const title = context.payload.pull_request.title || '';
            const hasAiMarker = /claude|ai-generated|🤖/i.test(body + title);
            if (hasAiMarker) {
              await github.rest.issues.addLabels({
                owner: context.repo.owner,
                repo: context.repo.repo,
                issue_number: context.issue.number,
                labels: ['ai-generated']
              });
            }

ルール8:AI生成コードのレビューで見るべき3つのポイント

通常のレビューと「AI生成コードのレビュー」では、重点を置くポイントが異なります。

観点 通常のレビュー AI生成コードのレビュー
ロジックの正しさ 重要 最重要(もっともらしいが微妙に間違うことがある)
コーディングスタイル 重要 中程度(CLAUDE.mdで制御済みのため)
過剰実装の有無 たまに見る 必ず見る(AIは「聞かれてないことも実装する」傾向がある)
セキュリティ考慮 重要 最重要(入力バリデーションの漏れなど)
テストの妥当性 重要 最重要(テストが通るよう実装を歪めることがある)

ルール9:AI生成PRのレビュアーは必ず「そのドメインを知る人間」

「AI生成コードだからサッと見ればいい」は真逆です。AIはドメイン知識なしにもっともらしいコードを書くため、ドメインを深く理解しているメンバーがレビューしないと、業務ロジックの微妙な誤りを見落とします。

具体例:あるAPIエンドポイントで、Claude Codeが「論理削除」を実装すべきところを「物理削除」で実装していたケースがありました。コードとしては完璧に動作しており、テストも通っていましたが、ビジネス要件上は誤りでした。

カテゴリ④ 品質担保(ルール10〜11)

ルール10:CLAUDE.mdのチーム共通テンプレート

CLAUDE.mdはClaude Codeに対するプロジェクト固有の指示ファイルです。個人ごとにバラバラだと出力品質がブレるため、チーム共通テンプレートをリポジトリルートに配置しています。

<!-- CLAUDE.md(チーム共通テンプレート・抜粋) -->
# プロジェクト規約

## コーディング規約
- 言語: TypeScript(strict mode)
- 命名: camelCase(変数・関数)、PascalCase(型・クラス)
- エラーハンドリング: Result型パターンを使用(throw禁止)
- ログ: pino を使用、console.logは使わない

## アーキテクチャ
- レイヤー構成: Controller → UseCase → Repository
- DIコンテナ: NestJSの標準DI
- DB操作: Prisma経由のみ(直接SQLは禁止)

## テスト
- ユニットテスト: vitest
- テストファイル命名: *.test.ts(*.spec.tsは使わない)
- モック: vi.mock()を使用
- カバレッジ: 新規コードは80%以上を目指す

## やってはいけないこと
- node_modules/ 配下の直接編集
- .env ファイルへのシークレット直書き
- any型の使用(やむを得ない場合はコメントで理由を明記)

ルール11:hooksによる自動品質チェック

Claude Codeのhooks機能を使い、コード生成の前後で自動チェックを実行しています。

// .claude/hooks.json
{
  "PostEditHook": {
    "command": "npx eslint --fix ${FILE} && npx prettier --write ${FILE}",
    "description": "編集後に自動lint・フォーマット"
  },
  "PreCommitHook": {
    "command": "npx vitest run --reporter=verbose --bail 1",
    "description": "コミット前にテスト実行"
  }
}

効果: hooks導入前は「Claude Codeが生成したコードがlintエラーだらけでCIが落ちる → 手動で修正」という手戻りが頻発していました。hooks導入後はPR段階でのlintエラーがほぼゼロになっています。

失敗したルール:2週間で撤廃した3つ

成功したルールだけ紹介しても片手落ちなので、導入したが機能しなかったルールも共有します。

❌ 失敗1:「AI生成コードは必ずペアレビュー(2人承認)」

意図: AI生成コードの品質を担保するため。

撤廃理由: レビュー待ちのボトルネックが深刻化しました。5人チームで2人承認を必須にすると、チームの40%がレビューに拘束されます。ルール8・9で「何を見るか」を明確にしたことで、1人レビューでも品質が維持できると判断しました。

❌ 失敗2:「Claude Codeのセッションログを全てSlackに自動投稿」

意図: 透明性の確保とナレッジ共有。

撤廃理由: ノイズが多すぎて誰も読まなくなりました。1回のセッションで数十メッセージのやり取りが飛ぶため、Slackチャンネルが埋もれます。現在は「PRの説明欄に要点を3行で書く」運用に落ち着いています。

❌ 失敗3:「1日のClaude Code利用時間を最大4時間に制限」

意図: AIに依存しすぎない開発スキルの維持。

撤廃理由: 「時間」で区切ることに意味がありませんでした。30分で高品質なコードが生成される場合もあれば、4時間かけても満足な結果が得られない場合もあります。コスト管理(ルール4〜6)で実質的に利用量はコントロールできているため、時間制限は不要でした。

運用3ヶ月の定量成果

導入前後の3ヶ月間の比較データです。

指標 Before(導入前3ヶ月平均) After(導入後3ヶ月平均) 変化
PR作成速度(起票→PR) 2.1日 0.9日 57%短縮
PR1件あたりのレビュー指摘数 3.2件 4.1件 28%増加
レビュー指摘のうち重大な問題 0.8件 0.5件 37%減少
本番障害数 2件/月 1件/月 50%減少
月額コスト(Claude Code) $0 約$800/チーム

注目すべきはレビュー指摘数の増加です。 これは悪い数字ではありません。AI生成コードに対してレビュアーがより注意深く見るようになった結果、これまで見逃していた軽微な問題(命名の不統一、不要なnull チェックなど)も拾えるようになったためです。重大な問題の指摘数は減少しており、CLAUDE.mdとhooksによる事前品質チェックが効いていると考えています。

まとめ

  • Claude Codeのチーム導入は「ツールの設定」ではなく「運用設計」が本丸。 allowlist・コスト管理・レビュー基準の3本柱を先に決めてから導入すべきです
  • CLAUDE.mdとhooksを「チームの共通インフラ」として整備することで、個人差による品質のブレを大幅に減らせます。 個人のCLAUDE.mdに任せると、出力品質がメンバーごとにバラつきます
  • 失敗ルールから学んだ最大の教訓は「過剰な統制はチームの速度を殺す」こと。 AIツールの導入で速度を上げたいのに、ガバナンスで速度を下げては本末転倒です

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?