「AIに指示したら、勝手にシステムが出来上がる」を本当にやってみた話

Written by
John Doe
公開日
2026-03-25

目次

1.やりたかったこと

仕事でDifyというノーコードAIツールを使っている。チャットボットとか、社内のFAQ自動応答とか、そういうのをGUIでポチポチ作れるやつだ。

便利なんだけど、ひとつ面倒なことがある。

ワークフローを作るたびに、Difyの管理画面を開いて、ノードをドラッグして、設定を埋めて、接続して……という手作業が発生する。1個2個ならいいけど、10個20個となると正直しんどい。しかもワークフローの「設計書」にあたるDSLファイル(※後述)を手で書くのも、YAML形式の数百行をミスなく書くのはなかなかの苦行だ。

で、思った。

「日本語で『こういうワークフロー作って』と言ったら、あとは全部自動でやってくれないか?」

結論から言うと、できた。この記事はその設定の記録と、やってみて感じた「自動化の勘所」について書く。

2.そもそもDifyって何?という人へ

Difyは、AIアプリケーションをプログラミングなしで作れるプラットフォームだ。たとえば「お客様からの問い合わせメールを読んで、カテゴリ分けして、適切な返答の下書きを作る」みたいな処理を、画面上でブロックを繋いで作れる。

レゴブロックでAIの処理フローを組み立てる、と言えばイメージしやすいかもしれない。

DSL(Domain Specific Language)とは: Difyのワークフローを定義する設計図のようなもの。YAML形式のテキストファイルで、「どんなブロックがあって、どう繋がっていて、各ブロックの設定はこうで……」という情報がすべて記述されている。人間が読めるが、手書きするのはかなり大変。

3.何をどう自動化したのか

3-1.仕組みの全体像

やったことをざっくり言うと、こうだ。

Claude Code(AIアシスタント) → 自然言語の指示を受け取る → DSLを自動生成 → DifyのAPIに投げる → Difyにワークフローが自動登録される

この「DifyのAPIに投げる」部分を担うのが、今回作ったMCPサーバーだ。

MCP(Model Context Protocol)とは: AIアシスタントが外部のツールやサービスと連携するための仕組み。たとえばAIが「ファイルを読みたい」「APIを叩きたい」と思ったとき、MCPサーバーを通じてそれを実行できる。AIの手足を増やすアダプターのようなもの。
API(Application Programming Interface)とは: ソフトウェア同士が会話するための窓口。人間がブラウザで管理画面を操作する代わりに、プログラムが直接「このワークフローを登録して」とリクエストを送れる。

3-2.具体的に何を作ったか

Pythonで約200行のMCPサーバーを書いた。できることは5つ。

  1. アプリ一覧の取得 — Difyに登録済みのワークフローを一覧で見る
  2. DSLのエクスポート — 既存ワークフローの設計図をYAML形式で取り出す
  3. DSLのインポート — YAML形式の設計図を送って新しいワークフローを作る
  4. アプリ詳細の取得 — 個別のワークフローの設定内容を確認する
  5. アプリの削除 — 不要になったワークフローを消す

これだけ。シンプルだけど、3番目の「インポート」があるのが肝だ。AIが生成したDSLをそのままDifyに流し込める。

4.設定で一番ハマったところ

4-1.認証トークンの取得

DifyのConsole API(管理画面の裏側で動いているAPI)は、公式ドキュメントには載っていない。いわゆる「内部API」だ。

内部API(非公開API)とは: サービスの管理画面が裏側で使っているAPI。公式にサポートされているわけではないので、アップデートで急に動かなくなる可能性がある。使うなら自己責任。

認証に使うトークン(※一種の合言葉)も、設定画面からコピーできるようなものではなく、ブラウザの開発者ツールから抜き出す必要がある。

