30秒でわかるこの記事のポイント
- Difyプラグインは「ツール追加」だけでなく、モデル・データソース・エージェント戦略・RAGパイプラインまで拡張可能
- Plugin-Daemonアーキテクチャにより、プラグインは独立プロセスとして動作しDify本体に影響しない
- マーケットプレイスで既製プラグインを導入、OpenAPIでカスタムツールを作成、Plugin SDKで本格開発と、3段階の選択肢がある
- MCPサーバー連携により、外部ツールをDifyワークフロー内で活用できる
Difyを使い始めると、その多機能さに感心する一方で、「あと少しこの機能があれば……」と感じる場面が出てきます。
「社内の既存システムと連携させたい」「特定のWebサービスからデータを取り込みたい」「自社独自のドキュメント処理ロジックを組み込みたい」——。
こうした要望に応えるのが、Difyのプラグインシステムです。プラグインを使えば、Difyの標準機能を超えた独自の拡張が可能になります。この記事では、プラグインの基本概念から、マーケットプレイスでの導入、そしてカスタム開発まで、段階的に解説します。
Data Insightでは、AIツールの導入は「できあいのものをそのまま使う」だけでなく、自社の業務に合わせて育てていくことが重要だと考えています。プラグインは、その「育てる」ための強力な手段です。
§ 1. プラグインとは ─ なぜ「ツール追加」だけじゃない
§ プラグインで拡張できる範囲
Difyのプラグインは、単なる「ツールの追加」にとどまりません。以下の5つの領域を拡張できます。
| 拡張対象 | 概要 | 活用例 |
|---|---|---|
| モデル | 新しいLLMプロバイダーの追加 | 自社でホストしたモデルの利用 |
| ツール | 外部APIやサービスとの連携機能 | 社内システムとの接続 |
| データソース | 外部ナレッジベースの接続 | 既存のElasticsearchとの連携 |
| エージェント戦略 | AIエージェントの意思決定ロジック | 業界特化型の判断基準 |
| RAGパイプライン | 検索・生成プロセスのカスタマイズ | 独自のドキュメントパーサー |
特に注目すべきは、RAGパイプラインの拡張です。標準のチャンキング(文書分割)ロジックでは対応しきれない、専門文書や特殊フォーマットのドキュメントも、カスタムプラグインで処理できるようになります。
§ Plugin-Daemon アーキテクチャの安心設計
「プラグインを入れたらDifyが不安定になるのでは?」という心配は無用です。
DifyはPlugin-Daemon アーキテクチャを採用しています。これは、プラグインがDify本体とは別の独立したプロセスとして動作する仕組みです。
┌─────────────────────────────────────────┐
│ Dify Platform │
│ ┌─────────────────────────────────┐ │
│ │ Plugin-Daemon │ │
│ │ ┌─────┐ ┌─────┐ ┌─────┐ │ │
│ │ │Plugin│ │Plugin│ │Plugin│ │ │
│ │ │ A │ │ B │ │ C │ │ │
│ │ └─────┘ └─────┘ └─────┘ │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────────┘
この設計により:
- 障害の隔離:あるプラグインに問題が起きても、Dify本体や他のプラグインには影響しない
- リソース管理:各プラグインのメモリ・CPUを独立して管理できる
- セキュリティ:プラグインがアクセスできる範囲を制限できる
この仕組みがあるからこそ、安心してさまざまなプラグインを試すことができます。
§ 2. マーケットプレイスからのプラグイン導入
§ Dify公式マーケットプレイスとは
プラグイン開発の知識がなくても、マーケットプレイスから既製のプラグインをインストールできます。
Difyのマーケットプレイスには、コミュニティや企業が開発したプラグインが公開されています。Web検索、外部データ連携、ドキュメント処理など、さまざまな機能を数クリックで追加可能です。
§ インストール手順
-
マーケットプレイスを開く
Difyの管理画面から「プラグイン」メニューを選択 -
プラグインを検索
カテゴリーやキーワードで目的のプラグインを探す -
インストール
「インストール」ボタンをクリック -
認証設定
必要に応じてAPIキーやOAuth認証を設定
§ 代表的なプラグイン
§ LlamaCloud — 外部ナレッジベース接続
LlamaIndexが提供するクラウドサービスとの連携プラグインです。すでにLlamaCloudでインデックス化されたドキュメントを、Difyのナレッジベースとして利用できます。データを移行せずに、既存の検索基盤を活用できる点が特徴です。
§ Firecrawl — Webサイトのクロール・ナレッジ化
指定したWebサイトを自動でクロールし、内容をナレッジベースに追加できるプラグインです。自社サイト全体を対象にすれば、「自社サービスについて何でも答えられるボット」の知識源として活用できます。
§ Jina Reader — WebページをMarkdown変換
WebページのURLを入力すると、本文を抽出してMarkdown形式に変換します。ニュース記事やブログ記事を取り込んでRAGの素材にする際に便利です。
§ Langfuseプロンプト管理
外部のプロンプト管理ツール「Langfuse」と連携し、チームで管理されたプロンプトをDify内で利用できるようにします。プロンプトのバージョン管理や共有が容易になります。
§ インストール後の認証設定
多くのプラグインは外部サービスと通信するため、認証情報の設定が必要です。
- APIキー方式:サービス提供元から発行されたキーを入力
- OAuth方式:認証画面にリダイレクトされ、アクセスを許可
認証情報はDify側で安全に管理されますが、キーの権限範囲は最小限に設定することを推奨します。
§ 3. カスタムツールの開発 ─ OpenAPIの活用
§ OpenAPI(Swagger)仕様でツールを定義
マーケットプレイスに目的のプラグインがない場合、OpenAPI仕様を使って独自のツールを作成できます。これは本格的なプラグイン開発の「軽量版」とも言える方法で、コードを書かずに社内APIを「ツール」化できます。
§ 手順:社内APIをツールにする
§ Step 1:OpenAPI定義を準備
社内APIがすでにOpenAPI(Swagger)仕様書を持っていれば、それをそのまま利用できます。なければ、以下のようなYAML形式で定義します。
openapi: 3.0.0
info:
title: 社内在庫確認API
version: 1.0.0
servers:
- url: https://internal-api.example.com
paths:
/inventory/{product_id}:
get:
operationId: getInventory
summary: 製品の在庫数を取得
parameters:
- name: product_id
in: path
required: true
schema:
type: string
responses:
'200':
description: 在庫情報
content:
application/json:
schema:
type: object
properties:
quantity:
type: integer
location:
type: string
§ Step 2:Difyにインポート
- Difyの「ツール」設定画面を開く
- 「カスタムツールを追加」を選択
- OpenAPI定義ファイルをアップロード
- 認証情報を設定
§ Step 3:エージェントから呼び出す
インポートしたツールは、エージェントが自律的に判断して呼び出せるようになります。
例えば、ユーザーが「製品Aの在庫は?」と質問すると、エージェントは:
- 質問から製品IDを特定
- 在庫確認ツールを呼び出し
- 結果を自然な文章で回答
という一連の処理を自動で行います。
§ OpenAPIツールの利点
| 観点 | メリット |
|---|---|
| 開発コスト | コードを書かずに既存APIを活用 |
| 保守性 | API仕様が変わってもYAMLを更新するだけ |
| 再利用性 | 他のシステムと同じ仕様書を共有可能 |
ただし、複雑なロジックや独自のデータ変換が必要な場合は、次のPlugin SDKを使った本格開発が適しています。
§ 4. カスタムプラグインの開発 ─ Plugin SDK
§ Plugin SDKの概要
OpenAPIツールでは対応しきれない、より高度な拡張が必要な場合はPlugin SDKを使います。
Plugin SDKは、Difyプラグインを開発するための公式フレームワークです。Python(主にサポート)で記述し、以下のような拡張が可能です。
- 複数のAPIを組み合わせた複合処理
- 独自のデータ変換ロジック
- RAGパイプラインのカスタマイズ
- エージェント戦略の追加
§ 開発環境のセットアップ
§ Dify CLIのインストール
macOSまたはLinux環境では、Homebrewでインストールできます。
brew tap langgenius/dify
brew install dify
§ プロジェクトの初期化
dify plugin init my-custom-plugin
これにより、以下のような構造のプロジェクトが生成されます。
my-custom-plugin/
├── manifest.yaml # プラグイン設定
├── main.py # エントリーポイント
├── endpoints/ # 機能実装
│ ├── my-tool.py
│ └── my-tool.yaml
├── _assets/
│ └── icon.svg # アイコン
└── requirements.txt # 依存ライブラリ
§ 開発対象の種類
§ ツールプラグイン
外部APIを呼び出す機能を追加します。OpenAPIツールより複雑な処理(複数API連携、エラーハンドリング、データ加工)が可能です。
§ エージェント戦略プラグイン
AIエージェントがどのようにツールを選択し、どの順序で実行するかを制御するロジックを追加します。業界特有の判断基準や、自社独自のワークフローを組み込めます。
§ RAGパイプライン拡張
独自のドキュメントパーサー
PDF、Word以外の特殊なファイル形式(CAD図面、医療画像レポートなど)に対応したパーサーを追加できます。
カスタムチャンキングロジック
「表形式データは行単位で分割」「見出しごとに独立したチャンクにする」など、ドキュメントの特性に合わせた分割ロジックを実装できます。
§ パッケージ化と配布
開発したプラグインは、以下のコマンドでパッケージ化できます。
dify plugin package ./my-custom-plugin
.difypkgファイルが生成され、他のDify環境にインストール可能になります。社内での共有や、マーケットプレイスへの公開も可能です。
§ 5. MCPツールとのプラグイン連携
§ MCP(Model Context Protocol)とは
MCPは、AIモデルが外部ツールやデータソースと通信するための標準プロトコルです。Anthropic社が提唱し、Claude Desktop、Cursor、Zedなど多くのツールがサポートしています。
DifyはMCPサーバーとして動作でき、また外部のMCPツールを呼び出すことも可能です。これにより、MCP対応の膨大なツール群をDifyのワークフローで活用できます。
§ MCPサーバーの接続
§ 設定例:Cursor連携
CursorエディタからDifyアプリケーションをMCPサーバーとして利用する場合、プロジェクトの.cursor/mcp.jsonに以下を追加します。
{
"mcpServers": {
"my-dify-app": {
"url": "https://your-dify-instance.com/mcp"
}
}
}
§ 設定例:Zapier連携
Zapierの数千種類の連携先を、Difyエージェントから利用できます。
{
"server_name": {
"url": "https://actions.zapier.com/mcp/your-api-key/sse",
"headers": {},
"timeout": 5,
"sse_read_timeout": 300
}
}
§ パラメータ設定のポイント
MCPツールをDifyで使う際、パラメータの扱い方を設定できます。
| 設定 | 動作 | 適用場面 |
|---|---|---|
| 自動 | AIが文脈から推測して値を決定 | 柔軟な対応が必要な場合 |
| 固定 | 事前に設定した値を常に使用 | 決まった処理を行う場合 |
また、ツールの説明文(description)をカスタマイズすることで、AIエージェントがより適切にツールを選択できるようになります。
§ 6. 事例 ─ プラグインによる機能拡張の実例
§ 事例1:外部ナレッジベース連携
課題
ある企業では、過去10年分の技術文書がElasticsearchで管理されていました。Difyを導入する際、「このデータをDifyに移行するのか」という懸念がありました。
解決策
外部ナレッジベース連携プラグインを使い、ElasticsearchをそのままDifyのナレッジソースとして接続。データ移行なしで、既存の検索インフラを活用できました。
ポイント
- 既存資産を「そのまま」活用
- 移行コスト・リスクを回避
- Elasticsearch側の更新が即時反映
§ 事例2:Webクロールによるナレッジ自動構築
課題
自社サイトの製品情報や FAQ を、カスタマーサポートボットの知識源にしたい。しかし、手動でページを一つひとつ登録するのは現実的ではありませんでした。
解決策
Firecrawlプラグインで自社サイト全体を自動クロール。数百ページの製品情報・FAQ・ブログ記事を一括でナレッジベースに追加しました。
ポイント
- 初期構築の工数を大幅削減
- 定期的な再クロールで最新情報を反映
- サイト構造を活かしたメタデータ付与
§ これらの事例が示すもの
どちらの事例にも共通するのは、「既存の資産を再活用する」 という視点です。
- すでに運用しているシステム
- すでに公開しているWebコンテンツ
- すでに蓄積しているドキュメント
これらを「活かしながら」AIを導入することで、投資効率を高め、スムーズな移行が可能になります。プラグインは、そのための橋渡し役です。
§ よくある質問
§ プラグインを入れるとDifyが重くなりませんか?
Plugin-Daemonアーキテクチャにより、プラグインは独立したプロセスとして動作します。一つのプラグインが多くのリソースを使っても、Dify本体のパフォーマンスには影響しません。ただし、同時に多数のプラグインを動かす場合は、サーバーリソースの全体的な見直しが必要になることがあります。
§ Difyプラグインの開発には何が必要ですか?
基本的なPythonの知識があれば始められます。Dify CLIをインストールし、dify plugin initコマンドでプロジェクトを生成すれば、雛形が作られます。複雑なロジックでなければ、数十行のコードで機能を追加できます。OpenAPIツールであれば、コーディング不要でYAML定義だけで作成可能です。
§ マーケットプレイスのプラグインは安全ですか?
公式マーケットプレイスに掲載されるプラグインは、基本的な審査を経ています。ただし、すべてのリスクが排除されているわけではありません。特に認証情報を扱うプラグインは、信頼できる開発元かどうかを確認し、最小限の権限で設定することを推奨します。
§ MCPとプラグインの違いは何ですか?
プラグインはDify内部で動作する拡張機能で、Difyのアーキテクチャに統合されます。MCPは外部ツールとの通信プロトコルで、Dify外部のサービスを呼び出すための仕組みです。MCPを使えば、プラグインを開発せずとも、MCP対応の外部ツールをすぐに利用できます。
§ カスタムプラグインを社内で共有するには?
dify plugin packageコマンドで.difypkgファイルを生成し、社内のファイル共有システムで配布できます。各環境で「プラグインをインポート」すれば、同じプラグインを利用可能です。マーケットプレイスへの公開も可能ですが、社内利用に限定する場合はパッケージファイルの直接共有が簡便です。
§ まとめ
Difyのプラグインシステムは、「ツールを追加する」だけにとどまらない、強力な拡張基盤です。
- 拡張の範囲:モデル・ツール・データソース・エージェント戦略・RAGパイプラインと、Difyのあらゆる層を拡張可能
- 安全な設計:Plugin-Daemonアーキテクチャにより、プラグインの障害がDify本体に影響しない
- 3段階の選択肢:マーケットプレイスで「既製品」を使う、OpenAPIで「軽量カスタマイズ」を行う、Plugin SDKで「本格開発」をする
プラグインを活用すれば、Difyを「自社仕様」に育てていくことができます。既存の社内システム、蓄積されたデータ、運用中のWebサービス——これらの資産を活かしながら、AIプラットフォームを段階的に充実させていきましょう。
§ 関連記事
Difyについてさらに深く知りたい方は、以下の記事もご覧ください。