Difyの条件分岐が想定と違うときは、条件の文章だけでなく「実際の入力値と型」「AND/OR」「IF・ELIFの順序」「分岐先の出力」を順に調べます。数値20と文字列の「20」は区別し、閾値の直前・一致・直後を試すと、どの条件が違っているかを説明しやすくなります。

対象は、Difyで簡単なWorkflowを組み始め、入力に応じて処理を変えたい非エンジニア・学習者です。ここでは架空の「資料の長さを分ける練習」を使います。実際の申請承認やメール送信は行いません。LLMを接続する前に、固定した入力から予定どおりのルートを選べるかを確かめましょう。

確認日:2026年10月9日。現行のDify公式If-Else文書、Codeノード、Outputノードを参照しました。画面の訳語や選択できる演算子は環境・変数型により異なります。本稿の条件表は編集部の設計例です。Python参照処理のローカル試験と、Dify上で読者が行う実行確認は区別して記載します。

IF/ELSEで迷う原因を、値・論理・順序から切り分ける

条件分岐と質問分類器を、判断の根拠で使い分ける

条件分岐は、用意した変数へ決めた条件を適用してルートを選ぶ機能です。例えば「件数が20以上」「種類がPDF」といった、比較する値を具体的に示せる場面に向いています。入力の型と条件がそろっていれば、なぜそのルートに進む予定なのかを表で説明できます。

質問分類器は、LLMに文章の意味を分類させるノードです。「導入相談なのか、操作の質問なのか」といった意味の判断へ使えます。公式のQuestion Classifier文書では、クラスを定義し、モデルが意味を理解して分類する仕組みを説明しています。数値の閾値を決める練習へは、まず条件分岐を使うと原因を追いやすくなります。

両者を組み合わせる場合にも、担当する判断を分けます。文章から「PDFについての相談」を分類した結果と、利用者が選択欄へ入力した「PDF」は同じ来歴ではありません。LLMの推定を確定済みの入力と同じように扱う前に、誤分類が起きた場合の確認先を考えます。

本稿では、種類をPDFまたはメモから選び、件数を数字で入力する架空フォームを想定します。種類を自由な文章から推定する作業はありません。そのため「なぜPDFになったのか」をLLMへ説明させる必要がなく、入力値と比較条件の関係へ集中できます。

最初の学習では、出力する文章も固定しておきます。短文、長文、PDF長文、入力確認という四つのラベルが見えれば、どのルートへ進んだかを確認できます。分岐の試験に生成文章の揺れまで持ち込むと、分岐が違うのか、同じルートのLLM出力が変わったのかを区別しにくくなります。

どこで何を判断するか
工程判断する内容練習で確かめること
入力の整理数字の形式・種類の候補空欄や全角をどう扱うか
IF/ELSE値と固定ルールの一致20以上か・PDFか
質問分類器文章の意味からカテゴリを選ぶ分類の揺れや曖昧な相談
Output選んだ結果を利用者へ返す各ルートのラベルが見えるか

数値20と文字列「20」を区別して、比較する変数を選ぶ

入力欄に20と見えていても、変数が数値として渡っているとは限りません。文字列で「20」を受け取る設計なら、そのまま数値比較へつなげられるかを環境で確かめる必要があります。画面に並ぶ文字だけを見て同じ値と判断せず、試験時のノード入力を確認してください。

同じ名前の変数が複数のノードにある場合にも注意します。開始側の raw_count と、整理後の count を取り違えると、正規化したつもりでも元の文字列を比較してしまいます。変数選択欄では、名前に加えて出力元のノードを見ます。「整理後のcountを比較する」と記録すれば、後から設定を見直しやすくなります。

教材では、入力を文字列で受け取り、半角の整数だけを数値へ変える方式を使います。前後の空白は除きますが、全角の20や単位付きの20件は入力確認へ送ります。これは製品の普遍的な仕様ではなく、練習を小さくするために編集部が決めた入力ルールです。

