Dr.Sum

AIブラウザ操作でDr.Sumのデータフローを一から作る|結合からジョブまで

AIブラウザ操作でDr.Sumのデータフローを一から作る|結合からジョブまで
Ryosuke Ishii
図0:AIブラウザ操作で Dr.Sum を動かす流れ(イメージ図)。この記事は、データフローを一から組み立てる部分
図0:AIブラウザ操作で Dr.Sum を動かす流れ(イメージ図)。この記事は、データフローを一から組み立てる部分

Dr.Sum 6.0 のデータフローを、空の状態から AIブラウザ操作(Claude)で組み立てました。3つの表を結合し、計算列と月別の集計を足し、取り込んで、決まった日時に動くジョブまで通した記録です。画面をどこまで読めるか、プレビュー実行で何が起きるかも、あわせて試しました。

この記事は、弊社が自社の環境で試した記録です。Dr.Sum の開発元のメーカーが出している公式の手順ではありません。データフローは Dr.Sum の画面の操作で作り、定義のファイルを直接書き換えることはしていません。

結論

  • コネクタ・結合・計算列・SQL変換・インポート・ジョブまで、ログインのあとの Dr.Sum の操作で人の手は0回だった(ブラウザの接続が切れたときの指示は3回)
  • できなかったのは、左の木から表を運ぶドラッグ1つ。表の[︙]から[追加]で代わりにできた
  • 既定のままだと困る所が2つあった。計算列の数値の精度が0になることと、ジョブが「追加インポート」になっていること

AIブラウザ操作とは:AI がブラウザの画面を読み取り、人と同じようにクリックや文字の入力をして、Web のアプリを操作することです。この記事では、データパレードがこの方法で Dr.Sum を操作した検証を、「AIブラウザ操作」と呼んでいます。開発元のメーカーが提供する AI の機能(Dr.Sum の生成AI)とは別のものです。

Claude in Chrome とは:Anthropic 社の AI「Claude」を、Google Chrome の拡張機能として動かす仕組みです。Claude が開いているページの内容を読み、クリック・入力・画面の切り替えを行います。今回の検証では、ログインは人が行い、その後の操作を Claude in Chrome で行いました。

AIブラウザ操作で目指すこと

「この3つの表をつないで、月別の売上を毎朝作って」と頼むと、AI がデータフローを組み、取り込みとジョブまで設定し、作った表を検算してから人に渡す。人は結果を見て決めるだけ。この記事は、その「一から組み立てる」部分を、今どこまで AI に任せられるかを確かめた記録です。

作ったもの

入力は、架空の売上データの3表です。売上明細(180行)、店舗マスタ(3行)、商品マスタ(5行)。Claude が次のものを一から作りました。

  • コネクタ:同じ Dr.Sum の表を読むためのもの。Dr.Sum の表を入力にするときも、コネクタが要る
  • データフロー:3表の結合、1件あたりの単価を出す計算列、月別に集計する SQL変換。データフローでは、処理の流れを「レーン」と呼ぶ横の列で並べる
  • インポート先の2つの表と、データフローを流すジョブ

式と SQL は、依頼文で指定したものを Claude が画面に入力しました。Dr.Sum の生成AIのボタンは押していません。

項目内容
Dr.SumDr.Sum 6.0(検証用の環境)
データ架空の売上データ(売上明細 180行・店舗マスタ 3行・商品マスタ 5行)
AIClaude(Windows の中の Claude が、Claude in Chrome で操作)
確かめMCP(Dr.Sum Local MCP Server)で、作った表を別の SQL から組み立て直して比べた

コネクタ:同じ Dr.Sum の表を読むにもコネクタが要る

Dr.Sum の表を入力にするときも、まずコネクタを作ります。コネクタの種類の[Dr.Sum]→[このサーバー]を選び、接続テストを通しました。

Dr.Sum のコネクタの接続テスト
Dr.Sum のコネクタの接続テスト

画面は文字として読めた。ダイアログの中は写真から読んだ

DataFlow Editor の画面の文字は、画像ではなく文字として読めました。レーンの並び、フローの検証の状態、実行ログ、プレビューの結果の表まで読めます。数字を画像から読み取らないので、画像の読み違いは今回起きませんでした。

