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で「コードオーナーによるレビューを必須」に設定します。
設定手順:
- GitHubリポジトリの
Settings→Branchesを開く - 保護したいブランチのルールを編集(または新規作成)
Require a pull request before mergingを有効化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の機能だけで実現できます。