Cursor のカスタムルール設定 `.cursorrules` 徹底解説と実践例

AI を活用したコード生成が当たり前となった現代、開発者の生産性を左右するのは AI をいかに自分好みに調教できるかにかかっています。Cursor の .cursorrules
ファイルは、まさにその調教のための秘密兵器です。
この記事では、Cursor のカスタムルール設定について初心者の方でも理解できるよう、基礎から実践的な活用法まで詳しく解説いたします。記事を読み終える頃には、あなたのプロジェクトに最適化された AI アシスタントを手に入れることができるでしょう。
背景
.cursorrules
ファイルとは何か
.cursorrules
ファイルは、Cursor エディタで AI によるコード生成やサジェストをカスタマイズするための設定ファイルです。このファイルを配置することで、AI に対してプロジェクト固有のルールや好み、コーディング規約を伝えることができます。
Cursor の AI は非常に優秀ですが、デフォルトの状態ではあなたのプロジェクトの特殊な要件や、チームのコーディングスタイルを完全に理解していません。.cursorrules
ファイルは、この gap を埋める重要な役割を果たします。
以下の図は、.cursorrules
ファイルがどのように AI の動作に影響を与えるかを示しています。
mermaidflowchart TD
user[開発者] -->|コード入力| cursor[Cursor AI]
rules[.cursorrules] -->|ルール適用| cursor
cursor -->|カスタマイズされた提案| output[最適化されたコード生成]
cursor -->|デフォルト提案| default[標準的なコード生成]
style rules fill:#e1f5fe
style output fill:#c8e6c9
style default fill:#ffcdd2
図で理解できる要点:
.cursorrules
ファイルの有無で AI の出力品質が大きく変わる- カスタムルールにより、プロジェクト要件に特化したコード生成が可能
Cursor におけるカスタムルール機能の位置づけ
Cursor は GitHub Copilot や CodeWhisperer といった他の AI コード補完ツールと比較して、よりカスタマイズ性に優れた設計になっています。特に .cursorrules
ファイルによる細かな調整機能は、Cursor の大きな差別化要因の一つです。
# | 機能 | Cursor | GitHub Copilot | CodeWhisperer |
---|---|---|---|---|
1 | カスタムルール設定 | ✅ (.cursorrules) | ❌ | ❌ |
2 | プロジェクト理解 | ✅ 高精度 | 🔺 中程度 | 🔺 中程度 |
3 | コンテキスト活用 | ✅ 全ファイル | 🔺 近傍ファイル | 🔺 現在ファイル |
4 | チーム規約対応 | ✅ 完全対応 | ❌ | ❌ |
この表から分かるように、Cursor は他のツールでは実現できない柔軟なカスタマイズを提供しています。
従来のコード補完との違い
従来の IDE のコード補完は、主に構文やライブラリの API を基にした機械的な補完でした。一方、Cursor の AI 補完は文脈を理解し、より人間らしいコード生成を行います。
mermaidsequenceDiagram
participant dev as 開発者
participant traditional as 従来のIDE
participant cursor as Cursor AI
dev->>traditional: 関数名入力
traditional->>dev: 構文補完のみ
dev->>cursor: 同じ関数名入力
Note over cursor: .cursorrules参照
cursor->>dev: コンテキスト理解した<br/>カスタム補完
補足:従来の補完は構文レベルでの支援に留まりますが、Cursor は意図を理解したコード生成が可能です。
課題
デフォルト設定の限界
Cursor のデフォルト設定は汎用的に作られているため、以下のような限界があります。
プロジェクト特有の制約への対応不足
- 特定のライブラリやフレームワークの使用制限
- セキュリティ要件に基づく実装パターンの制約
- パフォーマンス要件による実装方針の違い
コーディングスタイルの不一致
- チーム独自の命名規則
- インデントやフォーマットの好み
- コメントの記述ルール
プロジェクト固有の要件への対応
実際の開発現場では、以下のような要件が存在することが多いです。
typescript// 例:レガシーシステムとの互換性要件
// jQuery を使わざるを得ない環境
// 特定のブラウザ対応が必要
// 社内ライブラリの使用義務
これらの要件は一般的な AI モデルでは理解が困難で、明示的にルールとして伝える必要があります。
開発効率の向上ニーズ
現代の開発では、以下のような効率化が求められています。
# | 従来の課題 | 改善後の理想状態 |
---|---|---|
1 | コードレビューでの指摘が多い | 最初からチーム規約に準拠 |
2 | ライブラリ選択で迷う時間が長い | プロジェクト標準ライブラリを自動提案 |
3 | 一貫性のないコード実装 | 統一されたパターンでの実装 |
解決策
.cursorrules
ファイルの基本構造
.cursorrules
ファイルは、プレーンテキスト形式で Cursor AI への指示を記述します。基本的な構造は以下のとおりです。
ini# プロジェクト情報
このプロジェクトは [フレームワーク名] を使用した [アプリケーション種別] です。
# コーディング規約
- [具体的なルール1]
- [具体的なルール2]
- [具体的なルール3]
# 禁止事項
- [避けるべき実装パターン]
- [使用禁止ライブラリ]
# 推奨事項
- [推奨するライブラリ]
- [推奨する実装パターン]
ファイル構成の基本となるセクションを図で示します。
mermaidflowchart TB
rules[.cursorrules ファイル]
rules --> meta[メタ情報]
rules --> coding[コーディング規約]
rules --> forbidden[禁止事項]
rules --> recommend[推奨事項]
meta --> framework[フレームワーク指定]
meta --> purpose[プロジェクト目的]
coding --> naming[命名規則]
coding --> format[フォーマットルール]
coding --> structure[構造ルール]
style rules fill:#e3f2fd
style meta fill:#fff3e0
style coding fill:#e8f5e8
設定方法とファイル配置
.cursorrules
ファイルの配置方法は非常にシンプルです。プロジェクトのルートディレクトリに配置するだけで自動的に Cursor が認識します。
基本的な配置手順
bash# プロジェクトルートディレクトリに移動
cd your-project-root
# .cursorrules ファイルを作成
touch .cursorrules
ファイル配置の優先順位
markdown1. カレントディレクトリの .cursorrules
2. 親ディレクトリの .cursorrules
3. ホームディレクトリの .cursorrules
複数のファイルが存在する場合、より具体的(深い階層)なルールが優先されます。
効果的なルール記述方法
効果的な .cursorrules
ファイルを作成するためには、以下の点を意識することが重要です。
明確で具体的な指示
arduino❌ 悪い例: "良いコードを書いてください"
✅ 良い例: "関数は最大20行以内に収め、単一責任の原則に従ってください"
実例を含めた説明
vbnet# エラーハンドリング規約
try-catch ブロックを使用する際は、以下のパターンに従ってください:
```typescript
try {
const result = await apiCall();
return result;
} catch (error) {
logger.error('API呼び出しエラー:', error);
throw new CustomError('処理に失敗しました', error);
}
```
具体例
TypeScript プロジェクト向けルール設定
TypeScript プロジェクトでは、型安全性とコードの品質を重視したルール設定が効果的です。
以下は実際のプロジェクトで使用されている設定例です。
typescript// .cursorrules
# TypeScript プロジェクト設定
# 基本方針
このプロジェクトは TypeScript + Next.js を使用したフルスタック Web アプリケーションです。
型安全性を最優先とし、保守性の高いコードの作成を目指します。
# 型定義ルール
- すべての関数に明示的な戻り値の型を指定する
- any 型の使用は禁止
- unknown 型を適切に活用する
- インターフェースはPascalCaseで命名する
型安全性を重視した関数定義例
typescript// 推奨される関数の型定義
interface UserData {
id: string;
name: string;
email: string;
}
const fetchUser = async (
id: string
): Promise<UserData | null> => {
try {
const response = await fetch(`/api/users/${id}`);
if (!response.ok) return null;
return (await response.json()) as UserData;
} catch (error) {
console.error('ユーザー取得エラー:', error);
return null;
}
};
エラーハンドリングパターン
typescript// 統一されたエラーハンドリング
class AppError extends Error {
constructor(
public message: string,
public code: string,
public statusCode: number = 500
) {
super(message);
this.name = 'AppError';
}
}
React 開発向けルール設定
React プロジェクトでは、コンポーネントの設計原則とパフォーマンス最適化に関するルールが重要です。
typescript// .cursorrules に追加する React 固有設定
# React コンポーネント規約
- 関数コンポーネントを使用し、React.FC は使わない
- Props の型定義は interface で行う
- useEffect の依存配列は必ず指定する
- カスタムフックは use から始める命名にする
コンポーネント実装パターン
typescript// Props インターフェースの定義
interface ButtonProps {
children: React.ReactNode;
onClick: () => void;
variant?: 'primary' | 'secondary';
disabled?: boolean;
}
// 関数コンポーネントの実装
const Button = ({
children,
onClick,
variant = 'primary',
disabled = false,
}: ButtonProps) => {
return (
<button
className={`btn btn-${variant}`}
onClick={onClick}
disabled={disabled}
>
{children}
</button>
);
};
export default Button;
カスタムフックの実装例
typescript// データ取得用カスタムフック
const useUserData = (userId: string) => {
const [user, setUser] = useState<UserData | null>(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState<string | null>(null);
useEffect(() => {
const fetchData = async () => {
try {
setLoading(true);
const userData = await fetchUser(userId);
setUser(userData);
} catch (err) {
setError(
err instanceof Error
? err.message
: '不明なエラー'
);
} finally {
setLoading(false);
}
};
fetchData();
}, [userId]);
return { user, loading, error };
};
Node.js バックエンド向けルール設定
Node.js バックエンド開発では、セキュリティとパフォーマンスを重視したルール設定が必要です。
javascript// .cursorrules に追加する Node.js 設定
# Node.js バックエンド規約
- Express.js を使用し、ルーティングは Router() で分離する
- 環境変数は dotenv で管理し、型安全性を確保する
- データベースアクセスには Prisma ORM を使用する
- ログ出力には winston ライブラリを使用する
Express アプリケーションの基本構造
javascript// app.js - メインアプリケーション
const express = require('express');
const helmet = require('helmet');
const cors = require('cors');
const rateLimit = require('express-rate-limit');
const app = express();
// セキュリティミドルウェア
app.use(helmet());
app.use(
cors({
origin:
process.env.ALLOWED_ORIGINS?.split(',') ||
'http://localhost:3000',
credentials: true,
})
);
// レート制限
const limiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15分
max: 100, // 最大100リクエスト
});
app.use(limiter);
環境変数の型安全管理
typescript// config/environment.ts
interface EnvironmentConfig {
PORT: number;
NODE_ENV: 'development' | 'production' | 'test';
DATABASE_URL: string;
JWT_SECRET: string;
}
const getConfig = (): EnvironmentConfig => {
const config = {
PORT: Number(process.env.PORT) || 3000,
NODE_ENV:
(process.env.NODE_ENV as
| 'development'
| 'production'
| 'test') || 'development',
DATABASE_URL: process.env.DATABASE_URL || '',
JWT_SECRET: process.env.JWT_SECRET || '',
};
// 必須環境変数の検証
if (!config.DATABASE_URL || !config.JWT_SECRET) {
throw new Error('必須の環境変数が設定されていません');
}
return config;
};
export const env = getConfig();
個人的な好みとチーム開発のバランス
.cursorrules
ファイルは個人の好みを反映できる一方で、チーム開発では統一性も重要です。
以下の図は、効果的なルール設定のバランスを示しています。
mermaidflowchart LR
personal[個人の好み] --> balance[バランス点]
team[チーム統一性] --> balance
balance --> effective[効果的な設定]
personal --> styleOrg[コーディングスタイル]
personal --> tools[好みのツール]
team --> standards[チーム標準]
team --> maintainability[保守性]
effective --> productivity[生産性向上]
effective --> quality[コード品質]
個人向け設定例
markdown# 個人開発向け .cursorrules
# 優先事項
- 開発速度重視
- 実験的なライブラリの積極活用
- 個人的なコードスタイルの適用
# スタイル設定
- セミコロンは省略
- シングルクォート使用
- 関数型プログラミングスタイル推奨
チーム開発向け設定例
markdown# チーム開発向け .cursorrules
# 品質重視設定
- ESLint/Prettier 設定に厳密に従う
- 型安全性を最優先
- コードレビュー通過率を重視
# 禁止事項
- any 型の使用禁止
- console.log の本番コード混入禁止
- 未テストコードのコミット禁止
まとめ
.cursorrules
ファイルは、Cursor AI を自分のプロジェクトに最適化するための強力なツールです。初期設定に少し時間をかけることで、長期的に大幅な開発効率の向上が期待できます。
重要なポイントをまとめますと:
- 段階的な導入: まず基本的なルールから始めて、徐々に詳細化していく
- チームでの共有:
.cursorrules
ファイルをバージョン管理に含めてチーム全体で活用する - 定期的な見直し: プロジェクトの進化に合わせてルールを更新していく
適切に設定された .cursorrules
ファイルは、あなたの開発体験を大きく向上させることでしょう。ぜひ今日から活用を始めてみてください。
関連リンク
- review
今の自分に満足していますか?『持たざる者の逆襲 まだ何者でもない君へ』溝口勇児
- review
ついに語られた業界の裏側!『フジテレビの正体』堀江貴文が描くテレビ局の本当の姿
- review
愛する勇気を持てば人生が変わる!『幸せになる勇気』岸見一郎・古賀史健のアドラー実践編で真の幸福を手に入れる
- review
週末を変えれば年収も変わる!『世界の一流は「休日」に何をしているのか』越川慎司の一流週末メソッド
- review
新しい自分に会いに行こう!『自分の変え方』村岡大樹の認知科学コーチングで人生リセット
- review
科学革命から AI 時代へ!『サピエンス全史 下巻』ユヴァル・ノア・ハラリが予見する人類の未来