0Pricing
AI Prompt Engineering · レッスン

プロンプトでの Markdown 書式指定

見出し、太字、コードブロックなど、リッチな書式を指定する方法を学びます。

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

AI出力におけるMarkdown

Markdownは、AIモデルが標準で理解する軽量なテキスト書式構文です。Markdown形式での出力を依頼すると、モデルは対応環境でリッチテキストとして表示されるテキストを生成します。

各Markdown要素の依頼方法を正確に知ることで、AIが生成するドキュメントの構成を細かく制御できます。

見出しの依頼

Markdownの見出しにはハッシュ記号を使います:# はH1、## はH2、### はH3です。

次のように明示的に依頼してください: 「H2のセクション見出しで構成してください」、「##をメインセクションに、###をサブセクションに使ってください」、または 「先頭に# H1タイトルを1つだけ含めてください。」

見出しにより、Notion、GitHub、Obsidian、ほとんどのドキュメントツールで、ナビゲーションしやすい構造を作成できます。

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': (
            'Write a technical guide outline for "Getting Started with FastAPI". '
            'Structure: one # H1 title at the top, then 4 ## H2 section headers, '
            'each with 2 ### H3 subsection headers beneath it. '
            'Add one sentence of placeholder content under each H3.'
        )
    }]
)
print(response.content[0].text)

太字と斜体による強調

Markdownで太字と斜体を使って強調する方法:

  • **bold text** → 太字テキスト
  • *italic text* → 斜体テキスト
  • ***bold and italic*** → 太字と斜体

次のように依頼してください: 「初出のすべての重要語を太字にしてください」、「製品名には斜体を使ってください」、または 「各手順のアクションアイテムを太字にしてください。」

import openai

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

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Explain the concept of idempotency in REST APIs. '
            'Rules:\n'
            '- Bold every technical term on its first occurrence only\n'
            '- Italicize all HTTP method names (GET, POST, PUT, DELETE, PATCH)\n'
            '- 150 words max, flowing prose — no bullets or headers'
        )
    }]
)
print(response.choices[0].message.content)

コードブロック

Markdownのコードブロックでは、構文ハイライト用のオプションの言語ヒントとともに、3つのバッククォートを使います:

```python
print('hello')
```

次のように依頼してください: 「すべてのコードをpythonコードブロックに含めてください」、「すべてのコマンドをbashコードブロックで囲んでください」、または 「JSONの例をjsonコードブロックで表示してください。」

言語ヒントにより、GitHub、VS Code、ドキュメントサイトで構文ハイライトが有効になります。

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': (
            'Show me how to connect to PostgreSQL from Python using psycopg3.\n'
            'Structure:\n'
            '1. Install command in a bash code block.\n'
            '2. Connection example in a python code block with type hints.\n'
            '3. A sample SELECT query in a python code block.\n'
            'Keep each code block under 10 lines. Brief one-sentence intro before each block.'
        )
    }]
)
print(response.content[0].text)

インラインコード

インラインコードでは単一のバッククォートを使用します: `variable_name`。文中では等幅フォントのテキストとして表示されるため、次の用途に適しています。

  • 変数名: user_id
  • 関数名: calculate_tax()
  • コマンド名: git commit
  • ファイルパス: /etc/nginx/nginx.conf
  • HTTPエンドポイント: /api/v1/users

リクエスト: 「すべての変数名と関数名にインラインコード形式を使用してください。」

import openai

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

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Explain the difference between Python list .append() and .extend(). '
            'Rules:\n'
            '- Use inline code for all method names, parameter names, and variable examples\n'
            '- Use a python code block for each demonstration example\n'
            '- Prose sections: max 2 sentences\n'
            '- Do NOT use headers or bullets — flowing prose with code blocks only'
        )
    }]
)
print(response.choices[0].message.content)

引用

引用は行の先頭に > を置いて作成します。Markdownでは次のようになります。

> This is a blockquote.

用途: コールアウトボックス、重要な注意事項、例示の会話、引用元の資料、警告。

リクエスト: 「最も重要な警告を引用に入れてください」 または 「例示のシナリオに引用を使用してください。」

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': (
            'Write a security guide section about SQL injection prevention. '
            'Structure:\n'
            '- 2-sentence explanation of the risk\n'
            '- One blockquote containing a real example of vulnerable code (as a note/warning)\n'
            '- 3 bullet points on how to prevent it\n'
            '- One blockquote containing the safe alternative code pattern'
        )
    }]
)
print(response.content[0].text)

Markdownの入れ子リスト

Markdownの入れ子リストでは、インデント(2個または4個のスペース)を使って階層を作成します。

- Main item
  - Sub-item
  - Sub-item
    - Sub-sub-item

リクエスト: 「X個のメイン項目と、それぞれにY個のサブ項目を持つ2階層の入れ子リストを作成してください」 または 「カテゴリと例の関係を示すために、入れ子の箇条書きを使用してください。」

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 2-level nested markdown list of AWS services for a web startup. '
            'Level 1: 4 service categories (Compute, Storage, Database, Networking). '
            'Level 2: 3 specific services under each category with a 5-word description. '
            'Format: markdown nested bullets with proper indentation.'
        )
    }]
)
print(response.choices[0].message.content)

リンクと画像

Markdownリンク: [link text](URL)
Markdown画像: ![alt text](image-URL)

AIモデルは、意味のあるテキストを使ったプレースホルダーリンクを生成できます。「関連するドキュメントへのMarkdownリンクを含めてください。公式ドキュメントのようなプレースホルダーURLを使用してください。」

