Prompt プロンプト
AIと対話するための基本を身につける——良いプロンプトを書き、AIツールを活用する。
なぜプロンプトが重要なのか
同じ質問でも、聞き方が違うと、得られる回答の質は雲泥の差です。
こんな経験をしたことがあるかもしれません:
あなたがAIに「レポートを書いて」と頼むと、AIは漠然として中身のない記事を返します。
しかし、プロンプトを変えて「私はプロダクトマネージャーです。2026年Q2のプロダクトロードマップレポートを書いてください。対象読者は技術チームで、主要な機能ポイントを5つ含め、各ポイントには開発期間とリスク評価を含め、文字数は800字以内にしてください」と頼むと、AIは構造が明確で内容が具体的ですぐに使えるドキュメントを返します。
これがプロンプトの違いです。
プロンプト(Prompt)は、あなたとAIがコミュニケーションを取るための言語です。
AIはあなたが与えた情報に基づいて応答するだけです。与える情報が具体的で明確であればあるほど、出力結果は期待に沿ったものになります。
プロンプトの黄金律:入力が曖昧なら出力も曖昧になり、入力が具体的なら出力も具体的になる。
Promptとは何か
Prompt(プロンプト)とは、AIに入力するテキスト内容のことです。
Promptは、質問、指示、説明文、またはそれらの組み合わせでも構いません。
良いプロンプト vs 悪いプロンプト
両者の違いを比較で説明します。
| 観点 | ❌ 推奨しない書き方 | ✅ 推奨する書き方 |
|---|---|---|
| 明確さ | 「何か書いて」 | 「弊社の製品が来月10%値上げすることを顧客に知らせるメールを書いて」 |
| 役割設定 | 「この文章を翻訳して」 | 「あなたは専門的な英語翻訳者で、テクノロジー文書の翻訳が得意です。次の内容を中国語に翻訳し、技術用語の正確さを保ってください」 |
| 形式の要件 | 「リストを作って」 | 「番号なしリストで5つのポイントを挙げ、各ポイントは20字以内にしてください」 |
| コンテキスト | 「このコードを見てください」 | 「これはPythonのスクレイピングコードです。実行時に『接続タイムアウト』というエラーが発生します。考えられる原因を分析し、3つの解決策を提示してください」 |
| スタイルと口調 | 「お知らせを書いて」 | 「会社の全従業員向けの休暇通知を書いてください。正式な口調で、内容は簡潔に、休暇期間、注意事項、当番スケジュールの3つの部分を含めてください」 |
法則が見えましたか?
良いプロンプトはAIに次のことを伝えます:あなたは誰か、何をするか、誰に見せるか、どの形式を使うか、どんな制約条件があるか。
基本的なプロンプト構造
完全なプロンプトには通常、以下の4つの要素が含まれます。
毎回すべてを書く必要はありませんが、全面的に書くほど結果を制御しやすくなります。
タスク記述(何をするか)
AIに完了してほしいタスクを明確に伝えます。
これはプロンプトの核となる部分なので、明確に書く必要があります。
この記事の主な要点をまとめてください。
このPythonコードをJavaScriptに書き換えてください。
タピオカ店に合う店名を10個考えてください。
背景情報(コンテキスト)
AIに関連する背景状況を伝えて、タスクの場面を理解させるのに役立てます。
コンテキストがなければ、AIは当てずっぽうに推測するしかありません。コンテキストを与えれば、回答は的を射たものになります。
私はコンピューター科学専攻の大学3年生で、面接の準備をしています...
これは当社の製品紹介です。ターゲット顧客は中小企業の経営者です...
小学生向けの科学解説記事を書きます。複雑な専門用語は使えません...
出力形式の要件(どう提示するか)
AIの出力形式を指定します:リスト、表、段落、コード、JSONなど。
明確な形式要件があれば、後で整理し直す手間を省けます。
表形式で提示し、3列を含めてください:ステップ名、操作説明、注意事項。
JSON形式で出力し、'id'、'name'、'description'の3つのフィールドを含めてください。
3つの段落で回答し、各段落は100字以内にしてください。
例(参考例)
AIに1〜2つの例を与えて、どのような出力を望んでいるのかを理解させます。
これは、Few-shot Learningつまりいくつかの例を与えて学習させることです。
例えば:
入力:嬉しい、出力:欣喜雀躍、有頂天、喜色満面
次に処理してください:悲しい
3つの基本的なプロンプトタイプ
目的に応じて、プロンプトは3つの基本タイプに分類できます。
質問型:直接質問する
情報を得る、概念を説明する、アドバイスを求めるために使います。
これは最もシンプルなプロンプトタイプで、情報検索のシーンに適しています。
Pythonにおけるlistとtupleの違いは何ですか?
チームのコミュニケーション効率を高めるには?
2026年に学ぶ価値が最も高いフロントエンドフレームワークは何ですか?
質問するときの注意:具体的であればあるほど良い。
ただ「どうやってプログラミングを学ぶか」と聞くのではなく、「私は完全な初心者で、Web開発をしたいです。最初にHTML/CSSとJavaScriptのどちらを学ぶべきですか?3ヶ月の学習計画を提示してください」と聞きましょう。
指示型:AIに何をするか指示する
具体的なタスクを完了するために使います:文章作成、翻訳、コード修正、データ整理など。
指示型プロンプトは、明確で具体的で実行可能である必要があります。
この文章を英語に翻訳し、原文のユーモアを保ってください。
この長い段落を5つのポイントに分割し、各ポイントに小見出しを付けてください。
このコードを最適化し、コメントを追加し、可能性のあるバグを見つけてください。
対話型:複数回のやり取り
一度に質問するのではなく、対話を続けながら徐々に深掘りしていきます。
この方法は複雑なタスクに適しており、話しながら方向性を調整できます。
あなた:「個人ブログサイトを作りたいのですが、おすすめの技術案はありますか?
AI:「あなたのニーズに応じて、以下のようないくつかの選択肢が考えられます:...
あなた:「Hugoにします。具体的にはどう始めればいいですか?
AI:「はい、Hugoを使ってブログを構築する手順は以下の通りです:...
あなた:「待ってください、GitHub Pagesは使いたくないのですが、他に無料のホスティング方法はありますか?
対話型プロンプトの鍵は、AIにはコンテキストの記憶があることを覚えておくことです。毎回前の内容を繰り返す必要はなく、そのまま続けて話せばいいのです。
ロールプレイプロンプト
AIに役割を設定すると、回答がより専門的で場面に合ったものになります。
これは最も簡単で、最も効果的なテクニックの1つです。
なぜロールプレイが役立つのか
AIはトレーニング中にさまざまな役割のテキストを大量に見ています。「あなたは弁護士です」と伝えると、AIは自動的に口調や語彙、考え方を調整し、より本物の弁護士らしくなります。
同じ質問でも、役割が異なると、まったく異なる答えが返ってきます。
例えば、あなたが「どうすればより多くの人に自分の製品を知ってもらえますか?」と尋ねたとします。
| 役割の設定 | 回答の重点 |
|---|---|
| マーケティング専門家 | ブランドポジショニング、チャネル選定、イベント企画 |
| 営業部長 | コンバージョンファネル、顧客フォロー、成約テクニック |
| プロダクトマネージャー | 製品のセールスポイント、ユーザー体験、差別化 |
| 技術責任者 | 技術実装、パフォーマンス最適化、データ分析 |
よく使うロールテンプレート
ここにいくつかよく使うロール設定があります。そのまま使うことも、必要に応じて修正することもできます:
あなたは経験豊富な Python 開発エンジニアで、コードレビューとパフォーマンス最適化に長けています。このコードを見てください...
あなたはプロのコピーライターで、広告業界での経験が10年あります。この商品説明を書き換えてください...
あなたは私の日本語の外国人教師で、発音が標準的で、初心者の間違いを正すのが得意です。この会話の文法をチェックしてください...
あなたは起業メンターで、これまでに3つのテクノロジー企業を成功させた経験があります。このビジネスプランを分析してください...
ロール設定は具体的であればあるほど、効果が高くなります。
「あなたは専門家です」と言うだけでなく、「あなたはECデータ分析の経験が5年ある専門家で、特にユーザー行動分析が得意です」と言いましょう。
出力をより正確にするテクニック
これらのテクニックを身につければ、あなたのプロンプトスキルは大幅に向上します。
出力形式を指定する
AIにどのような形式で出力するかを明確に伝えると、整理にかかる時間を大幅に節約できます。
よく使われる形式は以下の通りです:
| 形式タイプ | 例の指示 |
|---|---|
| リスト | 「番号なしリストで5つのポイントを挙げてください...」 |
| 表 | 「表形式で表示してください。列名:機能、長所、短所...」 |
| コード | 「コメント付きの完全な Python コードを出力してください...」 |
| JSON | 「JSON 形式で出力してください。フィールド:id、name、price...」 |
| Markdown | 「Markdown 形式で、2レベル見出しを3つ含めてください...」 |
長さを制御する
AIに出力の長さを伝えて、多すぎたり少なすぎたりするのを防ぎましょう。
一文で要約してください...
300文字程度の紹介文を書いてください...
詳しく説明してください。少なくとも500文字以上...
口調とスタイルを指定する
AIにどんなトーンで話すかを伝えて、さまざまなコミュニケーションシーンに適応させましょう。
フォーマルなトーンで、上司に見せるのに適したもの...
軽快でユーモラスな方法で表現してください...
小学生にも理解できるようなわかりやすい言葉で...
専門的で客観的、中立な態度を保ってください...
思考連鎖(Chain of Thought)
複雑な問題では、AIに直接答えを与えるのではなく、思考プロセスを説明させましょう。
これにより、回答の正確性が大幅に向上し、AIの推論プロセスを確認するのも簡単になります。
この問題を段階的に分析してください。最初に考え方を説明してから、答えを出してください。
不確かな点がある場合は、仮定と推論プロセスを説明してください。
よくある間違いと修正
初心者が犯しやすい間違いです。どう修正するか見てみましょう。
間違い1:プロンプトが曖昧すぎる
これは最もよくある問題です。
| ❌ 曖昧なプロンプト | ✅ 改善したプロンプト |
|---|---|
| 「コピーを書いてください」 | 「ミルクティー店の新商品発売に関するWeChat公式アカウントのコピーを書いてください。対象読者は18〜25歳の若者で、スタイルは明るく楽しく、『2杯目半額』のプロモーションを強調し、文字数は300〜500文字です」 |
| 「このコードを見てください」 | 「これはPythonで書かれたユーザー登録APIのコードです。SQLインジェクションのリスクがあるか、パスワード暗号化が安全か、エラーハンドリングが十分かをチェックして、問題と修正提案をそれぞれ挙げてください」 |
| 「計画を立ててください」 | 「3ヶ月間のフィットネスプランを立ててください。目標は5キロ減量、週3回、毎回1時間の運動、主な運動方法はランニングと筋力トレーニングです。週ごとに具体的なスケジュールを出してください」 |
間違い2:要求が多すぎて、一度に言い切れない
1つのプロンプトですべてをやろうとしないでください。
複雑なタスクは複数回の対話に分けて、段階的に進めるべきです。
❌ こうしないでください:「ユーザー登録、商品表示、ショッピングカート、注文管理、決済機能を備えたECサイトを書いてください。ReactとNode.jsで開発し、データベースはMySQLを使用して、完全なコードをください。
✅ こうしましょう:
あなた:「シンプルなECサイトを作りたいです。技術スタックはReact + Node.js + MySQLを使いたいのですが、最初のステップは何をすべきですか?」
AI:「まずデータベースのテーブル構造を設計することをお勧めします。ユーザーテーブルと商品テーブルから始めましょう...」
あなた:「わかりました。ユーザーテーブルと商品テーブルの構造を設計してください。どのようなフィールドを含める必要がありますか?」
...(段階的に深掘りしていく)
間違い3:フィードバックをしないと、間違いが最後まで続く
AIの最初の出力は完璧でないかもしれません。
問題ありません。どこが良くないかを伝えて、修正させましょう。
あなた:「この記事は長すぎますし、技術的すぎます。私の読者は初心者なので、理解できません。」
AI:「申し訳ありません。もっと簡潔でわかりやすく書き直します...」
あなた:「だいぶ良くなりました。でも第二部分はまだ少し複雑です。この概念をアナロジーで説明してもらえますか?」
AI:「はい、『宅配便を送る』というアナロジーでこのネットワーク通信のプロセスを説明しましょう...」
覚えておいてください:プロンプトは反復的なプロセスです。一回で完璧になることはほとんどありません。
実践練習:使用頻度の高い10のシナリオテンプレート
ここでは最もよく使われる10のプロンプトテンプレートをまとめました。そのまま使うことができます。
| シーン | Prompt テンプレート |
|---|---|
| メール作成 | あなたはプロのビジネスライティングアシスタントです。{受信者の立場}に宛てたメールを書いてください。件名は{メールの件名}、主要内容は{具体的な内容}です。トーンは{フォーマル/友好的/婉曲的/直接的}で、文字数は{数字}文字以内にしてください。 |
| 記事の要約 | 以下の記事を読んで、{文字数}文字の要約を生成してください。以下のポイントを含めてください:1){核心的な見解1};2){核心的な見解2};3){核心的な見解3}。簡潔で明瞭な言葉でまとめてください。 |
| コードの説明 | あなたは忍耐強いプログラミング講師です。この{プログラミング言語}のコードの役割を説明し、重要なステートメントの機能を1行ずつ説明し、このコードの長所と短所、および考えられる改善点を指摘してください。 |
| 翻訳 | あなたは{ソース言語}から{ターゲット言語}へのプロの翻訳者で、{分野}の翻訳が得意です。以下の内容を{ターゲット言語}に翻訳してください。要件:1)専門用語の正確性を保つこと;2){ターゲット言語}の表現習慣に合うこと;3)スタイルは{フォーマル/口語的}。 |
| 会議議事録 | 以下の会議メモに基づいて会議議事録をまとめてください。含める内容:1)会議の日時、場所、参加者;2)議論された主要な議題;3)形成された決定事項;4)TODO事項と担当者。簡潔で明瞭な言葉で提示してください。 |
| 履歴書の最適化 | あなたはベテランのHRコンサルタントです。この履歴書の記述を、より専門的で説得力のあるものに最適化してください。「動詞+成果」の形式で書き直し、仕事の成果を定量化し、業界のキーワードを使用し、個人の貢献を強調してください。 |
| 学習計画 | {知識/スキル}を学びたいです。現在の基礎は{基礎の説明}で、目標は{具体的な目標}、利用可能な時間は{時間の割り当て}です。{期間}の学習計画を立ててください。段階ごとに学習内容、おすすめのリソース、確認方法を挙げてください。 |
| ブレインストーミング | {テーマ/問題}についてブレインストーミングしたいです。{数量}個の創造的なアイデアを考えてください。要件:1)常識にとらわれないこと;2)実現可能性を考慮すること;3)各アイデアについて、核となる考え方と実現方法を一文で説明すること。 |
| 問題のトラブルシューティング | 問題が発生しました:{問題の説明}。すでに{試した方法}を試しましたが、解決できませんでした。考えられる原因を可能性の高い順に挙げ、対応する調査手順と解決策を示してください。 |
| 内容の書き換え | 以下の内容を書き換えてください。対象読者は{読者層}、スタイルの要件は{スタイルの説明}、文字数は{文字数の要件}です。核心となる情報は保持しつつ、より{わかりやすく/専門的に/簡潔に/詳細に}表現してください。 |
これらのテンプレートは、具体的な状況に応じて柔軟に調整できます。
重要なのは:曖昧な要件を具体的な要素に分解し、テンプレートに1つずつ記入することです。。
コードでAIを呼び出す例
チャットインターフェースでプロンプトを入力する以外にも、コードでAI APIを呼び出すことができます。
Pythonでデモンストレーションしましょう:
実例
# Pythonを使用してAI APIを呼び出し、プロンプトを送信する
# この例では、プロンプトを構造化する方法を示しています
# ============================================
import json
from typing import Dict, Optional
class PromptBuilder:
"""プロンプトビルダー:プロンプトを構造化して整理するのに役立ちます"""
def __init__(self):
self.role = None # ロール設定
self.task = None # タスクの説明
self.context = None # 背景情報
self.format = None # 出力形式
self.examples = [] # 例
self.constraints = [] # 制約条件
def set_role(self, role: str) -> "PromptBuilder":
"""AIのロールを設定する"""
self.role = role
return self
def set_task(self, task: str) -> "PromptBuilder":
"""タスクを設定する"""
self.task = task
return self
def set_context(self, context: str) -> "PromptBuilder":
"""背景情報を設定する"""
self.context = context
return self
def set_format(self, format_spec: str) -> "PromptBuilder":
"""出力形式を設定する"""
self.format = format_spec
return self
def add_example(self, input_example: str, output_example: str) -> "PromptBuilder":
"""例を追加する"""
self.examples.append({"input": input_example, "output": output_example})
return self
def add_constraint(self, constraint: str) -> "PromptBuilder":
"""制約条件を追加する"""
self.constraints.append(constraint)
return self
def build(self) -> str:
"""最終的なプロンプトを構築する"""
parts = []
if self.role:
parts.append(f"ロール:{self.role}")
if self.context:
parts.append(f"背景:{self.context}")
if self.task:
parts.append(f"タスク:{self.task}")
if self.examples:
parts.append("例:")
for i, example in enumerate(self.examples, 1):
parts.append(f" 入力{i}:{example['input']}")
parts.append(f" 出力{i}:{example['output']}")
if self.format:
parts.append(f"出力フォーマット:{self.format}")
if self.constraints:
parts.append("制約条件:")
for constraint in self.constraints:
parts.append(f" - {constraint}")
return "\n".join(parts)
def simulate_ai_call(prompt: str, api_key: Optional[str] = None) -> Dict:
"""
AI API 呼び出しをシミュレート(実際のプロジェクトでは実際の API 呼び出しに置き換え)
ここでは構造化プロンプトの使用方法をデモするだけです
"""
print("=" * 60)
print("AI に送信するプロンプト:")
print("-" * 60)
print(prompt)
print("=" * 60)
# ここではデモのみ、実際のプロジェクトでは実際の API を呼び出します
# 例:OpenAI API、Anthropic API など
return {
"status": "success",
"prompt_sent": prompt,
"message": "これは AI のシミュレート応答です(実際に使用するときは実際の API 応答に置き換えられます)",
"tips": サンプル の実際のプロジェクトでは、API Key を設定して実際の API を呼び出してください。
}
# ============================================
# 使用例 1:メールを書く
# ============================================
print("\n【例 1:メールを書く】")
prompt1 = (PromptBuilder()
.set_role("あなたはプロのビジネスライティングアシスタントで、英文メールの作成を得意としています")
.set_context("私は サンプル 社のマーケティングマネージャーで、顧客にフォローアップメールを書く必要があります")
.set_task("メールを作成し、顧客に当社の製品提案に対するフィードバックを尋ね、来週の会議を予約してください")
.set_format("メールの形式:件名、敬称、本文、署名を含む")
.add_constraint("口調は友好的かつプロフェッショナルに")
.add_constraint("200語以内")
.build())
result1 = simulate_ai_call(prompt1)
print(f"API ステータス:{result1['status']}")
# ============================================
# 使用例 2:コード最適化
# ============================================
print("\n【例 2:コード最適化】")
prompt2 = (PromptBuilder()
.set_role("あなたは経験豊富な Python シニアエンジニアで、コードレビューを得意としています")
.set_task("以下のコードを最適化して、より効率的で読みやすくしてください")
.set_context("これは学生の成績データを処理するコードで、実行速度が少し遅いです")
.set_format("最適化したコードを出力し、コメントで変更理由を説明してください")
.add_constraint("元の機能を維持してください")
.add_constraint("Python 3.8+ と互換性があること")
.build())
result2 = simulate_ai_call(prompt2)
print(f"API ステータス:{result2['status']}")
このコードを実行すると、構造化プロンプトがどのように構築されるかを確認できます。
実際のプロジェクトでは、実際の API 呼び出し(OpenAI、Anthropic、または他のベンダーの API など)に置き換える必要があります。
その他の拡張