📖

2025/04/01付近に発売されたDify本4冊の比較

に公開

1. はじめに

1.1. 対象本

  1. 生成AIアプリ開発大全――Difyの探求と実践活用 2025/3/25発売。以下、「大全本」と呼びます。
  2. ゼロからわかるDifyの教科書 ~生成AI×ノーコードでかんたん業務効率化 2025/4/8発売。以下、「桃色本」とよびます。
  3. 【この1冊からはじめる】生成AIアプリ開発入門 Dify 徹底活用ガイド 2025/4/2発売。以下、「青色本」と呼びます。
  4. コーディング不要で毎日の仕事が5倍速くなる!Difyで作る生成AIアプリ完全入門 2025/4/4発売。以下、「黄色本」と呼びます。

1.2 簡単な比較

観点としてこれだけがいいというわけではないですが、大づかみするなら下記かなと思える項目を書いています。
Difyのバージョンの話は、appendixの2節参照です。

No 比較項目 大全本 桃色本 青色本 黄色本 備考
1 v1.0.0対応 x(※1) (※1)著者ページで、v1.0.0のプラグインの説明あり
2 チャットボット x ◯サンプルDSLあり。△本文中に説明あり、サンプルDSLなし、xどちらもなし
3 エージェント x 同上
4 テキストジェネレーター x x 同上
5 チャットフロー 同上
6 ワークフロー x 同上
7 community版をローカルorサーバーにデプロイ x
8 ページ数 798 360 288 224 紙の大きさも違うので参考までに。
9 価格(円) 4,620 2,970 2,970 2,970 Amazonの書籍版の価格です。
10 発売日 3/25 4/8 4/2 4/4 2025年は省略。Amazonに記載されている発売日です。

誤解を恐れずに、参考書のチャート式(数学)で例えると、

  1. 大全本→旧課程の赤チャート
  2. 桃色本→青チャート
  3. 青色本→黄チャート
  4. 黄色本→白チャート

です。
目標とするDify習熟具合と学習にかけられる時間で決めてください。

1.2 オススメ書籍

最初に、この記事を書いている人間(=私)のスタンスを書いておきます。

  • エンジニアです。
  • Difyガチ勢ではないです。
  • 複雑な処理を書くなら、LangChain/LangGraphを使って書けばいいと思っています。
  • エンジニアがDifyを使うなら、上記で実装するよりも速く実装できるときに使うべきと思っています。
    • PoCの初っ端のなんかよさげで魅力的な挙動をするデモをつくるなど
  • 変数の概念などは既知なので、non-engineerな人の観点は、わかりません
  • いわゆるビジネス職の人が、Difyを導入するなら、Difyの機能を網羅して使いこなすよりも、導入による手間の削減効果が大きいところだけに対応する最小限のチャットボットなり、ワークフローを作るので十分と思っています。

以上を踏まえて、独断と偏見による、職種別にオススメ書籍を書いておきます。

注: 某著者のポジショントーク(本人談)を書いておくと、「本なんて安い買い物なので、複数買ってもいいのでは?」とのことです。

1.3. エンジニアへのオススメ本

Difyの公式documentが https://docs.dify.ai/ja-jp です。
これでわかるなら、書籍を買わずに、こちらを読むのがいいと思います。書籍と違って、バージョンアップに従って順次更新されるのも良い点です。

それ以外のエンジニアは、網羅度が高い「大全本」または、「桃色本」が良いと思います。
情報の網羅度を重視するなら、「大全本」。さらに、v1.0.0対応を重視するなら、「桃色本」だと思います。

1.4 エンジニア以外へのオススメ本

一冊目は、「青色本」か「黄色本」が良いと思います。

  • 「青色本」のメインの著者は、エンジニア職ではない著者です。
  • 解説している項目がよくも悪くも一番少ないのが、「黄色本」という印象です。

最初に、0からDifyを使って、最低限動けばいいなら、「黄色本」かなと思います。
後述の目次を比較してみて、「青色本」で是非見てみたい項目があれば、青色本にするとよいのではないでしょうか。

補足

2,3,4,5章は目次と書籍の関連ページのリンクです。
1章でのまとめよりももう少し書籍の解像度を上げて比較したい場合に使ってください。

2 生成AIアプリ開発大全――Difyの探求と実践活用 の目次

略称「大全本」です。

2.1 目次

https://gihyo.jp/book/2025/978-4-297-14744-0 より引用

第1章 生成AIの理解と活用

  • 1.1 生成AIの回答の仕組みとユーザーアプリケーション
  • 1.2 Difyの役割と課題ドリブン開発
    • 1.2.1 Difyの登場
    • 1.2.2 なにを作りたいのか?
    • 1.2.3 人間とAIの新しい協業
    • 1.2.4 Difyで始める課題ドリブン開発
  • 1.3 Difyとはどのようなものか?
    • 1.3.1 オープンソースの利点
    • 1.3.2 ノーコード,ローコード開発の魅力
    • 1.3.3 APIとして呼び出しが可能
    • 1.3.4 ローカル環境で動く安心感
    • 1.3.5 正直,ここが物足りないDify