全角を許可する業務なら、全角から半角へ変える工程を追加する選択もあります。ただし、変換に成功したことと、入力が業務上正しいことは別です。マイナス値、極端に大きな値、小数、単位などを受け付けるかを決め、許可した範囲だけを通します。初学者向けの最初の例で、すべての形式を同時に扱う必要はありません。

数字の文字列を辞書順で比較する処理へ置き換えると、例えば「9」と「20」の大小が意図に合わない可能性があります。数字に見える文字列を数値へそろえる理由は、表記の見た目を整えることだけではありません。どの種類の比較を行うかを決めるためです。

Difyの基本用語やWorkflowの流れから確認したい場合は、Dify独学の進め方を参照できます。開始、処理、出力という単位を先に理解すると、値がどの段階で変わったかを追いやすくなります。本稿はその中の分岐という一部分へ絞った練習です。

空欄・空白・ゼロを、別の試験データとして用意する

「空である」という条件は便利ですが、利用者が空白だけ入力した場合の意味まで、すべての環境で同じとは考えないでください。空文字、半角スペース、全角スペース、未設定の値は見た目が似ています。自分の入力経路で何が渡るかを観察し、必要なら前処理で扱いをそろえます。

教材の strip() は文字列の前後の空白を除く処理です。「 20 」は20として扱い、空白だけなら空文字になって入力確認へ進みます。この変換をルート表へ明記します。入力値を勝手に変更する仕組みを増やす前に、どの表記を受け付けるかを利用者にも分かるようにします。

数値0は空欄ではありません。今回の練習では0件も短文ルートへ進むという設計にしています。実務なら0件の処理を不要とする場合もありますが、その判断は別のルールです。未入力を0へ置き換えると、利用者が0を指定したケースとの区別が消えます。

空配列や空文字も、同じ「空」という言葉の別の型です。ナレッジ検索の結果が配列なら、件数文字列の検査をそのまま使えません。検索結果の問題はDifyでナレッジ検索が空になるときの確認で扱っています。何が空になったかを、変数名と型で特定することが共通の入口です。

入力確認ルートには、単に「エラー」と返すより、利用者が直せる短い案内を用意します。「件数は半角整数、種類はPDFまたはメモを指定してください」という固定文なら、練習の条件が伝わります。どちらが原因かを細かく返す機能は、基本の分岐が確かめられてから追加できます。

AND/ORを、四通りの組み合わせで確認する

ANDは条件Aと条件Bの両方が成立するときに通り、ORはどちらかが成立すれば通ります。これを文章だけで覚えると、条件が増えたときに混乱しやすくなります。二つの条件なら、成立・不成立の四通りを表へ書いてみましょう。

教材のAは「件数が20以上」、Bは「種類がPDF」です。19件のPDFはAが不成立、Bが成立です。ANDなら通らず、ORなら通ります。21件のメモはAだけ成立するため、こちらもANDとORで結果が変わります。この二例を入れると、両方成立した一例だけでは見えない違いが分かります。

A=20以上、B=PDFとしたときの判定
入力例ABA AND BA OR B
20・PDF成立成立成立成立
19・PDF不成立成立不成立成立
21・メモ成立不成立不成立成立
19・メモ不成立不成立不成立不成立

ORを「両方に当てはまらないもの」と覚えないでください。どちらかに当てはまる条件です。また「Aではない、またはBではない」と「AとBのどちらにも当てはまらない」は別の式になります。否定まで組み合わせる前に、肯定形の表を一つずつ確認すると整理しやすくなります。

画面の条件を修正したら、表で結果が変わる行を優先して再試験します。ANDをORへ変えたなら19・PDFと21・メモが変わるはずです。20・PDFだけ再試験しても両方の式で成立するため、変更を検証できません。変更した条件の違いを見つけられる入力を選ぶことが大切です。

この表は、入力が形式検査を通っている前提です。「20件・PDF」の文字列を、数値20として自動で受け入れることまでは示していません。表に書いた条件を評価する前に、値の形式を確認する工程を置きます。形式の失敗と論理式の不成立を同じ状態へまとめないようにします。