DataFlow Editor の画面
DataFlow Editor の画面

読めなかったのは、ダイアログ(画面の上に開く小さな窓)の中です。ここは文字として取れず、画面の写真から読みました。表も、画面に見えている行だけしか取れません。

左の木から表を運ぶドラッグは、できなかった

同じドラッグでも、画面によって結果が違いました。

画面ドラッグ結果
左の木から、表を白い作業エリアへ運ぶ表の名前できなかった(文字が選ばれただけ)
結合の画面で、列どうしをつなぐキー列できた(線が引けた)
左の木から表を運ぼうとすると、文字が選ばれただけだった
左の木から表を運ぼうとすると、文字が選ばれただけだった

木から運べなかった表は、行にマウスを乗せて[︙]から[追加]を選ぶ方法で足せました。この方法でレーンができます。

表の[︙]から[追加]を選ぶと、レーンができた
表の[︙]から[追加]を選ぶと、レーンができた

結合・計算列・SQL変換を組み立てる

結合では、売上明細の店舗コードを店舗マスタの店舗コードへ、商品コードを商品マスタの商品コードへ、列をドラッグして線を引きました。線はオレンジの点線で引かれます。結合の種類の既定は LEFT JOIN で、そのままにしました。

結合の画面で、店舗コードを店舗マスタへドラッグして線を引いた
結合の画面で、店舗コードを店舗マスタへドラッグして線を引いた
3表を結合したレーン
3表を結合したレーン

計算列は、NVL(ZERODIV(AMOUNT, QTY), 0)(金額 ÷ 数量。数量が0なら0)で単価を出しました。テスト実行の5行は、手で割り算した値と合いました。

計算列の式と、テスト実行の結果
計算列の式と、テスト実行の結果

月別の集計は、2つ目のレーンに SQL変換を足して書きました。

月別に集計する SQL変換
月別に集計する SQL変換

プレビュー実行は、サンプルだけを読む

レーンを選んで[プレビュー実行]を押すと、取り込まずに加工の結果を確かめられます。アクセス解析のデータで試した最初の検証では、約70行の表でも約83万行の表でも、実行ログの上では約1秒で終わりました(押してから画面に結果が出るまでは数秒)。全件ではなく、サンプルだけを読む作りのためです。今回の架空の売上データでも、月別集計のレーンのプレビューは20件で、本番のインポートでは36件でした。

プレビュー実行の結果
プレビュー実行の結果

取り込み先のデータベースは変わりません。ただ、実行ログには「取込先:wk_…」という行が出ます。Dr.Sum Server の一時領域に作業用の表を作り、終わったら片付ける動きでした。

プレビューの実行ログ(取込先:wk_…)
プレビューの実行ログ(取込先:wk_…)

Claude には「書き込むなら止めて」と頼んでおきました。最初の検証(アクセス解析のデータ)で、Claude は1回目のプレビューのあとこの行に気づき、2回目(大きい表)のプレビューを止めて人に判断を聞きました。書き込みを事前に防いだわけではありません。ログを読んで、次の操作を止めました。

アクセス解析のデータでのプレビュー結果(値は塗りつぶし)
アクセス解析のデータでのプレビュー結果(値は塗りつぶし)

インポートとジョブ:既定のままだと困る所が2つ

インポートは約8秒で終わりました。売上明細の出力は180行、月別集計は36行(3店舗×12か月)で、金額の合計は元の表と一致しました。

インポートの完了
インポートの完了

既定のままだと困る所は2つありました。

計算列の数値の精度が0になる

式で作った列は、数値型の精度が0になります。インポート先のテーブル定義で、精度を33・スケールを2に直しました。

インポート先のテーブル定義で、計算列の精度とスケールを直した
インポート先のテーブル定義で、計算列の精度とスケールを直した

ジョブが「追加インポート」になっている

ジョブのインポート方式は、既定が「追加インポート」で、そのままだと動くたびに行が増えます。「全件置換インポート」に変えました。

ジョブのインポート方式は、既定で「追加インポート」
ジョブのインポート方式は、既定で「追加インポート」
「全件置換インポート」に変えた
「全件置換インポート」に変えた

