「純粋リファクタリング」を AI に判断させて自動マージする — Nature LT
大塚 · @maaash
── 01 About|自己紹介
Nature CTO の大塚(@maaash)です。
Nature は「自然との共生をドライブする」というミッションのもと、スマートホームやエネルギーマネジメントの IoT プロダクトをつくっています。
── 02 Problem|レビューがボトルネックになっている
今日はそのバックエンドの話。6 名のチーム(私を含む)。2016 年から続くモノレポ。
エアコン操作など毎日使われているので、AI で開発を高速化しても壊したくない。
── 03 What to check|レビューでは、何を見るか
変更にはいくつかの目的があり、レビューで見るポイントも違う。Pull Request テンプレートには昔から以下の選択肢を入れていた。
☐ リファクタリングのみ
☐ それ以外のコード変更を含む
* これらは混ぜないこと
Behavior changes(挙動が変わる PR):妥当な設計か、狙った課題を解決するか、インフラ・DB・性能に響かないか。
Refactoring(リファクタリングの PR):適切な命名になったか、結合が減ったか、一貫性があるか。変更の前後で挙動が等価か。
AI による高速化と同じペースで、リファクタリングも進めたい。
だが、レビューコストは抑えたい。
── 04 Proof|/review-refactoring skill
設計の観点(適切な命名になったか、結合が減ったか、一貫性があるか)は、GitHub issue や夕会で話して合意する。
等価かどうかは観点が定まっていて、機械的に網羅できる。
だから人間が見なくていい。ここを AI に任せ、挙動が変わっていないことを証明してもらう。
── 05 Auto-merge|PR コメントで起動、合格したら自動マージ
PR のコメントに /review_refactoring と書くと、GitHub Action が起動する。
1 Skill をそのままプロンプトに渡し、差分をレビュー
2 判定を JSON(pass / report)で機械的に取り出す
✓ pass: true → approve → auto-merge(squash) → refactoring-only ラベル
! pass: false → 自動マージせず、人間レビューを要求
✎ どう判定したかをコメントとして残す
── 06 Skill|Skill の中身① マインドセット
## マインドセット
**あなたは懐疑的な第三者レビュアーである。**
- 「純粋リファクタリング」という主張を疑え
- 一見同じに見えるコードでも動作の違いを探せ
- 「たぶん大丈夫」ではなく「証明できる」レベルで検証せよ
- 1 つでも動作変更があれば、それは純粋リファクタリングではない
── 06 Skill|Skill の中身② 実行手順
## 実行手順
### 0. コンテキスト確認
### 1. 差分取得
### 2. 各ファイルの変更を評価
各変更について以下を判定:
#### 純粋リファクタリング ✅
種別(説明/注意点)
- 移動:コードを別の場所へ/そのまま移動、一字一句同じ
- リネーム:シンボル名変更/全箇所一貫して
- 抽出:関数/メソッド抽出/動作維持
- インライン:関数/メソッド展開/動作維持
- 構成変更:ファイル/パッケージ再編/依存関係注意
- 型変更:型エイリアス、ラッパー型/アクセサが同値を返すこと
- アクセス方法変更:フィールド → メソッド/同値を返すこと
── 06 Skill|Skill の中身③ 原則
### テストコード不変の原則
純粋なリファクタリングであれば、**テストコードは変更されないはず**である。
- テストが変更されている場合、それは動作変更の兆候
- 例外: テストファイルの移動、import パスの変更のみ
- テストの追加は許容されるが、既存テストの修正は要注意
### 省略禁止
- 「他多数」「以下同様」などで省略しない
- 変更したファイル・関数・参照箇所をすべて列挙
- 各変更箇所で before/after の差分を具体的に示す
- 100 箇所の変更があれば 100 箇所すべて報告
── 07 CI|CI が充実しているからこそできる
Nature では昔から E2E テストを大事にしてきました。
http.Handler にリクエストを渡し、レスポンスと副作用を確認するテストです。
この積み上げてきた資産があるからこそ、AI に任せても安心して自動マージできる。
── 08 Results|お値段は?
6 月の API 利用料|claude-refactor-auto-merge · 2026 年 6 月|USD 74.48 合計
$1.35:自動マージ 1 件あたりの API 費用(1 ドル 150 円で約 200 円)
247 件:約 3 か月半で自動マージした PR(月 60〜80 件のペースで定着)
約 3 割:チームがマージした PR のうち、この AI レビューを経由した割合
── 09 Closing|嬉しかったこと
バックエンドチーム全員が使ってくれている。
機能追加の前後にリファクタリングを挟み、周辺を美しくしていく文化。
── 10 Takeaway|このスキルの全文はこちら
https://gist.github.com/mash/24cd38240d7f1d968cd1d95f5498c1eb
* @maaash がつぶやいています
── We're hiring|一緒につくる仲間を募集しています
Nature では、AI と一緒に開発するための足場を、チームで試行錯誤しながら作っています。
少しでも気になった方は、まずはカジュアル面談からお気軽にどうぞ。
https://nature.global/careers/ · Culture Deck · @maaash