面倒解決エンジニアの森田ユウゴです。
台湾からお届けする「#kintone100日チャレンジ」の92日目。
皆さんはkintoneの「アプリ説明」を、誰向けに、どのくらいの詳しさで書いていますか?
本日のテーマは、アプリごとの案内を管理するkintone管理者向けの「アプリ説明欄連携プラグイン」。利用者別の説明表示だけでなく、説明文を別アプリで履歴管理し、プラグイン設定の保存を「公開」のタイミングにする構成です。
「アプリ説明欄連携プラグイン」について
🎯 どんな課題に向き合ったか(現場の不とベネフィット)
現場の「不」: 同じアプリでも、管理者には長すぎる説明、普段使わない人には難しすぎる説明になりがちです。さらに、アプリ設定へ直接書いた説明は、誰がいつ変更したのかを整理しにくいことがあります。
導入後の世界(ベネフィット): ユーザー・組織・グループを条件に、対象者へ必要な詳しさの説明だけを表示できます。案内文は別アプリのレコードとして管理するため、変更履歴も確認しやすくなります。
💡 着想・こだわり(既存との違い)
今回のこだわりは、表示機能そのものよりも、説明文を業務データと同じように管理する発想です。
表示内容は、別のkintoneアプリに置いたリッチエディターフィールドから取得します。案内文をレコードとして持つため、kintoneの変更履歴を使って更新の経緯を追いやすくなります。
ただし、ソースレコードを編集しただけでは公開中の説明は変わりません。プラグイン設定を保存した時点でHTMLを取得し、そのスナップショットをプラグイン設定へ保存します。
別アプリで編集と履歴管理を行い、内容を確認してから、プラグイン設定の再保存で公開する。設定保存を明示的な公開操作にすることで、編集中の文章や意図しない変更が、そのまま利用者の画面へ流れ込むのを避けました。
✨ これで出来ること(機能概要)
まずはこちらをご覧ください。
利用者別の説明表示: ユーザー・組織・グループを条件に、最初に一致したルールの説明を表示します。
説明文の履歴管理: 別アプリのリッチエディターで文章を管理し、レコードの変更履歴を確認できます。
保存時スナップショット: 設定保存時のHTMLを固定し、閲覧時はソースアプリへREST APIアクセスしません。
HTMLを保存するからこそ、描画前に再確認する
リッチテキストの書式を保つには、保存した内容をHTMLとして描画する必要があります。
入力元はkintoneのリッチエディターに限定していますが、「kintone由来だから安全なはず」とは考えません。保存済みHTMLは、表示直前にプラグインへローカル同梱したDOMPurifyでサニタイズします。script要素やイベントハンドラーなどの実行可能な記述を除去し、DOMPurifyを読み込めない場合はHTMLを描画しません。
閲覧時に新しいHTMLを取り込まないスナップショット設計と、描画直前のサニタイズ。この二段構えで、利便性と安全性の両立を狙いました。
課題
現時点では下記のような課題が残っています。
更新には再保存が必要
ソースの説明文や組織ツリーを変更した場合は、プラグイン設定を再保存する必要があります。自動同期ではなく、公開操作を明示する設計とのトレードオフです。
→1日1万回のAPI制限にアプリ全体で届かないようであれば、直接参照も現実的です。
HTML描画にはinnerHTMLを使う
リッチテキストの書式はtextContentでは再現できないため、DOMPurifyでサニタイズした箇所に限定してinnerHTMLを使っています。
すべての外部通信を遮断する仕組みではない
DOMPurifyは危険な実行要素を除去しますが、許可されたリンクや画像URLを一律に削除するURL許可リストではありません。リッチエディター自体にそのようなデータを保存が出来ませんが、ほかの対策も引き続き必要です。
さいごに
アプリ説明を「全員向けの固定文」ではなく、役割別に配信する管理対象として考えてみました。
部署別の注意事項、初心者向けの詳しい手順、管理者だけに必要な運用情報など、同じアプリでも説明の厚さを変えたい場面に使えます。
#kintone100日チャレンジ として、2026年4月から毎日プラグインをバイブコーディングしています。明日もお楽しみに!
私森田ユウゴはココナラでkintoneに関する各種サービスを出品しております。
SIerの中でもインフラSEとして約10年、特に「運用保守」にはベンダーとして深く携わってきました。
作りっぱなしにしない導入やカスタマイズのご提案が可能です。
お気軽にご相談をくださいませ
→森田ユウゴのプロフィールはこちら👇