第2章 チャットボットの作成

  • 2.1 さっそくDifyを使ってみる
    • 2.1.1 Difyの始め方:クラウド版とコミュニティ版
    • 2.1.2 Difyアカウントの作成
    • 2.1.3 最初のアプリケーション作成
    • 2.1.4 アプリケーションのテスト
    • 2.1.5 アプリケーションの公開
    • 2.1.6 チャットボットWebアプリケーションの共有
    • 2.1.7 次のステップへ
  • 2.2 LLMのモデルの登録
    • 2.2.1 デフォルトモデルを確認してみよう
    • 2.2.2 他のLLMを使いたい
    • 2.2.3 API料金について
    • 2.2.4 Geminiを使えるようにしてみよう
    • 2.2.5 Geminiモデルでテストする
  • 2.3 LLMパラメータの調整
    • 2.3.1 パラメータ設定の基本
    • 2.3.2 パラメータの違いを体験してみよう
    • 2.3.3 LLMパラメータの仕組みを理解しよう
    • 2.3.4 Temperature:創造性温度調整
    • 2.3.5 TopP:選択肢の絞り込み
    • 2.3.6 2つのパラメータの関連
    • 2.3.7 実践:用途に応じた設定
  • 2.4 プロンプトを考える
    • 2.4.1 プロンプトの重要性
    • 2.4.2 システムプロンプトとユーザープロンプト
    • 2.4.3 Zero-Shot LearningとFew-Shot Learning
    • 2.4.4 Zero-ShotLearning
    • 2.4.5 Few-ShotLearning
    • 2.4.6 CoTで問題を解いてみる
    • 2.4.7 まとめ
  • 2.5 Webページにチャットボットを埋め込む
    • 2.5.1 さあ埋め込んでみよう!
    • 2.5.2 こんなに簡単でいいの?
  • 2.6 履歴の確認と監視について
    • 2.6.1 ログの確認方法
    • 2.6.2 ログの重要性
    • 2.6.3 チャットボットの監視
    • 2.6.4 監視とログ,その真価

第3章 RAGを使いこなす

  • 3.1 RAGとは何か?
    • 3.1.1 4つのステップで理解するRAG
    • 3.1.2 類似度検索を理解しておこう
    • 3.1.3 RAGのすごいところ
    • 3.1.4 RAGをDifyで構築する
  • 3.2 ナレッジの構築
    • 3.2.1 ナレッジベースを作成してみよう
    • 3.2.2 テキストの前処理とクリーニング
    • 3.2.3 インデックスモードと埋め込みモデルの選択
    • 3.2.4 検索設定
    • 3.2.5 ちゃんと検索できるかテストしてみる
  • 3.3 チャットボットでRAGを行ってみる
    • 3.3.1 新規アプリの作成
    • 3.3.2 プロンプトとコンテキストの設定
    • 3.3.3 モデルの選択
    • 3.3.4 デバッグとプレビュー
    • 3.3.5 実際にチャットしてみる
  • 3.4 RAGのポイントは入力データにあり
    • 3.4.1 データの下ごしらえ
    • 3.4.2 なぜ分割(チャンク)が大事なの?
    • 3.4.3 データの整え方
    • 3.4.4 文学作品をAIに読ませる
    • 3.4.5 PDFからの単純な変換の罠
    • 3.4.6 「テキストのパラグラフ化手法」の登場
    • 3.4.7 パラグラフ化の効果
    • 3.4.8 出力結果を統合してベクトル化
    • 3.4.9 きれいに並んだデータの威力
    • 3.4.10 まずはここから始めよう
  • 3.5 ハイブリッド検索について
    • 3.5.1 リランクで検索結果をもう一段階磨く
    • 3.5.2 Cohereのモデルを使うには?
    • 3.5.3 ハイブリッド検索でさらに網羅的に

第4章 エージェントの作成

  • 4.1 エージェントとは
    • 4.1.1 なぜAIエージェントの時代と言われるのか
    • 4.1.2 AIエージェントの簡単なしくみ
    • 4.1.3 AIエージェントを構築するには
  • 4.2 DifyでAIエージェントを作る
    • 4.2.1 エージェントの選択と作成
    • 4.2.2 コンテキストを登録
    • 4.2.3 ツールを登録
    • 4.2.4 「手順」にプロンプトを書く
    • 4.2.5 個別のツールが機能するか会話でテストする
    • 4.2.6 まとめ
  • 4.3 ツールの連携の実例
    • 4.3.1 時間と情報検索の連携
    • 4.3.2 Web検索と計算の連携
    • 4.3.3 ナレッジと計算の連携
    • 4.3.4 まとめ
  • 4.4 マルチモーダル対応の実例
    • 4.4.1 マルチモーダルの可能性
    • 4.4.2 エージェントの設定
    • 4.4.3 画像を読んで質問をする
    • 4.4.4 PDFファイルを読み要約してもらう
    • 4.4.5 まとめ

第5章 ワークフローの作成

  • 5.1 AIアプリ開発の基本技術
    • 5.1.1 通常のワークフローとAIワークフローの違い
    • 5.1.2 Difyを使ったワークフローはどんなものか
  • 5.2 さっそく作ってみよう
    • 5.2.1 ワークフローの新規作成
    • 5.2.2 「開始」ノードの設定
    • 5.2.3 LLMノードの追加
    • 5.2.4 LLMノードの設定項目
    • 5.2.5 テスト実行
    • 5.2.6 「終了」ノードをつなぐ
    • 5.2.7 ワークフローを公開する
  • 5.3 ワークフロー公開の2つのモード
    • 5.3.1 アプリを実行
    • 5.3.2 バッチでアプリを実行
  • 5.4 知識をつなげて統合する
    • 5.4.1 社内相談窓口というユースケース
    • 5.4.2 知識取得ノードをつなげる
    • 5.4.3 総務担当者ノードを追加
    • 5.4.4 責任者ノードを追加
    • 5.4.5 実行例:上司のパワハラ相談
  • 5.5 議事録を作成する
    • 5.5.1 まずは簡単な議事録を作成
    • 5.5.2 もっと詳細にまとめるように改造する
    • 5.5.3 この方法のポイント
  • 5.6 DSLのエクスポートとインポート
    • 5.6.1 DSLのエクスポート
    • 5.6.2 DSLのインポート
    • 5.6.3 DSLエクスポートの別の方法
    • 5.6.4 実践的なアドバイス:DSLの効果的な活用法

