メインコンテンツへスキップ
見出し画像

【プロンプト付き】AIエージェントと社内DBをつなげて、SQL不要なデータ分析基盤を構築する - BigQuery編

    本記事を読むとわかること
    1. なぜ今「AIでのデータ分析」が注目されているか
    2. SQL不要でデータ分析ができるAIを爆速構築する方法
    3. 導入時に気をつけたい“誤回答対策”や“運用”のポイント

    はじめに

    「社内にある膨大なデータを活用したいけれど、SQLが書けない…」「エンジニアの協力を仰がないとデータ分析が進まない…」
    そんな悩みを持つ方、多いのではないでしょうか。

    ここ数年のAI技術の進歩はめざましく、いまやプログラミングスキルがなくてもAIを通して扱うハードルが下がっているツールが増えています。特に、自然言語で指示すると裏側でAIがSQLクエリを生成し、必要なデータをサッと引っ張ってきてくれる――そんな仕組みがいま大注目。いわゆる「Text-to-SQL」と呼ばれる分野です。さらに、ただデータの集計を行うだけでなく、LLMの能力を駆使して検索結果からインサイトを抽出することもできるのです。

    今回は、ノーコードAI構築プラットフォームの一つである「miibo」を使い、社内DB(データベース)とAIを連携したデータ分析環境を、素早く構築してみる流れをご紹介します。ポイントは 「SQL不要で、チャット感覚で質問できる」 ところ。レポートを作りたい時など、わざわざSQLを書く必要がありません。

    今回の実践を踏まえて実現できるAIとの会話例もあらかじめご紹介します。

    AIとの会話の例 (データはサンプルです)

    1) 一週間のアクティブユーザー数

    ユーザー(プロダクト担当者):
    「一週間(3/20~3/26)のアクティブユーザーはどれくらい?」

    AIエージェント:
    「usage_eventsテーブルを参照して、3月20日から3月26日の間に一度でもイベントを起こしたユーザー数をユニークで数えてみました。
    結果、12,300人 がアクティブユーザーとして確認できました。
    他にも特定期間や特定イベントで絞り込みたい場合は、遠慮なく言ってくださいね!」

    2) アクティブユーザーのカテゴリ内訳

    ユーザー:
    「アクティブユーザーはどんなカテゴリの人が多い?」

    AIエージェント:
    「わかりました。直近一週間のアクティブユーザーIDを usage_events から取得し、user_info と結合して user_category の内訳を集計してみます。Professional: 約45%
    Student: 約30%
    Hobbyist: 約15%
    その他: 10%
    Professionalカテゴリが最も多い印象ですね。」

    3) その中でプランアップグレードした人は何人?

    ユーザー:
    「一週間のアクティブユーザーの中で、プランをアップグレードした人は何人くらいいる?」

    AIエージェント:
    「user_info の plan_upgraded_on がNULLでないユーザーで、かつ直近一週間にアクティブだった人を数えてみます。
    結果、450人 でした。
    アクティブユーザー全体の約3.7%ですね。」

    4) アップグレードした人の傾向は?

    ユーザー:
    「アップグレードした人は、プロダクト内でどんなイベントを発生させているか、直近一週間のイベントの傾向を知りたい。」

    AIエージェント:
    「承知しました。アップグレード済みユーザー(plan_upgraded_on がNULLでない)を対象に、3月20日~3月26日の usage_events を調べてみます。
    主なイベント名は下記のとおりです:
    create_project: 1,200回
    feature_share: 900回
    comment_post: 700回
    その他(loginなど): 合計 2,100回

    create_project や feature_share のように、積極的にプロダクト機能を活用するイベントが目立ちますね。create_projectのvalueには、「卒業式」や「引越し」といったライフスタイルの変化に伴うプロジェクトが多いことも読み取れます。」

    上記はあくまでイメージですが、DBの検索と集計にとどまらず、得られた結果から得られる示唆までをAIが出力してくれます。DBを活用したあらゆる領域での生産性が効率すること、間違いありません。ぜひ下記を読んで、お試しください!

    ※本記事は、会話型AI構築プラットフォームmiiboを開発する株式会社miiboの提供です。

    なぜ「ノーコード×AIで社内DB活用」が注目されているのか?

    1. AIがSQLクエリを書いてくれる時代

    昔は、データを分析しようとするとSQLを書くスキルやBIツールを使いこなすリテラシーが必要でした。しかし今や、AIが自然言語の指示からSQLを生成し、瞬時にデータを取得・集計してくれる時代になりました。
    例えば、「昨日までの売上TOP5の商品を教えて」などと日本語で聞くだけで、AIが裏側でクエリを組み立ててくれるので、分析までのハードルがグッと下がります。

    2. 非エンジニアでもデータ分析が可能に

    業務担当者やマーケティング担当者が、自分たちのアイデアや仮説を素早く検証できるようになると、意思決定のスピードも上がります。
    「ちょっと気になったことを試してみる」→「すぐ結果を得る」→「次の施策へ活かす」
    といった流れがテンポよく回るので、ビジネス現場でのAI活用が一気に広がる要因になっています。

    3. 短時間で“本番運用レベル”の環境が整う

    従来、データ分析環境を整えるには、BIツール導入やETLパイプライン構築、ダッシュボード設計など大掛かりなプロセスが必要でした。ノーコードAIツールの場合は、エンジニアの工数を最小限に抑えつつ、迅速に試してみることができます。
    特にmiiboは、DB接続の設定やAIモデルの選択がシンプルなので、テストやPoCを気軽に始められる点が強みです。


    30分でデータ分析環境を構築する全体イメージ(BigQuery編)

    今回はGoogle Cloud Platformの提供する「BigQuery」のデータベースと接続する方法について解説していきます。

    STEP1:BigQueryの準備をする

    まずはGoogle Cloud Platform(GCP)でBigQueryを利用できるよう準備を進めます。

    1. GCPプロジェクトを用意
      GCPコンソールにアクセスし、任意のプロジェクトを選択してください。
      ※この作業の実施には、何らかのBigQueryのデータベースが必要です。BigQueryのデータベースの構築方法について、本記事では割愛します。

    2. BigQuery APIを有効化

      • 作成したプロジェクトでBigQuery APIを有効にします。

      • GCPコンソールの「APIとサービス」→「ライブラリ」から「BigQuery API」を検索し、有効化してください。

    ポイント
    BigQueryはプロジェクト単位で課金される仕組みです。無料枠を超えると課金が発生する可能性があるため、ご自身のプロジェクトの料金設定や使用量を事前に確認しておきましょう。 SQL実行の際、クエリによるデータスキャン量などによって料金が変動します。

    画像

    STEP2:BigQueryのサービスアカウントを発行する

    miiboとBigQueryを接続するには、サービスアカウントと呼ばれる専用の認証情報が必要になります。サービスアカウントを作成すると、JSON形式のキーファイルをダウンロードできます。

    1. サービスアカウントを作成

      • GCPコンソールの「IAM と管理」→「サービスアカウント」から「サービスアカウントの作成」をクリック

      • 名前や説明などを入力(例:miibo-bq-service-account)し、作成します。

    2. ロール(権限)の付与

      • 作成時、または作成後にロールを付与する必要があります。

      • 最小限でBigQueryへの読み取りやクエリ実行ができるようにするには、下記のロールを割り当てるのが一般的です:

        • roles/bigquery.dataViewer(BigQueryデータ閲覧権限)

        • roles/bigquery.jobUser(クエリ実行権限)

      • セキュリティ上、必要最小限の権限を持つロールだけを付与しましょう。

    3. キーファイル(JSON)をダウンロード

      • サービスアカウント詳細ページの「鍵を追加」→「新しい鍵の作成」からJSON形式の鍵をダウンロードします。

      • このJSONキーファイルが後ほどmiiboでの接続設定に必要となります。

    ポイント
    ダウンロードしたキーファイルはセキュリティ上の重要な機密情報です。外部に流出しないよう、アクセス権限を厳格に管理してください。 GitHubなどのリポジトリに誤ってアップロードしないように注意が必要です。

    また、miiboをはじめとした外部サービスと連携をしても良いデータベースかどうか、慎重に検討を行なってください。

    STEP3:miiboでエージェントを作成する

    miibo.aiでアカウントを作成し、任意のエージェントを作成してください。


    画像
    miiboのエージェント作成画面

    設定するプロンプト:
    プロンプトは下記のような内容を設定しましょう。

    あなたは自社プロダクトのデータ分析に特化したAIアシスタントです。
    ユーザーからの自然言語の質問を受け取り、それをもとに正しいSQLクエリを生成してBigQueryからデータを取得し、わかりやすい日本語で回答してください。
    回答を行う際は、以下のガイドラインやテーブル定義を厳守してください。

    ---

    【利用可能なテーブルとスキーマ情報】

    1. テーブル名: user_info
    - カラム
    - user_id (STRING): ユーザーID
    - user_category (STRING): ユーザーのカテゴリ(例: 'Student', 'Professional', 'Hobbyist'など)
    - plan_type (STRING): 現在のプラン(例: 'free', 'paid')
    - plan_upgraded_on (TIMESTAMP / NULLABLE): プランアップグレード日時(NULLなら未アップグレード)
    - signup_date (TIMESTAMP): ユーザー登録日時

    2. テーブル名: usage_events
    - カラム
    - user_id (STRING): ユーザーID
    - event_name (STRING): アプリ内イベント名(例: 'login', 'create_project', 'feature_share'など)
    - event_time (TIMESTAMP): イベントが起こった日時

    ---

    【SQLクエリ作成のルール】

    1. BigQueryの標準SQL構文を用いてください。
    2. 必要に応じてJOINを使い、複数テーブルを組み合わせた分析を行ってかまいません。
    3. 期間指定など、ユーザーが日付や範囲を聞いてきた場合は、TIMESTAMPカラムに対して適切なWHERE条件を使って絞り込んでください。
    4. 集計が必要な場合は、COUNTやGROUP BY、DISTINCTなどの集計関数や句を正しく使ってください。
    5. 結果が多すぎる場合は、LIMIT句を活用して上位数件のみ返すなど、回答に時間がかからないように留意してください。

    ---

    【回答方法について】

    1. 結果はシンプルに日本語でまとめてください。
    - 例:「○人でした」「○回でした」「内訳は以下のとおりです」など。
    2. ユーザーが追加の質問をした場合、その意図に合わせて再度SQLクエリを組み直し、回答を更新してください。
    3. ユーザーがCSVなどの出力を求める場合は、それを想定したクエリを生成したうえで、「CSVで出力しました」という形で返してください(実際のファイル生成はシステム側が行う想定でもOKです)。
    4. 存在しないテーブル・カラム名は使用しないでください。ユーザーがあいまいな指示をした場合は、考え得る最適なクエリを推測し、回答とともに補足説明をしてください。
    5. データが大量になる場合や不確実な点がある場合は、正確な結果を優先し、推測や不確かな情報を過度に断言しないでください。

    ---

    【注意事項】

    1. あなたはビジネス上の意思決定に寄与するAIですので、デタラメな回答は厳禁です。
    2. 「幻覚(ハルシネーション)」を最小限にするため、テーブル名・カラム名は必ず上記の定義どおりに使ってください。
    3. もしユーザーが尋ねている内容とテーブルの構造が合わない(必要なカラムが存在しない)場合は、その旨を丁寧に伝えてください。
    4. 適切でない単語やコードは出力しないでください。攻撃的、差別的、またはプライバシーを侵害する可能性のある表現を避け、企業機密や個人情報が出力されないように注意してください。

    ---

    【追加ガイドライン(必要に応じて拡張)】

    - ユーザーカテゴリは "Student", "Professional", "Hobbyist", "Other" のいずれかが基本です。
    - プランタイプは "free" か "paid" の2種類が基本です。
    - 日付の範囲指定は、TIMESTAMP形式の比較か、DATE関数を使う形をとって構いません。
    - ユーザーが指定した範囲が不明確な場合は、最新7日や最新30日をデフォルトで対象としてもかまいません(その場合は理由を回答に添えてください)。

    ---

    上記のルールに従い、ユーザーのリクエストに対して最適なSQLクエリを生成し、BigQueryから取得した結果を日本語で簡潔にまとめて返答してください。あなたは生成したSQLクエリの実行結果のみを基に回答することを心がけてください。それでは、よろしくお願いします。

    設定するプロンプトの例

    ポイントは「【利用可能なテーブルとスキーマ情報】」の部分です。テーブルのスキーマ情報を正確に伝えることがポイントです。
    BIgQueryの実際の検索結果の情報をLLMを用いて、上記のようなスキーマ情報の詳細説明文を用意し、プロンプトに挿入すると効果的です。

    BigQuery上でも作成したテーブルのスキーマの確認が可能です。

    画像
    BigQueryのスキーマ確認画面

    STEP4:作成したエージェントとBigQueryを接続する

    ① Custom Actionの構築

    「外部サービス連携」の画面から「Custom Actionを作成する」を選択します。

    画像

    Custom Action一覧画面の「テンプレートを利用する」を押し、BigQuery接続のテンプレートをインポートします。

    画像
    画像

    下記の3つの情報が求められるので入力をしてください。
    ・GOOGLE_APPLICATION_CREDENTIALS_JSON
     前述のサービスアカウント作成時に取得したJSONファイルの中身です。
    ・BIGQUERY_PROJECT_ID
     BigQueryに紐づくGCPのプロジェクトIDです。
    ・BIGQUERY_API_URL
     あらかじめ入力されている情報をそのまま利用してください。

    画像

    Custom Actionが表示されたら、「保存」をクリックしてください。
    Custom Action一覧に「BigQuery」接続用のCustom Actionが表示されたら成功です。

    画像

    Custom Actionが設定できたら、最後にWebhookの設定を行います。
    外部サービス連携画面より、「Webhooksを利用する」を開きます。

    画像

    Webhookの新規作成を行います。
    Webhookの種別には、「Custom Actionと連携」を選択し、先ほど作成したCustom Actionを選択しましょう。

    画像

    認証用ヘッダー情報とヘッダー情報は自動入力されるので、そのままでOKです。その後、下記の設定を行ってください。

    ①AIにタイミングを判断させる (Function Calling): ✅
    ②Function Name:

    executeSQL

    ③Function Description:

    現在、ユーザーが知りたいと思っていることのSQLを発行し、検索を実行します。

    ④Function Parameters: デフォルトのまま
    ⑤WebhookのレスポンスをAI応答時のプロンプトに挿入する: ✅
    ⑥プロンプト挿入時のプレフィックス:

    下記はBigQueryのSQLの実行結果です。下記にレスポンスがある場合はSQLの実行が成功しています。
    実行結果:

    画像

    以上で設定は完了です。

    留意事項
    課金とクエリコスト:miibo経由でクエリを実行している場合でも、BigQueryのクエリ利用料金はGCP側で発生します。テスト利用時は大きなデータをスキャンしすぎないよう注意を。
    アクセス制限:サービスアカウントを複数人で使う場合、キーファイルの共有範囲に注意し、不用意な拡散を防ぎましょう。

    STEP4:動作の確認を行う


    ここまででBigQueryへの接続は完了です。実際にデータを取得することができるか確認を行いましょう。

    会話形式の動作確認

    • 接続したデータに合わせて「昨日の売上トップ5の顧客を教えて」「データセットsales_dataの2025年3月分の合計売上は?」など、想定質問を投げてみましょう。

    • AIが自動生成したSQL文や回答結果を確認し、必要に応じてプロンプトのチューニングをします。

    miiboの会話画面を利用することで、すぐに動作の確認をすることができます。

    画像
    会話のテスト


    また、作成したエージェントはSlackやLINE、LINE WORKS、API経由など様々なプラットフォーム上から呼び出すことができます。

    ポイント:
    エージェントにアクセスできる人の制限を慎重に行いましょう。エージェント経由でデータベースにアクセスができてしまうため、適切に公開範囲を決定しましょう。

    miiboでは、エージェントの権限設定を行い、特定のユーザーのみ会話をさせることも可能です。今春には、権限の割り当てられたエージェントを利用するための社内利用向けの新しいフロントエンドもリリース予定です。


    まとめ:AIでデータ分析のハードルを下げよう

    BigQueryを例にした「ノーコードのAI×DB環境を構築する」流れの概要です。あらかじめGCP・BigQuery側の準備を整えておけば、miiboへの接続とAIエージェントのセットアップは本当に数十分~1時間程度で完了するはずです。ぜひ、スモールスタートで実装してみてください!

    1. SQLをかけなくてもすぐ分析を始められる

    SQLを書かずとも、AIが裏でクエリを自動生成してくれるため、今までは「エンジニアにSQLの作成を頼まないと…」と尻込みしていた人でも、すぐにデータ活用をスタートできます。

    2. 効果的なデータ活用が組織の意思決定を加速

    「データ分析部門だけが情報を握っている」状態だと、施策の立ち上げや改善のスピードが遅れがち。でも、ノーコードAIツールの導入をきっかけに各部門が自分たちでデータを見にいけるようになると、意思決定サイクルが大幅に短縮されます。
    実際、チャット形式で「今月の広告施策の成果は?」とAIに聞けば、その場で数値やトレンドが返ってきて、次の一手を練りやすくなるでしょう。

    3. 誤回答やセキュリティには要注意

    一方で、AIが返す答えが常に正確とは限らないのも事実。ときにはSQLクエリで抽出対象を間違えたり、存在しないテーブル名を提示する“ハルシネーション”問題もあります。
    そのため、以下のような対策を整えて運用するのが望ましいです。

    • 誤回答対策

      • テーブル・カラムの命名を分かりやすくする

      • システムプロンプトで正確なスキーマ情報を与える

      • 重要なデータは二重チェックする

    • セキュリティ対策

      • 社内ネットワークや認証の仕組みを整備し、アクセス制限をかける

      • ログをモニタリングし、不正なクエリやデータ漏洩のリスクを最小化する

    4. 次のステップ

    今回ご紹介したデータベースとAIの連携は、データ分析のみならず、問い合わせチャットボットや業務フロー自動化など、多彩な領域に応用可能です。例えばマーケティング部門なら「キャンペーンごとの費用対効果」をAIに尋ね、すぐにレポートができ上がるかもしれません。
    少し慣れたら、BIツールへの接続や外部サービス連携など、より高度な活用にステップアップしてみてください。

    本記事が皆様のAI活用の助けに少しでもなれば幸いです。
    株式会社miiboでは、高度な生成AIを使ったシステム構築の支援もしています。ぜひ下記からmiiboをお試しいただき、さらに活用をご検討の方はぜひお問い合わせください。

    最後までお読みいただきありがとうございました。

     
     
     
    日々「会話AI」の可能性を探っています。誰でも会話AIを構築できるサービス「miibo」を開発・運営しています。 https://miibo.jp Twitterでは、miiboの開発状況や新着情報をお届けしています。 株式会社miibo CEO

    あなたへのおすすめ