チョン・ドヒョン - ROBOCO首席コンサルタント

TL;DR

  • Googleプロンプトエンジニアリング白書のコードプロンプティングに関する内容は、バイブコーディングを業務レベルで使うための良い出発点です。
  • コードの作成・説明・翻訳・デバッグ/レビューのプロンプティングは、人間が問題を定義しAIが実行するというバイブコーディングの構造と重なります。
  • 良い結果を得るには、出力要件を具体化し、肯定的な指示を与え、再利用可能なプロンプトを地道に実験・文書化していく必要があります。

はじめに - プロンプトエンジニアリングとバイブコーディング

私は新しい技術に触れたり情報を仕入れたりするとき、まずその技術を提供している企業の白書を読むようにしています。技術系の白書は無料で公開されていることが多く、情報の密度が高いので時間を節約できるからです。

今回、Googleからプロンプトエンジニアリングに関する白書が公開されました。

Google Prompt Engineering Whitepaper

バイブコーディングにおいて、プロンプトエンジニアリングは非常に重要な部分です。特に業務レベルで活用しようとするなら、この白書は優れた出発点になり得ます。60ページ程度しかないので、できれば原文を読むことをおすすめしますが、英語に慣れていない方や時間のない方のために、バイブコーディングに関連するコードプロンプティングを中心に内容をまとめてみました。


コードプロンプティングの概要

コードプロンプティング(Code Prompting)とは、AI言語モデルを活用してコードの作成・説明・翻訳・デバッグといった開発作業を行わせるために、プロンプトを設計する方法です。これはバイブコーディングの中核となるアイデア、すなわち 「人間が問題を定義すれば、AIが問題解決の主体となる開発のあり方」 と正確に一致します。


コードプロンプティングの詳細な手法

次の4つのプロンプティング類型があります。

1. コード作成のプロンプティング(Prompts for writing code)

  • 特定のプログラミング言語で自動的にコードを書けるよう、AIにプロンプトを与えます。
  • 例:
    • Bashスクリプトで特定フォルダのファイル名変更を自動化するコードを生成する
    • Pythonスクリプトでファイル名変更や文字列処理のコードを自動化する

2. コード説明のプロンプティング(Prompts for explaining code)

  • すでに書かれたコードの意味や動作の仕組みを、AIに自然言語で説明させます。
  • 例:
    • Bashスクリプトの動作過程をAIに段階ごとに明確に説明させる

3. コード翻訳のプロンプティング(Prompts for translating code)

  • あるプログラミング言語で書かれたコードを、別のプログラミング言語へ自動的に翻訳します。
  • 例:
    • BashスクリプトをPythonコードへ変換する作業

4. コードのデバッグ・レビューのプロンプティング(Prompts for debugging and reviewing code)

  • AIを活用してコードの誤りを自動的に特定し、改善点の提案を受けます。
  • 例:
    • 誤ったPythonコードで発生するエラーを見つけ、修正の過程を段階ごとに説明したうえで、改善されたコードを提示する

コードプロンプティングのベストプラクティス(Best Practices)

コードプロンプティング(バイブコーディング)において特に重要なAIプロンプティングのベストプラクティスは次のとおりです。

具体的な出力要件を提示すること

  • 求めるコードの明確な結果や構造を具体的にAIへ説明し、混乱を防ぎます。

肯定的な指示を使う

  • 「してはいけないこと」よりも「すべきこと」を中心に指示します。たとえばコードを書かせるときは、制限事項よりも目標を明確に伝えます。

変数を活用したプロンプティング

  • 繰り返し使えるプロンプトを書き、変数を通じてコードの再利用性と保守性を高めます。

プロンプティングの形式とスタイルの多様性を実験する

  • さまざまな表現・文体・指示スタイルを試し、最も効果的なプロンプティングの方法を見つけます。

プロンプティングの結果を文書化して体系化する

  • さまざまなプロンプティングの試行を記録し、うまくいった事例を特定してプロンプティングの品質を継続的に改善します。

バイブコーディングとの関連の整理

この文書で示されているコードプロンプティングの手法は、バイブコーディングの中核概念と非常に密接に結びついています。

  • 問題定義と指示(プロンプトの作成)人間が担うべき作業
  • コードの作成・説明・翻訳・デバッグなど(プロンプトの結果)AIが担う作業

このやり方を活用すれば、開発者は繰り返し作業やエラー解決に費やす時間を減らし、アイデアの構想や問題定義といった創造的な作業に集中できるようになります。

つまりバイブコーディングの核心は、コードプロンプティングの手法をうまく活用し、AIがより正確かつ効率的にコードを生成・管理できるよう支援すること にあります。

プロンプティングのベストプラクティス

最高のプロンプティング性能を得るために、次のことが推奨されます。

  • 例を提示してモデルの正確性を高める。
  • 単純で明確な設計でプロンプトを構成する。
  • 出力要件を具体的に明示する。
  • 制約条件よりも肯定的な指示を使い、モデルを混乱させない。
  • 最大トークン長を制御して効率を高める。
  • 変数を使い、プロンプトの再利用性を高める。
  • さまざまな入力形式と文体を実験し、最適なプロンプティングスタイルを見つける。
  • 分類タスクではfew-shotプロンプトのクラスを混ぜて過学習を防ぐ。
  • モデルの更新に合わせてプロンプトを継続的に調整する。
  • JSON形式の利用やスキーマによるデータの構造化を活用する。
  • 他のエンジニアと共同で実験し、効率を高める。
  • 試したさまざまなプロンプトを文書化して知識を体系化する。

おわりに

プロンプトエンジニアリングは、LLMの性能を最大限に引き出すために反復的かつ体系的なアプローチが必要な分野です。適切な設定とさまざまな手法を活用すれば、LLMの潜在能力を最大限に引き出すことができます。本稿は、常にスケジュールに追われている開発者の方々が、少ない時間と労力でプロンプティングの手法とベストプラクティスを身につけ、効率よく望む結果を得られるよう手助けするために書きました。ただし白書全体にさまざまな示唆が詰まっているので、できれば半日ほど時間を取って原文を読んでみることをおすすめします。