😎

Cursorの.mdcでAIコーディング品質の統一化

に公開

0. はじめに

本記事はDAL Tech Blog Advent Calendar 2025として投稿しました。全ての記事は以下からご確認いただけます。

https://adventar.org/calendars/12288

現在、多くのプログラマーがコードを書く際に生成AIのサポートを受けてると思います。実際私も生成AIなしで仕事をするイメージはわきません。しかし、AIによるサポートを受けながら仕事をしていると、違和感を多々覚えます。それは、作成したコードや報告書の文体・構成に一貫性がなくなる点です。
もちろん、プロンプトで細かく指示を出せば、ある程度は問題を解消できます。とはいえ、毎回詳細な指示を書いたり、同じ内容をコピペしたりするのは手間がかかります。
そこで、今回Cursorと.mdcファイルを組み合わせることで生成AIの出力の品質を一定に保つ方法をご紹介します。チームで開発する際や個人で業務報告書を作成する際などの具体的な場面を交えながら分かりやすく解説していきます。

1. Cursorと.mdcファイルとは?

Cursor

Cursorは、VS Codeをベースにした AI 統合型エディタです。拡張機能や操作感はVS Codeとほぼ同じでありながら、プロジェクト全体をAIが把握し、コードの修正や生成を自動で行ってくれます。そのため、従来のエディタと同じ使い心地でありつつ、より高度な開発支援を受けられる点が大きな特徴です。
実際、私もCursorに移行する前はVS Codeを使用していましたが、特にストレスなくCursorに移行することができました。

.mdcファイル

.mdcファイルには、プロジェクト固有のルール──命名規則や分析手法など──を記述しておくことができます。AIはこのファイルを参照し、記載されたルールに従ってコードを自動生成するため、出力の一貫性を確保しやすくなります。

2. .mdc作成方法

  1. cursor右上にある歯車⚙を押す(Ctrl+Shift+J)
  2. Rules and Commandsを開く
  3. +Add rulesを選択

これだけです!

.mdcベストプラクティス

.mdcファイルはYAMLメタデータ→Markdown本文の二段構造で書きます。

推奨テンプレート

---
description: ○○に関するルール
globs: ["**/*.py"]
alwaysApply: true
---

# ○○に関するガイドライン

## 目的
このルールは〜〜を統一するために存在する。

## 実装ルール
- 〜〜してはならない
- 〜〜を必ず使用すること
- 優先するライブラリは〜〜

## コード例
<example>
# Good
...

# Bad
...
</example>

  1. 明確かつ具体的に書く
  2. 簡潔(500行未満推奨)
  3. 「ドキュメントとして読みやすい」構造にする
  4. コード例(Good/Bad)を載せる

3. 活用例

ここからは.mdcファイルが活きるケースをご紹介していきます。この中には共感できる部分も出てくるかもしれません。参考にしていただけると幸いです。

3-1. コーディングスタイル統一とチーム開発の一貫性

プロジェクトごとにコーディングスタイルや命名規則を統一することは、コードの可読性や保守性を高める上で必要不可欠です。しかし、実際には個人によって癖やスタイルが異なります。特にプロジェクトが長期化するほど、スタイルのバラつきが目に見えてきて、ストレスが増えます。
.mdcファイルに命名規則、コメントの書き方などプロジェクト特有のルールを記述することで、上記の問題を解決することができます。


【実装例】Python/データ分析用 .mdc ファイル

---
description: Pythonデータ分析・機械学習コードのベストプラクティス
globs: "**/*.py", "**/*.ipynb"
alwaysApply: true
---

# Python Data Science Guidelines

## 1. パフォーマンスとデータ処理
- ベクトル化(`for`ループ禁止)
- `pathlib`を使用すること
- 必要に応じて`float32`, `category`などに型変換

## 2. 可視化
- タイトル・軸ラベル必須
- `seaborn`(静的)、`plotly`(動的)
- 日本語フォント設定

## 3. 再現性
- `random_state` / `seed` を固定値(例:42)で指定する

## 4. コード例

<example>
# Good Code
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from pathlib import Path

DATA_DIR = Path("./data")

def process_and_plot(df: pd.DataFrame, output_path: Path):
    df['total_amount'] = df['price'] * df['quantity']

    plt.figure(figsize=(10, 6))
    sns.scatterplot(data=df, x='quantity', y='total_amount')
    plt.title("数量と合計金額の関係")
    plt.xlabel("数量 (個)")
    plt.ylabel("合計金額 (円)")
    plt.savefig(output_path)

