10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

Cursor熱いですね!
自分のチームでも申請すれば誰でもCursorを使えるくらい効果を期待されているエディタですし、実際にこれまでの開発よりも何倍も早く実装が完了できるようになりました。
今回はチームでよりCursorを使いこなせるように、基本であるRuleファイルについて解説する記事を作成しました。

Cursorってなに?

Cursorは、VSCodeをフォークして作られたAIコーディング特化のエディタです。普通のVSCodeとほとんど同じ見た目・操作感なんですが、

  • Cmd + K(Ctrl + K)で選択中のコードに対して「これリファクタして」と頼めたり
  • Cmd + L(Ctrl + L)でサイドバーのチャットボックスを開いて質問できたり
  • プロジェクト全体の文脈を理解した上で修正案を出してくれたり

といった、まるでペアプロしてくれるかのような使い方ができます。

VSCodeでAI拡張を入れるのとは一味違って、Cursorでは最初からAI前提で作られてるのが魅力。コードの補完や生成だけじゃなくて、設計の相談やバグ修正まで一緒にやってくれる、そんな頼れる相棒的な存在です。

Cursor Ruleってなに?

Cursorには「ルール(Rule)」という機能があって、これがAIに指示を与えるためのテンプレートのような役割を果たします。

例えば、

  • 「変数名は必ずスネークケースにして」
  • 「ユニットテストはRSpecで書いてね」
  • 「コメントは日本語で書いて」

といったプロジェクトごとのお作法やスタイルガイドを、AIに毎回手で説明しなくても、このルールとして記述しておけば勝手に守ってくれるようになる、という仕組みです。

ルールはMarkdownベースの.mdcファイルとして定義します。

---
description: APIルール
globs: "app/controllers/api/**/*.rb"
alwaysApply: false
---

- コントローラーの命名は複数形にする
- パラメータチェックには strong_parameters を使う

上の例だと、「app/controllers/api/配下のファイルを編集してるときだけこのルールを適用する」という感じになります。

Rule Typeってなに?

Cursor 0.47.5から追加された機能で、「このルールをAIにいつ渡すか?」っていう適用タイミングの設定です。ざっくり4種類あります:

1. Always(常に適用)

  • どんなチャットや編集でも毎回必ず適用されるルール
  • 基本的なコーディングスタイル、プロジェクト全体のポリシーに向いてる
  • .mdcファイルのYAMLに alwaysApply: true を設定
---
description: 全体に適用されるルール
alwaysApply: true
---

2. Auto Attached(特定パターンで自動適用)

  • 対象ファイルが globs にマッチするときだけAIに適用される
  • 例えば globs: "frontend/**" にしておけば、フロントエンドコードだけに適用
---
description: フロント用
globs: "frontend/**"
---

自分はAuto Attachedが最も使用されるかと思っていて、以下のサンプルのように細かく指定していけばルールが肥大化することなく、かなり重宝しています。
また、コンテナで開発をしている場合、コマンドの実行方法もコンテナ内で実行しなくてはいけないなどの制約も書いておけば、ルールに沿ってコマンド実行してくれます。

spec/の場合は〜

image.png

controller/の場合は~
image.png

*.jbの場合は~

image.png

3. Agent Requested(AIが必要に応じて使う)

  • 常に渡されるわけじゃなく、AIが「今このルール使ったほうがいいな」と判断したときだけ使われるルールです
  • description が超重要(これを読んでAIがルールを選ぶ)になってきます
  • 汎用的な補足ルールとか、チーム用Tipsにおすすめです
---
description: セキュリティチェックが必要なときに読むやつ
globs: "**/*.rb"
---

4. Manual(明示的に使うときだけ)

  • チャットで @ルール名 を書いたときだけ使われる
  • alwaysApply: false かつ globs なし、description なしのルールが該当
  • 例外的な状況や、たまにしか使わないノウハウにぴったり
---
---

- この手順はCIサーバー上でしか使わないので、必要なときに手動で呼び出してね

例えばこんな感じです。
image.png

おわりに

Cursorのルール機能を使えば、プロジェクトに合わせたAIの挙動を細かくコントロールできます。特にRule Typeを使い分けることで、

  • 常に守ってほしいこと(Always)
  • 特定ディレクトリでだけ必要なルール(Auto Attached)
  • 必要なときにAIが自動で使ってくれる(Agent Requested)
  • 手動で呼び出す特殊ルール(Manual)

のように整理できて、無駄なくスマートにAIを活用できます。
感覚的にはRuleなしだとほぼ人間の手直しが必要になるが、Ruleを整備すれば多くの実装がAIで完結できるようになります。

「うちのプロジェクト、AIに任せるにはちょっと癖があるんだよな〜」っていう場合ほど、このルール機能は真価を発揮します。まずは .cursor/rules/.mdc ファイルを1つ作ってみて、Cursorの「New Cursor Rule」コマンドから試してみてください。ルールを育てていくと、AIとの開発がもっと自分たちらしく、もっと楽になりますよ!

余談

ここまでCursorの話をしておいてですが、自分はRoo Codeの方を頻繁に使っています。
Roo Codeの場合は.roo/の配下に同じようにmd形式のルールファイルを作成することができ、モードごとに管理することができます。こちらも気になる方はぜひ使ってみてください!

  • モード

image.png

  • Codeモードの場合は.roo/rules-codeに作成

image.png

10
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?