「AIアプリを開発したいけど、プログラミングは難しそう…」 「もっと直感的で、スピーディにアイデアを形にできないだろうか?」
こんな風に感じていませんか?そのお悩みを解決するのが、Difyの「DSL(Domain Specific Language)」です。
特に、自然言語からアプリの設計図を自動生成する機能は、まさに革命的です。
この記事では、Dify DSLの基本から、AIによる自動生成を使いこなすためのプロンプトのコツ、そして業務を効率化する活用事例まで、誰でも分かるように徹底解説します。
この記事を読めば、あなたのアイデアが、コーディング不要で簡単にAIアプリケーションとして動き出します。

Tom(@0x__tom)
代表取締役 CEO
Dify を活用した企業の DX 支援や AI エージェント事業などに取り組む株式会社MYUUUという生成AIスタートアップの代表。生成AIユーザーが1,400名所属し、Difyの最新ユースケースを学び合うコミュニティ「FRACTAL LAB」を運営しています。
Dify DSLとは?アプリの「設計図」
Dify DSL(Domain Specific Language)とは、Difyアプリケーションの構造や動作を定義するための、YAML形式で書かれた「設計図」のことです。
ユーザーからの指示をAIが理解できる形に変換し、アプリケーションの根幹を担います。
例えば、「ユーザーの名前を受け取って、挨拶を返す」だけのシンプルなアプリも、このDSLファイルによって定義されます。
name: 挨拶アプリ
description: ユーザーに挨拶を返すシンプルなアプリ
inputs:
- name: 名前
type: string
description: ユーザーの名前を入力します
outputs:
- name: 挨拶文
type: string
description: 生成された挨拶メッセージ
このように、アプリの名前、説明、入力、出力を定義するだけで、アプリケーションの骨格が完成します。

難しく考えなくてOK!要は「こういう動きをしてね」というAIへの指示書みたいなものだよ。
なぜDSLが必要なのか?- ワークフローの再利用と共有
Dify DSLの価値は、作成したワークフローをファイルとしてエクスポート(書き出し)し、何度でも「再利用」したり、チームで「共有」したりできる点にあります。
一度作った仕組みが価値ある「共有可能な資産」となり、開発の属人化を防ぎ、生産性を劇的に向上させるのです。
具体的には、以下のようなメリットが生まれます。
- チーム開発の効率化: 自身が作成した複雑なワークフローをチームメンバーに共有。受け取った側はインポート(読み込み)するだけで、即座に同じアプリケーションを再現できます。これにより、開発の属人化を防ぎ、チーム全体の生産性を向上させます。
- 開発スピードの向上: 過去に作成したアプリのDSLを「テンプレート」として活用し、一部を改修するだけで新しいアプリを素早く開発できます。
- 環境の移行: 開発環境でテストしたワークフローを、本番環境用のDifyにそのまま移行するといった運用も簡単です。
つまりDify DSLは、単なる設定ファイルではなく、あなたのアイデアやノウハウが詰まった価値ある「共有可能な資産」と言えるのです。
Dify DSLファイルの作成方法:手動 vs 自動
DSLファイルの作成には、テキストエディタで直接記述する「手動作成」と、Difyの機能を使ってAIに作らせる「自動生成」の2つの方法があります。
手動作成:YAMLを直接編集
YAMLの基本構文(インデントで階層を表現)に従い、name
、description
、inputs
、outputs
といった要素をテキストエディタで直接記述する方法です。
メリット | デメリット |
---|---|
細かい部分まで完全にコントロールできる YAMLの構造理解が深まる | 記述ミスが起こりやすい(特にインデント) 複雑なアプリになると作成が非常に煩雑になる |
自動生成:ワークフロージェネレーター(推奨)
Difyに搭載されている「ワークフロージェネレーター」を使い、作りたいアプリの内容を自然言語で指示するだけで、AIがDSLファイルを自動で生成してくれる方法です。
メリット | デメリット |
---|---|
圧倒的に速く、簡単に作成できる YAMLの知識がなくても問題ない 記述ミスがなく、正確 | プロンプトが曖昧だと、意図しないDSLが生成されることがある |



