無料入門ガイド

Cursor Rules設定で自分専用AI開発環境を作る方法

·18 min read·Nexeed Lab
Cursor入門ガイド

Cursorの.cursorrules設定ファイルを使い、プロジェクトごとにAIの振る舞いをカスタマイズする方法を実践的に解説します。

Cursor Rules設定で自分専用AI開発環境を作る方法

AIアシスタントが「あなたの開発スタイル」を覚えてくれたら?

Cursorを使い始めて、こんな経験はないでしょうか。

「毎回『TypeScriptで書いて』と伝えなければいけない」「コードのインデントスタイルがプロジェクトのルールと違う」「AIが生成するコードに、うちのチームでは使わないパターンが混じっている」。

こういった小さなストレスが積み重なると、AIアシスタントの恩恵を十分に受けられなくなってしまいます。

Cursorには、こうした問題をすべて解決できる「Cursor Rules」という強力な仕組みがあります。 .cursorrulesファイルや、より新しい.cursor/rules/ディレクトリを使うことで、プロジェクトごと・言語ごとにAIの振る舞いを細かくカスタマイズできます。

この記事では、Cursor Rulesの基本的な仕組みから、実際に使える設定例、チームでの運用方法まで、ステップバイステップで解説します。 これを読み終えれば、あなただけの「自分専用AI開発環境」が完成します。


Cursor Rulesとは何か?仕組みを理解する

.cursorrulesファイルの役割

Cursor Rulesとは、Cursorに対して「このプロジェクトでどのように振る舞ってほしいか」を定義するテキストファイルです。

CursorのAIは、コードを生成したり補完したりする際に、このルールファイルを自動的に参照します。 つまり、一度設定しておけば毎回同じ指示を出す必要がなくなります。

2種類のルール設定方法

Cursorでは現在、2つの方法でルールを設定できます。

方法①: .cursorrules(従来型・プロジェクト単位)

  • プロジェクトルートに.cursorrulesファイルを1つ作成する
  • シンプルで扱いやすく、小〜中規模プロジェクトに向いている
  • すべてのルールが1ファイルに集約される

方法②: .cursor/rules/(新形式・モジュール型)

  • .cursor/rules/ディレクトリ内に複数の.mdcファイルを作成する
  • ファイルごとに適用条件(glob パターン)を指定できる
  • 大規模プロジェクトやモノレポ構成に特に強い
  • Cursor公式ドキュメントでは、こちらが推奨されている

グローバルルールとプロジェクトルールの違い

ルールには「グローバルルール」と「プロジェクトルール」の2階層があります。

グローバルルールは、Cursorの設定画面(Cursor Settings > General > Rules for AI)から設定します。 すべてのプロジェクトに共通して適用されるため、自分のコーディングスタイルや好みの言語設定など、普遍的なルールを書くのに適しています。

プロジェクトルールは、プロジェクトのルートディレクトリに.cursorrulesまたは.cursor/rules/として配置します。 そのプロジェクト固有の技術スタック、命名規則、ドメイン知識などを定義します。 チームでGitリポジトリに含めて共有するのが一般的な使い方です。


基本的な.cursorrulesファイルを作ってみよう

ファイルの作成場所

まずはシンプルな.cursorrulesファイルから始めましょう。 プロジェクトのルートディレクトリに、以下の場所に配置します。

my-project/
├── .cursorrules       ← ここに作成
├── src/
│   └── index.ts
├── package.json
└── tsconfig.json

Next.js + TypeScriptプロジェクト向けの設定例

以下は、Next.js + TypeScriptプロジェクト向けの実践的な.cursorrulesファイルの例です。

# プロジェクト概要
このプロジェクトはNext.js 14(App Router)とTypeScriptを使用したWebアプリケーションです。

# 技術スタック
- フレームワーク: Next.js 14 (App Router)
- 言語: TypeScript(strictモード有効)
- スタイリング: Tailwind CSS
- 状態管理: React Query(サーバー状態)+ Zustand(クライアント状態)
- テスト: Vitest + Testing Library

# コーディング規則

## TypeScript
- `any`型の使用は禁止。不明な型には`unknown`を使用すること
- 型定義は`interface`より`type`を優先する
- 非null断言演算子(!)の使用を避け、適切な型ガードを使うこと
- exportする関数・型には必ずJSDocコメントを付けること

## React・Next.js
- コンポーネントは必ず関数コンポーネントで記述する
- Server Componentsをデフォルトとし、必要な場合のみ'use client'を付与する
- データフェッチはServer Componentsで行い、クライアントへの受け渡しはpropsを使う
- コンポーネントファイル名はPascalCase(例: UserCard.tsx)
- ユーティリティ関数ファイル名はcamelCase(例: formatDate.ts)

## ファイル構成
- ページコンポーネント: app/(Next.js App Router構成)
- 共通コンポーネント: components/
- カスタムフック: hooks/
- 型定義: types/
- ユーティリティ: lib/

