見出し画像

#kintone100日チャレンジ Day018:隠れ残業を物理的にブロック!「就業時間外アクセス制限カスタマイズ」を作ってみた

面倒解決エンジニアの森田ユウゴです。

台湾からお届けする「#kintone100日チャレンジ」の18 日目。

Claude Opus4.7が登場したので、ずっとためらっていた「AI組織作成」を少し遊んでみたら思いのほかフリーランスの私にも使えそうと知りました。
これはもう少し研究し甲斐がありそう。
多分ポイントはAIだけでコンテキスト管理せずにMCPサーバーとつなぐこと。そう、kintoneならkintone MCPサーバーがあるので、AI組織と親和性がかなり高いのです。

👉 #kintone100日チャレンジの概要はこちら

本日は、全社員(特に労務管理・マネジメント層)向けの「就業時間外アクセス制限(残業防止)カスタマイズ」を開発しました!

「就業時間外アクセス制限(残業防止)カスタマイズ」について

🎯 なぜ開発したか?(現場の課題とベネフィット)

100日チャレンジとしては初の「全体カスタマイズ」です。
残業抑止をするなら「ポータルやスペース画面(portal.showやspace.portal.show)」に適用したかったことや、単体のアプリよりもkintone全体で使いたいはずだったので、プラグインではなく「全体カスタマイズ」として実装しました。

  • 現場の「不」: 働き方改革が叫ばれる中、夜間や休日に自宅からkintoneにアクセスして仕事をしてしまう「隠れ残業」が後を絶たない。労務管理側も実態を把握しきれず、コンプライアンス上の大きなリスクになっている。

  • 導入後の世界(ベネフィット): 規定の時間外になるとkintoneの画面が強制的にオーバーレイで覆われ、操作不能に!事前に「残業申請アプリ」で許可を得た時間帯のみアクセス可能になるため、未承認の残業を物理的にブロックし、健全な労務管理を強制的に実現します。

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

まずはこちらをご覧ください。


  • 全画面シャットアウト機能: デフォルトで平日の18時〜翌9時、および土日(休日)にkintoneへアクセスすると、全画面を覆う警告オーバーレイが表示され、一切の操作ができなくなります(ポータル、アプリ一覧、詳細・編集など全画面に対応)。バツで閉じて使うことは出来ますが、毎回表示されるのは利用者として「申請しなきゃ…」という抑止力に繋がります

  • 残業申請アプリとのリアルタイム連動: 指定の「残業申請アプリ」で当日の申請を行い、現在の時刻が「残業開始〜終了」の範囲内に収まっていれば、自動的に制限が解除されます。

  • APIコール数を抑える揮発性キャッシュ(sessionStorage): 毎回REST APIを叩くとあっという間に1日の上限(1万回)に達してしまうため、タブごとにセッションを保持。再取得ボタンも1セッション5回までに制限し、システム負荷を極限まで抑え込んでいます。

課題

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

  • 全体カスタマイズゆえの設定の難しさ(ノーコードの限界)

    1. しかし、全体カスタマイズにはプラグインのような便利な設定画面(GUI)がありません。そのため、「特定の役員や部署だけ制限を除外する」といった設定や「定時の時間を変更する」という作業を画面上からサクッと行うことができず、コード(CONFIG部分)を直接書き換える必要があります。

  • REST API制限の格闘

    1. 実は最初、AI(バイブコーディング)にそのまま任せたら、「画面を開くたびにREST APIで残業申請アプリを見に行く」という、全社員が一斉に使ったら一瞬で1日1万回のAPI制限を食いつぶしそうな恐ろしいコードを案の定出力してきました(笑)。
      ここら辺はAIエージェントでルールやスキル設定をより高度にやるか、人間が細かくは指示してあげないといけない部分なのだとつくづく感じました。

    2. そこでキャッシュ処理を実装したわけですが、ここもサイボウズのコーディングラインに記載されているとおりsessionStorage を採用しています。ブラウザにデータが残ってしまうリスクとAPI消費を天秤にかけれるのでLocal storageでも許容できそうです。
      今回は、万が一このカスタマイズを停止した際にブラウザにゴミ(残業時間などのデータ)が永続的に残るのを防ぐためと、タブを閉じればリセットされる揮発性のほうが運用トラブルを減らせそうという定番の思想でsessionStorageを採用しています。

    3. 挙動を知っていれば対策が出来てしまう。
      このような残業抑止ソフトの定番課題で、対策することを楽しむハッカー思想の従業員対策が難しいです。
      自動でポップアップに対して自動でキャッシュを書き換え…。知識があれば余裕です。ブラウザの開発者ツールを触れるなら手動でも対策が出来てしまいます。
      ※ここは、JavaScriptによるフロントエンド実装という性質上、対策が難しいです

さいごに

明日もお楽しみに!

下記のブログもご覧ください!

👉 【#kintone100日連続チャレンジ】AIにkintoneカスタマイズを100%任せたらどこまでいけるか?現役フリーランスの「100 Days of kintone Hacks」始動!

👉 ココナラで「kintone有資格者が導入や運用の相談にのります」サービスを開始します!

いいなと思ったら応援しよう!