Upgrade to Pro — share decks privately, control downloads, hide ads and more …

「純粋リファクタリング」か AI に判断させて 自動マージする

「純粋リファクタリング」か AI に判断させて 自動マージする

「純粋リファクタリング」を 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

Avatar for mash

mash

July 02, 2026

More Decks by mash

Other Decks in Programming

Transcript

  1. N A T U R E E N G I

    N E E R I N G · L T 「純粋リファクタリング」か AI に判断させて 自動マージする 大塚 ·  @maaash www.nature.global 本資料の一部または全部を、Nature株式会社の許可なしに、複製、転載することを禁じます。
  2. 01 About 自己紹介 Nature CTO の大塚 (@maaash ) です。 Nature

    は「自然との共生をドライブする」というミッションのもと、 スマートホームやエネルギーマネジメントの IoT プロダクトをつくっています。 www.nature.global
  3. 03 What to check レビューでは、何を見るか 変更にはいくつかの目的があり、レビューで見るポイントも違う。 Pull Request テンプレートには昔から以下の選択肢を入れていた。 ☐

    リファクタリングのみ ☐ それ以外のコード変更を含む * これらは混ぜないこと B E H A V I O R C H A N G E S 挙動が変わる PR 妥当な設計か、狙った課題を解決するか、インフラ・ DB・性能に響かないか。 R E FA C T O R I N G リファクタリングの PR 適切な命名になったか、結合が減ったか、一貫性がある か。 変更の前後で挙動が等価か。 www.nature.global
  4. 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 → 自動マージせず、人間レビューを要 求 ✎ どう判定したかをコメントとして残す www.nature.global
  5. 06 Skill Skill の中身 ① マインドセット SKILL.md ## マインドセット **あなたは懐疑的な第三者レビュアーである。** -

    「純粋リファクタリング」という主張を疑え - 一見同じに見えるコードでも動作の違いを探せ - 「たぶん大丈夫」ではなく「証明できる」レベルで検証せよ - 1 つでも動作変更があれば、それは純粋リファクタリングではない www.nature.global
  6. 06 Skill Skill の中身 ② 実行手順 SKILL.md ## 実行手順 ### 0.

    コンテキスト確認 ### 1. 差分取得 ### 2. 各ファイルの変更を評価 各変更について以下を判定: #### 純粋リファクタリング ✅ | 種別 | 説明 | 注意点 | | ---------------- | ------------------------ | -------------------------- | | 移動 | コードを別の場所へ | そのまま移動、一字一句同じ | | リネーム | シンボル名変更 | 全箇所一貫して | | 抽出 | 関数/メソッド抽出 | 動作維持 | | インライン | 関数/メソッド展開 | 動作維持 | | 構成変更 | ファイル/パッケージ再編 | 依存関係注意 | | 型変更 | 型エイリアス、ラッパー型 | アクセサが同値を返すこと | | アクセス方法変更 | フィールド → メソッド | 同値を返すこと | www.nature.global
  7. 06 Skill Skill の中身 ③ 原則 SKILL.md ### テストコード不変の原則 純粋なリファクタリングであれば、**テストコードは変更 されないはず**である。

    - テストが変更されている場合、それは動作変更の兆候 - 例外: テストファイルの移動、import パスの変更の み - テストの追加は許容されるが、既存テストの修正は要注 意 SKILL.md ### 省略禁止 - 「他多数」 「以下同様」などで省略しない - 変更したファイル・関数・参照箇所をすべて列挙 - 各変更箇所で before/after の差分を具体的に示す - 100 箇所の変更があれば 100 箇所すべて報告 www.nature.global
  8. 08 Results お値段は? 6月の API 利用料 claude-refactor-auto-merge · 2026 年6

    月 USD 74.48 合計 $0 $2 $4 $6 $8 $10 $12 $14 6/01 6/07 6/13 6/19 6/25 $1.35 自動マージ1件あたりの API 費用 (1ドル150円で約200円) 247 件 約3か月半で自動マージしたPR (月60〜80件のペースで定着) 約3割 チームがマージしたPRのうち このAIレビューを経由した割合 www.nature.global
  9. W E ' R E H I R I N

    G 一緒につくる仲間を 募集しています Nature では、AI と一緒に開発するための足場を、チームで試行錯誤しながら作っていま す。 少しでも気になった方は、まずはカジュアル面談からお気軽にどうぞ。 nature.global / Culture Deck / @maaash www.nature.global