IF・ELIFの順序は、条件が重なる入力で調べる

IF、ELIF、ELSEは同時に全部の処理を行うための並列分岐ではありません。公式文書では、IFが不成立のときにELIFを順に確認し、どれも成立しなければELSEへ進む構造を説明しています。条件が重なる場合には、先に一致する条件がその入力の進路を決めます。

例えばIFに「20以上」、ELIFに「20以上かつPDF」を置くと、20・PDFは先のIFで一致します。PDF専用のルートへ進めたいという設計なら、具体的な「20以上かつPDF」を先に置く必要があります。条件自体が間違っていなくても、順番が目的へ合っていない場合があります。

今回の設計は、形式が不正なら入力確認へ進み、正しい入力だけ次の判定へ送ります。次のIFでは「20以上かつPDF」を調べ、ELIFでは「20以上」を調べ、ELSEを短文にします。形式検査と内容の判定を二段階へ分けると、なぜどのルートを通るかを説明しやすくなります。

一つのノードへ全部の条件を詰める方法もありますが、最初の学習では判定が増えるほど観察しづらくなります。何を検査するかごとにノード名を付けます。「入力確認」と「長さと種類の判定」という名前なら、ログでどの段階の問題だったかを追えます。

順序を入れ替える試験もしてみてください。PDF専用を後にすると20・PDFがどこへ行く予定になるか、実行する前に紙へ書きます。その予測と実際のルートを比べることで、ELIFを追加すれば既存条件より優先されるという誤解を防げます。条件の数より、重なり方を観察しましょう。

架空の資料依頼を使い、境界値から出力まで試験する

ルート表を先に作り、20の前後を含む9件を決める

ここでいう件数は練習用の数字です。業務の承認金額や正式な文書量の基準を示すものではありません。20以上という閾値も、条件を学ぶために編集部が設定しました。自分の業務へ当てはめるときには、閾値の根拠と担当者を別に確認してください。

試験表には、通常入力の19・20・21を入れます。「20以上」なら20が長文に入り、「20より大きい」なら20は短文に入ります。直前と直後だけでは両者の違いが分からないので、一致する値を省略しないでください。比較演算子を選ぶときも、この表の期待値と照合します。

加えて0、空欄、全角、前後空白、単位付き、候補外の種類を用意します。すべては同じ失敗を見つけるための例ではありません。0は空欄との区別、全角と単位付きは受け付ける表記、候補外は種類の検査を見ています。入力の違いと確認目的をセットで残しましょう。

編集部の設計による試験表。Dify上の実行結果を保証する表ではありません
入力件数種類期待するルート確認目的
19PDF短文閾値の直前
20PDFPDF長文一致する値と具体条件の優先
21メモ長文閾値の直後と種類の違い
0PDF短文ゼロは有効入力という設計
空欄PDF入力確認未入力をゼロにしない
20PDF入力確認全角はこの教材では対象外
前後に空白のある20PDFPDF長文前後空白を除く設計
20件PDF入力確認単位付きは対象外
20画像入力確認種類の候補外

各行に実行日、実際のルート、ノードへ渡った値を追記します。期待値の列は、結果を見て都合よく書き換えません。設計の変更が必要なら、何を変更したかを別に残し、表を更新した上で再試験します。「全部通った」という一文より、どの入力を通したかが後の比較に役立ちます。

Codeノードの入出力を、短い参照処理で整理する

以下は、入力表記をそろえるためのPython例です。Codeノードを使う場合は、文字列の入力 raw_count と raw_kind を開始側の変数へ対応させます。出力にはvalidをboolean、countをnumber、kindをstringとして用意する設計です。自分の環境に出る型の選択肢で対応を確認してください。

import re

