- 1. はじめに
- 2. Difyとは
- 3. Difyの基本操作
- 3-1. Difyの種類
- 3-2. アカウント作成
- 3-3. シンプルなワークフローを作ってみる
- 4. Dify実践: LLMとの連携
- 4-1. 初期設定(LLM設定)
- 4-2. ワークフローでLLMを使ってみる
- 5. まとめ
1. はじめに
山根さん「小川くん、Difyって知ってる?」
ボク「海賊王になるやつですかね」
山根さん「じゃあ調べてブログ書いてね。」
ボク「はい。」
そんなやり取りがあったとか無かったとか
ブログをご覧の皆さまこんにちは。エンジニアの小川です。
今回はAIツール「Dify」について、入門編として基本的な使い方を解説します。
2. Difyとは
Dify公式サイト
https://www.dify.ai/
大規模言語モデル(LLM)を利用し、チャットボットやコンテンツ生成ツールなどを直感的な操作(ノーコード/ローコード)で開発できます。
まとめるとDifyはAIアプリケーションを簡単に作成できるプラットフォームです。
GUIで操作できるため、プログラミングの知識がなくてもAIツールを作成できます。
ええそうです。ごくごく簡単なものであれば。
実際はコードを書かないといけない場面が多々ありますし、そもそもやりたいことのワークフローの設計自体が難しいケースもあります。
つまりは謳われている程には「プログラミング知識がなくても良い」ことはなく、あった方が断然良いかと思われます。まぁ「ノーコード」を名乗るサービスの多くは大体そんな感じかと思いますが。
一方で経験がある方からすると、DifyはLLMを使ったアプリケーションをとても手軽に作成できる便利なツールと言えます。
そこで本記事では、Difyの基本的な使い方と、LLMやMCPサーバーとの連携方法について、2部構成で紹介します。
・はじめてのDify - エージェント&ワークフロー実践: 第1部 入門編
・はじめてのDify - エージェント&ワークフロー実践: 第2部 応用編
本記事は主に
・初級〜中級エンジニアの方
・Difyを初めて使う方
・DifyでLLMを使ったアプリケーションを作成したい方
・DifyとMCPサーバーの連携に興味がある方
を対象としています。
3. Difyの基本操作
3-1. Difyの種類
Difyには大きく分けて2つの提供形態があります。
・Dify Cloud:Dify社が提供するクラウドサービス
・Dify Self-Hosted:Difyのオープンソースコードを自分で構築・ホスティングする
今回はCloud版を使用します。Self-Hosted版はGitHubでコードが公開されていますので、興味がある方はそちらも試してみてください。実際に使ってみましたが、Docker経験者であればとても簡単に構築できるかと思います。
またEnterprise版もありますが、こちらは大規模組織向けの有料プランとなっており、今回は割愛します。
3-2. アカウント作成
まずはDifyのアカウントを作成します。
特に難しい点はありません。
Dify公式サイト(https://www.dify.ai/)にアクセスし、画面右上の「Get Started」ボタンをクリックします。
GitHubアカウント、Googleアカウント、またはメールアドレスで登録/ログインできます。
ログイン後、Difyのダッシュボード画面が表示されます。
3-3. シンプルなワークフローを作ってみる
それでは実際にワークフローを作成してみましょう。
画面内のメニューにある「最初から作成」リンクを押下します。
作成内容の選択画面が表示されます。
ここでは「ワークフロー」を選択し、アプリ名とアプリ説明を入力して「作成する」ボタンを押下します。
現在(2025/11/26)の最新バージョン(v1.10.0)では、開始ノードを選択する機能が追加されていました。
今回は「ユーザー入力」を選択します。
開始ノードが作成され、ワークフロー編集画面が表示されます。
次にワークフローのキャンバス上で右クリックし、表示されるメニューから「ブロックを追加」を選択します。
次に「HTTPリクエスト」を選択します。
次にワークフローのキャンバス上で右クリックし、表示されるメニューから「ブロックを追加」を選択します。
次に「HTTPリクエスト」を選択すると、マウスにHTTPリクエストブロックが追従しますので、それをキャンバス内に配置します。
この中に通信したい先を設定していきます。
今回は例として「livedoor 天気予報API(https://weather.tsukumijima.net/)」を使用しましょう。
API欄でメソッドを「GET」に設定し、URL欄にはAPIのエンドポイントを入力します。
次にこのAPIでは「city」というクエリパラメータが必要となりますが、折角なのでこちらは実行時にユーザが入力できる様にしていきます。
まず「ユーザー入力」ブロックを選択し、「入力フィールド」横の「+」ボタンを押下します。
押下すると入力フィールドが追加されますので、以下に設定します。
・フィールドタイプ: 短文
・変数名:input_city
・ラベル名: input_city
・最大長: 48(デフォルト)
・初期値: 130010(東京)
・必須: チェック有り
入力できたら次は入力ブロックとHTTPリクエストブロックを接続します。
ユーザー入力ブロックにマウスオーバーすると、右側に小さな丸が表示されますので、それをドラッグしてHTTPリクエストブロックに接続します。
これでユーザが入力した値をHTTPリクエストブロックで使用できる様になります。
次にHTTPリクエストブロックを選択し、「パラメータ」フィールドに以下を設定します。
入力欄で「/」を最初に入力すると、変数を指定できる様になります。
・キー: city (文字列を入力)
・値: input_city (変数から設定)
これでユーザが入力した都市IDがHTTPリクエストのクエリパラメータとして設定されます。
最後に結果を出力するための「出力」ブロックを追加します。
先程と同様にキャンバス上で右クリックし、表示されるメニューから「ブロックを追加」から「出力」を選択して配置します。
配置したら先程と同様にHTTPリクエストブロックと出力を接続します。
接続したら、出力ブロックを選択し、「出力内容」フィールドに以下を設定します。
・result: {{HTTPリクエスト.body}}
これでHTTPリクエストのレスポンスボディが出力される様になります。
それでは最後に「テスト実行」ボタンを押下して動作確認をしてみましょう。
入力欄は初期値か、または
全国の地点定義表から都市IDを参照して入力してください。
実行すると実行結果が表示されます。
正常に動作していれば指定した都市の天気予報データがJSON形式で表示されます。
以上でシンプルなワークフローの作成と実行が完了です。
4. Dify実践: LLMとの連携
ワークフローの基本操作が理解できたところで、次はDifyのコア機能と言えるLLMとの連携を試してみましょう。
4-1. 初期設定(LLM設定)
まずは使用するLLMの設定を行います。
ヘッダーのアカウントメニューから「設定」を選択します。
次に設定メニューから「モデルプロバイダー」を選択します。
すると使用できるLLMを提供するサービス一覧が表示されます。
今回は「Gemini」を使用しますので、「Gemini」カードにマウスオーバーし、「インストール」ボタンを押下します。
ここで注意してほしいのが、インストールしたモデルプロバイダーはアンインストールできません(謎仕様)。
その為無駄にインストールしない様に注意してください。「消させろー!」ってなります(なりました)。
インストールが完了したら、次にAPIキーを設定します。
「Gemini」カードの「セットアップ」ボタンを押下し、表示されたモーダル内にGeminiのAPIキーを入力します。
APIキーが正しければ使用できるモデル一覧が表示される様になります。
※GeminiのAPIキーの取得方法については本記事では割愛します。公式ドキュメント等を参照してください。
インストール完了時の表示
Geminiセットアップ画面
セットアップ完了時のGeminiサービス内モデル一覧
以上でLLMを使う準備ができました!
4-2. ワークフローでLLMを使ってみる
それでは実際にLLMを使ったワークフローを作成してみましょう。
先程作成したワークフロー編集画面に戻り、キャンバス上で右クリックし、表示されるメニューから「ブロックを追加」を選択します。
次に「LLM」を選択してLLMブロックをワークフロー内に配置します。
配置したら先程と同様にLLMブロックを編集します。
「AIモデル」欄に先程セットアップしたGeminiモデルを選択します。
今回は一定量まで無料枠で使用できる「Gemini 2.5 Flash」を選択します。
また今回やりたいこととして、現在のワークフローでは1次細分区定義表内の都市IDを入力させていますが、ここからいちいちIDを調べるのは面倒です。
そこでLLMに都市名から都市IDを調べてもらい、そのIDを使用して天気予報APIに問い合わせる様にしてみましょう。
SYSTEMプロンプト欄には以下を設定します。
https://weather.tsukumijima.net/primary_area.xml に定義されている、入力された地名に一番近い1次細分区域の都市IDを取得してください
USERプロンプト欄には先頭に「/」を入力し、変数選択モードに切り替えた上で、「input_city」変数を選択して設定します。最後にこのLLMブロックの実行結果を見る為、出力ブロックにLLMブロックを接続し、出力変数にLLMブロックの出力「text」を設定します。
全ての設定ができましたら、「テスト実行」ボタンを押下して動作確認をしてみましょう。
実行すると実行結果が表示されます。
正常に動作していれば指定した都市名に対応する都市IDが表示されますが、余計なテキストが大量に含まれてしまっていますね。
この結果を天気予報のAPIにそのまま渡してもエラーになってしまいます。
そこでLLMブロックのSYSTEMプロンプトを以下の様に修正してみましょう。
「出力形式を明示的に指定する」ことで、LLMの出力をコントロールします。
https://weather.tsukumijima.net/primary_area.xml
に定義されている、入力された地名に一番近い一次細分区域の都市IDを取得してください。
出力は都市IDのみとし、他のテキストは一切含めないでください。
しっかりIDのみが取得できていますね!
あとはLLMブロックの出力をHTTPリクエストブロックのパラメータに設定すれば、都市名から天気予報を取得できるワークフローが完成します。
完成したワークフロー
最終実行結果
ばっちり東京の天気情報が取得できましたね!
以上でLLMを使ったワークフローの作成と実行が完了です!
5. まとめ
本記事ではDifyの基本的な使い方と、LLMとの連携方法について紹介しました。
Difyはノーコード/ローコードでAIアプリケーションを作成できる便利なツールですが、ご覧の通りある程度のプログラミング知識が必要となるかと思います。
更に複雑なことをやろうとすると、通常のブロックだけでは実現できず、コードブロックを使用してJavaScriptやPythonで処理を書く必要が出てきます。
また今回は触れていませんでしたが、今回のワークフローの場合、LLMが返す都市IDが不正確な場合があり、その場合は天気予報APIからエラーが返ってしまいます。
こういったケースに対応するには、エラーハンドリングやリトライ処理を実装するなどの工夫が必要となってきます。AIによる不確実性を考慮した設計が求められる点は、他のLLM連携ツールと同様です。
ちなみに今回は数回の試行の内、1回謎のIDを出力していました。
しかしプログラムを理解している人が、複数サービスのAPIを組み合わせてAIアプリケーションを手軽に作成するツールとしては非常に有用であるとは感じます。
以前も「Yahoo Pipes」の様な複数のAPIを組み合わせることができるマッシュアップサービスが数多くありましたが、そのAI対応版でしょうか。
※残念ながらYahoo Pipesは2015年にサービス終了しました。当時は「マッシュアップ」という言葉と共に流行ったんですけど一緒に廃れましたね。
また冒頭に出てきましたが、少し前までスケジュールトリガ機能がありませんでしたが、現在では実装された模様ですので、より多様なユースケースに対応できる様になっているかと思います。
今後もDifyの機能追加や改善が進むことが期待されますので、興味がある方は是非試してみてください。
次回は「DifyとMCPサーバーの連携」について紹介します。
(※他にもあるかもしれませんが、今のところここしか見つけられていません)
良かった




「Start Building」から入った場合のMCPサーバー画面
ヘッダーからログインした場合のZapierのメインサービス画面
途中でSlackにメッセージを投稿して良いのか?という確認が入りますのでOKします。
