はじめに
「自然言語でお願いするだけで、AIが動くアプリを作ってくれる」
そんな魔法のようなバイブコーディング体験、もう味わいましたか?
プログラミングの敷居が一気に下がり、アイデアが即座に形になるあの感覚は、一度知ってしまうと戻れない魅力があります。
でも、ふと思ったんです。
「この体験、Difyでもやりたくない?」
本記事では、ノーコード/ローコードツールであるDifyにおいて、いかにして 「バイブコーディング的な開発体験」 を実現しようともがいたか、その泥臭い試行錯誤の記録をお届けします。
背景:Dify開発でぶつかった「見えない壁」
Difyといえば、チャットボットやLLMアプリが爆速で作れる神ツール。
「GUIでポチポチつなぐだけだし、コードを書くバイブコーディングより簡単でしょ?」
最初はそう思っていました。しかし、いざ業務レベルで使おうとすると、見えない壁が立ちはだかります。
1. 「複雑な処理」の壁
単純なチャットなら一瞬。でも、業務に必要な「複雑な条件分岐」や「高精度なRAG」を組もうとすると、ナレッジパイプラインやワークフロー設計が一気にパズルのように難解になります。
「あれ、これノーコードの方が難しくない……?」と感じる瞬間です。
2. 「AIが嘘をつく」壁
「わからないことはAIに聞こう!」と意気揚々とChatGPTに質問しても……
🤖 AI:「『Advanced RAG Node』を追加して、設定項目の『Vector Weight』を調整してください」
👨💻 私:「……そんなノードも項目も、どこにもないよ!!」
そう、Difyは進化が早すぎる新しいツール。AIの学習データにはまだ正確なDSL仕様や詳細設定の情報が足りておらず、 もっともらしい嘘(ハルシネーション) を返されがちなのです。
「バイブコーディングで楽をしたいのに、むしろ手作業より苦戦している……」
そんなモヤモヤから、私の挑戦は始まりました。
試行錯誤1:AIに「画面操作」を任せてみる
「自分で作るのが面倒なら、AIに画面を操作させればいいじゃない」
そう考えた私は、話題のブラウザ操作系AIエージェント(Computer Useが可能なモデルなど)に目を付けました。それらを使い、Difyの画面上でワークフローを組ませようと試みたのです。
👨💻 私:「Difyの画面を開いて、テキスト入力からLLMにつなぐワークフローを作って」
🤖 AI:「承知しました。マウスを移動します……(カチッ)」
しかし、現実は甘くありませんでした。
AIはDifyのCanvas特有の操作——ノードをドラッグ&ドロップしたり、細かいコネクター線を繋いだりする動作——に大苦戦。ノードを一つ置くことすらままならず、画面上の何もない空間を虚しくクリックするばかり。
「……これ、自分でやった方が100倍速いな」
早々にこのアプローチは断念しました。
転機:裏口(DSL)を見つける
DifyをAIで攻略するのは無理なのか……と諦めかけたその時、DifyのUIにある小さなボタンに目が留まりました。
「DSLをエクスポート」
Difyのワークフローやナレッジパイプラインの実体は、実はYAML形式のDSL(ドメイン固有言語)ファイルだったのです。
これをダウンロードして中身を見てみると、ノードの設定や接続情報がテキストで記述されていました。
「待てよ? 画面操作が難しくても、テキストファイルならAIは得意中の得意じゃないか?」
つまり、GUIを操作させるのではなく、 「バイブコーディングでDSLそのものを書かせる」 というアプローチへの転換です。一筋の光が見えた気がしました。
試行錯誤2:AIに「DSL」を書かせてみる
さっそく、愛用しているAIコーディングエディタ(コンテキストを理解した開発が得意なエージェント)を開きました。これなら行けるはず。
👨💻 私:「テキストファイルを読み込んでナレッジベースに登録する、DifyのナレッジパイプラインのDSLを作成して」
AIコーディングエージェントは迷いなくコードを生成し始めました。ものの数秒で、それっぽいYAMLファイルが完成。
「さすが! これで勝った!」
私は意気揚々とそのファイルをDifyのインポート画面に放り込みました。
しかし……
【反応なし】
生成されたDSL(失敗例の一部)
version: 1.0
kind: knowledge-pipeline
name: text_to_kb_pipeline
nodes:
- id: file_loader
type: FileReader # 実際のDifyには存在しないtype名
params:
path: /data/docs # GUIからは指定できないようなパス指定
- id: vectorizer
type: AdvancedRAG # もっともらしいけど存在しないノードtype
provider: openai
params:
model: text-embedding-ada-002
vector_weight: 0.8 # Dify側にはないパラメータ名
- id: kb_writer
type: KnowledgeBaseWriter
params:
kb_id: my-knowledge # 実際の環境に存在しないID
edges:
- source: file_loader
target: vectorizer
- source: vectorizer
target: kb_writer
インポートボタンを押しても、うんともすんとも言いません。エラーメッセージすら出ない静寂。
生成されたDSLをよく見ると、Difyの現行バージョンでは使われていない古い構文や、存在しないパラメータが混ざっていました。
原因は明白でした。
ここでも「情報不足」が壁になったのです。ネット上にDifyの最新DSLのサンプルが少なすぎて、AIモデルが 「正しいDifyのDSLの書き方」を知らなかった のです。
「結局、AIに任せるのは無理なのか?」
いや、知らないなら教えればいい。ここから私の「AIへの教育」が始まりました。
解決策:AIに「Difyの教科書」を与える
モデルが知らないなら、 教科書(コンテキスト) を与えればいい。
最近のAIコーディングエディタの強みは、ローカルのワークスペースにあるファイルを読み込んで回答に反映してくれる点にあります。私はこの特性をフル活用することにしました。
Step 1. 「正解データ」を大量に配置する
まず、Dify公式のテンプレートDSLをすべてダウンロードし、ワークスペース内に配置しました。
「これが正しいYAMLの書き方だよ」とAIに示すためです。
-
配置場所:
templates/フォルダなどを作成 - 内容: チャットボット、記事生成、RAGパイプラインなど、多種多様なパターンのDSL
これだけでもAIの回答精度は上がりましたが、YAMLファイルは記述が長く、AIが構造を理解するのに少し時間がかかりました。
Step 2. 「DSL構造の要約」を作成する
次に、集めたDSLをChatGPTに読み込ませ、AI自身が理解しやすい形に構造化・要約させました。
👨💻 プロンプト例:
「このDifyのDSLファイルを分析し、YAMLの構造、必須パラメータ、ノード間の接続ルールを『AIエージェントがDSLを生成するためのガイドライン』としてまとめてください」
こうして生成された dsl-guideline.md のようなファイルをワークスペースのルートに配置。
これにより、AIコーディングエージェントは生のYAMLを全検索しなくても、ガイドラインを参照するだけで 「正しい構文ルール」 を即座に把握できるようになりました。
Step 3. 失敗を「知識」に変える
それでも最初はエラーが出ます。しかし、ここで諦めずにフィードバックループを回しました。
- AIにDSLを書かせる
- Difyにインポートする
- エラーが出たら、そのエラー内容と「どう修正したら直ったか」を記録する(例:
troubleshooting.md)
この記録ファイルが増えるたびに、AIは「前回の失敗」を学習し、同じミスを繰り返さなくなっていきます。まさにAIを育てている感覚です。
成果:ついに「バイブコーディング」が実現
この「教科書」を与えた状態で、再度AIコーディングエージェントに依頼しました。
👨💻 私:「アップロードファイルを条件分岐し、ファイル形式に応じたテキスト抽出処理を行ってから、親子チャンク(Parent-Child Chunker)分割をしてナレッジベースに登録するパイプラインを作成して」
出来上がったDSLをインポートすると……
画面上に美しいノードの連なりが表示されました。
手動で一切ポチポチすることなく、自然言語の指示だけで複雑なワークフローが構築されたのです。これこそが、私が求めていたDifyにおけるバイブコーディング体験でした。
まとめ:AIと共に「壁」を越える
ノーコードツールのDifyであっても、業務レベルの複雑な要件に直面すると「壁」にぶつかります。
しかし、その壁を越える鍵もまたAIにありました。
- AIに任せきりにしない: 知識不足なら、人間が情報を補完する
- コンテキストを育てる: 成功事例やルールをファイルとして蓄積する
このアプローチはDifyに限りません。新しい技術やマイナーなフレームワークであっても、 「AIのための教科書(コンテキスト)」 を設計することで、バイブコーディングの恩恵を最大限に引き出せるはずです。
おそらく数ヶ月後といった近い将来には、Dify自身に 「自然言語で指示するだけでナレッジパイプラインやワークフローを作成してくれる機能」 が実装されることになるでしょう。そうなれば、本当に誰でも簡単に、高度なLLMアプリ開発ができる世界がやってくるはずです。
Difyアドベントカレンダーをご覧の皆さんも、そんな未来を先取りするつもりで、ぜひ「自分だけのDifyコンテキスト」を育てて、爆速開発を楽しんでみてください!
