Skip to content

v2.1.0 依存関係分析

Choose a tag to compare

@youtotto youtotto released this 09 Aug 08:03
· 3 commits to main since this release

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 の「走査する」を実行してください