0Pricing
AI Prompt Engineering · レッスン

リストと箇条書きを依頼する

項目数を指定して、AI に番号付きリストや箇条書きを作成させます。

「リストと箇条書きを依頼する」はCoddyKit上の無料AI Prompt Engineeringレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Prompt Engineering学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Prompt Engineeringコースには全4レッスンが含まれています。

AIでリストがうまく機能する理由

リストは、AIに要求できる出力形式の中でも特に分かりやすいものの1つです。曖昧さがなく、ざっと確認しやすく、検証も簡単です。求めた項目数が得られたかどうかをすぐに数えられます。

リストを要求する正確な構文を知っておくと、追加の修正なしで一貫して整形された出力を得やすくなります。

基本的なリスト要求

よく使われるリスト要求のパターンは次のとおりです。

  • 「…する5つの方法を挙げてください」
  • 「…について10個の箇条書きを示してください」
  • 「…の例を7つ挙げてください」
  • 「なぜ…なのか、3つの理由を示してください」

必ず正確な数を指定してください。「いくつかの方法をリストしてください」と言うと、項目数が変動し、3個のときもあれば12個のときもあります。数を指定すれば、そのばらつきをなくせます。

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=300,
    messages=[{
        'role': 'user',
        'content': 'List exactly 5 ways a developer can improve Python code performance. Each item: one sentence only.'
    }]
)
print(response.content[0].text)

箇条書きでの依頼

番号付きリストではなく、特に箇条書き形式にしたい場合は、その旨を明示してください。Markdownの箇条書き(- または •)は、ほとんどのチャットUIで表示されますが、すべての環境で表示されるわけではありません。

  • 「…について箇条書きを8個挙げてください」
  • 「…の箇条書きリストを作成してください」
  • 「1行に1項目ずつ、箇条書きで出力してください…」

「各項目: 最大X語」と追加すると、情報量を調整できます。

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Create a bulleted list of 8 best practices for writing REST APIs. '
            'Format: each bullet starts with a bold action verb. '
            'Each bullet: max 15 words. No sub-bullets.'
        )
    }]
)
print(response.choices[0].message.content)

番号付きリストと手順

番号付きリストは、順序が重要な連続的な内容に最適です:

  • 手順に沿った説明
  • ランク付けされた選択肢(推奨度の高い順から低い順)
  • 優先順位付きのタスクリスト
  • 順序立てたトラブルシューティング手順

次のように指定してください: 「各手順に番号を付けてください…」、「最も…なものから最も…でないものの順に並べてください…」、「…するための番号付き手順を6つ挙げてください…」

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=400,
    messages=[{
        'role': 'user',
        'content': (
            'Give me 6 numbered steps to deploy a Python FastAPI app to AWS EC2. '
            'Order: from initial setup to app accessible via browser. '
            'Each step: 1-2 sentences + the specific command(s) to run. '
            'Assume a fresh Ubuntu 22.04 server.'
        )
    }]
)
print(response.content[0].text)

チェックリスト

チェックリストは、確認してチェックを付ける項目向けの、特定のリスト形式です。特に次の用途で効果を発揮します:

  • コードレビュー用チェックリスト
  • ローンチ準備チェックリスト
  • セキュリティ監査用チェックリスト
  • オンボーディング用チェックリスト

「…のチェックリストを作成してください」または「…のローンチ前チェックリストを生成してください」と依頼してください。モデルは、- [ ] のチェックボックスを使った形式(Markdown標準)で項目を出力します。

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Create a pre-production launch checklist for a Python web API. '
            'Format: markdown checkboxes (- [ ] item). '
            'Group into sections: Security, Performance, Monitoring, Documentation. '
            '4 items per section. Each item: specific and actionable in under 12 words.'
        )
    }]
)
print(response.choices[0].message.content)

項目の長さと情報密度の調整

各項目にどの程度の詳細を含めるかを指定すると、リストの品質は大幅に向上します:

  • 「各項目を1文にしてください」 — 簡潔で、ざっと確認しやすい
  • 「2文にしてください。1文目で内容を説明し、2文目で理由を説明してください」 — 構造化された詳細
  • 「項目タイトル + 1行の説明」 — 見出し + 説明
  • 「1項目につき最大10語」 — 極端に簡潔にする
import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

# Two-sentence structure per list item
response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=400,
    messages=[{
        'role': 'user',
        'content': (
            'List 5 common Python performance bottlenecks. '
            'For each item, use exactly 2 sentences: '
            'Sentence 1: describe the bottleneck. '
            'Sentence 2: state the fix in one specific action.'
        )
    }]
)
print(response.content[0].text)

ラベル付きリストとカテゴリ別リスト

リスト項目にラベルを追加すると、カテゴリ分けされた、またはタグ付けされたリストになり、確認・利用しやすくなります:

  • 「各項目に EASY、MEDIUM、HARD のいずれかのラベルを付けてください」
  • 「各提案に関連するチームのタグを付けてください:[FRONTEND] [BACKEND] [DEVOPS]」
  • 「各項目に想定される作業時間を付けてください:(5分) (2時間) (1週間)」

ラベルによって、単なる一覧が、実際に行動に移しやすく、絞り込みも可能なリソースに変わります。

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'List 8 ways to reduce AWS costs for a startup. '
            'Label each with: [IMMEDIATE] if doable today, [MEDIUM] if takes 1-2 weeks, or [LONG] if takes a month+. '
            'Also label each with estimated monthly savings: ($50-200) ($200-500) ($500+). '
            'Each item: one sentence.'
        )
    }]
)
print(response.choices[0].message.content)

入れ子リスト

入れ子リストは階層を1段追加します。自然なグループ分けがあるアイデアの整理に役立ちます:

  • レベル1の主要カテゴリ
  • レベル2の具体例またはサブ項目