基本は自動生成が圧倒的におすすめ!
まずは自動で骨格を作って、細かい調整を手動で行うのが最強の組み合わせだね。
DSLを生成する効果的なプロンプト作成の3つのポイント
ワークフロージェネレーターの性能を最大限に引き出す鍵は「プロンプト」にあります。
より正確なDSLを生成するために、以下の3つのコツを意識しましょう。
「何を入力し、何を処理し、何を出力するか」を具体的に書く
曖昧な指示は、曖昧な結果しか生みません。
アプリケーションの目的、入力、出力、そして処理内容をできるだけ詳細に記述しましょう。
- 悪い例 ❌:
ユーザーの誕生日から年齢を計算する
- 良い例 ✅:
ユーザーの生年月日(YYYY-MM-DD形式)を入力として受け取り、現在の年齢を整数で計算して出力するアプリケーション
データ型(タイプ)を明記する
入力や出力のデータが「文字列(string)」なのか、「数値(number)」なのか、「日付(date)」なのかを明確に指定することで、
AIの誤解を防ぎ、より堅牢なアプリケーションになります。
プロンプト例:
「レビューの文章(string)と5段階評価の星の数(number)を入力し、評価が3未満の場合に『改善要望』というタグを付けて出力する。」
具体的なフォーマットや例を示す
特に文字列を出力する場合、どのような形式で出力してほしいのか具体例を示すと、期待通りの結果を得やすくなります。
- 曖昧な例 ❌:
名前と年齢から挨拶文を作る
- 具体的な例 ✅:
名前(string)と年齢(number)を入力し、「〇〇さん(〇〇歳)、こんにちは!」という形式の挨拶文を生成する。



AIへの指示は、新人スタッフへの指示出しと同じ!丁寧で分かりやすい指示が、良い仕事に繋がるんだ。
【画面で解説】生成したDSLのエクスポートとインポート手順
このセクションでは、例として「チャットフローを使ってAI社長クローンを作ってみよう!」という、非常にシンプルなワークフローのDSLをエクスポート・インポートしていきます。
まだワークフローを用意していない方は、以下の手順で作成できるので、一緒に操作してみてください。
(すでにご自身のワークフローがある方は、次の「STEP2」に進んでいただいて構いません。)
STEP1(準備):エクスポートするワークフローを用意しよう
Difyで「アプリを作成する」→「最初から作成」を選択し、プロンプト入力画面を開きます。


「チャットフロー」を選択し、「アプリのアイコンと名前」「説明(随意)」を入力します。
「作成する」で次へ進みます。


以下のチャットフローを構築します。
知識検索ノードを使って、ユーザーの質問に近い情報を事前に登録したナレッジから参照、そのデータを使ってLLMに回答させるフローです。


これでエクスポートするワークフローの準備が整いました。
STEP2: ワークフローをDSLファイルとしてエクスポートする
まずは、完成したワークフローをPCに保存します。
- エクスポートしたいワークフローの編集画面を開きます。
- 画面の左上のアイコン横にある「調整アイコン」をクリックし、表示されたメニューから「DSLをエクスポート」を選択してください。




【ここにキャプチャ画像を挿入①】
これだけの操作で、~~~.yaml
という名前のDSLファイルが自動的にダウンロードされます。このファイルが、あなたのワークフローの「設計図」そのものです。
STEP3: DSLファイルを新しいアプリにインポートする
次に、先ほど保存したDSLファイルを使って、新しいアプリケーションとして完全に複製してみましょう。
- Difyのダッシュボードに戻り、通常通り「アプリを作成」ボタンをクリックします。
- 「ワークフローから作成」を選択します。
- プロンプトを入力する画面が表示されますが、ここでは入力しません。入力欄の下にある「DSLファイルをアップロード」という青い文字のリンクをクリックします。
- ファイル選択画面が開くので、先ほどダウンロードしたYAMLファイルを選択してアップロードします。




