Cline プロンプト設計チートシート:役割・制約・出力フォーマットの定石

AI エージェント Cline を効果的に使いこなすには、プロンプト設計の「定石」を知ることが重要です。将棋や囲碁に定石があるように、プロンプトにも繰り返し使える効果的なパターンが存在します。
この記事では、プロンプトを構成する「役割・制約・出力フォーマット」という 3 つの要素について、実践的な定石パターンを体系的にまとめました。まずはチートシートで全体像を把握し、その後の詳細解説と実践例で理解を深められます。
チートシート:プロンプト設計の定石
このチートシートは、Cline に指示を出す際にすぐに参照できる定石一覧です。各要素の定石パターンと具体例を表形式で整理しています。
役割(Role)の定石
役割では、AI にどのような専門性や立場で振る舞ってほしいかを定義します。これにより出力のトーンやレベル感が決まります。
| 分類 | 定石パターン | 具体例 | 
|---|---|---|
| 宣言形式 | 「あなたは〇〇に精通した △△ です」 | あなたは TypeScript に精通したシニアエンジニアです | 
| 専門領域 | 技術分野を明示する | フロントエンド / バックエンド / DevOps / データサイエンス | 
| 経験レベル | レベル感を指定する | シニア / ミドル / ジュニア / アーキテクト / テックリード | 
| 複数役割 | 「〇〇かつ △△」で複合的に指定 | React と TypeScript に精通したシニアフロントエンドエンジニア | 
制約(Constraints)の定石
制約では、守るべきルールや前提条件を列挙します。これにより不要な提案や誤った実装を防げます。
| 分類 | 定石パターン | 具体例 | 
|---|---|---|
| 技術スタック | バージョンを含めて明示 | Next.js 14 / React 18 / Node.js 20 / TypeScript 5.3 | 
| コーディング規約 | 禁止事項を箇条書き | any型禁止 /var使用禁止 / ESLint エラーゼロ | 
| 設計原則 | 遵守すべき原則を列挙 | RESTful 設計 / DRY 原則 / SOLID 原則 | 
| 環境・前提 | 実行環境や依存関係を指定 | サーバーコンポーネント前提 / SSR 対応必須 | 
出力フォーマット(Format)の定石
出力フォーマットでは、結果をどのような形式で返してほしいかを明記します。これにより出力の一貫性が保たれ、後続処理や自動化がしやすくなります。
| 分類 | 定石パターン | 具体例 | 
|---|---|---|
| 構造化 | 番号付きリストでセクション指定 | 1. 概要 / 2. コード / 3. 使用例 | 
| コード形式 | 言語指定とコメント必須 | TypeScript のコードブロック(コメント付き) | 
| ドキュメント | Markdown 形式で構造化 | 見出し・箇条書き・表を活用 | 
| データ形式 | 機械可読な形式を指定 | JSON / YAML / CSV | 
基本テンプレート
この基本テンプレートは、3 つの要素を組み合わせたプロンプトの雛形です。用途に応じて [ ] 内を書き換えるだけで、高品質なプロンプトが完成します。
text# 役割
あなたは [専門領域] に精通した [経験レベル] エンジニアです。
# 制約
- [技術スタック] を使用
- [バージョン] を前提とする
- [コーディング規約] を遵守
- [禁止事項] は使用しない
# 出力フォーマット
1. [セクション1]
2. [セクション2]
3. [セクション3]
# タスク
[具体的な指示内容]
背景
プロンプト設計において「定石」を理解することは、Cline を効率的に活用するための第一歩です。ここでは、なぜ定石が必要なのか、そしてプロンプトを構成する 3 要素とは何かを解説します。
なぜ「定石」が必要なのか
Cline に指示を出す際、毎回ゼロから考えるのは非効率です。将棋や囲碁に「定石」があるように、プロンプト設計にも繰り返し使える効果的なパターンが存在します。
定石を知ることで得られるメリットは以下の通りです。
- 再現性の向上:同じ品質の出力を安定して得られる
- 時間の短縮:毎回考える必要がなく、すぐに実践できる
- チーム共有:定石を共有することで、チーム全体の生産性が向上
この定石を知ることで、誰でも安定して高品質な出力を得られるようになります。
プロンプト設計の 3 要素
優れたプロンプトには、必ず以下の 3 要素が含まれています。この 3 要素を意識的に設計することで、Cline からの出力品質が劇的に向上します。
mermaidflowchart TD
  prompt["構造化プロンプト"] --> role["役割(Role)<br/>AI の人格・専門性"]
  prompt --> constraints["制約(Constraints)<br/>守るべきルール"]
  prompt --> format["出力フォーマット(Format)<br/>結果の構造"]
  role --> quality["高品質な出力"]
  constraints --> quality
  format --> quality