「主要セクションを4つ、それぞれにサブ項目を3つ含む2レベルのアウトラインを作成してください」と依頼してください。ただし、2レベルを超えると、ほとんどの状況で読みにくくなります。

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=400,
    messages=[{
        'role': 'user',
        'content': (
            'Create a 2-level outline for a "Python for Data Science" beginner course. '
            'Level 1: exactly 4 module titles. '
            'Level 2: exactly 3 lesson titles under each module. '
            'Format as nested markdown bullets. '
            'Lesson titles should be specific — not generic like "Introduction".'
        )
    }]
)
print(response.content[0].text)

ランク付きリストと並べ替え

順序に意味がある場合は、ランキングの基準を明示してください:

  • 「影響が最も大きいものから最も小さいものへランク付けしてください」
  • 「実装が最も早いものから、最も時間がかかるものへ並べてください」
  • 「リスクの順に並べてください — 最も高いリスクを先にしてください」
  • 「アルファベット順に並べ替えてください」

明確な順序を指定しないと、モデルは思いついた順に項目を並べることがあります。その順序が、必ずしもあなたにとって最も役立つとは限りません。

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'List 6 database indexing strategies for PostgreSQL. '
            'Order: from most commonly needed to most specialized. '
            'Each item: strategy name in bold, followed by a 10-word description, '
            'then a note of when NOT to use it in parentheses.'
        )
    }]
)
print(response.choices[0].message.content)

アンチパターン:失敗するリスト

質の低い出力につながる、リスト依頼でよくある間違い:

  • 件数の指定がない: 「箇条書きをいくつか挙げてください」 → 件数が一定せず、短すぎたり長すぎたりすることが多い
  • 項目の構成が指定されていない:モデルが長い項目と短い項目を独自に混在させる
  • 項目数が多すぎる: 「アイデアを50個挙げてください」 → 最後の30個が水増しになる
  • 入れ子が深すぎる:3階層以上 → 出力が読みにくくなる

ベストプラクティスは、ほとんどの用途で、1項目あたりの構成を指定した5〜15項目です。これが最適なバランスです。

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

# Anti-pattern: no count, no structure
bad_prompt = 'Give me some ideas for blog posts about Python.'

# Good pattern: count + structure + ordering
good_prompt = (
    'Generate 8 Python blog post title ideas. '
    'Target audience: intermediate Python developers (2-3 years experience). '
    'Mix: 4 practical how-to titles, 4 conceptual deep-dive titles. '
    'Label each [HOW-TO] or [DEEP DIVE]. '
    'Each title: max 10 words. No clickbait.'
)

for label, prompt in [('BAD', bad_prompt), ('GOOD', good_prompt)]:
    response = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=200,
        messages=[{'role': 'user', 'content': prompt}]
    )
    print(f'--- {label} ---')
    print(response.content[0].text.strip())
    print()

プログラムで扱う場合のリスト出力

AIを使って、コードで処理するリストを生成する場合は、機械で解析可能な形式での出力を依頼してください:

  • JSON配列: 「文字列のJSON配列として出力してください」
  • 1行に1項目: 「箇条書き記号も番号も使わず、1行に正確に1項目ずつ出力してください」
  • CSV: 「カンマ区切りの1行として出力してください」

これにより、応答文字列からMarkdownの箇条書きを解析する必要がなくなります。

import openai
import json

client = openai.OpenAI(api_key='sk-your-key-here')

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'List 8 Python standard library modules that every developer should know. '
            'Output as a valid JSON array of strings only. '
            'No explanation, no formatting, no markdown — just the raw JSON array.'
        )
    }]
)

raw = response.choices[0].message.content.strip()
try:
    modules = json.loads(raw)
    print(f'Parsed successfully: {len(modules)} modules')
    for m in modules:
        print(f'  - {m}')
except json.JSONDecodeError as e:
    print(f'Parse error: {e}')
    print('Raw output:', raw)

理解度チェック

チームリードがAIアシスタントからアクションアイテムのリストを生成したいと考えています。次のように送信しました: 「アクションアイテムをいくつか挙げてください。」 結果は、曖昧な箇条書き4項目です。どのように書き換えると、最も役立つ出力になりますか?

リストの依頼 — まとめ

リストは、依頼する出力形式の中でも特に明確なものの1つです。リストの依頼を使いこなすには、次の点を指定します:

  • 正確な件数: 「いくつか」や「少し」ではなく、必ず数字を指定する
  • 形式:箇条書き、番号付き、チェックリスト、入れ子
  • 項目ごとの構成:1文 / 2文 / タイトル + 説明
  • ラベル:難易度、時間、チーム、カテゴリ
  • 順序:重要なものを先に、Xの基準でランク付け、アルファベット順
  • 機械で扱う形式:プログラムで使用する場合はJSON配列または1行に1項目

よくある質問

「リストと箇条書きを依頼する」レッスンは無料ですか?

はい。「リストと箇条書きを依頼する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Prompt Engineeringコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Prompt Engineeringコースには全4レッスンが含まれています。

「リストと箇条書きを依頼する」で何を学びますか?

項目数を指定して、AI に番号付きリストや箇条書きを作成させます。 ブラウザで直接実行するハンズオンコードでAI Prompt Engineeringを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AI Prompt Engineeringを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAI Prompt Engineeringは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「リストと箇条書きを依頼する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAI Prompt Engineeringレッスンでコードを書いて実行できますか?

はい。すべてのAI Prompt Engineeringレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. リストと箇条書きを依頼する
  2. 表と構造化データを依頼する
  3. プロンプトでの Markdown 書式指定
  4. プレーンテキストと書式付き出力の比較
← AI Prompt Engineeringに戻る