第6章 各種ノードの型

  • 6.1 壱ノ型=開始-終了:アルファでありオメガである
    • 6.1.1 ノードとは何か?
    • 6.1.2 すべての始まりは「開始」から
    • 6.1.3 [開始]-[終了]は最も基本な組み合わせ
    • 6.1.4 この中で何が起こっているのか
    • 6.1.5 入力フィールドの設定を理解しよう
    • 6.1.6 複数の入力フィールドの設定
    • 6.1.7 出力変数も複数指定OK! でも少し注意が必要
  • 6.2 弐ノ型=開始-LLM-終了:究極の型
    • 6.2.1 なぜ「究極」なのか
    • 6.2.2 LLMの追加
    • 6.2.3 変数はいたるところで設定できる
    • 6.2.4 この型の真の力
    • 6.2.5 CoTをLLMノードで実装するヒント
  • 6.3 参ノ型=条件分岐:条件によって処理を分ける
    • 6.3.1 単純な条件分岐IF/ELSE
    • 6.3.2 各分岐にLLMをつなげて設定する
    • 6.3.3 終了ノードの追加
    • 6.3.4 実行してみる
    • 6.3.5 ELIFについて
    • 6.3.6 質問分類器で自動振り分け
    • 6.3.7 質問分類器の設定
  • 6.4 四ノ型=知識取得:RAGで知識を得る
    • 6.4.1 なぜワークフローでRAGなのか
    • 6.4.2 開始ノード設定
    • 6.4.3 知識取得ノードの追加と設定
    • 6.4.4 LLMノードの追加
    • 6.4.5 終了ノードにつなげる
    • 6.4.6 ワークフローでのRAGの応用
  • 6.5 伍の型=変数を取り出す:パラメータ抽出
    • 6.5.1 パラメータ抽出とは?
    • 6.5.2 実際に作ってみよう
    • 6.5.3 パラメータ抽出のパターン集
    • 6.5.4 シンプルな配列パターンの例
    • 6.5.5 パラメータ抽出の真価
  • 6.6 六ノ型=繰返し処理:イテレータで回す
    • 6.6.1 最も簡単な繰り返し処理をつくる(果物カラーガイド)
    • 6.6.2 テストしてみる
  • 6.7 七ノ型=定型文の処理:テンプレートはどう使うのか
    • 6.7.1 繰り返し処理を行ったあとはどうする?
    • 6.7.2 テンプレートはもっとすごい
    • 6.7.3 テンプレートの基本
    • 6.7.4 もう少し複雑なテンプレート
    • 6.7.5 入力処理でのテンプレート活用
    • 6.7.6 テンプレートの型の本質
    • 6.7.7 テンプレートを使いこなすコツ
  • 6.8 八ノ型=コード実行:ラストワンマイルの切り札
    • 6.8.1 コードノード,使ってみよう
    • 6.8.2 いろいろなサンプル
    • 6.8.3 httpxでAPIを呼ぶ
  • 6.9 九ノ型=API召喚術:HTTPリクエストノードでAPI連携
    • 6.9.1 なぜHTTPリクエストノードを使うの?
    • 6.9.2 地名から緯度経度を取得する例をつくろう
    • 6.9.3 実行してレスポンスを確認しよう
    • 6.9.4 データを抽出・整形する(コードノード)
    • 6.9.5 再び実行してみる
  • 6.10 拾ノ型=パラレル実行:ノードを同時に実行する
    • 6.10.1 パラレル実行の基本の型
    • 6.10.2 実際にやってみよう
    • 6.10.3 終了ノード以外でパラレル実行の結果を受ける
    • 6.10.4 注意点やコツなど
    • 6.10.5 活用例をいくつか
    • 6.10.6 まとめ
  • 6.11 拾壱ノ型=ファイル処理:あらゆるファイルを読むこと
    • 6.11.1 ドキュメントを読み込み要約する
    • 6.11.2 ワークフローの作成
    • 6.11.3 画像ファイルを読み,解説してもらう
    • 6.11.4 音声ファイルを読んで文字起こし
    • 6.11.5 リスト処理で振り分けて処理する
  • 6.12 拾弐ノ型=構造化出力:非構造データを構造化する
    • 6.12.1 テキストから構造化出力
    • 6.12.2 画像から構造化出力(名刺リーダーのユースケース)
  • 6.13 まとめ:十二の型,その先にある無限の可能性

第7章 各種ツールの使い方

  • 7.1 エージェントとワークフローでのツールの扱いの違い
    • 7.1.1 エージェントとワークフローとでは使い方が異なる
    • 7.1.2 エージェントで作ってみてからワークフローで使う
  • 7.2 Webブラウジングをつくる
    • 7.2.1 エージェントでつくる
    • 7.2.2 ワークフローでつくる
    • 7.2.3 まとめと実践的なポイント
  • 7.3 コードインタプリターをつくる
    • 7.3.1 エージェントでつくる
    • 7.3.2 実行をして確認
    • 7.3.3 ワークフローで実現(パラメータ抽出を使う場合)
    • 7.3.4 結果をテンプレートでまとめて実行まで
    • 7.3.5 ワークフローで実現(構造化出力を使う場合)
    • 7.3.6 まとめ:CodeInterpreterの2つの実現方法
  • 7.4 ワークフローをツールとして組み込む
    • 7.4.1 なぜワークフローをツール化するとよいのか
    • 7.4.2 ワークフローをツールとして保存する
    • 7.4.3 ツールを使ってみる
    • 7.4.4 ツールの設定と実行
    • 7.4.5 実行してみよう
    • 7.4.6 なぜこれがすごいのか
  • 7.5 カスタムツールの作成
    • 7.5.1 カスタムツールの正体
    • 7.5.2 GitHubAPIで試してみよう
    • 7.5.3 カスタムツールの設定
    • 7.5.4 テストボタンで動作確認
    • 7.5.5 ちょっとした疑問=レスポンスの制御について
    • 7.5.6 OpenAPI(swagger)仕様で最も重要な部分はどこか
  • 7.6 まとめ:創造のための三つの極意
    • 7.6.1 極意その一:型で基礎を固める
    • 7.6.2 極意その二:ツールで可能性を広げる
    • 7.6.3 極意その三:手法を使い分ける
    • 7.6.4 創造への扉が開かれた

