AI Prompt Engineering · レッスン

表と構造化データを依頼する

比較タスク向けに、Markdown の表や構造化された出力を依頼します。

レッスン 2/413 ステップ

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

出力形式としてのテーブル

テーブルは、比較情報に適したAI出力形式の中でも特に便利なものの1つです。項目間の関係を把握しやすくし、横並びで素早く分析できます。

質の高いテーブルを得る鍵は、列名、各列に含める内容、含める行数を正確に指定することです。

基本的なテーブルの依頼

Markdownテーブルを依頼する標準的なパターン:

「Markdownテーブルとして、列を [Column1]、[Column2]、[Column3] にして整形してください。」

MarkdownテーブルはGitHub、Notion、Obsidian、ほとんどのAIチャットUIで表示されます。列の区切りにはパイプ文字、ヘッダーの区切りにはハイフンを使います。

import openai

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

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Compare Python, JavaScript, and Go for building REST APIs. '
            'Format as a markdown table with columns: '
            'Language, Performance, Learning Curve, Ecosystem, Best Use Case. '
            'One row per language. Be concise — max 8 words per cell.'
        )
    }]
)
print(response.choices[0].message.content)

比較テーブル

比較テーブルは、複数の選択肢から選ぶときに最適です。次のように依頼してください:

  • 「XとYとZを比較するテーブルを作成してください…」
  • 「…の機能比較テーブルを作成してください」
  • 「…を比較する長所・短所のテーブルを作成してください」

選択肢を行として、評価基準を列として指定します。内容によっては、その逆のほうが読みやすいレイアウトになります。

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 comparison table for three cloud database options: '
            'Supabase, PlanetScale, and Neon.\n'
            'Rows: one per database.\n'
            'Columns: Free tier storage, Scaling model, Pricing at 10GB, '
            'Branching support, SQL compatibility.\n'
            'Format: markdown table. Cell content: max 6 words each.'
        )
    }]
)
print(response.content[0].text)

機能マトリックステーブル

機能マトリックスは、行に項目、列に機能を配置し、各セルにチェックマーク、スコア、または簡潔な値を示すテーブルです。一般的な用途は次のとおりです:

  • バージョン間または競合製品間でのソフトウェア機能比較
  • SaaS製品のプラン比較
  • 技術サポートマトリックス(どのブラウザー/OSが何をサポートしているか)

次のように依頼してください: 「各機能についてチェックマーク(yes/no)を付けた機能マトリックステーブルを作成してください。」

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 feature matrix table for our SaaS pricing tiers: Free, Pro, Enterprise.\n'
            'Rows: API access, Custom domains, SSO login, SLA guarantee, Priority support, '
            'Data export, Team collaboration, Audit logs.\n'
            'Columns: Free, Pro, Enterprise.\n'
            'Use: YES / NO / PARTIAL for each cell.\n'
            'Format: markdown table.'
        )
    }]
)
print(response.choices[0].message.content)

テキストからのデータテーブル

強力なパターンの1つは、構造化されていないテキストから情報を抽出し、テーブルとして整形するようモデルに依頼することです。これは、いわばAIを活用したデータ解析です:

「以下のテキストから次の情報を抽出し、列X、Y、Zのテーブルとして整形してください。」

一貫した構造にするため、列名は必ず明示してください。

import anthropic

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

meeting_notes = (
    'Sarah will handle the API documentation by next Friday. '
    'John needs to fix the authentication bug — aim for Wednesday. '
    'Maria is responsible for the mobile UI update, due in 2 weeks. '
    'The DevOps team (lead: Alex) must set up staging by Monday. '
    'Carlos will write unit tests — deadline: end of sprint (Thursday).'
)

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=300,
    messages=[{
        'role': 'user',
        'content': (
            'Extract all action items from the meeting notes below. '
            'Format as a markdown table with columns: Task, Owner, Deadline.\n\n'
            f'Meeting notes:\n{meeting_notes}'
        )
    }]
)
print(response.content[0].text)