def main(raw_count: str, raw_kind: str) -> dict:
    text = raw_count.strip()
    kind = raw_kind.strip()
    valid = bool(re.fullmatch(r"[0-9]+", text)) and kind in ["PDF", "メモ"]
    return {
        "valid": valid,
        "count": int(text) if valid else -1,
        "kind": kind,
    }

不正な入力ではcountへ-1を返しますが、-1を件数として処理してよい意味ではありません。後段はvalidを先に調べ、不成立なら入力確認ルートへ送ります。補助値だけを見て短文へ送ると、不正入力が短文と混ざります。validとcountの関係を、設定のメモへ残します。

この関数は文字列入力を前提としています。実際のCodeノードへ数値や未設定の値が渡る場合、同じ関数がそのまま動くとは限りません。開始入力の型と、ノードに到達した値を先に確認します。機能を増やすより、まず前提に合う少数の入力で照合する練習です。

編集部は同じ整理関数と、後述の条件に対応するPython参照処理を、Python 3.12.14のローカル環境で試験しました。9件はいずれも表の期待するルートと一致しました。これは条件設計の整合性を確認した結果であり、Dify管理画面で9件の実行を完了したという記録ではありません。ノードの型・接続・出力設定は、読者の環境で別に試験してください。

ノーコードから学びたい場合でも、短いコードを追加するなら入力と出力を説明できることが大切です。コードが読めないまま採用する必要はありません。半角数字だけの入力へ限定した単純な試験から始め、整理処理が必要になった段階で、サポートや基礎学習を比較してください。

分岐先へ固定ラベルを返し、出力の接続を確認する

整理後のvalidが不成立なら「入力確認」、成立なら次の条件ノードへ接続します。次のIFを「countが20以上 AND kindがPDF」、ELIFを「countが20以上」、ELSEを「短文」とします。設定時は、開始側の文字列ではなく、整理後のcountを比較しているかを確かめてください。

各ルートへ固定ラベルを作る処理をつなぎ、その値をWorkflowのOutputへ返します。例えばPDF長文ルートのラベルは「PDF長文」です。TemplateやCodeなど、手元の環境で固定文字列を出力できる方法を使います。LLMに「このルート名を返して」と依頼する必要はありません。

  1. 開始:件数と種類の文字列
  2. 整理:valid・count・kindを用意
  3. validが不成立 → 入力確認を返す
  4. validが成立 → PDF長文、長文、短文を順に判定
  5. 各ルートの固定ラベルをOutputへ返す
LLMの文章生成へ進む前に、どの条件でどのラベルを返すかを確認します。

現行の公式文書では、WorkflowのOutputは以前Endという名前だったこと、Outputがないルートは呼び出し元へデータを返さないことが説明されています。Chatflowの場合はAnswerノードを使うため、Workflowの説明と画面を混同しないでください。処理が成功しても、結果が表示されない原因は出力の接続にある場合があります。

Outputを複数使う設計では、同じ出力名の上書きにも注意します。今回は相互に分かれた一つのルートのラベルを観察する小さな練習です。並列の処理や複数の出力を合成する構成へ拡張するときは、出力の名前と順序を別に設計する必要があります。

想定と違う結果は、最後の文章から逆算しない

短文になったはずの入力が長文として出たら、最終表示だけを見て条件を変更する前に、実行したノードを調べます。まず入力の19がどの値・型で渡ったか、次に整理処理のcountが19か、条件ノードがどの変数を選んだか、最後に分岐先のラベルを見ます。

countが19なのに20以上のルートへ進む場合と、整理後のcountが別の値になっていた場合では、修正する場所が違います。前者は比較条件や参照先、後者は入力対応や前処理を調べます。一度に複数箇所を変えると、何で直ったかを説明できません。一つの入力を固定し、一箇所ずつ確認します。

ラベルは正しいのに表示が違うなら、Outputへ渡した変数や後続の文章生成を見ます。分岐で短文を選んだ後に、別のルートの変数を出力していないか確認してください。成功という状態表示と、利用者が必要な結果を受け取ったことは別です。

