GitHub CODEOWNERSの解説と基本的な使い方

スポンサーリンク

GitHub CODEOWNERSの解説と基本的な使い方

はじめに

CODEOWNERSはGitHubのリポジトリで「このファイル(ディレクトリ)はこの人がオーナー」と定義できる仕組みです。

設定しておくと、対象ファイルを含むPRが作成されたときにオーナーが自動的にレビュアーに追加されます。

  • フロントエンドのコードはフロントエンドチームに自動でレビューが回る
  • インフラ設定を変更したらインフラ担当者が必ずレビューする
  • セキュリティ関連のコードは特定メンバーが必ずチェックする

ファイルの配置場所

CODEOWNERS ファイルは以下のいずれかの場所に置きます。

リポジトリルート/CODEOWNERS
.github/CODEOWNERS        ← 最もよく使われる
docs/CODEOWNERS

複数ある場合は .github/CODEOWNERS が優先されます。


基本的な書き方

パターン  オーナー

オーナーには GitHubのユーザー名(@username)またはチーム名(@org/team)を指定します。

全ファイルにオーナーを設定する

*  @hironomiu

すべてのファイルのデフォルトオーナーになります。

特定ディレクトリにオーナーを設定する

/src/frontend/  @frontend-user
/src/backend/   @backend-user
/infra/         @infra-user

末尾に / をつけるとディレクトリ以下すべてが対象になります。

特定の拡張子にオーナーを設定する

*.js   @frontend-user
*.rb   @backend-user
*.tf   @infra-user

特定のファイルにオーナーを設定する

/package.json          @frontend-user
/Gemfile               @backend-user
/.github/workflows/    @infra-user

複数オーナーを設定する

スペース区切りで複数指定できます。全員がレビュアーに追加されます。

/src/  @user1 @user2

チームを指定する(Organization)

/src/frontend/  @myorg/frontend-team
/infra/         @myorg/infra-team

実際のCODEOWNERSの例

# .github/CODEOWNERS

# デフォルトオーナー(他のルールにマッチしない場合)
*  @tech-lead

# フロントエンド
/src/components/  @myorg/frontend-team
/src/pages/       @myorg/frontend-team
*.css             @myorg/frontend-team

# バックエンド
/src/api/         @myorg/backend-team
/db/              @myorg/backend-team

# インフラ・CI/CD
/.github/         @myorg/infra-team
/terraform/       @myorg/infra-team
/Dockerfile       @myorg/infra-team
docker-compose.yml @myorg/infra-team

# セキュリティ関連は必ず特定メンバーがレビュー
/src/auth/        @security-lead @tech-lead

重要:最後のルールが優先される

.gitignore と同様に、後に書いたルールが優先されます。

# まず全体のオーナーを設定
*  @default-owner

# より具体的なルールで上書き
/src/frontend/  @frontend-user

/src/frontend/ のファイルは @frontend-user だけが対象になります。


Branch Protection Rules と組み合わせる

CODEOWNERSの効果を最大化するには、Branch Protection Rulesで「コードオーナーによるレビューを必須」に設定します。

設定手順:

  1. GitHubリポジトリの SettingsBranches を開く
  2. 保護したいブランチのルールを編集(または新規作成)
  3. Require a pull request before merging を有効化
  4. Require review from Code Owners にチェックを入れる

これにより、CODEOWNERSで定義されたオーナーのレビューなしにはマージできなくなります。


確認方法

PRを作成すると、右サイドバーのReviewersにCODEOWNERSで定義したオーナーが自動追加されます。

また、ファイルを直接確認することもできます。

https://github.com/{owner}/{repo}/blob/main/.github/CODEOWNERS

GitHubはCODEOWNERSファイルのシンタックスエラーを検出して警告を表示してくれます。


注意点

ユーザーがリポジトリへのアクセス権を持っていること

CODEOWNERSに書いたユーザーやチームが、リポジトリへのアクセス権(少なくともRead権限)を持っていないとレビュアーとして追加されません。

ファイル名は大文字・小文字を区別する

CODEOWNERS(大文字)が正式なファイル名です。codeowners では認識されません。

コメントは # で書く

# これはコメント
*  @owner

まとめ

項目 内容
ファイルの場所 .github/CODEOWNERS(推奨)
書き方 パターン @ユーザー名 or @org/チーム名
優先順位 後のルールが優先
自動レビュー PRに自動でレビュアーが追加される
必須レビュー Branch Protection Rulesの Require review from Code Owners と組み合わせる

CODEOWNERSを設定することで、コードの変更が適切な担当者にレビューされる仕組みをGitHubの機能だけで実現できます。