0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

rex0220 kSQL Dashboard Pro - AI(Claude Code)にダッシュボードを作らせる

0
Posted at

kintone のダッシュボードを、日本語の要件を伝えるだけで AI に作らせる環境を公開しました。

アプリ 4149(案件管理)の一覧「【全社】ダッシュボード」に、期間を切り替えられる
ダッシュボードを作って。
期間コントロールの選択肢は 今月・前月・今年・去年・期間指定。既定は今月。
ペインは、受注金額 KPI、フェーズ別売上の棒グラフ、受注予定の明細表の 3 枚。
すべて受注予定日で期間に追従させて。
settings/案件管理-期間ダッシュボード.json に保存して。

これだけで、AI が実アプリのフィールド定義と実データを確認しながら SQL を確定し、
プラグインにそのまま取り込める設定 JSON を書きます。あとはインポートして保存するだけです。

完成した期間ダッシュボード(バーで今月・前月・今年・去年・期間指定を切り替え)

テンプレートリポジトリ(public): https://github.com/rex0220/ksql-dashboard-pro-authoring

プラグイン本体の機能(表示タイプ・設定画面・テーマ・タブなど)は
製品紹介記事 を、
SQL とペイン設定の実例集は SFA パック実践記事 を参照してください。
本記事は「AI に作らせる」環境の構築と使い方に絞ります。


仕組み

kSQL Dashboard Pro のダッシュボードは、設定 JSON のインポート/エクスポート
まるごと受け渡しできます。そして同じ SQL エンジン(kintone-sql-tools)には
MCP サーバーが同梱されていて、AI エージェントが kintone を読み取り専用で
照会できます。この 2 つを組み合わせると、こうなります。

ポイントは ① です。AI は思い込みで SQL を書くのではなく、
ksql_describe_app でフィールドコードと型を確かめ、ksql_query で実データを見て、
返ってくる列名と件数を確認してから設定 JSON を書きます。
「フィールド名が 1 文字違いで動かない」「集計が取得上限を超えて動かない」といった
定番の事故を、作る前に潰せます。

生成した設定は settings/ のファイルとして残り、git で履歴管理できます。
「先週の版に戻す」「何を変えたか diff で見る」が、ダッシュボードでできるようになります。


前提

項目 本記事の前提
プラグイン kSQL Dashboard Pro Ver.1(有償。別途入手)
SQL エンジン / MCP kintone-sql-tools 3.39.0(npm から自動で入ります)
Node.js 20 以上
エディター VSCode + Claude Code(サブスクリプションが必要)
kintone アカウント ログインユーザー認証を使います(2 要素認証なしのアカウント。閲覧専用アカウントがあればベスト)
対象アプリ 記事の例はアプリストア SFA(営業支援)パックの案件管理

AI が kintone に 書き込むことはありません。テンプレートは 3 層(AI への常設指示・
ツールの拒否設定・エンジンの承認ゲート)で読み取り専用を守ります。詳細はテンプレートの
README を参照してください。


環境構築(初回 10 分)

1. テンプレートから自分のリポジトリを作る

テンプレートページ右上の Use this template → Create a new repository で、
自分のアカウントに private で作成して clone します。

Use this template → Create a new repository を選ぶ

作成画面 — visibility を Private に切り替えて作成する

作成画面の visibility は Public が初期値です。必ず Private に切り替えてください。
設定 JSON にはアプリ番号・フィールド名・業務用語が入ります。

GitHub CLI なら 1 行で確実です:

gh repo create ksql-dashboards --template rex0220/ksql-dashboard-pro-authoring --private --clone

2. 依存を入れる

npm install

SQL エンジンと MCP サーバーが入ります。これだけです。

3. 認証情報を置く

.env.example をコピーして .env を作り、接続先を書きます。

KSQL_BASE_URL=https://<自分の環境>.cybozu.com

ログイン名・パスワードは OS のユーザー環境変数に置くのがおすすめです
(プロジェクト内のファイルに残りません)。Windows ならコマンドプロンプトで:

setx KSQL_USERNAME "<ログイン名>"
setx KSQL_PASSWORD "<パスワード>"

を実行して、VSCode のウィンドウをすべて閉じて起動し直します
(「Reload Window」では反映されません — 筆者はここで一度つまずきました)。
反映確認は VSCode のターミナルで $env:KSQL_USERNAME と打ち、ログイン名が出れば OK。

手早く試すだけなら .envKSQL_USERNAME / KSQL_PASSWORD の 2 行を足しても
動きます(.env は git 管理外です)。