設定を変えたら、変更の影響が出る入力と、影響しないはずの入力を両方試します。PDF専用の優先順位を直したなら20・PDFだけでなく21・メモも確認します。全角対応を追加したなら20が変わる一方で、空欄が入力確認に残るかも見ます。直した箇所の周辺へ検査を広げる考え方です。

外部へ送信する処理を接続する前には、AIエージェントの業務試行で確認したい項目も参考になります。本稿のラベル練習は送信しません。正しくルートを選べることと、そのルートの行動を実行してよいことは、別の判断として扱ってください。

次の学習では、説明できない箇所を一つ選んで相談する

独学の到達点は、ノードをたくさん並べることではありません。「20・PDFは具体条件で先に一致する」「空欄は形式検査で戻す」と、ルートの理由を説明できることです。正常例と不正例を一つずつ自分で追加できれば、業務の小さな条件へ広げる準備になります。

質問するなら、入力、期待するラベル、実際のラベル、比較した変数名、試した変更を短くまとめます。社内資料をそのまま渡す代わりに、19・20・21の架空入力で再現します。画面全体の画像だけより、どの条件でどの差が出たかが分かる相談文の方が、原因を切り分けやすくなります。

人から学ぶ選択肢として、バイテックの公式Difyマスターコースは、初期設定やアプリ、ナレッジ、チャットボット開発などを掲載しています。2026年10月9日に公式の講座一覧を確認しました。ただし公開一覧から、本稿と同じIF/ELSEの境界値試験を個別に添削することまでは確認できません。希望する課題を相談できるか、申込前に確認します。

同日の公式料金ページでは、2か月プランの一括148,000円(税込)、教材視聴は無期限、チャットサポートは2か月、面談は2か月間・月2回と表示されています。ツールの利用費と学習支援の費用は区別し、Difyやモデルの別料金、面談の範囲、契約条件を見積もり時に確認してください。

検討しやすいのは、非エンジニアとしてアプリの基本から学び、業務フローを説明できるようになりたい人です。一つの分岐だけを直したい人や、Pythonを中心にシステム開発を学びたい人は、単発相談や別の学習範囲も比較できます。今回の練習だけを理由に契約を急ぐ必要はありません。

学びの記録を作品にするなら、入力表とルート図、止めた条件を併記します。社内FAQのRAG評価を練習する教材では、別の段階で回答内容を検査しています。分岐、検索、回答をそれぞれ観察できると、アプリ全体を一度に「良い・悪い」と評価するより改善箇所が見えます。継続時間は社会人の週ごとの学習計画で無理のない範囲へ区切れます。

よくある質問

Q. 20と入力したのに数値比較ができないのはなぜですか?
A.

画面で数字に見えていても、変数は文字列の場合があります。入力値の型と出力元を確認し、整理後の数値変数を条件へ選んでいるか調べてください。

Q. ANDとORの違いは何ですか?
A.

ANDはすべての条件が成立したとき、ORはいずれかの条件が成立したときに通ります。両方成立・片方だけ成立・両方不成立の四通りを表にして試験すると確認できます。

Q. ELIFを追加したのに、そのルートへ進みません。
A.

先のIFですでに一致している可能性があります。重なる条件を確認し、具体的な条件を優先する設計なら、その条件を先に配置して試験してください。

Q. 空欄や全角の20は、この記事ではどう扱いますか?
A.

教材の整理処理では前後の空白を除き、半角整数とPDF・メモのみを受け付けます。空欄、全角の20、20件、候補外の種類は入力確認へ送る設計です。

Q. 掲載された9件はDifyで実行確認済みですか?
A.

Dify上の実行結果ではありません。編集部は整理関数と同じ条件のPython参照処理をローカルで試験しました。Difyでは入力型、条件の参照先、接続、出力を別に確認してください。

分岐が分かるようになったかは、20・PDFが通る理由だけでなく、19・PDFや空欄が別のルートへ進む理由を説明して確かめてください。入力の整理、条件の比較、出力の接続という三段階を分けることが、この練習の結論です。