第8章 チャットフローの作成

  • 8.1 チャットフローを理解する
    • 8.1.1 なぜ最後にチャットフローなのか
    • 8.1.2 チャットフローの特徴
    • 8.1.3 チャットフローの実践的な活用
    • 8.1.4 チャットフローの発展性
  • 8.2 チャットフローを作ってみよう
    • 8.2.1 最も簡単なQ&Aボットから始める
    • 8.2.2 実行してみる
    • 8.2.3 もう少し賢くしてみよう
    • 8.2.4 実行してみよう
    • 8.2.5 知識を使って賢くする
    • 8.2.6 実行してみる
  • 8.3 マルチモーダルに対応してみよう
    • 8.3.1 マルチモーダルの可能性
    • 8.3.2 マルチモーダルチャットフローの仕組み
    • 8.3.3 チャットフローを作成する
    • 8.3.4 画像をアップロードできる設定をする
    • 8.3.5 実行してテストする
    • 8.3.6 ドキュメント処理ルートの実装
    • 8.3.7 ドキュメントの読み込みに対応する
    • 8.3.8 実行してテストする
    • 8.3.9 実用的な使用例を考える
  • 8.4 任意に会話を記憶できる会話変数と変数代入
    • 8.4.1 なぜ会話変数が必要なの?
    • 8.4.2 会話変数とは?
    • 8.4.3 変数代入で記憶を保存する
    • 8.4.4 変数代入ノードの追加
    • 8.4.5 実行してみよう
    • 8.4.6 会話変数のさまざまな応用
    • 8.4.7 注意点
    • 8.4.8 まとめ

第9章 APIとしての活用を探る

  • 9.1 APIで自由を手にいれる
    • 9.1.1 DifyはBaaSでもある
    • 9.1.2 APIで広がる可能性
  • 9.2 DifyAPIとしてアクセスする
    • 9.2.1 まずはシンプルなアプリを作る
    • 9.2.2 APIキーを取得する
    • 9.2.3 APIを呼び出してみよう(cURLを使う)
    • 9.2.4 コマンドの説明
    • 9.2.5 どんな動きをしているのか
    • 9.2.6 Pythonでプログラミングをしてみよう
    • 9.2.7 APIを呼び出すプログラムを書いてみよう
    • 9.2.8 もう少し実用的なプログラムに
    • 9.2.9 WebUIで試してみる
    • 9.2.10 ワークフローのAPIについてのまとめ
  • 9.3 チャットボットAPIを使うには
    • 9.3.1 基本的なチャットボット
    • 9.3.2 APIキーを取得する
    • 9.3.3 APIを動かしてみる
    • 9.3.4 Python+Gradioでチャットボットを作る
  • 9.4 ストリーミングに対応する
    • 9.4.1 ストリーミングとは?
    • 9.4.2 さっそく試してみよう
    • 9.4.3 Pythonでプログラミング
    • 9.4.4 プログラムの説明
  • 9.5 エージェントに対応する
    • 9.5.1 エージェントに対応するには
    • 9.5.2 エージェントのAPIを取得する
    • 9.5.3 エージェントAPIをテストする
    • 9.5.4 返信内容を解析してみる
    • 9.5.5 エージェントとしてプログラミングする
  • 9.6 APIでナレッジを操作する
    • 9.6.1 なぜナレッジAPIが必要なの?
    • 9.6.2 ナレッジの仕組みを理解しよう
    • 9.6.3 ナレッジからAPIを取得する
    • 9.6.4 空のデータセットを作成する
    • 9.6.5 テキストをドキュメントに追加してみよう
    • 9.6.6 APIでドキュメントを更新する
    • 9.6.7 ファイルからドキュメントを作成する
    • 9.6.8 ファイルからドキュメントを更新する
    • 9.6.9 その他の主要なナレッジAPI
    • 9.6.10 この章まとめ:筆者の実践例から見たDifyAPIの可能性

第10章 ローカル環境の構築

  • 10.1 Dockerの物語
    • 10.1.1 さまざまな住人が暮らすLinux街
    • 10.1.2 便利な引っ越し箱の登場
    • 10.1.3 Docker……そしてDify
  • 10.2 Dockerを使ったインストール方法
    • 10.2.1 Dockerのインストールの前提条件
    • 10.2.2 事前準備:Gitのインストール
    • 10.2.3 Dockerをインストールする
    • 10.2.4 Dockerはどうやって使うのか
    • 10.2.5 DifyをDocker上でインストールする
    • 10.2.6 Difyのバージョンアップ手順
  • 10.3 Difyの内部構造
    • 10.3.1 docker-compose.yamlを読み解く
    • 10.3.2 各種コンテナの詳細を覗いてみる
    • 10.3.3 Webサービスを見てみよう
    • 10.3.4 Difyの記憶装置を理解する
    • 10.3.5 weaviate
    • 10.3.6 まとめ
  • 10.4 環境変数とカスタマイズ
    • 10.4.1 設定できることを知ろう
    • 10.4.2 環境変数の世界を覗いてみよう
    • 10.4.3 環境変数の文法を解読する
    • 10.4.4 環境変数の設定方法
    • 10.4.5 環境変数の優先順位を理解する
    • 10.4.6 .envファイルの活用
    • 10.4.7 カスタマイズ設定例
    • 10.4.8 トラブルシューティング
    • 10.4.9 まとめ:環境変数マスターへの道
  • 10.5 OllamaでローカルAIチャットボットを作る
    • 10.5.1 システム要件をチェックしよう
    • 10.5.2 モデルのダウンロードと実行
    • 10.5.3 環境変数の設定(外部アクセスを許可する)
    • 10.5.4 外部アクセスの確認
    • 10.5.5 Difyと連携しよう
    • 10.5.6 まとめ

