|
| 1 | +--- |
| 2 | +title: Markdown の正しい使い方 |
| 3 | +--- |
| 4 | + |
| 5 | +[Markdown](https://www.markdownguide.org/basic-syntax/) は、Dify アプリの出力をプレーンテキストから、適切に整形されたプロフェッショナルなレスポンスに変換することができます。Answer や End ノードで Markdown を使うことで、見出し・リスト・コードブロック・表などをレンダリングし、エンドユーザーにとって分かりやすい視覚的階層を構築できます。 |
| 6 | + |
| 7 | +## Dify における基本的な Markdown 構文 |
| 8 | + |
| 9 | +Answer / End ノード内で以下のような要素を Markdown で描画できます: |
| 10 | + |
| 11 | +* 見出し |
| 12 | +* 太字、斜体、取り消し線 |
| 13 | +* リスト |
| 14 | +* 表 |
| 15 | +* 複数行のコードブロック |
| 16 | +* オーディオとビデオ |
| 17 | + |
| 18 | +### 見出し |
| 19 | + |
| 20 | +`#` を使って見出しを作成します。`#` の数が見出しの階層を表します: |
| 21 | + |
| 22 | +```markdown |
| 23 | +# 見出し 1 |
| 24 | +## 見出し 2 |
| 25 | +### 見出し 3 |
| 26 | +``` |
| 27 | + |
| 28 | +### 太字・斜体・取り消し線 |
| 29 | + |
| 30 | +以下のような構文でテキストのスタイルを変更できます: |
| 31 | + |
| 32 | +```markdown |
| 33 | +**太字テキスト** |
| 34 | +*斜体テキスト* |
| 35 | +~~取り消し線テキスト~~ |
| 36 | +``` |
| 37 | + |
| 38 | +### リスト |
| 39 | + |
| 40 | +順序付きおよび順序なしリストを作成できます: |
| 41 | + |
| 42 | +```markdown |
| 43 | +- 順序なし項目 1 |
| 44 | +- 順序なし項目 2 |
| 45 | + - ネストされた項目 |
| 46 | +1. 順序付き項目 1 |
| 47 | +2. 順序付き項目 2 |
| 48 | + 1. ネストされた項目 |
| 49 | +``` |
| 50 | + |
| 51 | +### 表 |
| 52 | + |
| 53 | +パイプ(|)とハイフン(-)を使って表を作成します: |
| 54 | + |
| 55 | +```markdown |
| 56 | +| ヘッダー 1 | ヘッダー 2 | |
| 57 | +|------------|------------| |
| 58 | +| 行 1 列 1 | 行 1 列 2 | |
| 59 | +| 行 2 列 1 | 行 2 列 2 | |
| 60 | +``` |
| 61 | + |
| 62 | +### 複数行のコードブロック |
| 63 | + |
| 64 | +3つのバッククォート(\`\`\`)を使ってコードブロックを作成します: |
| 65 | + |
| 66 | +```python |
| 67 | +def hello_world(): |
| 68 | + print("Hello, World!") |
| 69 | +``` |
| 70 | + |
| 71 | +### オーディオとビデオ |
| 72 | + |
| 73 | +以下の構文を使用して、音声および動画を埋め込むことができます: |
| 74 | + |
| 75 | +```markdown |
| 76 | +<video controls> |
| 77 | + <source src="https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4" type="video/mp4"> |
| 78 | +</video> |
| 79 | +<audio controls> |
| 80 | + <source src="https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3" type="audio/mpeg"> |
| 81 | +</audio> |
| 82 | +``` |
| 83 | + |
| 84 | +<Note> |
| 85 | +Markdown の使い方についてさらに詳しく知りたい場合は、[Markdown Guide](https://www.markdownguide.org/basic-syntax/) をご参照ください。 |
| 86 | +</Note> |
| 87 | + |
| 88 | +--- |
| 89 | + |
| 90 | +## Dify における高度な Markdown 機能 |
| 91 | + |
| 92 | +### ボタンとリンク |
| 93 | + |
| 94 | +LLM が自動生成したフォローアップ質問が不満な場合、Markdown のボタンやリンクを使って会話の流れをコントロールすることができます。 |
| 95 | + |
| 96 | +<img src="/images/screenshot-20250714-134035.png" className="mr-auto"/> |
| 97 | + |
| 98 | +以下の構文でボタンとリンクを作成できます: |
| 99 | + |
| 100 | +``` |
| 101 | +<button data-message="Hello Dify" data-variant="primary">Hello Dify</button> |
| 102 | +<button data-message="Hello Dify" data-variant="danger">Hello Dify</button> |
| 103 | +``` |
| 104 | + |
| 105 | +ボタンには次の2つの属性が必要です: |
| 106 | + |
| 107 | +* `data-variant`: ボタンのスタイル。`primary`、`secondary`、`warning`、`secondary-accent`、`ghost`、`ghost-accent`、`tertiary` など |
| 108 | +* `data-message`: ボタンがクリックされたときに送信されるメッセージ |
| 109 | + |
| 110 | +リンクの構文はよりシンプルです: |
| 111 | + |
| 112 | +``` |
| 113 | +<a href="https://dify.ai" target="_blank">Dify</a> |
| 114 | +``` |
| 115 | + |
| 116 | +会話内で特定のアクションをトリガーする省略リンク (`abbr`) も使えます: |
| 117 | + |
| 118 | +``` |
| 119 | +[特別リンク](abbr:special-link) |
| 120 | +``` |
| 121 | + |
| 122 | +--- |
| 123 | + |
| 124 | +### フォーム(Form) |
| 125 | + |
| 126 | +フォームを使用する際には `data-format` 属性を設定する必要があります。`json` または `text` を指定でき、デフォルトは `text` です。`data-format="json"` に設定すると JSON 形式で送信されます。 |
| 127 | + |
| 128 | +<img src="/images/screenshot-20250714-134150.png" className="mr-auto"/> |
| 129 | + |
| 130 | +#### サポートされている入力タイプ |
| 131 | + |
| 132 | +Dify では以下の入力タイプをフォームで利用できます: |
| 133 | + |
| 134 | +* text(テキスト) |
| 135 | +* textarea(複数行テキスト) |
| 136 | +* password(パスワード) |
| 137 | +* time(時間) |
| 138 | +* date(日付) |
| 139 | +* datetime(日付と時間) |
| 140 | +* select(セレクトボックス) |
| 141 | +* checkbox(チェックボックス) |
| 142 | +* hidden(非表示フィールド) |
| 143 | + |
| 144 | +以下のような構文で会話中にフォームを描画できます: |
| 145 | + |
| 146 | +``` |
| 147 | +<form data-format="json"> // デフォルトは text |
| 148 | + <label for="username">ユーザー名:</label> |
| 149 | + <input type="text" name="username" /> |
| 150 | + <label for="hidden_input">非表示項目:</label> |
| 151 | + <input type="hidden" name="hidden_input" value="hidden_value" /> |
| 152 | + <label for="password">パスワード:</label> |
| 153 | + <input type="password" name="password" /> |
| 154 | + <label for="content">内容:</label> |
| 155 | + <textarea name="content"></textarea> |
| 156 | + <label for="date">日付:</label> |
| 157 | + <input type="date" name="date" /> |
| 158 | + <label for="time">時間:</label> |
| 159 | + <input type="time" name="time" /> |
| 160 | + <label for="datetime">日時:</label> |
| 161 | + <input type="datetime" name="datetime" /> |
| 162 | + <label for="select">選択:</label> |
| 163 | + <input type="select" name="select" data-options='["hello","world"]'/> |
| 164 | + <input type="checkbox" name="check" data-tip="チェックすることで同意と見なされます"/> |
| 165 | + <button data-variant="primary">ログイン</button> |
| 166 | +</form> |
| 167 | +``` |
| 168 | + |
| 169 | +<Note> |
| 170 | + `hidden` タイプの入力はユーザーに表示されず、ユーザーの操作なしにデータを渡すのに使用されます。 |
| 171 | +</Note> |
| 172 | + |
| 173 | +--- |
| 174 | + |
| 175 | +### グラフ(Chart) |
| 176 | + |
| 177 | +Markdown 内で [echarts](https://dify.ai/docs/guides/tools/chart) を使ってグラフを描画できます。以下のような構文を使用します: |
| 178 | + |
| 179 | +<img src="/images/screenshot-20250714-134238.png" className="mr-auto"/> |
| 180 | + |
| 181 | +<Note> |
| 182 | + グラフを描画するには、<code>\`\`\`echarts</code> でコードブロックを開始し、その中に設定を記述してください。 |
| 183 | +</Note> |
| 184 | + |
| 185 | +```echarts |
| 186 | +{ |
| 187 | + "title": { |
| 188 | + "text": "ECharts 入門例" |
| 189 | + }, |
| 190 | + "tooltip": {}, |
| 191 | + "legend": { |
| 192 | + "data": ["売上"] |
| 193 | + }, |
| 194 | + "xAxis": { |
| 195 | + "data": ["シャツ", "カーディガン", "シフォン", "ズボン", "ヒール", "靴下"] |
| 196 | + }, |
| 197 | + "yAxis": {}, |
| 198 | + "series": [{ |
| 199 | + "name": "売上", |
| 200 | + "type": "bar", |
| 201 | + "data": [5, 20, 36, 10, 10, 20] |
| 202 | + }] |
| 203 | +} |
| 204 | +``` |
| 205 | + |
| 206 | +--- |
| 207 | + |
| 208 | +### 音楽(譜面) |
| 209 | + |
| 210 | +Markdown では譜面も描画できます。[ABC 記譜法](https://paulrosen.github.io/abcjs/) に対応しており、以下のような構文で利用します: |
| 211 | + |
| 212 | +<img src="/images/screenshot-20250714-134431.png" className="mr-auto"/> |
| 213 | + |
| 214 | +<Note> |
| 215 | + 譜面を描画するには、<code>\`\`\`abc</code> でコードブロックを開始し、ABC 記譜内容を記述してください。 |
| 216 | +</Note> |
| 217 | + |
| 218 | +```abc |
| 219 | +X: 1 |
| 220 | +T: Cooley's |
| 221 | +M: 4/4 |
| 222 | +L: 1/8 |
| 223 | +K: Emin |
| 224 | +|:D2|EB{c}BA B2 EB|~B2 AB dBAG|FDAD BDAD|FDAD dAFD| |
| 225 | +EBBA B2 EB|B2 AB defg|afe^c dBAF|DEFD E2:| |
| 226 | +|:gf|eB B2 efge|eB B2 gedB|A2 FA DAFA|A2 FA defg| |
| 227 | +eB B2 eBgB|eB B2 defg|afe^c dBAF|DEFD E2:| |
| 228 | +``` |
| 229 | + |
| 230 | +--- |
| 231 | + |
| 232 | +## ベストプラクティス |
| 233 | + |
| 234 | +Markdown コンテンツを事前に定義しておきたい場合は、Dify の [テンプレート機能](/en/guides/workflow/node/template) を活用しましょう。これにより、下流のノードでもテンプレート内容を再利用でき、効率と一貫性を高めることができます。 |
0 commit comments