ジョブは、指定した日時に1回だけ動くように作りました。実行は約16秒で成功し、取り込んだ行は二重になりませんでした。確かめたあとにジョブを無効にしました(削除はしていません)。

生成AIの記事で、アクセス解析のデータの[データをプレビュー]が Claude 側の安全の仕組みに止められた話を書きました。今回は、保存・インポート・ジョブの作成と無効化を含め、どれも止められませんでした。今回は「作って保存し、取り込み、ジョブを1回動かす」と先に頼んだ依頼の中の操作だったためとみていますが、理由は確かめていません。

作ったジョブ
作ったジョブ
ジョブの実行結果(成功・約16秒)
ジョブの実行結果(成功・約16秒)

作った表を、別の SQL から組み立て直して検算した

作った表の検算は、Claude が行いました。Claude が立てた別の担当(AI)が、元の3表から別の SQL でデータフローの出力を組み立て直し、EXCEPT で両方向を比べました。売上明細の出力 180行も、月別集計の 36行も、1行残らず一致しました。

最初は両方向とも180件の不一致が出ましたが、原因は値ではなく型でした。計算列は精度0の数値型、表は NUMERIC(33,2) で、値は 300 と 300.00 で同じです。CAST(… AS NUMERIC(33,2)) でそろえると、不一致は0件になりました。ほかに、出力の表では文字列の列の長さが元の2倍になり、NOT NULL と UNIQUE の制約はすべて外れていました。値には影響しませんが、UNIQUE の無い列どうしの FULL OUTER JOIN はエラーになりました。

AIブラウザ操作で人の手が要ったところ

ログインのあとの Dr.Sum の操作で、人の手が入ったのは0回でした。人が指示したのは3回(使うブラウザの選択・名前の確認・全部試す指示)で、どれもブラウザの接続が切れたときのものです。途中で Chrome の拡張機能が別の名前でつなぎ直され、どの名前がどの端末なのかが画面から分からなくなりました。人が名前の確認とブラウザの選び直しを指示して、元のタブ(ログイン済み)に戻れました。

場面何が起きたかどうしたか
ログインClaude in Chrome はログインの操作をしない。Web Console を新しいタブで開き直すとログインを求められた(画面から別のタブで開いたときは引き継がれた)人がログインした
画面へのドラッグ左の木から表を運ぶドラッグはできなかった表の[︙]から[追加]を選んだ
ブラウザの接続Chrome の拡張機能が別の名前でつなぎ直され、端末が分からなくなった人が名前の確認とブラウザの選び直しを指示した
ジョブの日時日時の欄は、打つと年が崩れた入れ方を変えて入れ直した

まとめ|AIブラウザ操作でデータフローを一から作る要点

  • 今回の検証では、結合・計算列・SQL変換・インポート・ジョブまで、AIブラウザ操作で組み立てられた。ログインのあとの Dr.Sum の操作で人の手は0回
  • 左の木から表を運ぶドラッグはできず、[︙]から[追加]で代わりにできた
  • 計算列の精度0と、ジョブの「追加インポート」は、既定から直した
  • 作った表は、別の SQL から組み立て直して検算し、型をそろえると全行一致した

参考リンク

このシリーズの記事

  1. AIブラウザ操作でDr.Sumのデータフローに外部DBを取り込む|型の壁と件数
  2. AIブラウザ操作でDr.Sumの生成AIにSQLと式を頼む|Claudeが検算
  3. AIブラウザ操作でDr.Sumのデータフローを一から作る|結合からジョブまで(この記事)
  4. AIブラウザ操作でDatalizer for Webを使う|初期設定からAIまで

関連シリーズ(MotionBoard)

ABOUT ME
石井 亮介(りょうさん)
石井 亮介(りょうさん)
データパレード 代表取締役
㈱データパレードの代表取締役で、高田馬場の町中華「一番飯店」のChief Data Officerも務めています。BIツールのセールスエンジニア・システムエンジニア・カスタマーサクセス歴15年。大学のデータサイエンス教育で講師も担当してきました。現在は自社業務のほとんどをAIに移管し、AI10部署と50を超える自動処理が24時間動く「AI経営」を実践中。その実践知をこのブログで発信しています。
記事URLをコピーしました