はじめに
最近、ChatGPTやGeminiなどのAIを活用する中で、出力ファイルに .md という拡張子がついたファイルが出力されることを目にすることがあると思います。この拡張子がMarkdownで書かれたファイルです。
AIを使っていく中でAIをより効率的に使いこなし、指示(プロンプト)を正確に伝えるためには、Markdownの書き方をマスターすることが不可欠だと痛感しました。
というのも、日本語のプロンプトは一意に意味が捉えづらい文章になってしまい、AIが正しく意図を解釈できない場合があります。かなり前になってしまいますがXで流行った「頭が赤い魚を食べる猫」などがまさにそうだと思います。(この文章は人間でも解釈が分かれてしまいますが...)
こんばんは。「頭が赤い魚を食べる猫」の考案者です。最近「頭が赤い魚を食べる猫」を再びツイッター上で話題で話題にしていただけているようなので、再掲しておきますね。 pic.twitter.com/hZLOBMOtW3
— 中村明裕 (@nakamurakihiro) February 21, 2020
構造的な文章を書く手段であるMarkdownを活用することで関係性が分かりやすくなり、人間の思考の整理だけでなくAIも正しく要求を理解することができます。
今回はMarkdownについて勉強しAIへの指示を正しく実施する方法を学んでいきます。
Markdownの歴史
Markdownは、2004年にジョン・グルーバー(John Gruber)氏によって、アーロン・スワーツ(Aaron Swartz)氏の協力のもと作成されました。
その設計思想は、「読みやすく、書きやすいこと」です。装飾のためのタグで溢れたHTMLを直接書くのではなく、プレーンテキストのままでも文書構造が分かり、かつ簡単にHTMLに変換できる言語として誕生しました。
引用元: Markdown Guide - Getting Started
現在では、GitHubや各種ドキュメント作成ツール、そして生成AIの標準的な出力形式として、世界中で広く普及しています。
Markdownを使うメリット
Markdownを採用することには、以下のような多くの利点があります。
- ポータビリティ(移植性): プレーンテキストなので、どんなエディタでも開くことができます。
- プラットフォームに依存しない: 特定のソフト(Wordなど)がなくても、OSを問わず閲覧・編集が可能です。
- 将来性: 10年後でもファイルを開いて内容を読み取ることができます。
- 構造化が容易: 見出しやリストが視覚的に分かりやすく、文書の論理性を持たせやすいです。
(Markdown Guide - Getting Startedの内容をGoogle翻訳して抜粋)
【参考】他の記述形式との比較(TeX / HTML / Markdown)
文章を書くための道具は他にもありますが、Markdownは「手軽さ」と「整理のしやすさ」のバランスが非常に優れています。イメージとしては以下の通りです。(一部私の主観が入っているためあくまでイメージです。)
| 形式 | 学習の難易度 | 活用シーンのイメージ |
|---|---|---|
| TeX | ★★★(高い) | 論文や学術書など、厳密な数式やレイアウトが必要な「勝負の一冊」 |
| HTML | ★★☆(普通) | Webサイトそのものを構築するための「設計図」 |
| Markdown | ★☆☆(低い) | 日々のメモ、AIへの指示、ブログ執筆など「素早く考えをまとめる道具」 |
Markdownは、TeXのような高度な機能やHTMLのような自由度は控えめですが、その分「書くこと」に集中できるのが最大の魅力です。
AIとMarkdownの密接な関係
最近流行している生成AI(ChatGPT, Gemini, Claudeなど)とMarkdownには、非常に深い関係があります。
なぜAIはMarkdownを使うのか?
冒頭でも説明した通りAIにとって、Markdownは「構造を理解しやすい形式」だからです。見出し、箇条書き、コードブロックが明確に区別されているため、AIは情報の優先順位や関連性を正確に処理できます。
Markdownで指示を出すメリット
私たちがAIに指示を出す際にも、Markdown形式で条件を整理して伝えると、以下のようなメリットがあります。
- 回答の精度向上: 役割や制約条件を見出しで分けることで、AIが指示を取りこぼしにくくなります。
- 出力フォーマットの制御: 「Markdownの表形式で出力して」と指定するだけで、そのままブログやExcelに貼り付けられる形式で回答を得られます。
頭が赤い魚を食べる猫で画像出力してみる
AIはMarkdown形式でなくても指示を理解することは可能です。しかし、情報を構造化して伝えることで、AIはより正確に意図を汲み取ってくれます。
有名な「頭が赤い魚を食べる猫」というフレーズを例に、画像生成AIへの指示を比較してみましょう。まず最初はMarkdownを使わずに指示をしてみます。
【例1:通常の文章(箇条書きなし)】
頭が赤い魚を食べる猫を小学生がクレヨンで書いたような画風で記述してください
この時の出力結果は下記のようになります。
|
|
| 頭が赤い魚を食べる猫という指示でのAIの描画結果 |
今回はChatGPTにこのプロンプトを投げて画像を生成したのですが、AIとしては魚の頭が赤いと捉えて画像を出力してくれたみたいです。
例1ではAIは「魚の頭が赤い」と解釈しましたが、場合によっては「猫の頭が赤い」画像を出したいこともあると思います。そのようなときにMarkdownを使って条件を整理すると、AIにより正確な指示を出しやすくなります。
次の章で今回のプロンプト作成で使うMarkdownの基本的な書き方を紹介します。ここで紹介するのは一例なので、より詳しい記法を知りたい方は Markdown Guide - Basic Syntax も参考にしてみてください。
Markdownの具体的な記載例
Markdownでは、記号を使って見出し、リスト、表などの構造を表現できます。AIへの指示でも同じように、目的や条件を分けて書くことで、内容のまとまりを伝えやすくなります。
AIに指示する際の役割の列についてはChatGPTに聞いて書いてもらいました。AIの認識を記載してもらっているため内容は正しいと思ってますが、念のため参考情報としてとらえていただけると幸いです。
なお、<特徴>...</特徴> のような書き方は、HTMLのタグに近い形です。<特徴> が開始タグ、</特徴> が終了タグで、その間に「特徴として扱ってほしい内容」を入れます。タグ名はAIへの指示では日本語でも構いません。
| 項目 | 記号 | Markdownでの役割 | AIに指示する際の役割 | Markdownの具体例 | AI指示での具体例 |
|---|---|---|---|---|---|
| 見出し | # |
文書の階層構造を作る | 「目的」「条件」「出力形式」などの区切りを明確にする | # 見出し1 / ## 見出し2 |
## 目的 / ## 制約条件 |
| 段落 | (1行の空行) |
テキストのまとまり(HTMLの <p> タグ)を作る | 説明、条件、補足を別々のまとまりとして読ませる | 文章A[Enter][Enter]文章B |
背景を説明[Enter][Enter]依頼内容を書く |
| 改行 | (末尾スペース2つ) |
段落内で強制的に改行(HTMLの <br> タグ)する | 短い条件を見やすく並べ、読み落としを減らす | 文末に半角スペースを2つ入力して[Enter] |
対象: 猫[Enter]画風: クレヨン風 |
| 太字 | ** |
文字を太くし、強調する | 必ず守ってほしい条件や禁止事項を目立たせる | **強調したい文字** |
**猫の頭だけを赤くする** |
| リスト | - または * |
箇条書きにする | 条件や要素を1つずつ分けて伝える | - 項目1 |
- 猫: 頭が赤い |
| リンク | [ ]( ) |
外部サイトへのリンク | 参考資料や参照元を明示して、AIに根拠を渡す | [Google](https://google.com) |
[参考資料](https://example.com) |
| 表 | | と - |
情報を行と列に整理し、比較しやすくする | 条件、比較、出力形式を表形式で指定し、AIの回答を整理しやすくする | | 見出し1 | 見出し2 | |
| 条件 | 内容 | |
| タグ | <タグ名> と </タグ名> |
HTMLでは開始タグと終了タグで範囲を囲む。Markdown本文にHTMLを混ぜることもできる(Markdownチュートリアルより) | AIへの指示では、対象範囲を囲む目印として使うことで「どこからどこまでが条件か」を明確にできる | <p>文章</p> |
<特徴>頭の部分が赤い</特徴> |
表(テーブル)の書き方
上の一覧で触れた表は、Markdownでは縦棒 | とハイフン - を組み合わせて書きます。情報を比較したいときや、AIに「この形式で回答してほしい」と伝えたいときに便利です。
| 見出し1 | 見出し2 |
| :--- | :--- |
| 内容1 | 内容2 |
Markdownの書き方が分かったところで、実際にMarkdownを使ってプロンプトを作り、出力結果を確認してみましょう。
【例2:Markdownで構造化(猫の頭が赤い場合)】
今回は、猫の頭が赤い画像を出力させたい場合を想定して、以下のプロンプトを投げてみます。
<依頼内容>
## 画風: 小学生がクレヨンで描いたようなタッチ
## 被写体
<猫>
<特徴>頭の部分だけが赤い</特徴>
<行動>魚を食べている</行動>
<体色>茶トラ模様</体色>
</猫>
<魚>
<特徴>青色</特徴>
<禁止>赤い頭ではない</禁止>
</魚>
</依頼内容>
この時の出力結果は下記のようになります。
|
|
| Markdownでプロンプトを作成して明示的に赤い頭の猫を出力させた場合 |
最初に紹介した例1のような一文では、AIは「赤い」のが魚なのか猫なのか判断に迷うことがあります。ChatGPTの場合はAIは頭が赤い魚を食べている猫の絵を書いてほしいのだと解釈し、画像を出力しましたが、別のモデルでは異なる解釈をしてしまい、同じ指示でも異なる結果になってしまう場合があります。
なので本当は猫の頭が赤い画像を出力したかった場合は例2のようにタグで範囲を指定し、見出しで項目を整理することで、AIは修飾語がどの対象にかかっているかを明確に判別できるようになり、意図通りの状況を正確に描き分けられるようになります。(今回は指示不足で背景色などが例1と2で異なってますが、頭が赤いのが魚なのか猫なのかを書き分けたい場合のイメージとして出力結果をとらえていただければ幸いです。)
【補足】Markdownは「自分の思考」も整理してくれる
これは私自身がMarkdownでプロンプトを書くようになって強く感じたことですが、Markdownの記法を使って「背景」「目的」「制約条件」などの見出しを立てながら指示文を作ると、自分自身がAIに何を求めているのか、何がまだ決まっていないのかが驚くほど明確になります。
AIへの指示を作る作業が、そのまま自分の考えを整理する時間にもなる。この「思考の整理」の効果こそが、Markdownを学ぶ隠れた最大のメリットかもしれません。
まとめ
Markdownは、文章をシンプルに書きながら、見出し・箇条書き・表・コードブロックなどで情報を整理できる記法です。
AIに指示を出す場面でもMarkdownを活用して目的、条件、制約、出力形式を見出しやリストで分けることで、AIが内容を解釈しやすくなり、意図と違う回答や出力を減らす助けになります。
特に、<特徴>...</特徴> のようなタグを使って対象範囲を明確にすると、「赤い」のような修飾語が何にかかっているのかを伝えやすくなります。Markdownは単なる文章装飾ではなく、自分の考えを整理しする手段としても活用できると思いました。
0 件のコメント:
コメントを投稿