はじめに
kintoneでは、1日に実行できる1アプリあたりのAPIリクエスト数上限が設定されています。
上限を超過すると、サイボウズドットコムストアの管理者メールアドレス宛に超過メールが送信されます。
本記事では、APIリクエスト超過メールが届いた際の対処法を解説します。
APIリクエストとは
「そもそもAPIリクエストとは何か?」という方がいるかもしれませんので、説明します。
「kintone」におけるAPIリクエスト数は、kintone REST APIの実行回数を表す数値となり、各APIを1回実行する毎に、1リクエストがカウントされるようになっています。
kintone REST APIの一覧については次のページを参照してください。
kintone REST API
また、リクエスト数がアプリごとにカウントされます。
1アプリあたりの1日リクエスト数上限を超過すると、翌日の9時ごろに超過メールが送信されます。
1日に実行できるAPIリクエスト数について、次のページを参照してください。
1日に実行できるAPIリクエスト数
一部のkintone REST APIは、実行してもAPIリクエスト数にカウントされません。
詳細は、次のページを参照してください。
対象外のAPIリクエスト
1日のAPIリクエスト数のリセットタイミング
「kintoneシステム管理」>「アプリ管理」内のAPIリクエスト数は、日本時刻(JST)で毎日午前9時にリセットされます。
そのため、収集期間は「9:00~翌日8:59(JST)」になります。
ただし、メールではUTC(協定世界時)での記載となりますので、ご注意ください。
詳しくは次のページを参照してください。
「ヒント」内に記載があります。
利用環境への影響
APIリクエスト数の上限値を超過した場合、サイボウズから利用状況について確認の連絡をする場合があります。
また、上限回数を超えたAPIリクエスト実行が他のユーザーの環境に重大な影響を及ぼす場合、API処理を中断することもあります。
そのため、APIリクエスト数の上限超過が恒常的に発生している場合は、原因を特定し適切な対策を講じる必要があります。
APIリクエスト数上限超過の原因
APIリクエスト数が増加する原因として、利用しているJavaScriptカスタマイズやプラグイン、連携サービスが大量のAPIリクエストを発行していることが考えられます。
提供元がある場合は、提供元に問い合わせて、APIリクエスト数を削減する方法を検討してください。
特にどの操作がAPIリクエスト数を増加させているかを特定するために、監査ログを確認することが有効です。
原因の特定方法
APIリクエスト超過の原因を特定するには、メールに記載されている「ご利用状況」の「アプリ名」を確認し、以下の方法を参考に調査してください。
監査ログの確認
監査ログには、APIを使用した操作の履歴が記録されています。
レコードの登録(POST)、更新(PUT)などの操作ログを確認することで、APIリクエスト数の増加の原因を特定できる可能性があります。
ただし、レコード取得(GET)などの操作ログは出力されないため、注意が必要です。
「監査ログ」を確認してもAPIリクエスト数の上限を超過していない場合は、該当アプリのカスタマイズが大量のレコード取得(GET)を実行していないか、作成者や提供元に確認してください。
監査ログの確認方法
「監査ログ」の確認方法は、次のヘルプページを参照してください。
kintoneの監査ログの確認方法
ログに出力される各項目の詳細は、次のヘルプページを参考してください。
kintoneが出力する監査ログの一覧(APIを使用した操作)
監査ログの絞り込み方法
監査ログでは絞り込み検索によって、特定のアプリに対して一定期間中に実行されたAPIリクエストの実行状況を確認できます。
次の例を参考に、APIリクエストの実行状況を確認してください。
絞り込み例
以下は2025年1月20日分の、APIリクエストの実行状況を確認する例です。
超過メールに記載の集計期間はUTC(協定世界時)の表記です。
超過メール内の記載の日時に+9時間したJST(日本標準時)の値を設定してください。
| 項目 | 設定値(例) |
|---|---|
| この日時から | 2025-01-20 18:00 |
| この日時まで | 2025-01-21 17:59 |
| レベル | 情報以上 |
| モジュール | API operation |
| 補足 | app id: 46, app name: 活動履歴(営業支援パック) |
kintoneアプリ管理画面の確認
kintoneアプリ管理画面では、各アプリの1日のAPIリクエスト数を確認できます。
この画面では、タイムラグなしでAPIリクエスト数が表示されるため、リアルタイムな状況を把握できます。
APIリクエスト数の確認方法については、以下のページを参照してください。
cybozu.com共通管理の契約状況画面のAPIリクエスト数
「cybozu.com共通管理」の「契約状況」画面でもAPIリクエスト数の使用状況を確認できますが、リアルタイムでの反映はされません。
APIリクエスト数が反映されるタイミングは1日3回(8時間ごと)となり、ドメインごとにランダムで更新されるため、タイムラグが発生します。
そのため、リアルタイムでのAPIリクエスト数の確認は「kintoneアプリ管理画面」を利用してください。
APIリクエスト数を減らす方法
APIリクエスト数超過の原因が特定できたら、以下の方法を参考にAPIリクエスト数を減らす対策を検討してください。
kintone REST APIからkintone JavaScript APIに置き換える
kintoneカスタマイズに使用しているkintone REST APIをkintone JavaScript APIに置き換えることで、APIリクエスト数を減らせる場合があります。
kintone JavaScript APIの実行は、APIリクエスト数にカウントされません。
ぜひ一度、置き換えを検討してみてください。
kintone JavaScript APIでも情報が取得できる例として、次のようなものがあります。
kintone JavaScript APIの詳細については kintone JavaScript APIリファレンス を参照してください。
一括処理へ変更する
kintone REST APIでは複数のレコードを取得する "GET" など複数のレコードを一括操作する処理に変更することで、APIリクエスト数を減らせる場合があります。
APIリクエストのカウント方法の例
APIリクエスト数はGETメソッドの場合、以下のようにカウントされます。
| ケース | カウント数 | 備考 |
|---|---|---|
| 1回のAPI実行で1件のレコードの取得を行った場合 | 1リクエスト | - |
| 1回のAPI実行で500件のレコードの一括取得を行った場合 | 1リクエスト | - |
| 500件のレコードを1レコードずつ取得した場合 | 500リクエスト | - |
| 501件のレコードの一括取得を行った場合 | 2リクエスト | 1回目のリクエストで500件、2回目のリクエストで1件取得するため |
操作できるレコードの最大件数はAPIごとに異なります。
レコードを操作する各APIの詳細につきましては、以下のページを参照してください。
- 複数のレコードを取得する:500件まで
- (レコードの一括取得)カーソルを作成する:500件まで
- 複数のレコードを登録する:100件まで
- 複数のレコードを更新する:100件まで
- 複数のレコードを削除する:100件まで
過去の実行結果のキャッシュを利用する
kintone REST APIのリクエスト数を抑える方法のひとつに、中間サーバーなどにデータをキャッシュし、差分だけを処理する方法があります。
たとえば、アプリ設定を取得するカスタマイズの場合、最初にアプリの情報を取得するAPIを使ってアプリの情報を取得します。
2回目以降は、アプリの更新日時が変わっていなければ、前回取得したデータを再利用することでAPIへのリクエストを減らすことができます。
また、レコードを取得する場合も、更新日付や作成日付で前回取得から変更があったレコードだけを絞り込むことで、全件取得を避けるリクエストの最適化が可能です。
UPSERTモードを利用する
これまで、レコードを更新・新規追加するには、次のような方法で実装する必要がありました。
- 「レコードを取得するAPI(GET)」を使用して、レコードを全件取得する。
- 既存のレコードは、「レコードを更新するAPI(PUT)」を使用して更新する。
- 存在しないレコードは、「レコードを登録するAPI(POST)」を使用して新規追加する。
しかし、2025年1月の定期メンテナンスで、「レコードを更新するAPI(PUT)」にUPSERTモードが追加されました。
UPSERTモードを有効にすると、上記の処理を「レコードを更新するAPI(PUT)」だけで実行できます。
特にレコード数の多いアプリでは、この方法を活用することで、APIリクエスト数を大幅に削減できます。
詳細は以下のページを参照してください。
複数のレコードを更新する
レコードを絞りこんで取得する
queryでレコードを絞り込み、不要なレコードを取得しないようにすることで、APIリクエスト数を減らすことができます。
複数のレコードを取得する際のクエリの書き方については、以下のページを参照してください。
処理のタイミングを見直す
レコード詳細画面やレコード一覧画面を開いたときのイベントなど、自動的に発行されるイベントではなく、ボタン押下のタイミングで処理を実行することで、APIリクエスト数を削減できます。
ボタンを設置し、ボタンを押下したときにAPIリクエストを行う方法については、以下のページを参照してください。
また、自動化が必要な場合は、自動取得の必要があるフィールドを分けてアプリを作成することで、APIリクエスト数を減らすことができます。
次は、アプリ分け方の例になります。
- 時系列で分ける。
- 例: 2022年度営業活動アプリ、2021年度営業活動アプリ、2020年度営業活動アプリ
- 所属で分ける。
- 例: 部署別アプリ、担当者別アプリ
- レコード数で分ける。
- 例: レコード数が一定数を超えたら分ける。
レコード取得対象のアプリのレコードを減らす
不要なレコードをファイルに書き出したり、外部サービスにアーカイブしたあとでkintoneから削除することで、APIリクエスト数を削減できます。
詳細は以下のページを参照してください。
ファイルにデータを書き出す
プラグインの設定の見直しや無効化
アプリに追加したプラグインがAPIリクエストを発行している場合、設定の見直しや無効化を行うことでAPIリクエスト数を減らすことができます。
プラグインの設定の見直し
プラグインの開発元に問い合わせて、APIリクエスト数を減らせる設定方法を確認してください。
プラグインの設定方法については、以下のページを参照してください。
プラグインを追加/削除する(アプリの設定)
プラグインの無効化
不要なプラグインを無効化することで、APIリクエスト数を減らすことができます。
プラグインの無効化方法については、以下のページを参照してください。
プラグインの有効/無効を切り替える
APIリクエスト上限超過メールが届いたときの対応まとめ
APIリクエスト数の上限超過メールが届いた場合の対応手順をまとめます。
- 監査ログやアプリ管理画面を活用してAPIリクエスト数の増加原因を特定する。
- APIリクエスト数を減らすための対策を講じる。
- それでもAPIリクエスト数の削減が難しい場合は、APIサポート窓口に問い合わせる。
問い合わせ方法は、次のページを確認してください。
サポートへのお問い合わせ方法
という手順で対応を進めてください。
おわりに
APIリクエスト数の上限超過メールが届いた場合は、まずは本記事で紹介した手順を参考に原因を調査し、適切な対策を講じてみてください。
多くの場合、監査ログやアプリ管理画面を確認したり、レコード取得(GET)方法の見直しをすることで、問題の特定や対応が可能です。
GETリクエストについては
APIリクエストのカウント方法の例
の節を再度確認してください。
原因を特定し適切に対処することで、APIリクエスト数の超過を抑えることができます。
本記事が、APIリクエスト数の上限超過メールが届いた際の対処にお役立ていただければ幸いです。
