【脱・検索係】非エンジニアでもkintoneとDifyを簡単に連携!kintoneプラグインでデータ処理を自動化しよう

kintoneがあるのに「検索係」が必要な状態は、Difyで改善できる

データの確認で仕事が止まる!「Dify」で解決したいが、自分にできるのか?

kintoneにデータが蓄積されているのに、結局PCを使える自分が検索して答えていませんか?現場や他部署からデータの問い合わせがあるたびに手が止まり、ただの「検索係」になっているのが現状です。

検索係になっている社員

最近になって「Dify」「n8n」などの自動化ツールが登場しており、聞いたことがある方もいるでしょう。 しかし「AIチャットボットを作れば解決する」と聞いても、「API」や「JSON」といった専門用語の壁を感じるのではないでしょうか。

専門用語に困っている非エンジニアの社員

非エンジニアにとってプログラミングの学習コストは高く、「失敗して時間を無駄にしたくない」「自分には無理だ」と二の足を踏むのは当然です。 しかし、その悩みは技術の進歩によって過去のものになりつつあります。

Difyにサイボウズ公式の「kintoneプラグイン」が登場!

実は最近、Difyに「kintone連携プラグイン」が標準搭載されました。 これを使えば、難解なプログラミングコードを書くことなく、ブロックを並べるだけで連携できます。 これまでエンジニアに依頼していた設定が、直感的な操作だけで完結するようになりました。

dify-kintone-ai

本記事では、実際に作成した「レコード集計・分析チャットボット」を例に、プラグインの設定手順と活用例、初心者がつまずきやすいポイントを丁寧に解説します。 まずはプラグインを活用し、業務効率化の第一歩を踏み出しましょう。

チャットボット画面

プラグインで「HTTPリクエスト」のハードルが消滅。非エンジニアでも設定しやすい仕様に

最大の挫折ポイント「ヘッダー・パラメータ」からの解放

Difyはノーコードで設定できる手軽さが特徴のツールですが、kintoneとの連携では「HTTPリクエストブロック」という機能を使う必要がありました。この機能を使う際は「API」や「webhook」などの設定が必要になります。そこで「ヘッダー設定」「JSONパラメータ」といった専門用語を理解する必要がありました。

httpリクエスト

しかも場合に応じて入力欄にデータを入れたり入れなかったりするため、「そもそもここに何を入れるべきなのか?」「入れるべき情報は分かったが、どこで確認できるのか?」という事態が頻繁に発生します。このハードルが多くの非エンジニアを惑わせ、挫折させてきました。

httpリクエストブロック

「難しいAPI連携」は過去の話。今は「穴埋め問題」レベル

しかしプラグインではこれらの設定に必要な項目があらかじめ入力欄として用意されているため、どの情報が必要なのかすぐに理解できます。また、その情報をkintoneからどう取得すれば良いか、簡単な例と一緒に記載されています。

そのため設定は必要な情報をガイドに従って入力するだけの「穴埋め」感覚で完了し、本来の目的である「どう連携させるか」という業務設計に集中できるのです。

【利用手順】簡単インストール後、すぐにブロックとして実行できる!

プラグインの導入はDifyの「プラグインストア」から検索して「インストール」ボタンを押すだけでOK。

kintoneプラグインのインストール

インストール後は以下の手順でkintoneのデータにアクセスできます。

kintoneブロックの操作手順

  1.  Difyでkintoneブロックを設置
    • レコードの取得・追加・編集ができるので、機能を選択する
  2.  使用しているkintoneのドメインを入力する
    • (例)kintoneのURLが”https://XXX.cybozu.com”であれば、ドメインは「XXX」
  3.  kintoneアプリの設定画面からAPIトークンを生成し、Difyに入力する
    • APIトークンの生成方法はこちら(kintone公式サイト)
  4. 適用したいアプリのIDをブロックに入力する
    • (例)アプリのURLが”https://XXX.cybozu.com/k/4329/”であれば、アプリIDは「4329」
  5. 用途に合わせてレコードを操作する
    • レコード取得→レコードの検索条件を入力
    • レコード追加→追加したいレコードのデータを入力
    • レコード編集→編集したいレコードのIDとフィールド、および更新データを入力

