3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

コーディングを効率化するLLMプロンプトテンプレート

Last updated at Posted at 2025-03-29

コーディングを効率化するLLMプロンプトテンプレート

はじめに

最近のソフトウェア開発において、LLM(大規模言語モデル)の活用は必須スキルになりつつあります。GitHubのCopilotやChatGPTなどのAIツールを効果的に使いこなすことで、コーディング効率を大幅に向上させることができます。
本記事では、コーディングにおけるLLMの活用方法、特に効果的なプロンプトの書き方に焦点を当てて解説します。

この記事はclaude 3.7 sonnet extended thinkingの協力により書かれています。

目次

  1. LLMを活用したコーディングの基本
  2. 効果的なプロンプトの構成要素
  3. ユースケース別プロンプトテンプレート
  4. 高度なプロンプト技術
  5. 注意点とベストプラクティス
  6. まとめ

1. LLMを活用したコーディングの基本

LLMをコーディングに活用する主な方法は以下の通りです:

  • コード生成: 新規機能の実装や関数の作成
  • コード理解: 既存コードの説明や動作解析
  • デバッグ支援: エラーの原因特定や修正案の提案
  • リファクタリング: 既存コードの改善や最適化
  • ドキュメント作成: コメント生成やREADMEの作成

これらの活用法を最大化するには、「どのように質問するか」が重要です。

2. 効果的なプロンプトの構成要素

2.1 明確な指示

❌ 悪い例: 「ソートアルゴリズムを書いて」
✅ 良い例: 「Pythonでクイックソートアルゴリズムを実装してください。時間計算量と空間計算量も説明してください。」

2.2 コンテキスト情報の提供

❌ 悪い例: 「このバグを修正して」
✅ 良い例: 「以下のReactコンポーネントでuseStateの初期値が正しく設定されていないためにレンダリングエラーが発生しています。修正案を提示してください:

```jsx
function Counter() {
  const [count, setCount] = useState();
  
  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
}
```

2.3 出力形式の指定

❌ 悪い例: 「ユーザー認証機能を作って」
✅ 良い例: 「Node.jsとExpressでJWTを使ったユーザー認証APIを実装してください。以下の点を含めてください:
1. ユーザー登録エンドポイント
2. ログインエンドポイント
3. トークン検証ミドルウェア
4. パスワードのハッシュ化

コードとファイル構成を示してください。」

2.4 段階的な指示

複雑な問題は一度に尋ねるのではなく、段階的に解決するのが効果的です。

ステップ1: 「Pythonで簡単なWebスクレイピングプログラムの基本構造を作成してください」
ステップ2: 「BeautifulSoupを使用して特定のWebページから商品情報を抽出する機能を追加してください」
ステップ3: 「抽出したデータをCSVファイルに保存する機能を実装してください」

3. ユースケース別プロンプトテンプレート

3.1 新機能実装

【目的】: [実装したい機能の概要]
【言語/フレームワーク】: [使用する言語やフレームワーク]
【入力】: [入力データの形式や例]
【出力】: [期待する出力の形式や例]
【制約条件】: [パフォーマンス要件やエッジケース]
【参考情報】: [関連するドキュメントやコード]

実装例を示してください。

3.2 バグ修正

【問題の症状】: [発生しているエラーや期待と異なる動作]
【再現手順】: [バグが発生する手順]
【環境情報】: [OS、言語バージョン、ライブラリバージョンなど]
【該当コード】:
```コードをここに貼り付け```

このバグの原因と修正方法を教えてください。

3.3 コードレビュー

以下のコードをレビューしてください:

```言語名
コードをここに貼り付け
```

以下の観点で改善点を指摘してください:
- パフォーマンス
- 可読性
- セキュリティ
- テスト容易性
- ベストプラクティス

3.4 アルゴリズム最適化

以下のアルゴリズムを最適化したいです:

```言語名
コードをここに貼り付け
```

現在の計算量は O(n²) ですが、O(n log n) 以下に改善したいです。
どのようにリファクタリングすれば良いでしょうか?

4. 高度なプロンプト技術

4.1 チェーンオブソート(Chain of Thought)

複雑な問題では、LLMに思考プロセスを説明させると良い結果が得られます。

次のソートアルゴリズムの時間計算量を分析してください。各ステップでの考え方を詳細に説明してください。

```python
def sort_algorithm(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr
```

4.2 ロールプレイング

特定の専門家の視点でコードを分析してもらうテクニックです。

あなたはセキュリティの専門家です。以下のPHPコードをセキュリティの観点から分析し、脆弱性があれば指摘してください。

```php
$username = $_POST['username'];
$query = "SELECT * FROM users WHERE username = '$username'";
$result = mysqli_query($conn, $query);
```

4.3 反復的改善(Iterative Improvement)

生成されたコードを少しずつ改善していくアプローチです。

ステップ1: 「JavaScriptで簡単なTodoリストを実装してください」
ステップ2: 「先ほどのTodoリストにローカルストレージでの保存機能を追加してください」
ステップ3: 「UIをより使いやすくするために、ドラッグ&ドロップで順序を変更できる機能を実装してください」

5. 注意点とベストプラクティス

5.1 コードの検証

LLMが生成したコードは必ず検証しましょう。特に以下の点に注意が必要です:

  • セキュリティの問題(入力のバリデーション不足など)
  • エッジケースの処理
  • ライブラリの最新バージョンとの互換性
  • パフォーマンス上の問題

5.2 著作権への配慮

LLMは学習データに基づいてコードを生成するため、著作権の問題が生じる可能性があります。特にオープンソースライセンスとの互換性には注意しましょう。

5.3 プロンプト改善のサイクル

効果的なプロンプトは一度で完成するものではなく、以下のサイクルで改善していきます:

  1. プロンプトの作成
  2. 結果の評価
  3. プロンプトの修正
  4. 再試行

5.4 外部知識の活用

最新の技術情報やAPIの詳細情報は、LLMの知識が不完全または古い場合があります。公式ドキュメントへのリンクや最新情報を併せて確認しましょう。

6. まとめ

LLMを活用したコーディングでは、明確で詳細なプロンプトを書くことが成功への鍵です。以下のポイントを意識しましょう:

  • 明確な指示と目的の提示
  • 十分なコンテキスト情報の提供
  • 期待する出力形式の指定
  • 複雑な問題は段階的に解決
  • 生成されたコードは必ず検証

これらの技術を駆使することで、LLMをより効果的な開発パートナーとして活用できるでしょう。

参考リソース


この記事が皆さんのコーディング効率向上に役立てば幸いです。効果的なプロンプトの例や成功体験があれば、コメント欄でぜひ共有してください!

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?