終章 次なる一歩に向けて

2.2 サポートページ

正誤表やv1.0.0への対応などが書かれています。
https://nova-join-5c4.notion.site/AI-1a1b1102fb3380b48d8df6fa1c62da0c

書籍で紹介されている、チャットボット、ワークフロー等のDSLは以下参照。
https://github.com/gamasenninn/gihyo-dify-book/tree/main/DSL

2.3 書評

とにかく情報量が一番多いです。
意外と、非エンジニア向けも意識してい書いています。
何回言って申し訳ないですが、本文がv1.0.0対応さえしていれば、と思います。

3. ゼロからわかるDifyの教科書 ~生成AI×ノーコードでかんたん業務効率化

略称「桃色本」です。

3.1 目次

https://gihyo.jp/book/2025/978-4-297-14836-2 より引用

Chapter1 大規模言語モデル活用の基本

  • 1.1 言語モデルの基本理解
    • 1-1-1 ChatGPTの社会的インパクト
    • 1-1-2 従来のAI技術が抱える課題
    • 1-1-3 言語モデルの能力
    • 1-1-4 生成AI分野における言語モデルの特長
  • 1.2 言語モデル活用の課題とDifyの必要性
    • 1-2-1 言語モデルを使う際のコストの課題
    • 1-2-2 データプライバシーの課題
    • 1-2-3 運用ワークフローの課題
    • 1-2-4 Difyによる課題解決
    • 1-2-5 Difyを効果的に使うための基礎知識
  • 1.3 言語モデルの仕組みと特性
    • 1-3-1 予測による文章生成の仕組み
    • 1-3-2 確率的な予測の特徴と限界
    • 1-3-3 言語や分野による性能差
  • 1.4 プロンプトエンジニアリングの基本理解
    • 1-4-1 効果的な指示の重要性
    • 1-4-2 プロンプト設計の基本原則
    • 1-4-3 具体的なプロンプト作成方法

Chapter2 Difyの環境構築とセットアップ

  • 2.1 Difyの基本と特徴
    • 2-1-1 生成AIアプリ開発プラットフォームDify
    • 2-1-2 シンプルなチャットボットの開発
    • 2-1-3 アプリケーションの管理と運用
  • 2.2 クラウド版Difyで作る初めてのアプリケーション
    • 2-2-1 クラウド版のアカウント作成とセットアップ
    • 2-2-2 シンプルなチャットボットの開発
    • 2-2-3 アプリケーションの管理と運用
  • 2.3 コミュニティ版Difyのセットアップ
    • 2-3-1 Dockerによる実行環境の理解
    • 2-3-2 インストール手順と環境構築
    • 2-3-3 Dockerのインストール
    • 2-3-4 Difyのソースコード取得
    • 2-3-5 Docker Composeでコンテナの作成と起動
    • 2-3-6 アプリケーションの動作確認とログイン
  • 2.4 言語モデルの設定とAPIの基礎
    • 2-4-1 APIの基本を理解する
    • 2-4-2 言語モデルの選択基準
  • 2.5 アプリケーションタイプの選択
    • 2-5-1 各アプリタイプの特徴と機能
    • 2-5-2 処理の複雑さによるアプリタイプの選択
    • 2-5-3 インターフェースの種類によるアプリタイプの選択
    • 2-5-4 エージェントアプリの特徴

Chapter3 テキスト処理を行うアプリケーション開発

  • 3.1 本書での学習リソースの概要
    • 3-1-1 DSLファイルの概要
    • 3-1-2 GitHubリポジトリの利用ガイド
    • 3-1-3 DSLファイルのインポート手順
    • 3-1-4 設定時の注意点
  • 3.2 変数機能で作るレポート生成アプリ
    • 3-2-1 レポート作成アプリケーションの概要
    • 3-2-2 テキストジェネレーターでのアプリケーション作成
  • 3.3 高度なアプリタイプの基本
    • 3-3-1 チャットフローとワークフローのアプリタイプ
    • 3-3-2 高度なアプリタイプの基礎
    • 3-3-3 変数の基本概念
    • 3-3-4 システム変数の概要
  • 3.4 文章校正アプリケーションの開発
    • 3-4-1 文章校正アプリの概要
    • 3-4-2 アプリケーションの基本設計
    • 3-4-3 入力データの受け取り方法を設定
    • 3-4-4 言語モデルによる校正処理の設定
    • 3-4-5 校正結果の表示方法を設定
    • 3-4-6 アプリケーションのテストと調整
    • 3-4-7 アプリケーションの公開と利用
    • 3-4-8 アプリケーションの拡張性を高める
  • 3.5 条件分岐を活用した文章処理アプリの開発
    • 3-5-1 文章処理アプリケーションの概要
    • 3-5-2 アプリケーションの基本設計
    • 3-5-3 開始ノードでの入力設定
    • 3-5-4 IF/ELSEノードによる処理の分岐
    • 3-5-5 LLMノードの設定と処理の実装
    • 3-5-6 変数集約器ノードによる結果の統合
    • 3-5-7 テンプレートノードによる出力の整形
    • 3-5-8 終了ノードの設定と出力
    • 3-5-9 アプリケーションのテストと実行
  • 3.6 JSONモードで作る文章アシストアプリ
    • 3-6-1 文章アシストアプリの概要
    • 3-6-2 アプリケーションの基本設計
    • 3-6-3 入力データの設定
    • 3-6-4 LLMノードの設定と処理の実装
    • 3-6-5 アプリケーションのテストと実行
  • 3-7 問い合わせ対応チャットボット開発
    • 3-7-1 問い合わせ対応チャットボットの概要
    • 3-7-2 アプリケーションの基本設計
    • 3-7-3 開始ノードでの入力設定
    • 3-7-4 質問分類器ノードの実装
    • 3-7-5 LLMノードの設定
    • 3-7-6 変数集約器ノードと回答ノードの設定
    • 3-7-7 アプリケーションの実行と改善のポイント