たったこれだけの操作で、アプリケーションの複製と共有が可能です。
ただし、インポートしたワークフローを実際に動かす際には、いくつか確認すべき注意点が存在します。
次のセクションで、その重要なポイントと、さらに進んだ活用法を見ていきましょう。
生成されたDSLファイルの活用と注意点
自動生成したDSLファイルは、そのまま使うだけでなく、さらにカスタマイズしたり、複雑な業務に応用したりすることが可能です。
DSLファイルのインポートとテスト実行
生成されたDSLファイルは、Difyのダッシュボードから簡単にインポートできます。
インポート後、テストデータを入力して実行し、期待通りの動作をするか確認しましょう。
もし想定と違う動きをした場合は、DSLファイルを直接編集して修正します。
DSLファイルの編集と改良
生成されたDSLは完璧な出発点ですが、ゴールではありません。
テキストエディタでYAMLファイルを開き、inputs
の型を変更したり、description
をより分かりやすく書き換えたり、新しい処理ステップを追加したりと、自由に改良できます。
正規表現による入力チェックや、条件分岐を追加するなど、高度なカスタマイズも可能です。
応用例1:定型業務の自動化
毎日作成する日報や、週次の売上レポート集計など、定型的な業務をDSLで定義することで、面倒な作業を自動化できます。
CSVデータを入力とし、集計・分析して結果を出力するワークフローを一度作ってしまえば、あとは実行するだけです。
応用例2:外部APIと連携した複雑なアプリケーション
DSLは、外部のAPIやツールと連携させることも可能です。例えば、以下のような複雑なアプリケーションもDSLで開発できます。
- 決済API連携: 商品情報を受け取り、決済APIを呼び出して支払い処理を行う。
- 顧客管理システム連携: 問い合わせ内容を分析し、種別に応じてSlackに通知したり、CRM(顧客管理システム)にチケットを起票したりする。
【重要】DSLインポート後の確認ポイントと注意点
DSLファイルをインポートするだけでワークフローの骨格は完全に再現できますが、そのまま問題なく動作するとは限りません。
インポート後は必ず以下のポイントを確認・修正する習慣をつけましょう。
注意点1:ツール・ノードの有効化を確認する
ワークフロー内でGoogle検索や特定のAPIツールなどを使用している場合、インポート先のDify環境でも同じツールが有効化されている必要があります。
もしツールが不足しているとエラーになるため、事前に確認・追加しておきましょう。
注意点2:LLMやAPIキーを再設定する
ワークフローの「構造」は引き継がれますが、セキュリティ情報(各ツールに設定したAPIキーなど)は引き継がれません。
LLM(大規模言語モデル)ノードやツールノードを開き、使用するモデルの選択やAPIキーの再入力を行ってください。
注意点3:ノードの接続を確認する
基本的には自動で接続されますが、稀にノード間の接続(線)が切れてしまうことがあります。
インポート後は全体を俯瞰し、接続が切れている箇所がないか確認し、もしあれば手動で繋ぎ直しましょう。