詳しくはサイボウズ公式ページをご覧ください。

【活用例】Difyチャットボットで検索業務を効率化。標準機能にはできない「アプリまたぎ」の参照も

例としてkintoneのレコードを集計・分析するチャットボットを作ってみたので、どのように活用されるか見てみましょう。

チャットボットイメージ

実践シナリオ:チャットで「データ分析」を完結させる

今回作成するボットは、案件管理アプリの画面上に設置して使用します。ユーザーが質問すると、裏側でDifyがkintoneレコードを集計・分析し、結果を表示します。 わざわざフィルターをかけて検索する必要がなく、「データ集計」のためだけに画面を移動する無駄な手間が解消されます。

システム構成

  • kintoneアプリ:今回はサンプルとして「案件管理」のアプリを利用します。案件単位で[会社名、案件名、金額、提案商品]などの情報が記録されています。

案件管理アプリ

  • Difyワークフロー:今回は「チャットフロー」の仕組みを利用します。

チャットフロー

活用例

kintoneのアプリ上にデータ分析チャットボットのボタンを設置しました。起動すると裏側でDifyが自動的にレコードを取得する仕組みになっています。

difyチャット画面

レコードについて分析したい内容を指示してみましょう。今回は会社ごとに売上を集計するように指示してみます。

チャット中

すると、集計結果と簡単なレポートが出力されました。

チャット回答1チャット回答2

このようなチャットを構築することで、画面を切り替えることなくkintoneアプリの内容を把握し、報告書作成や問い合わせ対応に活用することができます。

また、Difyの連携機能をもっと活用すると、生成AIの回答内容を自動でドキュメント(Google docsなど)に出力させて、レポート資料を作成することもできます。

【落とし穴と対策】API権限とJSONの壁はこう乗り越える

このようなチャットボットの設定時には、初心者が陥りやすい2つの落とし穴に注意しましょう。

API権限の設定

  • kintoneブロックの設定時に、データを取得したいアプリのAPI権限が必要です。
  • 参照先アプリでの「APIトークン権限」の設定漏れが起きやすいので注意しましょう。

APIトークンの設定

JSON形式のデータの取り扱い

  • kintoneブロックから取得したデータはJSON形式になっていますが、そのままではDifyのLLMブロックに入力できません。
  • コードブロックによるデータ変換が必要となるので、以下のコードテンプレートを使用します。

コードブロック

【テンプレート】JSON形式のデータを表形式に変換するPythonコード

  • 下記のコードはkintoneのレコードから[会社名、案件名、金額、提案商品]のデータを抽出できます。
  • 適用したいアプリに合わせてフィールド名を変更してください。
import json
from typing import List, Dict, Any

def main(kintone_records: List[Dict[str, Any]]) -> Dict[str, str]:
    """
    Processes Kintone records to generate a Markdown table.

    Args:
        kintone_records: A list containing Kintone record data.

    Returns:
        A dictionary with the key 'result' containing the Markdown table string.
    """
    # Difyの入力変数からKintoneのJSONデータを取得
    try:
        kintone_data_list = kintone_records
        if not kintone_data_list:
            # 入力データが空の場合のエラーメッセージを返す
            return {"result": "エラー: 入力変数 'kintone_records' が空です。"}
    except Exception:
        # 入力変数にアクセスできない場合のエラーメッセージを返す
        return {"result": "エラー: 入力変数 'kintone_records' の取得に失敗しました。"}

    # KintoneのJSON構造([{"records": [...]}])からレコード配列を取得
    if not isinstance(kintone_data_list, list) or not kintone_data_list or "records" not in kintone_data_list[0]:
        # JSON構造が想定外の場合、エラーメッセージを返す
        return {"result": "エラー: Kintoneデータ構造が予期された形式ではありません。"}

    records = kintone_data_list[0]["records"]

    # ----------------------------------------------------
    # 1. データ抽出と整形
    # ----------------------------------------------------

    table_rows = []

    for record in records:
        try:
            sales_str = record.get("売上", {}).get("value")
            sales_value = float(sales_str) if sales_str else 0
            formatted_sales = f"¥{sales_value:,.0f}"
        except (ValueError, TypeError):
            formatted_sales = "N/A"

        item = {
            "案件名": record.get("案件名", {}).get("value") or "",
            "会社名": record.get("会社名", {}).get("value") or "",
            "提案商品": record.get("提案商品", {}).get("value") or "",
            "売上": formatted_sales
        }
        table_rows.append(item)

    # ----------------------------------------------------
    # 2. Markdownテーブルの構築
    # ----------------------------------------------------

    headers = ["案件名", "会社名", "提案商品", "売上"]
    markdown_table = "| " + " | ".join(headers) + " |\\n"
    alignment = [":---:"] * (len(headers) - 1) + ["---:"]
    markdown_table += "| " + " | ".join(alignment) + " |\\n"

    for row in table_rows:
        values = [str(row.get(h, "")) for h in headers]
        markdown_table += "| " + " | ".join(values) + " |\\n"

    # ----------------------------------------------------
    # 3. 結果の出力
    # ----------------------------------------------------

    return {"result": markdown_table}

 