Chapter4 ファイル処理を行うアプリケーション開発

  • 4.1 ファイル処理機能で作るQA自動生成アプリ
    • 4-1-1 QA自動生成アプリの概要
    • 4-1-2 アプリケーションの基本設計
    • 4-1-3 ファイル入力の設定と変数の定義
    • 4-1-4 PDFからのテキスト抽出機能の実装
    • 4-1-5 LLMノードの設定とプロンプトの実装
    • 4-1-6 出力形式の整形と表示
    • 4-1-7 アプリケーションの実行とテスト
  • 4.2 チャットフローによるPDF対話アプリの開発
    • 4-2-1 PDF対話アプリの概要
    • 4-2-2 アプリケーションの基本設計
    • 4-2-3 ファイル処理のための変数設定
    • 4-2-4 利用方法の説明文の表示
    • 4-2-5 説明文の実装
    • 4-2-6 PDFコンテンツの処理設定
    • 4-2-7 回答生成の実装
    • 4-2-8 アプリケーションの実行とテスト
  • 4.3 複数の方法で実現するPDF要約アプリの開発
    • 4-3-1 文章要約アプリの概要
    • 4-3-2 アプリケーションの基本設計
    • 4-3-3 PDFファイルの取得とテキスト抽出
    • 4-3-4 並列処理による要約処理の実装
    • 4-3-5 要約結果の表示形式の設計
    • 4-3-6 アプリケーションの実行とテスト
  • 4.4 ワークフローを活用した複数ファイルの一括要約
    • 4-4-1 複数ファイル要約アプリの概要
    • 4-4-2 アプリケーションの基本設計
    • 4-4-3 ワークフローツールの基本設定
    • 4-4-4 開始ノードの設定
    • 4-4-5 イテレーションノードの実装
    • 4-4-6 結果の整形と出力設定
    • 4-4-7 アプリケーションの実行とテスト
  • 4.5 マルチモーダルモデルによる画像処理の基本
    • 4-5-1 画像処理アプリの概要
    • 4-5-2 アプリケーションの基本設計
    • 4-5-3 LMMによる画像処理の実装
    • 4-5-4 アプリケーションの実行とテスト
    • 4-5-5 特定情報の抽出機能の実装
    • 4-5-6 LMMで画像を扱う際の制限事項
    • 4-5-7 画像処理のコスト
  • 4.6 音声認識を活用した議事録作成アプリの開発
    • 4-6-1 音声処理アプリの概要
    • 4-6-2 アプリケーションの基本設計
    • 4-6-3 開始ノードと条件分岐の設定
    • 4-6-4 音声認識による文字起こしの実装
    • 4-6-5 会話データの保持と再利用の実装
    • 4-6-6 議事録を作成するLLMの設定
    • 4-6-7 アプリケーション起動時の案内設定
    • 4-6-8 質問応答機能の実装
    • 4-6-9 アプリケーションの実行とテスト

Chapter5 Difyで実現するRAGアプリケーション開発

  • 5.1 RAGによるビジネス課題の解決
  • 5.2 はじめてのRAGアプリケーション開発
    • 5-2-1 ナレッジベースの作成と設定
    • 5-2-2 チャットフローによるRAGの実装
  • 5.3 RAGシステムの仕組みと検索技術の基礎
    • 5-3-1 RAGシステムの全体像
    • 5-3-2 検索・抽出のための前処理
    • 5-3-3 検索アルゴリズムの設定
    • 5-3-4 検索精度を高めるリランク技術
  • 5.4 複数の業務文章を活用したRAGアプリケーションの実践
    • 5-4-1 文章特性に応じたナレッジベースの設計
    • 5-4-2 複数ナレッジの統合と知識取得ノードの実装
    • 5-4-3 RAGシステムの精度向上とトラブルシューティング
    • 5-4-4 Q&A形式による高精度化の実現
  • 5.5 文脈を考慮したRAG検索システムの実装
    • 5-5-1 RAGシステムにおける文脈理解の重要性
    • 5-5-2 文脈対応したRAGの基本設計
    • 5-5-3 入力内容の分類システムの実装
    • 5-5-4 クエリ変換システムの構築
    • 5-5-5 RAG以外のフローを実装する
    • 5-5-6 動作確認とデバッグ
  • 5-6 RAGシステムの現状の限界
    • 5-6-1 要約生成における制約
    • 5-6-2 非テキストデータ処理の課題
    • 5-6-3 表形式データ処理の限界
    • 5-6-4 複雑な検索クエリへの対応