手順はこうだ。

  1. Difyの管理画面にログインする
  2. ブラウザの開発者ツールを開く(Macなら Cmd + Option + I
  3. 「Application」タブの「Local Storage」を見る
  4. console_token みたいな名前のキーを探す

ここが一番「これ本当に合ってるのか?」と不安になるポイントだった。実際、最初は設定画面の「API拡張」のページを開いてしまい、全然違う場所だと気づくのに数分かかった。

4-2.セッショントークンの有効期限問題

このトークンはセッションベース、つまり一定時間で失効する。長期運用するなら、ログインAPIから自動取得する仕組みを入れるか、定期的にトークンを更新する運用が必要になる。

今回はまず「動くことの確認」を優先して、手動でトークンを設定する方式にした。本番運用で使うなら、ここは要改善ポイントだ。

5.自動化で生産性はどのくらい変わるのか

5-1.手作業の場合

  1. Dify管理画面を開く
  2. 「新規作成」をクリック
  3. ワークフローモードを選択
  4. スタートノードを設定
  5. LLMノードを追加してモデルとプロンプトを設定
  6. 必要に応じて条件分岐やナレッジ検索ノードを追加
  7. エンドノードを設定
  8. 各ノードを接続
  9. テスト実行
  10. 公開

シンプルなワークフローでも15〜30分。複雑なものだと1時間以上かかる。

5-2.自動化した場合

「問い合わせメールを受け取って、カテゴリ分類して、日本語で返答を生成するワークフローを作って」

と指示する。30秒〜1分でDifyにワークフローが登録される。

もちろん、生成されたものの確認や微調整は必要だ。でも「ゼロから作る」のと「8割できたものを直す」のでは、かかる時間も精神的な負荷もまるで違う。

5-3数字にすると

手作業自動化シンプルなワークフロー15〜30分1〜2分 + 確認5分複雑なワークフロー1〜2時間3〜5分 + 確認15分月10本作る場合の合計5〜20時間1〜3時間

月に5〜17時間の削減。年間にすると60〜200時間。1人分のエンジニアの1ヶ月分以上の工数に相当する。

6.組織にとって「仕組み化」が重要な理由

ここからは少し抽象的な話になるが、自動化の恩恵は「時間の節約」だけじゃない。

6-1.属人化が減る

ワークフローの作り方を知っている人が休んだら作れない、という状態は組織のリスクだ。自然言語で指示すれば作れる仕組みがあれば、Difyの操作に詳しくない人でもワークフローを作れる。

属人化とは: 特定の人しかできない仕事がある状態。その人が辞めたり休んだりすると業務が止まる。

6-2.品質が安定する

手作業でノードを繋ぐと、人によって設計がバラバラになる。エラーハンドリングを入れ忘れたり、プロンプトの書き方が統一されなかったり。テンプレートベースで自動生成すれば、最低限の品質は担保される。

6-3.試行錯誤のコストが下がる

「このプロンプトで試してみて、ダメだったら別のパターンで」というサイクルが、手作業だと1回30分かかるところが、自動化なら1回2分で回せる。結果として、より良いワークフローにたどり着くまでの時間が劇的に短くなる。

7.注意点は、バージョンには気をつけて!

正直に書いておく。この仕組みにはいくつか課題がある。

内部APIへの依存。 Difyのバージョンが上がったら動かなくなる可能性がある。実際、インポート用のAPIエンドポイント(URLの末尾)が /apps/import なのか /apps/imports なのか、バージョンによって違うらしく、両方試すフォールバック処理を入れた。

トークンの有効期限。 前述のとおり、セッショントークンは時間で失効する。自動更新の仕組みを入れないと、朝出社したら動かなくなっている、ということが起きる。

生成されたDSLの品質。 AIが生成するDSLは、そのまま使えるときもあれば、微妙に間違っているときもある。特にDify固有の記法や、モデルプロバイダーの指定は、Difyのバージョンによって変わることがある。完全放置での運用は現時点ではおすすめしない。

8.まとめ

「自然言語で指示 → DSL自動生成 → Difyに自動登録」のパイプラインは、思ったより簡単に作れた。Pythonで200行、設定ファイルをいくつか書いて、トークンを取得するだけ。

ただ、「簡単に作れる」ことと「安定して運用できる」ことは別の話だ。内部APIへの依存やトークン管理など、本番で使うにはもう少し手を入れる必要がある。

それでも、この仕組みがあるとないとでは、日々の開発速度がまるで違う。ワークフローを「作る」作業から「設計する」作業に集中できるようになる。手を動かす時間が減って、頭を使う時間が増える。

自動化の本質は、たぶんそこにある。

この記事で紹介したMCPサーバーのコードは約200行のPythonスクリプトです。FastMCPフレームワークを使用しています。導入を検討される方は、Difyのバージョンとの互換性を事前に確認してください。

あわせて読みたい

Relation

関連記事

This is some text inside of a div block.

広告費の「見えない穴」を塞いだら、月100万円の無駄が見つかった話

This is some text inside of a div block.
7 min read
GTMのdataLayerでUTMパラメータをフォーム送信に紐付けるデータフロー図
This is some text inside of a div block.

GTMのdataLayerでUTMパラメータをフォーム送信に紐付ける方法

This is some text inside of a div block.
7 min read
This is some text inside of a div block.

Lステップに月2万円払い続ける必要、本当にある?OSSの「LINE Harness」をCloudflare Workersにデプロイして無料LINE CRMを手に入れた話

This is some text inside of a div block.
7 min read
This is some text inside of a div block.

YouTube運用にAIを導入して分かったこと――効率化できる部分と、できない部分の境界線

This is some text inside of a div block.
7 min read
This is some text inside of a div block.

WordPressからWebflowに移行して半年。正直な感想と移行判断のチェックリスト

This is some text inside of a div block.
7 min read
This is some text inside of a div block.

Webflowとは何か — 使い始めた初日に知りたかった10のこと

This is some text inside of a div block.
7 min read

現在【毎月先着5社様】限定無料相談受付ます

大変申し訳ありません。私たちのリソースには限りがあり、一社一社に質の高いサービスを提供するため、現在【毎月先着5社様】限定で、この特別な条件(全額返金保証+無料相談)でのご案内とさせていただいております。

さらに、今このページをご覧のあなただけに、無料相談へお申し込みいただいた方限定で、通常5万円相当の【競合サイト分析&改善提案レポート】を無料でプレゼントいたします。

枠がすぐに埋まる可能性がありますので、お早めにお申し込みください。

プライバシーポリシーに同意し、まずは無料相談をおこないます
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.