図の要点:プロンプトを役割・制約・フォーマットの 3 要素に分解することで、再現性の高い指示が可能になります。
定石が解決する課題
プロンプト設計の定石を知らないと、曖昧な指示や前提条件の欠如により、期待外れの出力や意図しない実装が生じます。ここでは、定石なしで起こりがちな失敗パターンと、定石を適用した改善例を紹介します。
定石なしの失敗パターン
定石を知らないと、以下のような問題が頻発します。各パターンの原因と結果を理解することで、定石の重要性が明確になります。
| 失敗パターン | 原因 | 結果 | 
|---|---|---|
| 曖昧な指示 | 役割が不明確 | 期待外れの出力 | 
| 前提条件の欠如 | 制約が不足 | 意図しない実装 | 
| 出力形式の不統一 | フォーマット未指定 | 再利用困難 | 
具体例:
- ❌ 悪い例:「TypeScript のコードを書いて」
- 問題:関数なのか、クラスなのか、バージョンは何か、すべてが不明
 
- ✅ 良い例:「TypeScript 5.3 で、ユーザー認証を行う非同期関数を作成してください」
- 定石適用:バージョン指定、機能明示、実装形式の指定
 
定石の詳細解説
ここからは、冒頭のチートシートで紹介した 9 つの定石を、より詳しく解説します。各定石のパターン、使い方、効果を理解することで、実践的にプロンプトを設計できるようになります。
役割(Role)の定石パターン
役割の定石では、AI にどのような専門性や立場で振る舞ってほしいかを定義します。宣言形式、専門領域、経験レベルの 3 つの観点から定石を紹介します。
定石 1:宣言形式を統一する
パターン:「あなたは〇〇に精通した △△ です」
この形式を使うことで、AI に明確な人格を与えられます。
良い例:
textあなたは TypeScript に精通したシニアフロントエンドエンジニアです。
悪い例:
textTypeScript のコードを書いてください。
定石 2:専門領域を明示する
専門領域を明示することで、AI が持つべき知識の範囲が明確になります。フロントエンド、バックエンド、DevOps など、タスクに応じて適切な専門領域を指定しましょう。
| 専門領域 | 効果 | 使い分け | 
|---|---|---|
| フロントエンド | UI/UX、React、Vue に強い | コンポーネント設計時 | 
| バックエンド | API、DB、サーバー処理に強い | エンドポイント実装時 | 
| DevOps | インフラ、CI/CD に強い | デプロイ設定時 | 
| データサイエンス | 分析、機械学習に強い | データ処理時 | 
定石 3:経験レベルを指定する
経験レベルを指定することで、出力の詳細度や説明の深さが調整されます。プロダクション品質が必要な場合はシニア、標準的な実装ならミドルを選びましょう。
| レベル | 出力の特徴 | 使い分け | 
|---|---|---|
| シニア | ベストプラクティス重視、詳細な説明 | プロダクション品質が必要な時 | 
| ミドル | バランスの取れた実装 | 標準的な実装が必要な時 | 
| アーキテクト | 設計思想・全体構造重視 | システム設計時 | 
制約(Constraints)の定石パターン
制約の定石では、守るべきルールや前提条件を列挙します。技術スタックのバージョン、禁止事項、設計原則の 3 つの観点から定石を紹介します。
定石 4:技術スタックはバージョン付きで明示
パターン:「[技術名] [バージョン] を使用」
技術スタックにバージョンを含めることで、API の違いや非推奨機能の使用を防げます。特にメジャーバージョンが異なると動作が大きく変わる技術では必須です。
text- Next.js 14 の App Router を使用
- React 18 の Server Components を前提
- TypeScript 5.3 の型システムを活用
定石 5:禁止事項を箇条書きで列挙
パターン:「〇〇は使用禁止」
禁止事項を明示することで、コード品質の低下やバグの混入を防げます。プロジェクトのコーディング規約に合わせて設定しましょう。
text- `any` 型は使用禁止
- `var` キーワードは使用禁止
- 外部ライブラリの追加は禁止
定石 6:設計原則を明示
パターン:「〇〇の原則を遵守」
設計原則を明示することで、保守性や拡張性の高いコードが生成されます。RESTful、DRY、SOLID など、プロジェクトの方針に合わせて指定しましょう。
text- RESTful な設計を遵守
- DRY 原則(Don't Repeat Yourself)を徹底
- SOLID 原則に基づいた設計
出力フォーマット(Format)の定石パターン
出力フォーマットの定石では、結果をどのような形式で返してほしいかを指定します。構造化、コードブロック、データ形式の 3 つの観点から定石を紹介します。
定石 7:構造化された形式を指定
パターン:番号付きリストでセクションを明示
構造化された形式を指定することで、出力の一貫性が保たれます。概要・コード・使用例など、必要なセクションを番号付きリストで明示しましょう。
text以下の形式で出力してください:
1. 概要(2〜3 文)
2. 実装コード(TypeScript、コメント付き)
3. 使用例(具体的なコード例)
4. 注意点(箇条書き)
定石 8:コードブロックは言語指定必須
パターン:「[言語] のコードブロック」
コードブロックには必ず言語を指定しましょう。これによりシンタックスハイライトが適用され、コードの可読性が向上します。
textTypeScript のコードブロックで出力し、各行にコメントを付けてください。
定石 9:データ形式を明示
データ形式を明示することで、機械的な処理や自動化がしやすくなります。JSON、YAML、CSV など、用途に応じて適切な形式を指定しましょう。
| 形式 | 用途 | 定石パターン | 
|---|---|---|
| JSON | API レスポンス、設定ファイル | 「JSON 形式で出力」 | 
| YAML | CI/CD 設定、K8s マニフェスト | 「YAML 形式で出力」 | 
| Markdown | ドキュメント、README | 「Markdown 形式で、見出しと箇条書きを使用」 | 
定石の組み合わせパターン
ここまで紹介した 9 つの定石を組み合わせることで、より強力なプロンプトが完成します。役割・制約・フォーマットの各要素から適切な定石を選び、組み合わせましょう。
mermaidflowchart LR
  role["役割定石<br/>専門性×レベル"] --> combined["組み合わせプロンプト"]
  constraints["制約定石<br/>技術スタック×規約"] --> combined
  format["フォーマット定石<br/>構造×言語"] --> combined
  combined --> output["高品質な出力"]
図の要点:各要素の定石を組み合わせることで、再現性の高い強力なプロンプトが完成します。
定石を適用した実践例
ここからは、チートシートの定石を実際のプロンプトに適用した例を紹介します。各例では、どの定石を使っているかを明示し、定石適用前と適用後の違いを比較できます。
例 1:React コンポーネント生成
React コンポーネント生成では、役割にフロントエンドの専門性、制約にバージョンと禁止事項、フォーマットに構造化を適用しています。
適用した定石
| 要素 | 適用した定石 | 
|---|---|
| 役割 | 定石 1(宣言形式)+ 定石 2(専門領域:フロントエンド)+ 定石 3(レベル:シニア) | 
| 制約 | 定石 4(バージョン明示)+ 定石 5(禁止事項列挙) | 
| フォーマット | 定石 7(構造化)+ 定石 8(言語指定) | 
プロンプト
text# 役割(定石1+2+3)
あなたは React と TypeScript に精通したシニアフロントエンドエンジニアです。
# 制約(定石4+5)
- React 18 の関数コンポーネントを使用
- TypeScript 5.3 で型安全に実装
- `any` 型は使用禁止
- Props の型定義を必ず含める
# 出力フォーマット(定石7+8)
1. コンポーネントの概要(2〜3 文)
2. TypeScript のコードブロック(コメント付き)
3. 使用例(コメント付き)
# タスク
ユーザー情報を表示する `UserCard` コンポーネントを作成してください。
Props は `name`(文字列)、`age`(数値)、`email`(文字列)とします。
Cline の出力例
概要
UserCard コンポーネントは、ユーザーの名前、年齢、メールアドレスを受け取り、カード形式で表示するシンプルなコンポーネントです。Props は厳密に型付けされており、TypeScript の型安全性を保ちます。
実装
typescript// UserCard.tsx
import React from 'react';
// Props の型定義
interface UserCardProps {
  name: string;
  age: number;
  email: string;
}
// コンポーネント本体
export const UserCard: React.FC<UserCardProps> = ({
  name,
  age,
  email,
}) => {
  return (
    <div className='user-card'>
      <h2>{name}</h2>
      <p>年齢: {age}</p>
      <p>メール: {email}</p>
    </div>
  );
};
使用例
typescript// App.tsx
import React from 'react';
import { UserCard } from './UserCard';
const App: React.FC = () => {
  return (
    <div>
      {/* UserCard コンポーネントを使用 */}
      <UserCard
        name='田中太郎'
        age={28}
        email='tanaka@example.com'
      />
    </div>
  );
};
export default App;
例 2:API エンドポイント設計
API エンドポイント設計では、役割にバックエンドの専門性、制約に設計原則、フォーマットに表形式を適用しています。
適用した定石
| 要素 | 適用した定石 | 
|---|---|
| 役割 | 定石 1(宣言形式)+ 定石 2(専門領域:バックエンド) | 
| 制約 | 定石 4(バージョン明示)+ 定石 6(設計原則) | 
| フォーマット | 定石 7(構造化)+ 定石 8(言語指定) | 
プロンプト
text# 役割(定石1+2)
あなたは Node.js と Express に精通したバックエンドエンジニアです。
# 制約(定石4+6)
- Express 4.x を使用
- TypeScript 5.3 で実装
- RESTful な設計を遵守
- エラーハンドリングを含める
- ステータスコードを適切に設定
# 出力フォーマット(定石7+8)
1. エンドポイントの仕様(メソッド、パス、リクエスト・レスポンス形式)
2. TypeScript のコードブロック(コメント付き)
3. エラーケースの説明(表形式)
# タスク
ユーザー情報を取得する GET エンドポイント `/api/users/:id` を実装してください。
Cline の出力例
エンドポイント仕様
- メソッド: GET
- パス: /api/users/:id
- リクエスト: パスパラメータ id(ユーザー ID)
- レスポンス: JSON 形式でユーザー情報を返す
実装
typescript// routes/users.ts
import { Router, Request, Response } from 'express';
// ユーザー型の定義
interface User {
  id: number;
  name: string;
  email: string;
}
// ダミーデータ(実際は DB から取得)
const users: User[] = [
  { id: 1, name: '田中太郎', email: 'tanaka@example.com' },
  { id: 2, name: '佐藤花子', email: 'sato@example.com' },
];
const router = Router();
// GET /api/users/:id
router.get('/users/:id', (req: Request, res: Response) => {
  // パスパラメータから ID を取得
  const userId = parseInt(req.params.id, 10);
  // 数値変換の検証
  if (isNaN(userId)) {
    return res
      .status(400)
      .json({ error: 'Invalid user ID' });
  }
  // ユーザーを検索
  const user = users.find((u) => u.id === userId);
  // ユーザーが見つからない場合
  if (!user) {
    return res
      .status(404)
      .json({ error: 'User not found' });
  }
  // 成功レスポンス
  return res.status(200).json(user);
});
export default router;
エラーケース
| # | ケース | ステータスコード | レスポンス | 
|---|---|---|---|
| 1 | ID が数値でない | 400 | { "error": "Invalid user ID" } | 
| 2 | ユーザーが存在しない | 404 | { "error": "User not found" } | 
| 3 | 成功 | 200 | ユーザー情報の JSON | 
例 3:コードレビュー依頼
コードレビュー依頼では、役割にシニアレベルの経験、制約にベストプラクティス、フォーマットに構造化を適用しています。
適用した定石
| 要素 | 適用した定石 | 
|---|---|
| 役割 | 定石 1(宣言形式)+ 定石 3(レベル:シニア) | 
| 制約 | 定石 6(設計原則:ベストプラクティス) | 
| フォーマット | 定石 7(構造化)+ 定石 8(言語指定) | 
プロンプト
text# 役割(定石1+3)
あなたはコードレビューに精通したシニアエンジニアです。
# 制約(定石6)
- TypeScript のベストプラクティスに基づいて評価
- パフォーマンス、可読性、保守性の観点から指摘
- 具体的な改善案を提示
# 出力フォーマット(定石7+8)
1. 総評(2〜3 文)
2. 指摘事項(箇条書き、各項目に改善案を含める)
3. 改善後のコード例(TypeScript、コメント付き)
# タスク
以下のコードをレビューしてください。
\`\`\`typescript
function calc(a, b) {
  return a + b;
}
\`\`\`
Cline の出力例
総評
このコードは動作しますが、型安全性が欠如しており、TypeScript の利点を活かせていません。関数名も抽象的すぎるため、可読性が低いです。
指摘事項
- 型定義の欠如:引数と戻り値に型が付いていません。number型を明示すべきです。
- 関数名が不明瞭:calcという名前では何を計算するのか分かりません。addなどに変更しましょう。
- ドキュメントコメントの欠如:JSDoc コメントを追加すると、IDE の補完や可読性が向上します。
改善後のコード
typescript/**
 * 2 つの数値を加算します。
 * @param a - 1 つ目の数値
 * @param b - 2 つ目の数値
 * @returns 加算結果
 */
function add(a: number, b: number): number {
  return a + b;
}
定石適用の効果比較
3 つの例で定石を適用することで、以下の効果が得られました。定石なしと定石ありを比較すると、品質・信頼性・実用性が大きく向上していることが分かります。
| 例 | 定石なし | 定石あり | 改善効果 | 
|---|---|---|---|
| 例 1(React) | 曖昧なコンポーネント | 型安全で再利用可能なコンポーネント | 品質向上、保守性向上 | 
| 例 2(API) | エラーハンドリング不足 | RESTful で堅牢な API | 信頼性向上、一貫性確保 | 
| 例 3(レビュー) | 表面的な指摘 | 具体的な改善案付きレビュー | 実用性向上、学習効果 | 
以下の図は、定石適用によるプロンプト品質の向上を示しています。
mermaidflowchart LR
  before["定石なし<br/>曖昧なプロンプト"] --> apply["定石適用"]
  apply --> after["定石あり<br/>明確なプロンプト"]
  after --> result1["再現性向上"]
  after --> result2["品質向上"]
  after --> result3["保守性向上"]
図の要点:定石を適用することで、プロンプトの再現性・品質・保守性が向上します。
まとめ
この記事では、Cline のプロンプト設計における「役割・制約・出力フォーマット」の定石を体系的に紹介しました。9 つの定石パターンを理解し、実践することで、Cline から安定して高品質な出力を得られるようになります。
定石の要点
3 つの要素それぞれの主な定石と効果をまとめます。これらを組み合わせることで、再現性の高いプロンプトが完成します。
| 要素 | 主な定石 | 効果 | 
|---|---|---|
| 役割 | 宣言形式統一、専門領域明示、レベル指定 | AI の人格と専門性を明確化 | 
| 制約 | バージョン明示、禁止事項列挙、設計原則 | 不要な提案を防ぎ、品質を保証 | 
| フォーマット | 構造化、言語指定、データ形式明示 | 出力の一貫性と再利用性を確保 | 
実践のステップ
定石を効果的に活用するための 4 つのステップを紹介します。まずは 1 つの定石から試し、徐々に組み合わせを増やしていきましょう。
- チートシートを保存:冒頭の定石一覧を手元に置く
- テンプレートを作成:よく使うパターンをテンプレート化
- 定石を組み合わせる:タスクに応じて最適な定石を選択
- 改善を繰り返す:結果を見ながらプロンプトを調整
この定石を使いこなすことで、Cline とのコミュニケーションが格段にスムーズになり、開発効率が大きく向上します。まずは簡単な定石から試してみてください。
関連リンク
 article article- Cline が差分を誤適用する時:改行コード・Prettier・改フォーマット問題の解決
 article article- Cline のアーキテクチャ超図解:実行キュー/ツール権限/差分適用の流れ
 article article- Cline 運用ガイド:レート制限・課金・キャッシュ戦略でコスト最適化
 article article- Cline 中心の開発プロセス設計:要求 → 設計 → 実装 → 検証の最短動線
 article article- Cline プロンプト設計チートシート:役割・制約・出力フォーマットの定石
 article article- Cline セットアップ完全版(macOS):Homebrew・VSCode 拡張・権限設定
 article article- Nano Banana のインストール完全ガイド:macOS/Windows/Linux 別の最短手順
 article article- ESLint が遅い時の処方箋:--cache/並列化/ルール絞り込みの実践
 article article- Dify のコール失敗を解決:429/5xx/タイムアウト時の再試行とバックオフ戦略
 article article- MySQL ERROR 1449 対策:DEFINER 不明でビューやトリガーが壊れた時の復旧手順
 article article- Cursor で差分が崩れる/意図しない大量変更が入るときの復旧プレイブック
 article article- Motion(旧 Framer Motion)で exit が発火しない/遅延する問題の原因切り分けガイド
 blog blog- iPhone 17シリーズの発表!全モデルiPhone 16から進化したポイントを見やすく整理
 blog blog- Googleストアから訂正案内!Pixel 10ポイント有効期限「1年」表示は誤りだった
 blog blog- 【2025年8月】Googleストア「ストアポイント」は1年表記はミス?2年ルールとの整合性を検証
 blog blog- Googleストアの注文キャンセルはなぜ起きる?Pixel 10購入前に知るべき注意点
 blog blog- Pixcel 10シリーズの発表!全モデル Pixcel 9 から進化したポイントを見やすく整理
 blog blog- フロントエンドエンジニアの成長戦略:コーチングで最速スキルアップする方法
 review review- 今の自分に満足していますか?『持たざる者の逆襲 まだ何者でもない君へ』溝口勇児
 review review- ついに語られた業界の裏側!『フジテレビの正体』堀江貴文が描くテレビ局の本当の姿
 review review- 愛する勇気を持てば人生が変わる!『幸せになる勇気』岸見一郎・古賀史健のアドラー実践編で真の幸福を手に入れる
 review review- 週末を変えれば年収も変わる!『世界の一流は「休日」に何をしているのか』越川慎司の一流週末メソッド
 review review- 新しい自分に会いに行こう!『自分の変え方』村岡大樹の認知科学コーチングで人生リセット
 review review- 科学革命から AI 時代へ!『サピエンス全史 下巻』ユヴァル・ノア・ハラリが予見する人類の未来