## インポート順序
1. Reactおよびサードパーティライブラリ
2. Next.jsモジュール
3. 内部モジュール(@/エイリアスを使用)
4. 型のみのインポート(import type)

# コミュニケーション
- コードの説明は日本語で行うこと
- エラーの原因と解決策を具体的に説明すること
- 複数の実装方法がある場合はトレードオフを説明すること

これだけの設定を入れておくだけで、Cursorは毎回これらのルールを考慮した上でコードを生成・提案してくれます。


.cursor/rules/を使った高度なモジュール型設定

なぜモジュール型が強力なのか

大規模なプロジェクトや、フロントエンド・バックエンドが混在するモノレポでは、.cursor/rules/ディレクトリを使ったモジュール型設定が特に効果的です。

この方式では、.mdc(Markdown with Cursor metadata)形式のファイルを使い、どのファイルに対してどのルールを適用するかをglobパターンで細かく指定できます。

ディレクトリ構成例

my-project/
├── .cursor/
│   └── rules/
│       ├── general.mdc          # 全ファイルに適用する共通ルール
│       ├── typescript.mdc       # .ts/.tsxファイルへのルール
│       ├── react-components.mdc # Reactコンポーネント向けルール
│       ├── api-routes.mdc       # APIルート向けルール
│       └── testing.mdc          # テストファイル向けルール
├── src/
└── package.json

.mdcファイルの記述形式

.mdcファイルは、YAMLフロントマターとMarkdown本文で構成されます。 以下はTypeScript向けのルールファイルの例です。

---
description: TypeScriptファイルに適用するコーディング規則
globs:
  - "**/*.ts"
  - "**/*.tsx"
alwaysApply: false
---

# TypeScript コーディング規則

## 型安全性
- `any`型は使用禁止。代わりに`unknown`を使い、型ガードで絞り込むこと
- `as`によるキャストは最終手段とし、使用する場合はコメントで理由を明記する
- `!`(非null断言)は使用しない。`??`や`?.`を活用すること

## 関数の書き方
- 純粋関数はアロー関数で記述する
- 副作用を伴う関数はfunction宣言で記述し、明確に識別できるようにする
- 引数が3つ以上の場合はオブジェクト形式にまとめること

## エラーハンドリング
- try-catchのcatch節では必ず`error`の型チェックを行うこと
- カスタムエラークラスを定義して、エラーの種類を明確にすること

## 命名規則
- 変数・関数: camelCase
- クラス・型・インターface: PascalCase
- 定数: UPPER_SNAKE_CASE
- プライベートなクラスメンバー: _camelCase(アンダースコアプレフィックス)

globsフィールドに指定したパターンにマッチするファイルを開いているときだけ、そのルールが自動的に適用されます。 alwaysApply: trueにすると、ファイルに関わらず常にルールが適用されます。


実際に効果が出るルールの書き方のコツ

コツ①: プロジェクトの「なぜ」を伝える

単純な「こうしてください」という指示より、「なぜそうするのか」という背景を添えると、AIはより適切な判断をしてくれます。

悪い例:

- Reduxを使わないこと

良い例:

- 状態管理にReduxは使わないこと。このプロジェクトではZustandを採用しており、
  シンプルなAPIと軽量さを重視している。グローバル状態が必要な場合は
  useStoreフックを使うこと

コツ②: 具体的なコードサンプルを含める

ルールファイル内にコードサンプルを直接書くことができます。 「このパターンで書いてほしい」という意図が正確に伝わります。

## API呼び出しのパターン

以下のパターンを使ってAPIを呼び出すこと:

// ✅ 正しい例
const fetchUser = async (userId: string): Promise<User> => {
  const response = await apiClient.get(`/users/${userId}`);
  return userSchema.parse(response.data); // Zodでバリデーション
};

// ❌ 避けるべき例
const fetchUser = async (userId: string) => {
  const response = await fetch(`/api/users/${userId}`);
  return response.json(); // 型検証なし
};

コツ③: ネガティブルールより、ポジティブルールを優先する

「〜しないこと」というルールより「〜すること」というルールの方が、AIは適切な代替案を提示しやすくなります。 もしネガティブルールを書く場合は、必ずポジティブな代替案もセットで書くようにしましょう。

コツ④: ルールは定期的に見直す

プロジェクトが成長するにつれて、ルールも進化させる必要があります。 「このAIの提案は毎回直している」と感じたら、それはルールに追加すべきサインです。 チームのレトロスペクティブで「Cursor Rulesの見直し」をアジェンダに加えるのも効果的です。


チームでCursor Rulesを共有・運用する

Gitリポジトリに含めて共有する

Cursor Rulesの最大のメリットの1つは、Gitリポジトリに含めてチーム全員で共有できることです。 .cursorrules.cursor/rules/ディレクトリをコミットするだけで、チーム全員が同じルールのもとでAIアシスタントを使えるようになります。

.gitignoreでCursor関連ファイルを除外していないかを確認しましょう。

