この記事はSafie Engineers' Blog! Advent Calendar 24日目の記事です。
はじめに
こんにちは。開発本部 システム基盤開発部 サーバー第1グループの尹です。
私たちサーバー第1グループは、複数のプロダクトを横断して担当するため、チケット一つひとつに「要件」や「完了の定義」を契約書のように明記し、手戻りのない開発を心がけています。この「曖昧さを排除し、仕様を定義する力」こそが、実はプロンプトエンジニアリングの正体です。AIからの回答が安定しないのは、AIの能力不足ではなく、こちらの「仕様定義(プロンプト)」がバグっているからかもしれません。
今回は、Anthropic公式が発表している「Claudeのプロンプトガイド」から、実務での生産性を爆上げするための10のベストプラクティスをご紹介します。これらをマスターすれば、AIのアウトプット品質は劇的に向上します。
- はじめに
- 1. 契約書のようにプロンプトを書く
- 2. 「なぜ」やるのか背景を伝える
- 3. 「例」こそが正義(Few-Shot プロンプティング)
- 4. 大きなプロジェクトは「小分け」にする
- 5. Agentワークフローであることを宣言する
- 6. 提案ではなく「行動」させる(Say "Do It")
- 7. 「〜しないで」ではなく「〜して」と肯定形で書く
- 8. XMLタグで挙動を制御する
- 9. ツール利用を強要しすぎない(大文字で叫ばない)
- 10. 「Think(考えて)」という言葉を避ける
- まとめ
1. 契約書のようにプロンプトを書く
フォーマット、スタイル、長さ、ターゲット読者を明確に指定しましょう。Claudeは指示を文字通りに解釈します。指示が曖昧であれば、解釈も曖昧になります。
❌ Bad Prompt
React Hooksについての記事を書いて。
✅ Good Prompt
React Hooksについての技術ブログ記事を書いてください:
- フォーマット: Markdown形式、コード例を含むこと
- 長さ: 1500〜2000文字
- スタイル: 専門的だが分かりやすく
- ターゲット: 経験1〜2年のフロントエンド開発者
- 必須項目: useState, useEffect, カスタムフックの実践的な使用例を含めること
2. 「なぜ」やるのか背景を伝える
そのタスクの用途を一言添えるだけで、Claudeは出力のスタイルや深さを適切に調整してくれます。
❌ Bad Prompt
この四半期レポートの要点をまとめて。
✅ Good Prompt
この四半期レポートの要点をまとめてください。
これは経営層向けの報告資料として使用するため、重要な数値データと意思決定に必要な提言を強調してください。
3. 「例」こそが正義(Few-Shot プロンプティング)
サンプルを提供すれば、Claudeはその構造を忠実に再現します。逆に言えば、悪い例を与えれば悪い出力になります。
❌ Bad Prompt
商品説明を書いて。これ参考に:「この商品はすごくいいよ、買ってね!」
✅ Good Prompt
以下のフォーマットを参考に、商品説明を書いてください。
【参考フォーマット】
- 【製品名】: スマートノイズキャンセリングイヤホン Pro
- 【コアな強み】: 40dBアクティブノイキャン | 30時間再生 | ハイレゾ認証
- 【利用シーン】: 通勤時の静寂、集中作業、没入感のある音楽体験
- 【一言まとめ】: 喧騒の世界を、あなたの聴きたい音だけに。
では、上記を参考に「ポータブルプロジェクター」の説明文を作成してください。
4. 大きなプロジェクトは「小分け」にする
Claudeは長いタスクもこなせますが、「一気に完了させる」のではなく「ステップごとに進める」よう強制することで安定性が増します。
❌ Bad Prompt
ログイン、登録、パスワードリセット、OAuth、権限管理を含むユーザー認証システム全体をリファクタリングして。
✅ Good Prompt
ユーザー認証システムのリファクタリングを行いたいので、以下のステップで進めてください:
- 第一歩: まず既存のコード構造を分析し、修正が必要なファイルリストを挙げる
- 第二歩: 新しいアーキテクチャ案を設計し、私が確認するまで待機する
- 第三歩: 各モジュールを実装する。一つ完了するごとに私がレビューを行う
まずは「第一歩」から実行してください。
※補足:OpenSpecやZCFなどのオープンソースツールを活用すると、大きなプロジェクトを構造化されたタスクリストに自動分解してくれるため便利です。
5. Agentワークフローであることを宣言する
長い対話や開発を行う場合、コンテキスト(文脈)が圧縮されたり忘れ去られたりするのを防ぐため、状態を保存するよう指示します。
❌ Bad Prompt
この機能開発を手伝って。
✅ Good Prompt
現在、マルチターン会話で機能開発を行っています。コンテキストが圧縮される可能性があるため、以下の対応をお願いします。
重要なステップが完了するたびに:
- 現在の進捗まとめを
progress.mdという形式で出力・保存する- 次のToDoリストを列挙する
- 重要な設計上の決定事項を記録する
これにより、会話が中断してもスムーズに再開できるようにしてください。
6. 提案ではなく「行動」させる(Say "Do It")
単に「どうすればいい?」と聞くと、Claudeはアドバイスだけを返す傾向があります。コードを書いてほしいなら、明確にそう伝えましょう。
❌ Bad Prompt
このコード、どこか改善できる?
✅ Good Prompt
このコードを直接リファクタリングしてください。要件は以下の通りです:
- 重複ロジックを独立した関数に抽出する
- エラーハンドリングを追加する
- 変数名を最適化する
アドバイスだけではなく、修正済みのコードを直接出力してください。
7. 「〜しないで」ではなく「〜して」と肯定形で書く
否定形(〜しないで)よりも、肯定形(〜して)の指示のほうがAIは遵守しやすい傾向にあります。
❌ Bad Prompt
回答にはMarkdownを使わないで。長すぎないように。専門用語は使わないで。
✅ Good Prompt
質問には3つの短い段落で回答してください。各段落は50文字以内でお願いします。
プレーンテキスト形式を使用し、小学生でも理解できる言葉で説明してください。
8. XMLタグで挙動を制御する
軽量なXMLタグを使用して、AIのデフォルトの振る舞いを設定すると効果的です。
❌ Bad Prompt
主体的であってほしいけど、気をつけて。危険なことはしないで、でも保守的になりすぎないで……
✅ Good Prompt
XML
<behavior> <mode>proactive</mode> <risk_tolerance>medium</risk_tolerance> <explanation_level>detailed</explanation_level> </behavior>上記の設定に基づき、この投資案の実現可能性を分析してください。
9. ツール利用を強要しすぎない(大文字で叫ばない)
最近のモデル(Claude 3.5/Opusなど)に対し、「絶対に!」「必ず!」と強い言葉でツール利用(検索など)を強制すると、過剰反応してしまうことがあります。穏やかなトーンで誘導しましょう。
❌ Bad Prompt
毎回回答する前に絶対に検索ツールを使え!!!検索しないのは間違いだ!!!
✅ Good Prompt
ユーザーがリアルタイム情報(ニュース、株価、天気など)を求めている場合は、検索ツールを使用して最新データを取得することを推奨します。
常識的な質問やコードの問題については、検索せずに直接回答してください。
10. 「Think(考えて)」という言葉を避ける
特定のモデル(Opus等)では、「Think」という単語に敏感で、不要な内部推論(思考プロセス)が走りすぎてしまう場合があります。「Consider(検討して)」や「Evaluate(評価して)」といった言葉で代用するのがコツです。
❌ Bad Prompt
Think about the best approach to solve this problem. (この問題を解決する最善の方法を考えて)
Think step by step.
✅ Good Prompt
Consider the best approach to solve this problem. (この問題を解決する最善の方法を検討してください)
Evaluate each option and explain your reasoning. (各選択肢を評価し、その理由を説明してください)
まとめ
今回の内容をクイックリファレンスとしてまとめました。
| ベストプラクティス | 核心となるポイント |
|---|---|
| 1. 契約書のように書く | フォーマット、スタイル、長さ、対象読者を明確にする |
| 2. 「なぜ」を伝える | 用途を一言添えて、出力の深さを調整させる |
| 3. 例こそが正義 | 良いサンプル(Few-shot)が良い出力を生む |
| 4. 小分けに進める | 一気にやらせず、ステップごとに確認する |
| 5. Agentモード宣言 | 状態や進捗を保存させ、文脈切れを防ぐ |
| 6. 行動させる(Do It) | 提案だけでなく「実行」を明確に要求する |
| 7. 肯定形で指示する | 「〜しないで」ではなく「〜して」と言う |
| 8. タグで誘導する | XMLタグで振る舞いを定義する |
| 9. 叫ばない | ツール利用は穏やかに誘導する |
| 10. Thinkを避ける | Consider/Evaluateを使い、過剰な推論を防ぐ |
これらのテクニックを活用して、日々の開発やドキュメント作成の効率をさらに高めていきましょう!
【出典】Anthropic, Claude Official Prompt Engineering Guide,
https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/overview