【新機能】Cursor v1.0で登場！コードレビュー機能BugBotを使ってみた

こんにちは！株式会社レアゾン・ホールディングスの櫻井です。
今回は先日のCurso v1.0で追加されたBugBotを使用してみて、とても便利だったので使い方・セットアップ方法の説明と感想をお伝えさせていただければと思います！

https://www.cursor.com/ja/changelog

## Cursor BugBotとは
<iframe width="560" height="315" src="https://www.youtube.com/embed/4Jw5yJgj3pQ?si=QEseMZrgoWFbKy_j" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
こちらの動画が非常に参考になりました。日本語翻訳対応になっているので、とても見やすいです。ぜひご覧ください！


>BugBot automatically reviews your PRs and catches potential bugs and issues. It uses the same AI that powers Cursor Agent to catch issues that humans might miss.

Cursorの[公式サイト](https://docs.cursor.com/bugbot)では上記のように説明されています。

BugBotはGitHubのPRを自動的にレビューし、バグを検出しコメントしてくれます。
Cursor Agentと同様のAIを搭載しているようです。

PRレビューというよりはバグの検知を行ってくれるツールです。

### セットアップ方法

Cursorの設定画面から↓の画像のようにGitHubとの接続が行えるようになってます。
こちらから設定が可能です。

![スクリーンショット 2025-06-14 19.28.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3980570/e1dd69fd-9d1c-4500-ad6f-93b6963d1cca.png)

また執筆日現在の情報では、早期アクセス特典となっておりセットアップ後1週間hBugBotを追加料金なしでお試しできるようです！
![スクリーンショット 2025-06-14 19.46.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3980570/725eca33-0f46-435e-897c-a0e63aee552f.png)

詳細なセットアップ方法は[公式サイトのドキュメント](https://docs.cursor.com/bugbot)を参照してください。


## その他の設定について
その他の設定がいくつかあるので簡単に紹介します。

Cursorの公式サイトからBugBotの設定ページへアクセスできます。
> Cursorの公式サイトからダッシュボード　→ BugBot

![スクリーンショット 2025-06-14 19.44.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3980570/18cbe848-6452-4368-a524-50c7ff4c5b5a.png)

### Only RunWhen Mentioned
BugBotはPRを作成した時点で、自動でレビューを行ってくれます。
こちらの設定をONにすることで、作成時点の自動レビュー機能を無効化することができます。
しかしPRに`bubbot run`とコメントをすることで、手動でレビューをお願いすることができます。

↓こんな感じです。（実際に使ってみた）
![スクリーンショット 2025-06-14 20.15.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3980570/e2f26d00-91c7-41b2-b6cd-c95bcbb42ace.png)

### Only Run Once
通常、BugBotはPRに対して何らかの変更があるたびに自動でレビューを行ってくれます。
しかし、この設定をONにすることで自動でのレビューがPR作成時の1度のみと限定されます。


## Cursor BugBotを実際に使ってみる

### まずはPR作る

<details><summary>今回作ったコード</summary>

```dart
import 'package:flutter/material.dart';

class UserNameWidget extends StatefulWidget {
  const UserNameWidget({super.key});

  @override
  State<UserNameWidget> createState() => _UserNameWidgetState();
}

class _UserNameWidgetState extends State<UserNameWidget> {
  String? userName;

  @override
  void initState() {
    super.initState();
    fetchUserName();
  }

  Future<void> fetchUserName() async {
    final result =
        await Future.delayed(const Duration(seconds: 2), () => "Haruki");
    setState(() {
      userName = result;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Text(userName ?? "Loading...");
  }
}

```
</details>


Flutterにて、非同期でユーザー名を取得。取得後にUI表示させるだけのシンプルなWidgetを作成しました。
そのままPRを作成します。

### レビューもらう
PR作成をしたタイミングで、↓画像のように自動でコメントをしてくれます。

![スクリーンショット 2025-06-16 17.12.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3980570/5ee56a40-e74d-42f6-ab49-974af6652576.png)

### 受けたレビューコメント

>Bug: Async State Update After Widget Dispose
The `fetchUserName()` method in `_UserNameWidgetState` calls `setState()` after its async operation completes without checking if the widget is still mounted. If the `UserNameWidget` is disposed before the 2-second delay finishes, this causes a "setState() called after dispose()" runtime exception. A `mounted` check should be added before calling `setState()`.

dispose済みのWidgetに対してsetState()してクラッシュするバグについて、コメントをしてくれています。


### 修正してみる
`Fix in Cursor`をクリックするとCursor上にプロンプトを入れてくれて、そのまま解決してくれます！

![スクリーンショット 2025-06-16 18.33.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3980570/8169fccb-f20c-479e-b3d5-6b7a11ccfd16.png)

再度pushする。

### 修正完了！
最終的にバグがなくなると、このようにコメントをしてくれます！

![スクリーンショット 2025-06-16 16.27.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3980570/fc7da2cc-cbca-4f03-a0d6-0e15281b5327.png)


### 感想　
実際にCursorのBugBotを使ってみて、大部分はGitHub Copilotなどのその他のコードレビューAIと体験はほぼ同じです。
最も異なるのはPRに対するコメントから`Fix in Cursor`を行えることでしょうか。

体感、GitHub Copilotよりもレビュー自体に若干時間がかかる印象でした。
とはいえ、レビューをしてもらっている間に他タスクを行うのが現代のワークフローだと思うので大きな問題ではなさそうです。

またBugBotは、GitHub CopilotやCodeRabbitよりもバグの検知をメインに行ってくれるみたいです。
そういう意味では他コードレビューAIとの棲み分けはできそうです。


## まとめ
先日のアップデートで、SlackとCursorの接続も行えるようになりましたね👀

https://docs.cursor.com/slack

まだあまり試せていないのですが、こちらも使用してみようと思います！
またSlackとCursorの接続機能も含めて、多くの作業がCursorで完結できるようになってきており、さらなる開発ワークフローの効率化が期待できますね！

BugBotもまだβ版ではあるので、今後にますます期待です！

## おまけ：今後のCursorの展望

先日行われていたCursorとClaude Codeのそれぞれの開発者同士の対談動画がアップロードされていました。

<iframe width="560" height="315" src="https://www.youtube.com/embed/BGgsoIgbT_Y?si=KJQnQXIfUYIGUm7Q" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

動画内では、CursorはAIモデルの進化を最大限に活用し、コード生成の自動化だけでなく、その次の段階である「生成されたコードの品質検証とレビューの効率化」に焦点を当てています。BugBotは、その大きなビジョンの中の具体的な一歩であると感じられます。


## **▼採用情報**
レアゾン・ホールディングスは、「世界一の企業へ」というビジョンを掲げ、「新しい"当たり前"を作り続ける」というミッションを推進しています。

現在、エンジニア採用を積極的に行っておりますので、ご興味をお持ちいただけましたら、ぜひ下記リンクからご応募ください。

https://recruit.reazon.jp/