はじめに
Pull Request(PR)のレビューは、開発品質を保つうえで欠かせない工程です。しかし、実際の現場では
- レビュー待ちで PR が滞留する
- 忙しいと「小さなミス」を見逃す
といったことが起こりがちではないでしょうか。
そこで今回は、
GitHub Actions と OpenAI Codex を使って、PR を作ったら自動でレビューしてくれるシステム
を試しに作ってみました。
作り方
ここからは、実際に GitHub Actions × OpenAI Codex の PR 自動レビュー を
どうやって作ったかを順番に紹介します。
1) OpenAI の API キーを用意
まずは、OpenAI の API キーを用意します。
OpenAI の管理画面から API キーを作成し、あとで使うので控えておきます。
2) GitHub リポジトリに Secret を追加
先ほど作成した API キーを GitHub の Secrets に登録します。
今回は GitHub リポジトリの画面からではなく、ターミナルから登録します。
まず、GitHub CLI がインストールされているか確認します。
gh --version
コマンドが見つからない場合は、公式サイトの手順に従ってインストールしてください。
次に、GitHub へログインします。
gh auth login
表示される質問に従って進めると、ブラウザが開き、認証コードの入力を求められます。
認証が完了すると、ターミナルから GitHub を操作できるようになります。
ログイン後、対象リポジトリのディレクトリで以下のコマンドを実行します。
gh secret set OPENAI_API_KEY
実行すると、OpenAI の API キーの入力を求められるので、そのまま貼り付けて Enter を押します。
なお、OPENAI_API_KEY はあくまで例なので、別の名前を使いたい場合は、各自で変更してください。
これで登録は完了です。
3) GitHub Actions の Workflow を作成
次に、PR が作成・更新された際に自動でレビューを実行するための GitHub Actions の Workflow を作成します。
リポジトリのルートに、以下のファイルを作成します。ファイル名は各自で変更してください。
code .github\workflows\codex-pr-review.yml
中身は次のようにします。
name: Codex Pull Request Review
on:
pull_request:
types: [opened, synchronize]
permissions:
contents: read
pull-requests: write
jobs:
codex_review:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Run Codex PR Review
id: run_codex
uses: openai/codex-action@v1
with:
openai-api-key: ${{ secrets.OPENAI_API_KEY }}
prompt: |
あなたはシニアエンジニアです。Pull Request の差分をレビューしてください。
以下の順で、日本語で簡潔に出してください。
1. 重大(必ず直す):バグ、例外、セキュリティ、破壊的変更、データ不整合
2. 改善(推奨):可読性、設計、命名、責務、パフォーマンス
各指摘には、必ず「ファイル名」と「該当する行番号(diff上)」を明記してください。
- name: Post Codex feedback to PR
if: steps.run_codex.outputs.final-message != ''
uses: actions/github-script@v7
with:
github-token: ${{ github.token }}
script: |
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number,
body: process.env.CODEX_FINAL_MESSAGE,
})
env:
CODEX_FINAL_MESSAGE: ${{ steps.run_codex.outputs.final-message }}
これで、PR が作成または更新された際に OpenAI Codex による自動レビューが実行されるようになります。
4) 動作確認(実際に PR を作ってみる)
ここまでできたら、実際に PR を作って、動くかを確認します。
今回は「わざと小さなミスを入れたコード」を PR に含めて、Codex が指摘してくれるかを検証します。
まずは、ベースとなる「正しいコード」を main ブランチに入れておきます。
class Calculator
{
/**
* 割り算を行う
*
* @param int|float $a
* @param int|float $b
* @return float
* @throws InvalidArgumentException
*/
public function divide(int|float $a, int|float $b): float
{
if ($b == 0.0) {
throw new InvalidArgumentException('0 で割ることはできません');
}
return $a / $b;
}
}
次に、検証用のブランチを作って、あえて “人間でもやりがちな小さなミス” を混ぜます。
今回は例として、次の2点を入れてみます。
- ミス1:
== 0.0を=== 0にする - ミス2:
return $a / $b;をreturn (int) ($a / $b);にする

作成した PR 自動レビューの仕組みは、次のような流れで動いています。
Pull Request 作成 / 更新
↓
GitHub Actions 起動
↓
リポジトリを checkout(差分取得)
↓
OpenAI Codex が差分をレビュー
↓
レビュー結果を PR のコメントとして投稿
実際に、今回の PR では以下のように Codex のレビューコメントが投稿されました。

今回は「わざと小さなミスを入れたコード」を PR に含めて、Codex が指摘してくれるかを検証しましたが、
Codex による自動レビューで狙い通り、それらを正確に指摘できていることが確認できました。
おわりに
今回、GitHub Actions と OpenAI Codex を使って、PR を自動でレビューしてくれるシステムを作りましたが、
小さなミスを機械的に拾ってくれる点は想像以上に有用だと感じました。
一方で、レビューの質は プロンプトの書き方に大きく左右される ということも強く実感しました。
プロンプトを各々の開発環境に合った形に調整していくことで、より価値のある PR 自動レビューにできそうです。
このシステム自体は、人間のレビューをそのまま置き換えるものではありませんが、
レビューの負担を少しでも減らしたい、見落としを減らしたいと感じている方は、ぜひ一度試してみてください。