【補足】コード調整用プロンプト

  • もし「コードの書き換えも面倒くさい…」と思う場合は、LLMに任せてしまいましょう。
  • フィールド名を書き換えて、上記のコードをコピペして貼り付けると、調整したコードが出力されます。
## 前提
以下の「サンプルコード」は、kintoneから取得したjsonデータをmarkdown形式の表に変換するためのコードである。
このコードでは、取得するkintoneデータのフィールドは[案件名,会社名,提案商品,売上]の4種類を指定している。

## 指示
取得するkintoneデータのフィールドを変更したい。
後述する「取得したいフィールド名」のデータを取得し、markdown形式の表を出力するように、コードを修正せよ。

## 取得したいフィールド名
- {フィールド名1}
- {フィールド名2}
- {フィールド名3}

## サンプルコード
//上記のPythonコードをそのまま貼り付ける//

このようにテンプレートとLLMをうまく活用することで、プログラミングの壁を突破できます。

「レコード一覧分析AI」との決定的な違いは「アプリの壁」

このような活用方法を見ると、kintoneの一機能である「レコード一覧分析AI」と変わらないと思う方もいるかもしれません。

レコード分析AI

しかし「レコード一覧分析AI」には制約があります。それは基本的に「今開いているアプリ」のデータしか扱えないという点です。

たとえば案件管理アプリを開いている最中に、取引先の担当者の情報を確認したいケースを考えます。このデータは「顧客管理アプリ」という別のアプリで管理されているため、レコード一覧分析AIで質問しても回答が得られません。これではデータの確認のために別画面を開く手間が生じてしまいます。

チャットで参照失敗

対してDifyは、kintoneブロックをワークフローに追加することでデータの参照先を増やすことができます。つまりチャットの中で「今開いていないアプリのデータ」にもアクセスできるのです。

このアプリを横断して連携できる「自由度の高さ」が、Difyを使うメリットの1つといえます。

まずはプラグインで簡単な連携から。データ活用で現場を自走させよう

小さく始めて大きく育てる。次はもう一段先の活用へ

このような自動化を成功させるコツは「最初はシンプルな機能で確実に稼働させること」です。操作に慣れてきたら、日報の要約や不良品データの傾向分析などの複雑な連携に挑戦すると良いでしょう。

dify-kintone-ai

「検索」ではなく「仕組み作り」に注力しよう

kintoneとDifyを連携させる目的は、単に楽をすることだけではありません。「検索係」という受動的な業務から卒業し、データを現場が活用できる「仕組み」を作ることこそ、生産管理で目指すべきステップといえます。まずは無料版やトライアルを利用し、プラグインの便利さを体感してみてください。

最後に

ライブAI開発の案内
株式会社アディエムでは、kintone × 生成AIで日々の業務改善に取り組んでいます。
今回ご紹介したようなワークフローの他にも、お客様の業務に合った改善をご提案させて頂きます。
無料相談も実施しておりますので、お気軽にお問い合わせ頂ければ幸いです。

お問い合わせはこちら

関連記事