v2.1.0 依存関係分析
kintone App Toolkit v2.1.0
設定を「見る」ツールから、依存関係と変更影響を「分析する」ツールへ。
このリリースでは、フィールド・設定・JavaScript・他アプリの関係を共通のデータとして整理し、
「このフィールドを変えると何に影響するか」に答えられるようにしました。
ハイライト
変更影響がわかる
フィールドの詳細に「変更影響」を追加しました。操作の種類ごとに、見るべき箇所を分けて表示します。
■ フィールドコードを変更する場合
・JavaScript(custom.js)の修正が必要です。アプリ設定と違い、JavaScriptはコード変更に追随しません。
■ フィールド型を変更する場合
・条件式・ソート指定に使われています。型によって比較方法が変わります。
■ 選択肢を変更する場合 ← 選択肢を持つフィールドのみ
■ フィールドを削除する場合
・直接 7 件/間接 3 件/他アプリ 2 件から参照されています。
kintone はフィールドを削除・改名するとアプリ設定側を自動的に追随させますが、
JavaScript とプラグイン設定は追随しません。この違いを踏まえた案内を出します。
壊れた参照を見つける(Health)
JavaScript に残った「存在しないフィールドコードへの参照」を検出します。
フィールドを改名・削除したあと JS を直し忘れると、その処理は無言で動かなくなります。
⚠️ 存在しないフィールドコードへの参照が 27 件あります
JavaScript group02 コード参照(setFieldShown) mobile:fieldOnOff_mobile.js(8行目) 可能性が高い
表記ゆれ(大文字小文字・全角半角・記号違い)で一致しないだけの場合は「近い既存コード」を提示します。
他アプリからの参照を調べる(Relations)
これまで「取得できない」と表示していた逆方向の依存に対応しました。
同一ドメインのアプリを走査し、このアプリを参照しているアプリを一覧化します。
参照元アプリ 種別 参照元の設定 このアプリの項目 備考
app 100 顧客管理 🔗 ルックアップ 受注参照 受注番号 3項目を取得
app 200 案件管理 🔗 関連レコード 過去の受注 顧客コード 顧客CD で突合
API 呼び出しがアプリ数に比例するため、実行はボタン操作のみ(自動実行しません)。
同時実行数を制限し、結果は 24 時間キャッシュします。閲覧権限のないアプリは「確認できず」として件数を表示します。
依存関係グラフ(Deps タブ・新規)
フィールドを起点に、周辺の依存関係を図で表示します。
- 種別ごとの色分けと枠囲み、確度による線種の区別(実線=確実/破線=推定)
- 起点・範囲・上限・表示対象の絞り込み。設定変更は即時反映
- 図中の他アプリノードから該当アプリを別タブで開ける
- 依存関係の横断検索(フィールド名・設定名・JSファイル名・アプリ名・関係種別を対象、空白区切りで AND)
計算式の参照ツリー
多段になった計算式の連なりを表示します。1 段見ただけでは分からない波及範囲を追えます。
総額
└─ 報酬額
├─ 係数
└─ 小計
├─ 人数
└─ 単価
JavaScript 解析の強化(Field Scanner)
- ファイル起点ビュー(既定)— ファイルごとに「いつ動き・何を触り・どのアプリを見るか」を表示
- イベント種別の抽出(
kintone.events.on。変数経由の登録も推定として検出し?を付与) - アクセス種別の判定 — 読取/書込/制御/表示切替/要素取得/関数へ渡す/配列に列挙/クエリ
- 行番号の付与、JS 内のアプリ ID 参照の検出
- 自動解析 — 起動後にバックグラウンドで実行。結果は 6 時間キャッシュ
出力
依存関係を JSON / Markdown / CSV / Mermaid で出力できます。
Markdown は仕様書として貼り付けやすい形式で、利用箇所・他アプリ連携・変更時の確認事項・
利用箇所が検出されなかったフィールドまで含みます。
改善
- Fields タブ — 使用箇所をカテゴリのみのサマリ表示に整理、利用数列の追加、フィールド形式での絞り込み、Deps タブへの導線
- Relations タブ — アプリ間依存の概要を先頭に集約し、既存 3 セクションは詳細として折りたたみ
- Health タブ — 判定バッジをカードに統合し、重複していた Health summary 表を廃止。計算式の最大段数を表示
- 全画面表示 — ヘッダの
⛶で切り替え(選択は保存されます) - 出力操作の統一 — 形式セレクト+Copy/DL に集約(Fields・Deps)
- Links タブを削除 — 依存関係分析という目的から外れているため
不具合修正
| 内容 |
|---|
| Customize タブでモバイル JS をアップロードすると desktop 側に登録されていた |
| 一覧の絞り込み条件・ソート、グラフの分類・集計のラベル表示が機能していなかった |
| Templates タブの AI プロンプトで、レイアウト・通知・アクセス権・アプリ名が空だった |
| Monaco Editor が読み込み済みの場合にエディタが開かないことがあった |
| 一覧・グラフのソート条件に存在しないフィールドが指定されていても無視していた |
| ルックアップのコピー先・参照キーが依存関係グラフに現れなかった |
| Relations・Field Scanner・Customize で HTML エスケープが漏れていた |
Field Scanner で ['code'] が二重にカウントされていた |
| フォームのグループ・サブテーブル・要素 ID が解析対象から漏れていた |
内部的な変更
KTApi(REST 共通クライアント)、KTDeps(依存関係解析)、KTScan(JS 自動解析)、KTIncoming(被参照走査)へ整理getCustomize/downloadByKey/uploadOnce/waitDeployの重複実装を統合し、preview と production の区別を明示- 依存関係を Raw → Normalized → Dependency → Presentation の 4 層に分離し、解析を一度だけ実行して各タブで再利用
解析範囲について
推定を確定情報として表示しないため、次の区分を併記しています。
| 確度 | 意味 |
|---|---|
| 確実 | 設定値として記録された情報から取得 |
| 可能性が高い | 条件式・計算式・JavaScript の解析による推定 |
| 要確認 | 用途を特定できない参照 |
現時点で取得できないもの(画面上でも明示しています)
- プラグイン設定の内容(REST API が正式提供されていないため)— プラグイン導入時は注意喚起を表示します
- 外部 URL の JavaScript の本文
- 実行時にしか決まらない値(変数で指定されたフィールドコード・アプリ ID など)
更新にあたって
- 既存機能の削除は Links タブのみです
- JS 解析と被参照走査の結果はキャッシュされます(それぞれ 6 時間 / 24 時間)
- 解析ロジックを更新した場合、キャッシュは自動的に無効になります
- 最新の結果が必要なときは、Field Scanner の「Scan」または Relations の「走査する」を実行してください