# Bad Code
import os

data_dir = "./data"

def bad_process(df):
    totals = []
    for index, row in df.iterrows():
        totals.append(row['price'] * row['quantity'])
    df['total_amount'] = totals

    plt.scatter(df['quantity'], df['total_amount'])
    plt.show()
</example>

3-2. ドキュメント作成の効率化・自動化

.mdcルールはコードスタイルだけでなく、ドキュメント作成やテキストのスタイル統一にも応用できます。設計書、報告書などのドキュメント生成において、プロジェクト固有の用語や文体ガイドラインを.mdcで定義しておけば、常に統一感のあるドキュメントを作成することができます。
私の場合、業務報告書作成する際に.mdcによるサポートを活用しています。日々のタスクのメモやコードの変更箇所をもとにして、報告書の形式に沿った文書を自動的に作成してくれるため、時間を大幅に削減することができます。


【実装例】作業日報 .mdc ファイル

---
description: プロジェクトの作業ログから日報を生成するためのルール
globs: "reports/daily/*.md", "daily_reports/**"
alwaysApply: false
---

# Daily Report Generation Rules

「日報を作って」または「Generate daily report」と指示された場合、以下の手順とフォーマットに従って出力してください。

## 1. 情報収集ソース
- **Git履歴/変更差分:** 直近24時間のコミットログおよび、現在編集中のファイルの差分(diff)を分析し、「実施内容」に反映すること。
- **実行結果:** ノートブック(.ipynb)の出力セルを確認し、主要な指標(Accuracy, RMSEなど)があれば「分析結果」に含めること。

## 2. フォーマット(Markdown)

### [日付] 日報 - [氏名]

#### 🎯 本日の実施内容
- (Git履歴から具体的なタスクを箇条書きで記載)
- (関連するプルリクエストがあればリンクを含める)

#### 📊 分析結果・知見
- (実験を行っている場合、得られた主要なメトリクスやグラフの傾向を簡潔に記載)
- (データに関する気づきがあれば記載)

#### ⚠️ 課題・ブロッカー
- (エラー解決に時間がかかっている箇所や、チームへの相談事項)

#### 🚀 明日の予定
- (本日の進捗に基づいたネクストアクション)

## 3. スタイル
- 簡潔な箇条書きを使用する。
- 感情的な表現は避け、事実ベースで記述する。
- 専門用語(ライブラリ名、モデル名)は正確に記述する。

<example>
// Good Output
### 2025-11-26 日報 - Data Scientist A

#### 🎯 本日の実施内容
- `preprocess.py`: 欠損値補完ロジックを平均値埋めからKNN法に変更
- `exp001_xgboost.ipynb`: ハイパーパラメータチューニングの実施 (Optuna使用)

#### 📊 分析結果・知見
- KNN法への変更により、CVスコア(LogLoss)が 0.45 → 0.42 に改善。
- 特徴量重要度では `user_age` が最も寄与していることを確認。

#### ⚠️ 課題・ブロッカー
- データサイズ増大に伴い、メモリ不足エラーが頻発している(インスタンス増強を検討したい)。
</example>

5. 導入時のチェックポイント

IDE移行ハードル

CursorはVS Code互換とはいえ、使い慣れたエディタを変えるのは勇気がいります。

セキュリティ設定(Zero Data Retentionなど)

これはCursorに限った話ではありませんが、生成AIによるサポートを利用する以上、セキュリティへの配慮は欠かせません。.mdcによって高度な自動生成が可能になるからこそ、扱うデータの機密性や取り扱いルールには、常に細心の注意を払う必要があります。

6. まとめ

今回、Cursorと.mdcによるアウトプットの品質の一定化について話しました。現在、多くの便利なAIサポートのあるIDEがある中でCursorを推す理由として.mdcファイルの存在があります。
これまでのAIツールは、毎回その場の指示をしないと同じレベルのアウトプットが得られず、労力を要するという課題がありました。しかし.mdcファイルによるルールを使用してからは生成AIの出力のクオリティや形式のバラつきを簡単に統一でき、「説明の手間が激減し、本来のタスクに集中できる」 という大きな変化が生まれました。

DAL Tech Blog

Discussion