kintone 連携サービスのフォームやビューワーを安全に運用する
はじめに
kintone は REST API を利用することで次のようなことができます。
- 外部から kintone にデータを登録
- 外部に kintone のデータを公開
kintone REST API の知識がなくとも kintone 連携サービスを利用すれば、数時間でデータの登録フォームや公開ページを用意できるため、利用されるシーンも多くなっています。
一方で kintone REST API には次の制限値があります。
- 同時リクエスト数:1 つのドメインにつき 100 リクエスト(ユーザーアクセスによるリクエスト数は含みません)
- 1 日に実行できる API リクエスト数:1 つのアプリにつき 10,000 リクエスト
先着順で予約を受け付けるなど短時間にリクエストが集中する場合や利用者数の多い場合は、kintone REST API の制限値を超過する恐れがあります。
本記事では、制限値の超過を防ぐための対応策を紹介します。
連携サービスを利用していて、制限値を超過する可能性がある場合は、あらかじめ連携サービス提供企業にアクセスが集中した際の動作を確認してください。
そして、本記事で紹介するような対応策が取られているかを確認してください。
kintone の性能の考え方についてより詳しく知りたい方は、次の記事を参照してください。
また、セキュリティ観点で注意すべき点については、次の記事を参照してください。
想定読者
- kintone 連携サービスでデータの登録フォームや公開ページの利用を検討する人
- kintone 連携サービスでデータの登録フォームや公開ページの活用を提案する人
- データの登録フォームや公開ページなどの連携サービスを構築する人
kintone REST API のリクエスト数に関する制限値
同時リクエスト数
「同時リクエスト数」とは、kintone サーバー内で同時に実行できる kintone REST API の制限値です。
1 つのドメインにつき 100 件まで同時実行が許可されており、 101 件目以降のリクエストはエラーになります。
制限値を超過した場合、原因となったアプリだけではなく、ドメイン全体で kintone REST API のリクエストがエラーとなるため注意してください。
同時リクエスト数(同時接続数)の詳細は、次の記事を参照してください。
kintone REST API 同時接続数の制限値はなぜあるのか
1日に実行できる API リクエスト数
「1 日に実行できる API リクエスト数」とは、kintone のアプリごとに対して 1 日に実行できる kintone REST API のリクエスト実行総数の制限値です。
1 アプリにつき 10,000 を超過した場合、cybozu.com のストア管理者に警告メールが送信されます。
リクエストの実行はエラーになりませんが、API リクエスト数の削減を検討してください。
1 日に実行できる API リクエスト数
制限値を超過する場合の対応策
データの登録で制限値を超過する場合
フォームからデータを kintone に登録する処理などで kintone REST API が実行されます。
フォームを利用する人数が多い場合や、利用時間が集中する場合などは、特に注意が必要です。
対応策としては以下が考えられます。
バッチ処理
どのようなしくみか
フォームからの投稿を逐次 kintone へ登録するのではなく、サーバーでデータを一時保存して、一定期間の投稿をまとめて kintone へ登録するしくみです。
メリット
-
投稿を逐次 kintone へ登録する場合は、投稿ごとに kintone REST API を実行する必要があります。 一方でまとめて投稿する場合は、レコードを一括登録する kintone REST API を活用することで、 1 回の API 実行で 100 レコードまで登録できます。 そのため、kintone REST API の実行回数を減らすことができます。
-
投稿を kintone へ登録する間隔や時間帯をコントロールできます。 そのため、データ登録の集中を防ぎ、同時リクエスト数の増加を抑制できます。
デメリット
- サーバーでデータを一時保存するため、 ユーザーが投稿したデータを kintone で確認できるまでに時差が生じます。 リアルタイムに投稿されたデータを確認する必要がある場合は後述の待合室機能の利用を検討してください。
待合室機能
どのようなしくみか
フォームへのアクセス数が閾値を超えた場合、フォームとは別に用意した待合室ページを表示します。
待合室ページのユーザーは順番に登録フォームへリダイレクトするしくみです。
メリット
- フォームにアクセスしてデータを投稿するユーザー数をコントロールできます。 そのため、kintone へのデータ登録の集中を防ぎ、同時リクエスト数の増加を抑制できます。
デメリット
- 1 日に実行する API リクエスト数は抑制できません。
kintone は
Queue-it
との連携実績があります。
データの公開で制限値を超過する場合
公開ページで表示するデータを kintone から取得する処理などで、kintone REST API が実行されます。
公開ページにアクセスするユーザーが多い場合や、表示するデータの絞り込み条件が複雑な場合などは、特に注意が必要です。
対応策としては以下が考えられます。
キャッシュ
どのようなしくみか
kintone から取得して公開ページで表示したデータを、kintone 以外の場所に一時保存します。
次回のアクセス時に一時的に保存したデータを使い表示するしくみです。
保存したデータをキャッシュデータと呼びます。
メリット
- キャッシュデータを利用した場合、kintone REST API を実行する必要がありません。 そのため、リクエスト数および同時リクエスト数の増加を抑制できます。
デメリット
- kintone のデータを更新しても反映されず、更新前のキャッシュデータを表示する恐れがあります。常に最新のデータを表示する必要がある場合は後述の待合室機能の利用を検討してください。
待合室機能
データを登録する際と同じく、公開ページにアクセスするユーザー数をコントロールできます。
そのため、kintone へのデータ参照の集中を防ぎ、同時リクエスト数の増加を抑制できます。
*1
*1 1 日に実行する API リクエスト数は抑制できません。 ^
おわりに
本記事では、アクセスが集中し kintone REST API の制限値を超過する場合の対応策を紹介しました。
kintone REST API の制限値を超過する場合でも、待合室機能等をもつ製品を kintone 連携サービスと組み合わせて利用することで、安全に運用できます。
kintone 連携サービスについては、
kintone 製品サイトの拡張機能ページ
を確認してください。
また、連携サービスの利用時に制限値を超過する可能性がある場合は、アクセスが集中した場合の動作を連携サービス提供企業に事前確認してください。
この Tips は、2023 年 5 月版 kintone で動作を確認しています。