図のプレースホルダーを含むドキュメントの場合: 「意味のある代替テキストを付けた画像プレースホルダーを含めてください。」

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': (
            'Write a README section for a Python open-source project called "sqlens". '
            'Include:\n'
            '- An image placeholder for a demo screenshot: ![Demo screenshot](docs/demo.png)\n'
            '- At least 2 markdown links: one to the PyPI page, one to the documentation\n'
            '- A badge placeholder using an image link\n'
            '- 3 bullet points of key features\n'
            'Use realistic placeholder URLs (pypi.org/project/sqlens etc).'
        )
    }]
)
print(response.content[0].text)

水平線と区切り線

水平線には、3つのダッシュ(---)、アスタリスク(***)、またはアンダースコア(___)を使用します。

これらは、ドキュメントの主要なセクションを視覚的に分けるために使用します。リクエスト: 「各主要セクションの間に---の水平線を追加してください」 または 「3つのセクションをMarkdownの区切り線で分けてください。」

水平線はほとんどのMarkdown環境で表示され、長いドキュメントの読み進めやすさを高めます。

import openai

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

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Write a mini technical specification document for a user authentication API. '
            'Include exactly 3 sections: Overview, Endpoints, Security Requirements. '
            'Separate each section with a --- horizontal rule. '
            'Each section: ## H2 header + 3-5 bullet points of content. '
            'Under Endpoints: use inline code for all route paths and HTTP methods.'
        )
    }]
)
print(response.choices[0].message.content)

Markdownが表示されない場合

Markdownは、出力環境がMarkdownを表示できる場合にのみ役立ちます。Markdownが表示されない環境には、次のようなものがあります。

  • プレーンテキストのメールクライアント(生のアスタリスクが表示されます)
  • SMSメッセージ
  • ほとんどのCRMのメモ欄
  • 音声出力(テキスト読み上げ)
  • プレーンテキストを想定するレガシーシステム

このような環境では、代わりにプレーンテキストを明示的にリクエストしてください。詳しくは次のレッスンで説明します。

import anthropic

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

# Check if environment renders markdown before requesting it
rendering_environments = {
    'GitHub':     True,
    'Notion':     True,
    'Obsidian':   True,
    'VS Code':    True,
    'Gmail body': False,  # some markdown, not all
    'Outlook':    False,
    'SMS':        False,
    'Plain text file': False,
}

print('Markdown rendering support:')
for env, renders in rendering_environments.items():
    status = 'RENDERS' if renders else 'DOES NOT RENDER'
    print(f'  {env:<20} {status}')

# Decision: use markdown only when you know it renders
use_markdown = True  # set based on your environment

format_instruction = (
    'Use markdown headers, bold, and code blocks.' if use_markdown
    else 'Plain text only — no markdown symbols.'
)
print('\nFormat instruction:', format_instruction)

Markdown要素の組み合わせ

実用的な品質のAI生成ドキュメントでは、複数のMarkdown要素を組み合わせます。適切に構成された技術ドキュメントでは、次のような要素を使用します。

  • # H1タイトルと## H2セクション
  • 初出時の重要語句に**bold**
  • すべてのコードに言語指定を付けたコードブロック
  • すべての変数名と関数名にインラインコード
  • 要件には箇条書き、手順には番号付きリスト
  • 警告と重要な注意事項には引用
  • 主要セクション間の---区切り線
import openai

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

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Write a mini developer guide for the requests Python library. '
            'Use all of the following markdown elements:\n'
            '- # H1 title at the top\n'
            '- ## H2 sections: Installation, Basic Usage, Error Handling\n'
            '- Bold all key terms on first use\n'
            '- Code blocks with python/bash language hints\n'
            '- Inline code for all function names\n'
            '- One blockquote warning about timeout best practice\n'
            '- --- between each section\n'
            'Max 300 words total.'
        )
    }]
)
print(response.choices[0].message.content)

理解度チェック

ある開発者が、print()を使ってターミナルに表示するコンテンツを出力するAIアシスタントを構築しています。Web UIもMarkdownレンダラーもありません。開発者がAIに機能の説明を求めたところ、アスタリスクやハッシュ記号だらけの出力が返ってきました。これを修正するには、システムメッセージに何を追加すべきでしょうか。

プロンプト内のMarkdown — まとめ

Markdown形式を使うと、AI生成ドキュメントにプロフェッショナルな構成を持たせることができます。リクエストすべき主な要素は次のとおりです。

  • 見出し: # H1、## H2、### H3 — ナビゲーションしやすいドキュメント構造に使用
  • 強調: 重要語句には**bold**、特殊な名称には*italic*
  • コードブロック: シンタックスハイライト用に言語指定を付けた3連バッククォート
  • インラインコード: 変数名、コマンド、パスには単一のバッククォート
  • 引用: 警告、コールアウト、引用コンテンツには>接頭辞
  • 入れ子リスト: 階層構造の情報にはインデントした箇条書き

出力環境でMarkdownが表示されることが分かっている場合にのみ、Markdownを使用してください。

よくある質問

「プロンプトでの Markdown 書式指定」レッスンは無料ですか?

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

「プロンプトでの Markdown 書式指定」で何を学びますか?

見出し、太字、コードブロックなど、リッチな書式を指定する方法を学びます。 ブラウザで直接実行するハンズオンコードでAI Prompt Engineeringを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「プロンプトでの Markdown 書式指定」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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