Chapter6 ツールを活用したDifyの機能拡張と外部システム連携

  • 6.1 ツール機能の基礎
    • 6-1-1 ツール機能によるアプリケーションの拡張
    • 6-1-2 ツールプラグインの全体像
    • 6-1-3 DALL-Eによる画像生成アプリの開発
    • 6-1-4 アプリケーションの概要
    • 6-1-5 ツールプラグインの設定方法
    • 6-1-6 DALL-Eツールの利用
    • 6-1-7 アプリケーションの実行と動作確認
  • 6.2 ウェブ検索ツールを活用した情報収集アプリの開発
    • 6-2-1 ウェブ検索による最新情報の取得
    • 6-2-2 ウェブ検索ツールを組み込んだアプリケーション開発
    • 6-2-3 検索クエリ生成機能の実装
    • 6-2-4 現在の日時情報の取得
    • 6-2-5 検索クエリ作成用のLLMノードの設定
    • 6-2-6 Tavily Searchによるウェブ検索
    • 6-2-7 検索精度を高めるフィルタリング処理
    • 6-2-8 複数の検索を同時に実行する
    • 6-2-9 引用元を含めた回答生成フローの構築
    • 6-2-10 アプリケーションの実行と動作確認
  • 6.3 Google スプレッドシートと連携したデータ管理の基礎
    • 6-3-1 Google Apps Scriptとの連携によるデータの保存
    • 6-3-2 作成するアプリケーションの概要
    • 6-3-3 スプレッドシートの作成と設定
    • 6-3-4 Google Apps Scriptのプログラムの実装
    • 6-3-5 ウェブサービスとしての公開手順
  • 6.4 Dify とGoogle スプレッドシートの連携
    • 6-4-1 スプレッドシート連携アプリの設計
    • 6-4-2 画像からテキストを情報抽出する
    • 6-4-3 HTTPリクエストの概要
    • 6-4-4 HTTPリクエストノードの設定
    • 6-4-5 環境変数の活用
    • 6-4-6 レスポンス処理の実装
    • 6-4-7 処理結果の表示設計
    • 6-4-8 アプリケーションの実行と動作確認
  • 6.5 再利用可能なカスタムツールの作成と活用
    • 6-5-1 カスタムツールによる外部連携の基礎
    • 6-5-2 請求書データ登録ツールの開発
    • 6-5-3 カスタムツールの作成
    • 6-5-4 アプリケーションでの活用
    • 6-5-5 カスタムツールの設定
    • 6-5-6 アプリケーションの動作確認
    • 6-5-7 カスタムツールとHTTPリクエストノードの使い分け

Chapter7 AIエージェントを活用したアプリケーション開発

  • 7.1 AIエージェントの基本
    • 7-1-1 AIエージェントとは?
    • 7-1-2 生成AIの台頭におけるAI エージェント
    • 7-1-3 AIエージェントの基本技術
  • 7.2 AIエージェントを活用した基本アプリ
    • 7-2-1 AIエージェントアプリの概要
    • 7-2-2 エージェントアプリ作成の基本
    • 7-2-3 エージェントが利用できる機能の設定
    • 7-2-4 アプリの動作確認
    • 7-2-5 AIエージェントの仕組みの確認
    • 7-2-6 ナレッジの検索クエリの設定
  • 7.3 AIエージェント導入の考え方
    • 7-3-1 AIエージェントが適しているタスク
    • 7-3-2 AIエージェントの問題点
    • 7-3-3 Difyのワークフロー型のアプリケーション

3.2 サポートページ

DSLや入力用のファイル等
https://github.com/nyanta012/dify-book

3.3 書評

インポート用のDSLできちんとコメントを入れているところが丁寧で好印象です。
書きっぷりとして、エンジニアが書いた技術書という印象が4冊の中で一番強いです。

4. 【この1冊からはじめる】生成AIアプリ開発入門 Dify 徹底活用ガイド の目次

4.1 目次

Chapter1 生成AIとアプリケーション開発の基礎

  • 1-1 生成 AI時代をキャッチアップする
  • 1-2 生成 AI アプリ開発の時代へ
  • 1-3 私たちでもできる生成 AI アプリ開発
  • 1-4 生成 AI アプリ開発へチャレンジしよう

Chapter2 Difyをはじめてみよう

  • 2-1 Dify について知っておこう
  • 2-2 Dify を使う準備をしよう

Chapter3 チャットボットを作ろう

  • 3-1 チャットボットとは
  • 3-2 簡単なチャットボットを作成しよう
  • 3-3 RAG とは
  • 3-4 RAG チャットボットを作成しよう
  • 3-5 さらにチャットボットを作成しよう

Chapter4 テキストジェネレーターを作ろう

  • 4-1 テキストジェネレーターとは
  • 4-2 SNS 投稿ジェネレーターを作成しよう
  • 4-3 メルマガジェネレーターを作成しよう

Chapter5 エージェントを作ろう

  • 5-1 エージェントとは
  • 5-2 役立つエージェントを作成しよう
  • 5-3 画像生成エージェントを作成しよう
  • 5-4 複雑なタスクをこなすエージェントを作成しよう

Chapter6 チャットフローを作ろう

  • 6-1 チャットフローとは
  • 6-2 チャットフローを作成しよう
  • 6-3 ナレッジを持ったチャットフローを作成しよう
  • 6-4 条件分岐を活用したチャットフローを作成しよう
  • 6-5 複数の LLM を活用したチャットフローを作成しよう
  • 6-6 並列処理を活用したチャットフローを作成しよう
  • 6-7 検索 APIを活用したチャットフローを作成しよう

Chapter7 ワークフローを作ろう

  • 7-1 ワークフローとは
  • 7-2 画像からデータを抽出するワークフローを作成しよう
  • 7-3 音声データから議事録を作成するワークフローを作成しよう

Chapter8 応用的なアプリケーション作成に挑戦しよう

  • 8-1 GAS を利用した本格生成 AI アプリ開発に挑戦しよう
  • 8-2 GAS スクリプトの作成と HTTP リクエストを試そう
  • 8-3 領収書管理アプリを作成しよう
  • 8-4 チャット型家計簿アプリを作成しよう

Chapter9 業務をアプリケーションに落とし込むコツ

  • 9-1 自分のアイディアをアプリにしよう

付録(1) 各種APIキーの取得方法

  • OpenAI API の取得
  • 1-2 Reader API の取得
  • 1-3 Google Search API の取得
  • 1-4 Stability Al API の取得

付録(2) 基本的なノードの詳細解説

  • 2-1 [開始] ノード
  • 2-2 [LLM] ノード
  • 2-3 [知識取得] ノード
  • 2-4 [回答] ノード
  • 2-5 [IF/ELSE] ノード
  • 2-6 [HTTP リクエスト] ノード

付録(3) ユーザー入力フィールドの機能解説

  • 3-1 ユーザーの利便性を向上させよう

4.2 サポートページ等

