アプリ開発ラボ

【C#実践アプリ開発ラボ】Dify x C#連携① ~Difyとは?ブログサイトにAIチャットボット設置!~

C#実践アプリ開発ラボ編」の初回として、Dify(ディフィ)を使ったAIアプリ開発を紹介します。

Difyは、ローコード/ノーコードでAIアプリを構築できるプラットフォームです。本シリーズでは、DifyとC#を組み合わせた実践的なアプリ開発を紹介します。

以下のような方に役立つ内容となっています。

  • ローコードでAI開発を始めたい方
  • アプリへAI機能(RAG等も含む)を追加したい方
  • 効率的なAIアプリ開発手法を知りたいエンジニア

本記事でAIアプリ開発の第一歩として、「Difyとは何か?」を解説し、DifyによるHello World的なアプリ開発(簡単なAIチャットボットアプリ)と公開までを紹介します。

プロ太

DifyはRAG(検索拡張機能)を使ったAIチャットも比較的簡単につくれます。

また、既存のWebアプリ(例:C# Blazorなど)を開発する際に、AI機能の部分だけをDifyで作成し、APIを介して連携させることもできます!

解説動画もありますので、ご覧ください。

Difyとは?(位置づけ、特徴、ユースケース)

AIワークフロー構築ツールとDifyの位置づけ

AIアプリ開発の世界では、AIワークフローを組めるサービスやフレームワークが多数登場しています。

AIアプリ開発において、開発者のスキルレベルや用途に応じて、大きく3つのカテゴリのツールが存在します。

大カテゴリ主なツール主な利用者層
①-1 ローコード系
(プロプライエタリ)
Microsoft Copilot Studioなど市民開発者・業務担当者
①-2 ローコード系
(OSS)
Dify, Flowise,Langflow など技術者寄りのローコード開発者、企業内PoCチーム
② コードベース系LangChain, LlamaIndex, LangGraphなどエンジニア・研究開発者

①-1 ローコード系(プロプライエタリ)

Microsoft Copilot Studioなどの商用プラットフォームが該当します。これらは企業が提供する統合環境で、GUI操作だけでAIアプリを構築できます。

主に市民開発者・業務担当者が利用し、プログラミング知識がなくても扱える点が特徴です。

ただし、ライセンス費用が発生し、カスタマイズの自由度には制限があります。

①-2 ローコード系(OSS)

Dify、Flowise、Langflowなどのオープンソースツールが該当します。プログラミング知識のある技術者や企業内のPoCチームが主な利用者層です。

ビジュアルなインターフェースで開発できる手軽さと、オープンソースならではのカスタマイズ性・拡張性を兼ね備えています。

近年(ChatGPTの登場以降)、この領域ではOSSの勢いが顕著で、コミュニティ主導の開発により機能が急速に充実しています。

プロ太

ローコードによる生産性に加え、OSSでベンダロックインの心配がないという点で、選ばれることが多いという印象ですね。

DifyもOSS公開後2年で10万スター獲得と、コミュニティに勢いがあります。

② コードベース系

LangChain、LlamaIndex、LangGraphなどのフレームワークが該当します。エンジニアや研究開発者がコードを書いて構築するため、最も高い自由度とカスタマイズ性を持ちます。

複雑なAIワークフローや独自ロジックの実装が必要な場合に選択されます。

Difyの位置づけ

Difyは「①-2 ローコード系(OSS)」に位置し、開発者(そして非開発者も)がローコードで素早くAIアプリを構築できるツールとして注目されています。

DifyはOSSでありながらUIが洗練されていて、ワークフロー設計も直感的です。

プロ太

“開発者も非開発者も扱いやすい”という点が、大きな特徴といえますね。

Difyの特徴

Difyには以下のような特徴があります。

  • LLMアプリ構築:ChatGPTやClaudeなどをベースに、チャット・RAG・ツール連携アプリをGUIで構築
  • ワークフロー構築:ノードをつなぐだけで、条件分岐・API呼び出し・DB操作などが可能
  • ナレッジ機能(RAG):PDF・Word・Webページなどのファイルを知識として登録し、検索拡張を実現
  • 公開・連携:作成したアプリをWeb公開またはAPIとして呼び出し可能
  • 拡張性:プラグイン・Webhooks・外部API統合に対応し、既存システムとも連携しやすい

以下のようにGUI上で様々な処理を行うノードをつなぐだけでアプリを作成できます。

つまりDifyは、「生成AI活用アプリのローコード開発基盤」兼「AI機能モジュールの開発ハブ」と位置づけられます。

Difyのユースケース

Difyは単体でもアプリを公開できるため、PoC(概念実証)開発AIチャットボットのプロトタイピングに最適です。

また、API経由で呼び出せるため、既存システムのAI機能バックエンドとしても活用できます。

目的利用方法
AIチャットアプリを素早く公開したいDify単体で構築・Web公開FAQボット、社内ナレッジ検索ボット
既存アプリにAI機能を追加したいDifyをバックエンドAPIとして利用C# BlazorアプリからDifyのREST APIを呼び出す
業務フローをAIで自動化したいDifyワークフローで外部API連携データ抽出→要約→Teams通知などの自動化
プロ太

このように、「単体運用」と「システム連携」の両面で使える柔軟性が、Difyの強みですね。

Difyの利用形態

Difyには主に2つの利用形態があります。

  • ①Dify Cloud(クラウド版)
  • ②セルフホスティング(自社環境での運用)

①Dify Cloud(クラウド版)

Dify公式が提供するクラウドサービスです。

  • アカウント登録だけで利用開始できる
  • 環境構築が不要で最も手軽な反面、リソースや設定の自由度は限定される

主な特徴:手軽さ・メンテナンス不要・すぐ試せる

Dify Cloudは簡単なアプリを作って実験してみる分には無料版でも十分です。料金体系について、詳しくはこちらを確認してください。

②セルフホスティング(自社環境での運用)

DifyはOSSのため、自社サーバーやクラウド環境にインストールして運用可能です。

  • データを自社管理でき、カスタマイズ性やセキュリティ制御に優れる
  • 構築・運用の手間はかかる

主な特徴:自由度・セキュリティ・カスタマイズ性

プロ太

まずは手軽にDify Cloudで試してみるのがおすすめです。

次に、実際にブログ向けAIチャットボットアプリを作ってみましょう!

Difyでアプリを作る

Dify Cloud(無料版)を使って、以下のようなAIチャットを作って公開まで行ってみます。

  • C#に関する質問をされると、関連ある記事題目とそのリンクを回答
    (このサイトのC#入門編の記事一覧から選定)
プロ太

自分のブログサイトに質問回答用のAIチャットボットを設置する…といった感じを想定しています。

チャットボットを作りながら、Difyの雰囲気を掴んでいきましょう!

あらかじめ、Dify公式のドキュメントを一読しておくことをおすすめします。

特にワークフローに関する説明を読むと、変数・ノードなどの基本概念の理解が深まります。

Dify Cloudへサインアップしてアプリ作成

Dify Cloudでアカウントを作成します。

「アプリを作成する」で「最初から作成」を選びます。

そして、「チャットフロー」を選択し、アプリ名などを入力して「作成する」で作成します。

Difyアプリの基本構成を確認

以下のように、新規作成したアプリを編集する画面になります。

様々なノード(LLMによる回答、外部サービスとの接続など)を配置し、それらを繋げることでアプリを作ります。

プレビュー実行、アプリの公開についても簡単に行えるようになっています。

初期状態では、(1)開始、(2)LLM、(3)回答という3つのノードが配置されています。

(1)開始:ユーザーからの入力を受け取る

「開始」ノードは、ユーザからの入力を受け取るワークフローの起点となるノードです。

初期状態ではsys.queryという変数が定義されており、ユーザの質問内容がここに格納されます。

この変数は後続の全ノードで参照可能となり、ワークフロー全体でユーザ入力を活用できます。

(2)LLM:大規模言語モデルによる処理

「LLM」ノードは、OpenAIのGPTやAnthropicのClaudeなどの大規模言語モデルを呼び出すノードです。

使用するモデルの選択、プロンプトの記述、入力変数の指定を行い、LLMからの応答を次のノードに渡します。

プロ太

プロンプトには前のノードからの変数を埋め込むことができ、動的にLLMへの指示を生成することもできます。

(3)回答:ユーザーへの応答を返す

「回答」ノードは、ワークフローの最終的な出力をユーザに返すノードです。

LLMノードで生成されたテキストや、途中で加工したデータをここで返します。条件分岐を使えば、複数の回答ノードを配置して状況に応じた異なる応答を返すことも可能です。

LLMノードでモデルを設定

使用するLLMを設定します。OpenAI・Anthoropic・Geminiなど様々なモデルを使うことができます。
(事前にサービスの契約をしてAPIキー発行など実施しておく必要があります。基本的に使用量に応じた課金が発生するため注意しましょう。)

今回の例では、Azure Open AIを使います。

LLMノードの設定で、「AIモデル>モデルプロバイダー設定」へ進みましょう。

モデルプロバイダーとしてAzure OpenAIを選んでインストールします。(自分が使うLLMにあわせたものをインストールしましょう)

モデルプロバイダー画面でAzure OpenAI Service Modelが表示されるので、「モデルを追加」を選びます。

以下のようにAzure OpenAIで作成しておいたモデルの情報を設定して追加します。

最後に、システムモデル設定で、システム推論モデルとして登録したモデル(gpt-5-chat)を設定して保存します。

そうすると、LLMノードのAIモデルが以下のように、gpt-5-chatになるはずです。

プロ太

Google AI Studioなど使うと、APIキーを発行して一定量を無料で使うことも可能です。

プロ美

これで実行の準備は整ったね!

プレビュー実行(疎通確認)

試しにプレビュー実行してみましょう。LLM設定ができていれば以下のようにAIとのチャットが可能です。

システムプロンプトを設定

記事の推薦をしてほしいので、以下のようなシステムプロンプトを用意し、設定します。

あなたは「C#学習ナビゲーターAI」です。
ユーザーがC#やプログラミングに関する質問をした場合、以下のリストの中から最も関連する記事を1~3件選び、
記事タイトルと記事URLを提示してください。
回答は以下の形式で出力します:
おすすめの記事:
【タイトル】<記事タイトル>
【記事URL】<記事URL>

質問が複数テーマにまたがる場合は、最大3件まで提示して構いません。
C#に関係しない質問の場合は、以下のように返してください:
「このテーマに関連するC#の記事は見つかりませんでした。」

【記事データベース】
(0) プログラミングを学ぶメリットは?C#がおすすめな理由
https://prota-p.com/csharp_basic0_introduction/
(1) Visual Studioで開発 ~HTMLでHello World~
https://prota-p.com/csharp_basic1_helloworld/
(2) 変数と型 ~HTMLへ入力値を埋め込む~
https://prota-p.com/csharp_basic2_variable_type/

…省略…

(19) null許容型(Nullable)入門 ~null参照例外を防ぐ~
https://prota-p.com/csharp_basic19_null/
(20) 文字列操作マスターガイド ~基本操作・StringBuilderによる高速化・正規表現まで~
https://prota-p.com/csharp_basic20_string/
(21) 日時マスターガイド~DateTime/DateTimeOffset/TimeProviderまで~
https://prota-p.com/csharp_basic21_datetime/

【回答例】
ユーザー質問:「C#の文字列処理を知りたいです」
AI回答:
おすすめの記事:
【タイトル】(20) 文字列操作マスターガイド ~基本操作・StringBuilderによる高速化・正規表現まで~
【記事URL】https://prota-p.com/csharp_basic20_string/

LLMノードのSYSTEMの欄にシステムプロンプトを記入します。

プレビュー実行(チャットボット動作確認)

もう一度プレビュー実行してみましょう。

プロ美

ちゃんと関連する記事を推薦してくれているね!

Difyアプリを公開する

アプリを公開

Dify Cloudではアプリの公開もとても簡単です。「公開する>更新を公開」をクリックしましょう。

これで公開は完了です。チャットアプリへアクセス可能になっています。以下の「アプリを実行」を選んでみましょう。

「https://udify.app/chat/●●●」というURLで、インターネット上に公開され、誰でも使える状態になっています。

プロ美

ほとんどワンクリックでデプロイしてくれるんだね!

プロ太

ここらへんの手軽さはローコードツール・サービスの強みですね。

Difyアプリをブログページへ埋め込む

さらに、「サイトに埋め込む」を選ぶと、サイト埋め込み用のコードが表示されます。

これをiframeとして自分のサイトへ埋め込むことで、簡単にAIチャットボットを配置できます。試しに、私のサイト(WordPressのページ)に設置してみました。

プロ美

ブログに質問回答用のチャットボットを設置できたよ!

まとめ

本記事では、Difyを使った簡単なAIチャットボット開発と公開までの流れを紹介しました。

今回のような典型的なチャットボットであれば、このようにローコードで非常に簡単に構築できることがお分かりいただけたかと思います。

一方で、より凝ったUIを実装したい場合や、高度な処理を組み込みたい場合は、フロントエンドを自分で開発する必要が出てきます。

例えば、C# Blazorなどで独自のユーザインターフェースを構築し、DifyアプリをバックエンドAPIとして連携させる、といった手法が有効です。

Difyシリーズの次回は、C#アプリとDifyのAPI連携について詳しく解説する予定です。

プロ太

引き続き、DifyやC#の連携について一緒に学んでいきましょう!

ABOUT ME
プロ太
●仕事:現在は個人事業主(メンター・情報発信等)、大手IT企業で技術者・マネージャ(15年以上)、大学の外部講師、学生時代は学習塾で非常勤講師(約4年間) ●博士(工学)の学位取得 ●高校生の頃に独学で始め、プログラミング歴20年以上 ●言語:C# 、Java、C/C++、Python、JavaScript/TypeScript等 ●分野:Webアプリ、テスト自動化、生成AI、デバッガ、コード解析、ドメイン特化言語

ご依頼・ご相談について

プログラミング学習のご相談、お仕事のご依頼については、
こちらのお問い合わせページをご確認ください。