Flow for kintone が API リクエスト数を減らす仕組み ― キャッシュ設計と安全性
この記事で解決できること
「プラグインを入れたら kintone の動作が重くなった」「API の1日あたりの上限に引っかかる」――kintone のプラグイン導入で、こうした心配をされる方は少なくありません。
Flow for kintone では、多層キャッシュを導入することで API リクエスト数を大幅に削減し、導入前と変わらない快適な動作速度を実現しています。
この記事では、Flow for kintone がどのようにAPIリクエストを減らしているのか、そしてキャッシュされたデータがどのように保護されているのかを紹介します。
kintone の API には上限がある
kintone の REST API にはリクエスト数の制限があります。1つのアプリで多くのプラグインやカスタマイズを利用すると、画面を開くたびに複数の API リクエストが発生し、制限に近づくことがあります。
特にフロー実行のたびに毎回 API を呼び出す設計では、以下の問題が起きがちです。
- レコード一覧の表示が遅くなる
- 他のプラグインや連携サービスに影響が出る
- APIリクエスト上限に達して処理がエラーになる
Flow for kintone では、こうした問題を「必要なときだけ API を呼ぶ」キャッシュ設計で解決しています。
なぜ Flow for kintone は多機能なのか
Flow for kintone は、フロー自動化・データテーブル・ダッシュボード・UI拡張など、複数の機能を1つのプラグインに包括しています。「機能が多すぎる」と感じる方もいるかもしれません。しかしこれは、キャッシュを最大限に活かすための設計上の選択です。
すべての機能のリソースは kintone アプリのデータ
ダッシュボードに表示するデータも、データテーブルに並べるレコードも、フロー実行時に参照する値も、すべての出所は kintone アプリ内のデータです。
Flow for kintone が扱うデータは、メインアプリだけではありません。関連レコードや参照テーブルを通じて、複数のアプリにまたがるデータが必要になります。これを機能ごとに別々のプラグインで実装した場合、それぞれが独立してAPIを呼び出すことになり、同じデータを何度も取得する無駄が生じます。
複数アプリのデータを多段キャッシュで共有する
Flow for kintone はすべての機能が同じ多段キャッシュ層を共有しています。
- ダッシュボードがアプリAのレコードを取得 → キャッシュに保存
- データテーブルが同じアプリAのレコードを表示 → キャッシュから即座に提供
- フロー実行時にアプリAのレコードを参照 → 同じキャッシュを再利用
- 関連レコードとしてアプリBのデータが必要 → アプリBもキャッシュ済みであれば再利用
複数アプリにわたるデータであっても、一度取得したものはキャッシュに蓄積されます。「取得済みのデータは何度でも使い回す」――この原則が、機能が増えるほどAPIリクエストが相対的に減っていくという効果を生み出します。
1つのプラグインに機能をまとめているのは、キャッシュを最大限に効かせるための設計判断です。
Flow for kintone の多層キャッシュ
Flow for kintone は、用途に応じて複数のキャッシュ層を使い分けています。
1. レコードデータキャッシュ
kintone のレコードデータは、ブラウザ内の安全な領域にキャッシュされます。
- 対象: レコード一覧、レコード詳細、関連レコードなど
- 有効期間: 1時間
- 更新方式: データ変更時に自動更新。変更がなければキャッシュから高速表示
たとえば一覧画面を開いたあと、詳細画面に遷移して戻ったとき。通常は再度 API でレコードを取得しますが、Flow for kintone ではキャッシュが有効であればそのまま即座に表示します。
2. ライセンス認証キャッシュ
Flow for kintone はライセンスの有効性を定期的にサーバーと確認しますが、毎回の画面表示では確認しません。
- 確認頻度: 24時間に1回
- オフライン猶予: 通信できない環境でも、前回の認証から24時間は動作を継続
外出先や通信が不安定な場所でも、突然プラグインが止まることはありません。
3. ハートビート送信の最適化
Flow for kintone は、アプリの利用状況をサーバーに報告する「ハートビート」機能を備えています。これも毎回送信するのではなく、スマートに制御しています。
- 同じアプリ: 24時間に1回だけ送信(それ以外はスキップ)
- サーバー側でも制御: 1時間以内の重複リクエストはサーバー側でスキップ
この二重のスロットリングにより、API呼び出しを95%以上削減しています。
4. 参照データのキャッシュ
フォームのフィールド定義、ユーザー名、組織情報などの参照データもキャッシュされます。これらは頻繁に変更されるデータではないため、一定期間キャッシュしてAPI呼び出しを節約します。
キャッシュは「高速化」が目的
ここで大切な点をお伝えします。
Flow for kintone のキャッシュは、表示速度を向上させるためのパフォーマンス最適化です。「オフラインで業務データにアクセスする」ための機能ではありません。
- キャッシュの有効期間は1時間と短く設定
- データが更新されればキャッシュも自動更新
- 14日間アクセスがなければキャッシュは自動削除
あくまで「同じデータを何度も取りに行かない」ための仕組みです。
キャッシュされるのは「あなたが見られるデータ」だけ
Flow for kintone のキャッシュは、すべて kintone 標準 API を通じて取得したデータのみを保存しています。kintone の API は、リクエストしたユーザーのアクセス権限に基づいてレスポンスを自動的にフィルタするため、閲覧権限のないレコードやフィールドはそもそも API から返されません。キャッシュに入る余地がない設計です。
アプリ設定が変更された場合
管理者がフィールドのアクセス権限を変更した場合はどうなるでしょうか。
Flow for kintone は、キャッシュされたデータの構造(フィールド構成)と、kintone の最新のフォーム定義を定期的に比較しています。フィールドの追加・削除・権限変更などによりデータ構造に差異が検知された場合、該当するキャッシュを自動的に破棄し、API から全件再取得します。
つまり、「以前は見えていたが権限変更で見えなくなったフィールド」のデータがキャッシュに残り続けることはありません。
キャッシュデータの安全性
「ブラウザにデータを保存して大丈夫?」という疑問は当然です。Flow for kintone では、業界標準の暗号技術でキャッシュデータを保護しています。
銀行と同じ暗号技術
Flow for kintone が採用している暗号方式は、オンラインバンキングの通信(TLS 1.3)や AWS・Google Cloud でも使われている方式と同じです。独自の暗号アルゴリズムではなく、国際標準規格(NIST・RFC)で認定された技術のみを使用しています。
3つの鍵が揃わないと開かない金庫
暗号化されたデータを復号するには、物理的に異なる場所に保管された3つの要素がすべて必要です。
- 認証サーバーのシークレットキー ― サーバーの環境変数に保管
- ライセンス情報 ― 認証サーバーのデータベースに保管
- kintone ユーザー認証 ― kintone へのログインが必要
つまり、万が一 PC が盗難にあっても、ブラウザに保存されたデータだけでは復号できません。認証サーバーと kintone の両方にアクセスできなければ、データは暗号文のまま読み取れない状態です。
ユーザーごとに異なる暗号化キー
同じ組織内でも、ユーザーごとに異なる暗号化キーが生成されます。ユーザーAのキャッシュデータは、ユーザーBの暗号化キーでは復号できません。共有PCの環境でも、他のユーザーのデータが見えることはありません。
万が一の時は自動消去
セキュリティ上の不確実性が少しでもある場合は、「安全側に倒す」設計にしています。
| 状況 | Flow for kintone の動作 |
|---|---|
| 暗号化キーがない | キャッシュを使わず、APIから直接取得 |
| キーの有効期限切れ | キャッシュを使わず、APIから直接取得 |
| データの改ざんを検知 | キャッシュを自動削除し、APIから再取得 |
| 14日間アクセスなし | キャッシュを自動削除 |
暗号化キーが取得できない場合や、データの整合性に問題がある場合は、キャッシュを一切使わずにAPIから直接データを取得します。利便性よりも安全性を優先する設計です。
まとめ
Flow for kintone は、多層キャッシュにより API リクエスト数を最大95%以上削減しています。
- レコードデータ: ブラウザキャッシュで画面遷移を高速化
- ライセンス認証: 24時間キャッシュでサーバー負荷を軽減
- ハートビート: 二重スロットリングで不要な通信を排除
- 参照データ: フィールド定義やユーザー情報をキャッシュ
そして、キャッシュされた業務データは銀行と同じレベルの暗号技術で保護されています。
- あなたの権限で見られるデータだけをキャッシュ
- アプリ設定変更時はデータ構造の差異を検知して自動再取得
- 3つの要素が揃わなければ復号不可能
- ユーザーごとに異なる暗号化キー
- 不確実な場合はキャッシュを使わない安全設計
- 14日間で自動消去
「プラグインを入れると重くなるのでは」「ブラウザにデータを保存して大丈夫か」。Flow for kintone は、パフォーマンスとセキュリティの両方に配慮した設計で、安心してご利用いただけます。