4. VSCode で開いて Claude Code を起動

初回に kSQL MCP サーバーの使用可否を聞かれるので許可します。
以後、kintone の読み取りと settings/ へのファイル保存は確認なしで進みます
(テンプレート同梱の許可設定)。

5. 疎通確認

Claude Code にそのまま頼みます:

ksql_show_apps を実行して

アプリの一覧が返ってくれば準備完了です。

ksql_show_apps の結果(アプリ一覧が返っている Claude Code の画面)


作らせる

事前準備: ダッシュボード専用の一覧(手作業・1 分)

AI は kintone の設定を変更できません(読み取り専用)。全面ダッシュボードを置く
カスタマイズ形式の一覧だけ、先に人が作っておきます。

  1. アプリの設定 → 一覧 → 「+」で新規作成
  2. レコード一覧の表示形式を 「カスタマイズ」 にする(HTML は空のままでよい)
  3. 名前(例: 【全社】ダッシュボード)を付けて保存 → アプリを更新

指示する

冒頭の指示文を Claude Code に貼ります。コツは 3 つだけです。

  • アプリは番号で指定する(アプリの URL /k/番号/ の数字)。同名アプリの取り違え防止
  • 置き場は一覧名で指定する(インポート時に一覧名で照合されます)
  • 保存先のファイル名を指定する(settings/◯◯.json に保存して)

すると AI は、おおむねこう動きます(全部自動です):

  1. ksql_describe_app — 案件管理のフィールドコードと型を確認
  2. ksql_query — 商談フェーズの実際の値や売上の実データを確認
  3. SELECT COUNT(*) — 対象件数が取得上限に収まるかを確認
  4. ksql_validate — 3 ペイン分の SQL を検証
  5. settings/案件管理-期間ダッシュボード.json を生成(封筒形式)

生成された JSON の中身は、たとえば KPI ペインならこうなっています:

SELECT SUM(売上) AS メイン値
FROM APP4149
WHERE 商談フェーズ in ('受注')
  AND 受注予定日 >= @period_from
  AND 受注予定日 < @period_to_next

@period_from / @period_to_next期間コントロールの変数です。閲覧者がバーで
「前月」や「期間指定」を選ぶと、この範囲が差し替わって全ペインが追従します。
こうした Pro 固有の書き方(半開区間・封筒形式・列名の規則など)は、テンプレートに
同梱した仕様書と AI への常設指示(CLAUDE.md)が押さえているので、利用者が覚える
必要はありません

取り込む

  1. アプリの設定 → プラグイン → kSQL Dashboard Pro の 設定
  2. ヘッダーの ツール → インポート で生成された JSON を選択
  3. 確認ダイアログの「アプリ番号の変換」で、必要なら自分の環境の番号を入力
  4. 保存

インポート時にアプリ番号を変換できる

検証に失敗した場合、既存の設定には一切触れません。エラー内容を AI に貼れば直します。

インポートして保存すると、一覧画面に反映される


作った後 — 変更も AI に頼む

2 回目からは「対象ファイル名 + 変更内容 + 更新して」の形で頼みます。

settings/案件管理-期間ダッシュボード.json を更新して。
明細の表に、商談フェーズが「受注」の行を緑にする条件付き書式を追加。
期間コントロールに「今週」も足して。

変更依頼 — AI が settings/ のファイルを更新する

  • 変更は同じファイルへの上書きで返ってくるので、git の diff で「何が変わったか」を
    確認してからインポートできます
  • 設定画面(GUI)で直した場合は、エクスポートした JSON を AI に渡して
    「これを settings/ の正として上書きして」と頼めば、git 側が正に戻ります

指示文のパターン集(タブあり・共通サマリー・変更依頼・トラブル時)はテンプレートの
docs/指示レシピ例.md
にまとめてあります。


つまずいたら

症状 確認すること
MCP サーバーが起動しない Node.js 20 以上か(node -v)。npm install 済みか。.env を作ったか
AuthError: token is not resolved 認証情報が届いていない。setx 後に VSCode を完全再起動したか(Reload Window では反映されません)
401 / 権限エラー ログイン名・パスワードの誤り。2 要素認証が有効なアカウントは使えません
アプリが見えない・少ない そのユーザーにアプリの閲覧権限があるか
インポートで「出力元の情報がありません」 AI に「封筒形式で出力し直して」と伝える
ペインが「取得上限に達したため中止しました」 AI に「COUNT(*) で件数を確認して、期間で絞るか取得上限を上げて」と伝える

まとめ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?