#kintone100日チャレンジ Day098:User APIは保存時だけ!匿名集計で描く「勤務地分布マップ」を組んでみた

#kintone100日チャレンジ Day098:User APIは保存時だけ!匿名集計で描く「勤務地分布マップ」を組んでみた

記事
IT・テクノロジー
面倒解決エンジニアの森田ユウゴです。
台湾からお届けする「#kintone100日チャレンジ」の98日目。

まもなく100日チャレンジ終了。
その振り返りも始めたいのですが、お客様作業・Fable活用で忙しい…。
あと、趣味でElectronを使ったWindowsアプリ開発を始めたのですが、これはいい。今までexeはVisual Studio使わないといけないと思っていただけに、簡単にexeを作れるのは感動。
まだ、商用ライセンスが分かっていませんが、Install Shieldを正しいライセンスで無償で使うために旧バージョンのVisual Studioを使う…みたいな話を経験しただけにこれは今後も深堀をしたいと思いました。

さて、本日のテーマは、複数拠点やリモート勤務のメンバーをまとめる管理者向けの「勤務地分布マップ」。地図を表示することよりも、ユーザー選択フィールドをプロフィールの勤務地へ展開し、個人名を残さない集計データへ変換する流れに焦点を当てました。

「勤務地分布マップ」について

🎯 どんな課題に向き合ったか(現場の不とベネフィット)


現場の「不」: プロジェクトや当番のメンバーはユーザー選択フィールドで管理できても、誰がどの地域にいるのかを把握するには、一人ずつプロフィールを確認して集計する必要があります。人数が増えるほど、地域の偏りをつかみにくくなります。

導入後の世界(ベネフィット): レコードを保存すると、選択メンバーの勤務地が都道府県別人数へ集計されます。詳細画面では色の濃淡、比例円、凡例から分布を見渡せるため、拠点をまたぐチーム編成や集合場所の検討に使えます。

💡 着想・こだわり(既存との違い)


kintoneのデータを地図で見せる領域の中でも、「レコードで選ばれたユーザー」と「ユーザープロフィールの勤務地」をつなぐ構成は個人的に見たことがありません。無いならば作ってみようと思いました。

こだわったのは、プロフィールを詳細画面の表示ごとに取得しないことです。User APIを呼ぶのはレコード保存時だけ。結果は「東京都3名、福岡県2名」のような匿名の集計JSONとしてレコードへ保存し、詳細画面ではそのキャッシュだけを描画します。氏名、ユーザーコード、メールアドレスをキャッシュへ残さず、表示時のAPI通信も抑える設計です。

今回は日本地図を前提としていますが、仕様上は世界にも広げることが可能。kintoneのグローバル活用で何かヒントになりそうです。

✨ これで出来ること(機能概要)


まずはこちらをご覧ください。
ユーザー選択から勤務地を自動集計: レコード保存時に選択メンバーのプロフィールを取得し、「東京」「東京都」のような表記を正式な都道府県名へそろえて人数を集計します。

分布を一画面で可視化: 人数に応じた都道府県の濃淡と比例円を日本地図へ重ね、合計人数、都道府県数、人数順の凡例を表示します。

匿名キャッシュで表示を軽量化: 詳細画面は保存済みの都道府県別人数だけを使用します。集計用フィールドは画面上で非表示にし、地図表示のたびにUser APIを呼びません。

課題


現時点では下記のような課題が残っています。

プロフィール変更だけでは地図が更新されない
勤務地はレコード保存時に集計するため、ユーザープロフィールの勤務地を変更しただけではキャッシュへ反映されません。最新化には対象レコードの再保存が必要です。表示負荷を抑える代わりに、更新タイミングを運用で理解しておく必要があります。

参照権限と取得失敗を地図だけでは判別しにくい
勤務地が未設定、不正、または保存者から参照できないユーザーは集計から除外します。User API自体が失敗した場合もレコード保存は止めず、既存キャッシュを維持します。業務判断に使う場合は、権限設定と再保存の手順を決めておく必要があります。

さいごに


#kintone100日チャレンジ として、2026年4月から毎日プラグインをバイブコーディングしています。明日もお楽しみに!

私森田ユウゴはココナラでkintoneに関する各種サービスを出品しております。



SIerの中でもインフラSEとして約10年、特に「運用保守」にはベンダーとして深く携わってきました。
作りっぱなしにしない導入やカスタマイズのご提案が可能です。
お気軽にご相談をくださいませ
→森田ユウゴのプロフィールはこちら👇


サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す