Skip to content

Releases: youtotto/kintone-app-toolkit

v2.2.0 ステータス名の整合性チェック

Choose a tag to compare

@youtotto youtotto released this 10 Aug 04:32

kintone App Toolkit v2.2.0

ステータス名の整合性チェックを追加しました。

フィールドコードと同じく、ステータス名も変更・削除すると参照が置き去りになります。
v2.1.0 で追加した整合性チェックを、ステータス名にも広げました。


追加

存在しないステータス名への参照を検出

プロセス管理のステータス名を変更・削除しても、条件式や JavaScript は追随しません。
その結果、条件が永久に成立しなくなり、処理が無言で動かなくなります。

設定の条件式(一覧・通知・アクセス権など)

[一覧] 旧一覧      条件式のステータス指定  →  差戻し
[通知] 承認依頼    条件式のステータス指定  →  審査中

JavaScript

const nStatus = event.nextStatus.value;
switch (nStatus) {
  case 'S25:9月変社保料チェック中':   // ← このステータスは存在しない
  ...
}

検出結果は Health タブの整合性チェックに、フィールドコードの検出と並べて表示されます。
依存関係レポート(Markdown)にも含まれます。

対応している書き方

kintone のプロセス管理カスタマイズで実際に使われる形に合わせています。

対象
プロセスイベント event.nextStatus.value / event.status.value
ステータスフィールド record['ステータス'].value / record.ステータス.value
変数への代入 const nStatus = event.nextStatus.value; → 以降の nStatus を追跡
比較 === / == / !== / !=(左右どちらに文字列が来ても検出)
分岐 switch (nStatus) { case '...': }

コメント内の記述は検出対象外です。


仕様

  • 確度は「可能性が高い」 — 条件式や JavaScript からの文字列抽出に依存するため、断定しません
  • プロセス管理が無効なアプリでは検証しません — ステータスが未定義の状態では、すべてが「存在しない」と判定されてしまうため
  • ステータスフィールドが無いアプリでも、event.nextStatus.value 経由の判定は検証できます

表記の変更

検出対象がフィールドコードだけでなくなったため、表示を変更しました。

箇所 変更前 変更後
Health の見出し 存在しないフィールドコードへの参照が N 件あります 存在しない参照が N 件あります
表の列名 存在しないコード 存在しないコード / 名前
レポートの節 存在しないフィールドコードへの参照 存在しない参照(フィールドコード・ステータス名)

更新にあたって

解析ロジックを更新したため、JavaScript 解析のキャッシュは自動的に無効になります
Toolkit を開き直すと再解析され、結果に反映されます。
すぐに確認したい場合は Field Scanner の「Scan」を実行してください。

v2.1.0 依存関係分析

Choose a tag to compare

@youtotto youtotto released this 09 Aug 08:03

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

Toolkit v2.0.0

Choose a tag to compare

@youtotto youtotto released this 25 Feb 02:14

Toolkit が Ver.2.0.0 にアップデートしました。

今回のアップデートでは、
「設定の見える化」と「設計理解の支援」を大きく強化しています。

✨ New Features

  • Fields / Views に詳細設定表示を追加
  • フィールド検索(名称 / コード部分一致)
  • Notices タブ追加
  • Access Control タブ追加
  • Templates に CSSテンプレート機能追加

🔧 Improvements

  • ライト / ダークテーマ最適化
  • 内部ロジックの共通化・整理
  • Mermaid描画の安定化
  • 基準UI表示バグ修正
  • UI微調整

アプリ構造の把握・引き継ぎ・保守を
よりスムーズに行えるツールへ進化しました。

v1.8.0 - Field Scanner

Choose a tag to compare

@youtotto youtotto released this 10 Nov 03:53

v1.8.0 (2025-11-10)

✨ 新機能

  • Field Scanner(フィールド使用状況スキャナ)
    • preview(fileKey) 優先でJS/CSSを解析
    • Used / Matches / Files / スニペットを可視化
    • MDコピー / MD DL / CSV DL / JSON DL に対応
    • 初期実行はオフ(Scanボタンで明示実行)