# .gitignoreの確認
cat .gitignore | grep cursor

# .cursorrulesをGitに追加する
git add .cursorrules
git commit -m "chore: add Cursor Rules for project coding standards"

# .cursor/rules/ディレクトリを追加する場合
git add .cursor/rules/
git commit -m "chore: add modular Cursor Rules"

チームルールとして整備するためのテンプレート

チームで運用する場合、以下の構成をベースにすることをおすすめします。

# [プロジェクト名] Cursor Rules

## プロジェクト概要
(プロジェクトの目的・技術スタック・アーキテクチャを簡潔に)

## 絶対に守るルール(Must)
(チームの合意で決定した、例外なく守るべきルール)

## 推奨するパターン(Should)
(基本的に推奨するが、合理的な理由があれば例外を認めるルール)

## 使用しない技術・パターン(Must Not)
(禁止事項とその理由、代替案)

## よく使うコードパターン
(プロジェクト固有のよく使うパターンのサンプル)

## ドメイン知識・用語集
(AIが正確に理解すべきビジネスロジック・ドメイン固有の用語)

## 参考資料
(社内ドキュメント・設計書・ADRへのリンク)

ルールの品質を上げるためのプロセス

Cursor Rulesは「書いたら終わり」ではなく、継続的に改善していくものです。 以下のサイクルを回すことで、チームの開発効率がどんどん向上していきます。

① 問題を発見する: AIが繰り返し「修正が必要な提案」をしてくることに気づく ② ルールに追加する: その問題を防ぐためのルールを.cursorrulesに追記する ③ チームでレビューする: PRに含めてコードレビューと同様のプロセスで承認を得る ④ 効果を測定する: 同じ種類の修正が減ったかを確認する ⑤ また①に戻る: 継続的な改善ループを続ける


よくあるトラブルと解決方法

ルールが反映されていないように感じる

Cursorを再起動するか、チャットウィンドウを新しく開くことで解決するケースが多いです。 .cursorrulesの文法エラー(特にYAMLフロントマターの.mdcファイル)が原因のこともあります。

また、ルールファイルが長すぎるとコンテキストウィンドウを圧迫し、重要なルールが無視されることがあります。 一般的に、.cursorrulesファイルは500〜1000行以内に収めることが推奨されています。

特定のファイルだけルールを変えたい

.cursor/rules/のモジュール型設定に移行し、globsパターンでファイルごとにルールを分けるのが最善策です。 たとえば、テストファイルだけに別のルールを適用したい場合は以下のように設定します。

---
description: テストファイル向けの規則
globs:
  - "**/*.test.ts"
  - "**/*.spec.ts"
  - "**/__tests__/**/*.ts"
alwaysApply: false
---

# テストコーディング規則

## テストの構造
- AAA(Arrange・Act・Assert)パターンで記述すること
- テスト名は「〜の場合、〜であること」の形式で日本語で書くこと
- 1つのテストケースで1つの振る舞いだけを検証すること

## モック
- vi.mock()はファイルの先頭で宣言すること
- 外部APIの呼び出しは必ずモックすること
- ファイルシステムへのアクセスはモックするか、tmpディレクトリを使うこと

AIがルールを無視しているように見える

ルールの書き方が曖昧すぎる可能性があります。 「なるべく〜してください」「できれば〜」という表現より、「必ず〜すること」「〜は禁止」という断定的な表現の方がAIは従いやすいです。

また、矛盾するルールが複数存在すると、AIが混乱して従わなくなることがあります。 ルール同士の一貫性を定期的に確認しましょう。


まとめ:あなただけのAI開発環境を育てよう

Cursor Rulesは、「AIに毎回同じ説明をする」という繰り返しの手間をゼロにしてくれる、非常に強力な仕組みです。

この記事でお伝えしたポイントを整理します。

  • .cursorrules(従来型): シンプルで始めやすく、小〜中規模プロジェクトに最適
  • .cursor/rules/(モジュール型): ファイルタイプごとにルールを分けられ、大規模プロジェクトに強い
  • グローバルルール: 自分の普遍的なコーディングスタイルをCursor設定に書く
  • 「なぜ」を含めて書く: 背景や理由を書くとAIがより賢く動く
  • Gitで共有する: チーム全員が同じルールで開発できる
  • 継続的に改善する: 「修正した」と感じたら、それをルールに追加するサイクルを回す

最初から完璧なルールを作ろうとする必要はありません。 まずは今日から、5〜10行の簡単な.cursorrulesファイルを作ることから始めてみてください。 使いながら少しずつ育てていくことで、あなたのプロジェクトに完璧にフィットした「自分専用のAI開発環境」が完成します。

Cursorの機能についてさらに詳しく知りたい方は、Cursor公式ドキュメントを合わせてご参照ください。


参考資料

この記事をシェア

XFacebookはてブ
Cursor Rules設定で自分専用AI開発環境を作る方法 | AI活用ラボ