CSV出力

データをスプレッドシートやデータベースにインポートしたり、さらに処理したりする必要がある場合は、MarkdownテーブルではなくCSV(カンマ区切り値)出力を依頼してください。

「ヘッダー行付きのCSV行として出力してください」 または 「CSVとして整形してください。1行目は列ヘッダーにしてください。」

CSVは移植性が高く、ExcelやGoogle Sheetsに直接貼り付けたり、コードで解析したりできます。

import openai
import csv
import io

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

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Generate 5 sample customer support tickets for an e-commerce store. '
            'Output as CSV with header row. '
            'Columns: ticket_id, customer_name, issue_type, priority, status. '
            'issue_type values: SHIPPING / BILLING / PRODUCT / RETURNS. '
            'priority values: LOW / MEDIUM / HIGH. '
            'status values: OPEN / IN_PROGRESS / RESOLVED. '
            'No markdown formatting — raw CSV only.'
        )
    }]
)

csv_text = response.choices[0].message.content.strip()
reader = csv.DictReader(io.StringIO(csv_text))
for row in reader:
    print(row)

構造化されたJSON出力

プログラムで使用する場合、JSONが最適な形式であることがよくあります。明示的に依頼してください:

「キーX、Y、Zを持つJSONオブジェクトとして出力してください。」
「各要素がプロパティA、B、Cを持つJSON配列を返してください。」

一部のモデルは、有効なJSON出力を保証するネイティブJSONモードに対応しています。ただし、その機能がなくても、JSONを明示的に要求し、スキーマを説明すれば、通常は解析可能な出力が生成されます。

import anthropic
import json

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': (
            'Generate 3 fictional user profiles for testing a fitness app. '
            'Output as a JSON array. '
            'Each object must have exactly these keys: '
            'id (integer), name (string), age (integer 18-65), '
            'fitness_level ("BEGINNER" | "INTERMEDIATE" | "ADVANCED"), '
            'goals (array of strings, max 3), weekly_sessions (integer 1-7). '
            'Output raw JSON only — no explanation, no markdown code fences.'
        )
    }]
)

try:
    data = json.loads(response.content[0].text)
    print(f'Parsed {len(data)} profiles successfully.')
    for profile in data:
        print(f'  {profile["name"]}, {profile["age"]}, {profile["fitness_level"]}')
except json.JSONDecodeError as e:
    print('JSON parse error:', e)

セルの内容に関するルールの指定

各セルに入れてよい内容を定義すると、テーブルの品質は大幅に向上します:

  • 「1セルにつき最大5語」 — テーブルの書式を崩す冗長なセルを防ぐ
  • 「Yes/Noのみ」 — 二値の機能マトリックス
  • 「金額のみ、説明なし」 — すっきりした価格表
  • 「1語のみ」 — 強制的に簡潔にする
  • 「1〜10の評価」 — 数値スコアリングテーブル
import openai

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

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Rate the following programming languages for these criteria.\n'
            'Languages (rows): Python, Rust, TypeScript, Go.\n'
            'Criteria (columns): Speed, Safety, Developer Experience, Job Market, Learning Curve.\n'
            'Cell format: integer score 1-10 only. No words, no explanation inside cells.\n'
            'After the table, add one sentence explaining your scoring philosophy.'
        )
    }]
)
print(response.choices[0].message.content)

転置テーブル

デフォルトの行と列の向きがデータに合わないことがあります。転置テーブルは行と列を入れ替えたものです。属性が多く項目が少ない場合に便利です。

次のように依頼してください: 「項目を列、属性を行にしたテーブルを作成してください」 または 「Xが列になるようにテーブルを転置してください。」

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': (
            'Compare two job candidates: Alice and Bob. '
            'Create a transposed table where candidates are COLUMNS and attributes are ROWS. '
            'Attributes (rows): Years Experience, Primary Language, Education, '
            'Previous Employer, Salary Expectation Range. '
            'Format: markdown table. Cell content: factual, max 6 words.\n\n'
            'Alice: 7 years Python/ML, MS Computer Science MIT, ex-Google, expects $180-220k.\n'
            'Bob: 4 years JavaScript/Node, BS from UC Berkeley, ex-Stripe startup, expects $140-170k.'
        )
    }]
)
print(response.content[0].text)

