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 リクエスト数 (External link)

制限値を超過する場合の対応策

データの登録で制限値を超過する場合

フォームからデータを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 (External link) との連携実績があります。

データの公開で制限値を超過する場合

公開ページで表示するデータをkintoneから取得する処理などで、kintone REST APIが実行されます。
公開ページにアクセスするユーザーが多い場合や、表示するデータの絞り込み条件が複雑な場合などは、特に注意が必要です。
対応策としては以下が考えられます。

キャッシュ
どのようなしくみか

kintoneから取得して公開ページで表示したデータを、kintone以外の場所に一時保存します。
次回のアクセス時に一時的に保存したデータを使い表示するしくみです。
保存したデータをキャッシュデータと呼びます。

メリット
  • キャッシュデータを利用した場合、kintone REST APIを実行する必要がありません。 そのため、リクエスト数および同時リクエスト数の増加を抑制できます。
デメリット
  • kintoneのデータを更新しても反映されず、更新前のキャッシュデータを表示する恐れがあります。常に最新のデータを表示する必要がある場合は後述の待合室機能の利用を検討してください。
待合室機能

データを登録する際と同じく、公開ページにアクセスするユーザー数をコントロールできます。
そのため、kintoneへのデータ参照の集中を防ぎ、同時リクエスト数の増加を抑制できます。 *1

*1 1日に実行するAPIリクエスト数は抑制できません。 ^

おわりに

本記事では、アクセスが集中しkintone REST APIの制限値を超過する場合の対応策を紹介しました。
kintone REST APIの制限値を超過する場合でも、待合室機能等をもつ製品をkintone連携サービスと組み合わせて利用することで、安全に運用できます。
kintone連携サービスについては、 kintone 製品サイトの拡張機能ページ (External link) を確認してください。
また、連携サービスの利用時に制限値を超過する可能性がある場合は、アクセスが集中した場合の動作を連携サービス提供企業に事前確認してください。

information

このTipsは、2023年5月版kintoneで動作を確認しています。