https://www.sbcr.jp/product/4815632991/

DSLのダウンロード
https://www.sbcr.jp/support/4815631066/

4.3 書評

比較表の項目的な意味では、チャットボット、エージェント、テキストジェネレーター、チャットフロー、ワークフローを網羅していることが特長です。
メインの著者がエンジニアではないので、その辺りの説明が丁寧かもしれないので、その辺りが気に入るならばどうぞです。
4冊並べてみると、それ以外の特長が出にくいのかなという印象です。

5. コーディング不要で毎日の仕事が5倍速くなる!Difyで作る生成AIアプリ完全入門

5.1 目次

https://bookplus.nikkei.com/atcl/column/032900009/032800890/ より引用

第1章 Difyの基本

  • 1-1 Dify の特徴を知ろう
  • 1-2 Dify でできること
  • 1-3 Dify の主な機能
  • 1-4 RAGを簡単に実現する「ナレッジ」

第2章 Difyの基礎設定

  • 2-1 Dify のアカウントを登録しよう
  • 2-2 モデルプロバイダーを設定しよう

第3章 日々の営業効率をアップするアプリ

  • 3-1 メール作成アプリを作ろう
  • 3-2 電話のトークスクリプト作成アプリを作ろう
  • 3-3 音声で話せる電話トレーニングアプリを作ろう

第4章 名刺や見積書などのファイルを処理するアプリ

  • 4-1 名刺の読み取りアプリを作ろう
  • 4-2 領収書を表形式で読み取るアプリを作ろう
  • 4-3 見積書を更新してくれるアプリを作ろう
  • 4-4 会議の議事録をまとめてくれるアプリを作ろう

第5章 複数処理に分岐して稟議をレビューするアプリ

  • 5-1 稟議申請をレビューするアプリを作ろう
  • 5-2 内容を判断して分岐する機能を追加しよう
  • 5-3 レビュー後に相談を続けられる機能を追加しよう

第6章 RAGで自社情報を学習した社内用のナビアプリ

  • 6-1 社内規定を質問できるナビアプリを作ろう
  • 6-2 より検索精度を高める親子ナレッジを活用しよう

第7章 プラグインを活用してSlackからRAGを利用するアプリ

  • 7-1 Slack bot プラグインをインストールしよう
  • 7-2 Slack bot プラグインを設定しよう

第8章 Difyのセキュリティを理解して安全に使う

  • 8-1 アプリの公開状態を管理しよう
  • 8-2 Dify のセキュリティとコンプライアンス
  • 8-3 Dify のデプロイメントモデルの違い

注: https://bookplus.nikkei.com/atcl/column/032900009/032800890/ のキャプチャは、

  • 8-1 Dify のセキュリティとコンプライアンス
  • 8-2 Dify のデプロイメントモデルの違い
    であるが、本文中では、8-2、8-3だったので、修正しています。

5.2. サポートページ

誤植の正誤表やDSLのダウンロードは以下を参照してください。
https://github.com/GenerativeAgents/dify-book

書籍で紹介されている、チャットボット、チャットフローのDSLは以下をダウンロードして、zip解凍してください。
https://github.com/GenerativeAgents/dify-book/raw/refs/heads/main/all.zip

5.3 書評

比較表の項目的な意味では、チャットボット、チャットフローのみに絞っています。
最小時間で最低限できるようになればいいなら、この本かなと思います。

appendix

a.1 Difyのバージョン

a.1.1 セマンティックバージョン

エンジニア以外の方へ

Difyが、 セマンティック バージョニングに必ずしも従う必要はないのですが、普通にソフトウェア開発しているならばこのバージョニングに従うはずです。

v1.0.0がいわゆる正式版です。それまでの例えば、v0.15.5などは、いわゆるベータ版という位置づけになります。

a.1.2 Dify 1.0.0での変更点

https://github.com/langgenius/dify/releases/tag/1.0.0 より

抄訳

🎉 Dify プラグインのご紹介 🎉
Dify v1.0.0をリリースできることを嬉しく思います。
プラグインは、プラグアンドプレイのシンプルさで AI アプリケーションを拡張するモジュール式コンポーネントです。これで、外部サービスやカスタム機能を Dify アプリで簡単に組み立てることができます。

新着情報
私たちは、ユーザーが .difypkg というサフィックスを持つプラグインを作成できる Dify の標準であるプラグイン システムを開発しました。さまざまなプラグイン パッケージをインストールすることで、Dify にさまざまな機能を追加できます。
このシステムにより、Dify から拡張可能なツールとモデルが分離され、真のプラグアンドプレイ方式でインストールできるようになりました。
ワークフローに新しいエージェント ノードを導入しました。これにより、エージェントの動作をプラグインで定義できるようになりました。つまり、Dify は CoT などの組み込み戦略に限定されなくなり、独自のエージェント戦略を定義できるようになります。
また、Dify 内でホストされるカスタム サービスである Extension という新しいタイプのプラグインも導入しました。プラグインを通じてこのサービスのコードをカスタマイズし、外部の Webhook イベントを処理できます。
プラグインを自由に共有し、ユーザーがさまざまなプラグインを公開およびダウンロードできる集中型プラットフォームである Dify Marketplace を立ち上げました。

というわけで、プラグインのあるなしがv1.0.0になったときの大きな変更点です。

a.2 書籍の各種サポートページ

誤植情報もそうですが、DSLをダウンロードできるので、それを見てから買う本を決めるのも手です。

  1. 生成AIアプリ開発大全――Difyの探求と実践活用
  2. 【この1冊からはじめる】生成AIアプリ開発入門 Dify 徹底活用ガイド
  3. コーディング不要で毎日の仕事が5倍速くなる!Difyで作る生成AIアプリ完全入門
  4. ゼロからわかるDifyの教科書 ~生成AI×ノーコードでかんたん業務効率化

Discussion