テーブルを使わない場合

テーブルが常に適切な形式とは限りません。次の場合は避けてください:

  • 項目が2つしかない場合 — 簡潔な段落による比較のほうが読みやすい
  • セルの内容の長さが大きく異なる場合 — テーブルが読みにくくなる
  • 出力をプレーンテキスト環境(メール本文、SMS)で使用する場合
  • 音声出力用のコンテンツを生成する場合
  • 関係が階層構造で、表形式ではない場合(代わりに入れ子リストを使用する)
import openai

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

# Table works: structured comparison
table_prompt = (
    'Compare MySQL vs PostgreSQL. '
    'Format: markdown table, columns: Feature, MySQL, PostgreSQL. '
    '6 rows covering: JSON support, Full-text search, Replication, Transactions, License, Best for.'
)

# No table needed: simple 2-option choice with prose reasoning
not_table_prompt = (
    'Should I use SQLite or PostgreSQL for a personal hobby project '
    'that will have at most 5 users? 2-sentence answer, no table.'
)

for label, prompt in [('TABLE APPROPRIATE', table_prompt), ('TABLE OVERKILL', not_table_prompt)]:
    response = client.chat.completions.create(
        model='gpt-4o', max_tokens=200,
        messages=[{'role': 'user', 'content': prompt}]
    )
    print(f'--- {label} ---')
    print(response.choices[0].message.content.strip()[:300])
    print()

テーブルと他の形式の組み合わせ

テーブルは、周囲の文章やリストと組み合わせると効果的です。質の高い出力では、次のような構成が一般的です:

  1. 比較基準を説明する簡潔な導入段落
  2. ざっと確認するためのテーブル
  3. 最終的な結論を示す推奨段落

次のように明示的に依頼してください: 「1文の導入、テーブル、その後に2文の推奨を含めてください。」

import anthropic

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

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=500,
    messages=[{
        'role': 'user',
        'content': (
            'Compare three Python testing frameworks: pytest, unittest, and nose2. '
            'Structure your response as:\n'
            '1. One-sentence intro explaining the comparison scope.\n'
            '2. Markdown table: columns = Framework, Ease of Use, Plugin Ecosystem, '
            'Speed, Community Activity. Rows = one per framework.\n'
            '3. One-sentence recommendation for a team starting a new project.'
        )
    }]
)
print(response.content[0].text)

理解度チェック

開発者がAIを使って、データベースのテスト用サンプルデータを生成したいと考えています。ID、名前、メールアドレス、国、アカウントティアを含む顧客データを10行必要としています。どの出力形式を依頼するのが最適ですか?

テーブルと構造化データ — まとめ

テーブルと構造化データの依頼によって、AIの特に便利な出力形式を活用できるようになります。主なテクニックは次のとおりです:

  • 一貫した構造にするため、正確な列名を指定する
  • 選択肢を横並びで分析するには比較テーブルを使用する
  • データをプログラムで処理する場合はCSVを使用する
  • API連携やコードでの利用にはJSONを使用する
  • セルの内容に関するルールを定義する:最大語数、使用可能な値、評価尺度
  • 項目数が属性数を上回る場合は転置を検討する
  • テーブルと文章を組み合わせて、完全で読みやすいドキュメントにする
無料で開始

AI チューターと学ぶ AI Prompt Engineering — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
53
レッスン
199

よくある質問

「表と構造化データを依頼する」レッスンは無料ですか?

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

「表と構造化データを依頼する」で何を学びますか?

比較タスク向けに、Markdown の表や構造化された出力を依頼します。 ブラウザで直接実行するハンズオンコードでAI Prompt Engineeringを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「表と構造化データを依頼する」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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