一人前エンジニア道場

AI活用開発演習 / 約20分

生成AIの基本と正しい使い方

なぜこれを学ぶか

ChatGPT・GitHub Copilot・Claude などの生成AIは、エンジニアの「強力な補助ツール」です。しかし「なんとなく聞く」と「質の低い回答」が返ってきます。プロンプトの設計次第で、出力の品質は劇的に変わります。このレッスンではプロンプトの基本構造と「効くプロンプト」の作り方を学びます。

生成AIとは何か: 大量のテキストを学習した言語モデルが、「次に来る可能性が高い言葉」を確率的に生成するシステムです。「理解して答える」のではなく「もっともらしい文章を生成する」ため、間違いも自信満々に出力します。

プロンプトの4要素: ①役割(Role)「あなたはTypeScriptのエキスパートです」→ 出力のトーンと専門性を定める。②コンテキスト(Context)「このコードはNode.js 18で動く在庫管理システムです」→ 背景を渡す。③指示(Instruction)「以下のバグを修正してください」→ 何をしてほしいか明確に。④制約(Constraint)「コメントは日本語で。既存の関数シグネチャは変えないこと」→ 出力の形式・制限を指定。

「曖昧なプロンプト」vs「明確なプロンプト」の違い: ❌ 「このコードを直して」 は情報が何もない。✅ 「Node.js 18で動くTypeScriptコードです。inputがnullのときにTypeErrorが出ます。nullチェックを追加して修正してください。戻り値の型は変えないでください。」 は4要素が揃っている。

反復改善(Iteration): 最初のプロンプトで完璧な答えが出ることはまれです。「もっと簡潔にして」「〇〇の部分は正しいが、△△の部分が違う。修正して」のように、会話の中で精度を上げていくのがコツです。AIは「直前の文脈を覚えている」ので、同じ会話内でフォローアップするのが効率的です。

プロンプト設計の自己採点ポイント: 役割は指定したか? 言語・バージョン等の環境情報を渡したか? 「何をしてほしいか」が1文で言えるか? 出力の形式(コードのみ・説明つき・日本語で等)を指定したか?

重要ポイント

  • プロンプト4要素: 役割・コンテキスト・指示・制約を揃える
  • 曖昧な指示は曖昧な出力になる。「何を」「どんな条件で」を明確に
  • 1回で完璧を目指さない。反復改善で精度を上げる
  • AIは「確率的に生成」する。正しそうでも検証が必要

理解度チェック

選ぶと即座に解説が表示されます。

以下のプロンプト「このAPIのエラーを直して」に最も欠けている要素はどれ?

ヒントを見る

AIは「このAPI」が何の言語で書かれているか、どんなエラーが出ているかを知りません。

コードレビュー演習

以下は「生成AIに投げたプロンプト例」です。プロンプト設計の4要素(役割・コンテキスト・指示・制約)の観点から評価してください。

/* === あなたが評価するプロンプト === */

「TypeScriptのエキスパートとして回答してください(役割)。
 以下は受注管理システムのNode.js 18 + TypeScriptコードです(コンテキスト)。
 order.statusが'pending'のとき、処理が中断せずに次に進んでしまいます。
 statusが'pending'のとき早期リターンするよう修正してください(指示)。
 既存の関数シグネチャは変えず、修正箇所にコメントをつけ、日本語で説明を1段落添えてください(制約)。」

/* === 実際に返ってきたAIの出力(疑似)=== */

function processOrder(order: Order): void {
  // 追加: pendingの注文は処理しない
  if (order.status === 'pending') {
    console.log('注文は保留中です。処理をスキップします。')
    return
  }
  // 既存の処理
  chargePayment(order)
  updateInventory(order)
  sendConfirmationEmail(order)
}
// 修正説明: statusが'pending'の場合、処理の先頭で早期リターンするよう変更しました。
// これにより、保留中の注文に対して決済・在庫更新・メール送信が実行されることを防ぎます。

このプロンプトとAI出力の組み合わせを評価するとき、最も正確な評価はどれ?

ヒントを見る

4要素が揃っているか、そしてAIの出力が指示通りか確認してみましょう。

スキルセルフチェック

このレッスンの内容をどの程度理解できましたか?