インポートはゴールじゃなくてスタート!
車で言えば、エンジンをかけて最終チェックをするような大事な作業だよ。
ここを怠ると、いざという時に動かない原因になるからね。
【コピペOK】すぐに使えるDify DSLサンプル集
理論は分かったけれど、実際にどんなDSLを書けば良いのかイメージが湧かない…という方もいるかもしれません。
ここでは、コピー&ペーストしてすぐに使えるシンプルなDSLのサンプルを2つご紹介します。
ぜひご自身のDify環境にインポートして、どのように動作するのか、そしてどのようにカスタマイズできるのかを試してみてください。
サンプル1:自己紹介文 生成アプリ
名前、職業、趣味を入力すると、自然な自己紹介文を生成してくれるワークフローです。LLMの基本的な使い方を理解するのに最適です。
▼このワークフローのDSLコード
name: 自己紹介文 生成アプリ
description: 簡単な情報から自己紹介文を作成します。
inputs:
- name: name
type: string
description: あなたの名前
required: true
- name: job
type: string
description: あなたの職業
required: true
- name: hobby
type: string
description: あなたの趣味
required: true
outputs:
- name: introduction
type: string
description: 生成された自己紹介文
nodes:
- id: start
type: start
config:
inputs:
- name: name
- name: job
- name: hobby
- id: llm
type: llm
config:
prompt: "以下の情報を使って、親しみやすい自己紹介文を作成してください。\n\n名前:{{name}}\n職業:{{job}}\n趣味:{{hobby}}"
- id: end
type: end
config:
outputs:
- name: introduction
source: llm.text
edges:
- source: start
target: llm
- source: llm
target: end
サンプル2:税込み価格 計算アプリ
この記事の中でも例として登場した、商品の単価と数量から税込みの合計金額を計算するワークフローです。
数値計算など、定型的な業務を自動化する際の基本形となります。
▼このワークフローのDSLコード
name: 税込み価格 計算アプリ
description: 商品の単価と数量から税込みの合計金額を計算します。
inputs:
- name: price
type: number
description: 商品の単価
required: true
- name: quantity
type: number
description: 購入数
required: true
outputs:
- name: total_price
type: number
description: 税込みの合計金額
nodes:
- id: start
type: start
config:
inputs:
- name: price
- name: quantity
- id: code
type: code
config:
code: |
export default async function main({price, quantity}) {
const totalPrice = price * quantity * 1.1;
return { total_price: Math.round(totalPrice) };
}
- id: end
type: end
config:
outputs:
- name: total_price
source: code.total_price
edges:
- source: start
target: code
- source: code
target: end



まずはこのサンプルをインポートして動かしてみるのが、Dify DSL理解への一番の近道だよ!
ここから自分なりに改造してみると、もっと楽しくなるはず。
Dify DSLに関するよくある質問(Q&A)
Dify DSLに関するよくある質問をまとめました。
プログラミング知識がなくても、本当にDSLファイルは作れますか?
はい、作れます。
この記事で紹介した「ワークフロージェネレーター」を使えば、作りたいアプリの内容を日本語で入力するだけでAIが自動でDSLファイルを生成します。
YAMLの知識がなくても、直感的にAIアプリ開発を始められます。
自動生成で思った通りのDSLができません。コツはありますか?
プロンプトの具体性が重要です。
「入力・処理・出力」を明確に記述し、データ型や出力フォーマットを指定してみてください。複数のパターンを試して、AIのクセを掴むのも有効です。
YAML形式とは何ですか?難しくないですか?
YAMLは、人間が読み書きしやすいように設計されたデータ形式です。
インデント(字下げ)で構造を表現するのが特徴で、JSONなど他の形式に比べて直感的です。
最初は戸惑うかもしれませんが、Difyで生成されたDSLを参考にすれば、基本的なルールはすぐに理解できます。
生成したDSLファイルはどこで、どのように編集するのですか?
DSLファイル(.yml または .yaml)は、お使いのPCのテキストエディタ(メモ帳、Visual Studio Codeなど)で直接編集できます。
編集後は、Difyのダッシュボードから再度インポートすることで変更が反映されます。
Difyのワークフロージェネレーターは無料で使えますか?
はい、Difyには無料プランがあり、その範囲内でワークフロージェネレーターを試すことができます。
本格的な利用や、より高性能なAIモデルを使用する場合は、有料プランへのアップグレードが必要になることがあります。
まとめ
今回は、Difyアプリケーション開発の心臓部である「Dify DSL」について、その概要からAIによる自動生成の方法、そして実践的な活用術までを解説しました。
- Dify DSLは、アプリの動作を定義する「設計図」
- 作成は、AIによる「ワークフロージェネレーター」での自動生成が圧倒的に速くて簡単
- 自動生成を使いこなす鍵は、具体的で分かりやすい「プロンプト」にある
- 生成後は自由にカスタマイズでき、定型業務の自動化から複雑なアプリ開発まで応用可能スト
かつては専門知識が必要だったAIアプリケーション開発が、Dify DSLの登場によって、誰もがアイデアを形にできる時代になりました。
この記事を参考に、ぜひあなたもDify DSLの自動生成機能を活用して、革新的なアプリケーション開発の第一歩を踏み出してください。