本記事は kintone SIGNPOST パターン実践ガイドの「性能上の考慮点と改善策」をエンジニア向けに編集/追記した記事です。
はじめに
本シリーズでは kintone の特性を知り、kintone を快適に利用するための考慮事項と改善策を案内します。
kintone は大企業や官公庁の情報システム基盤として採用されることが増えています。
数千ユーザーの利用実績も増え、一般的な業務システムやコミュニケーション用途で性能問題が発生することはほとんどありません。
しかし、同時リクエスト数が多い場合やアプリ設定が複雑な場合はその限りではありません。
kintone で性能問題を引き起こさないために、設計者やエンジニアが知っておくべきことを2つの記事にまとめました。
本記事では Vol.1 として、kintone の性能やリクエストの処理時間に関する考慮事項と改善策を案内します。
kintoneの性能
kintone の性能は、「同時リクエスト数」と「リクエストの処理時間」との掛け合わせで考えられます。
「同時リクエスト数」はユーザーアクセスによるリクエスト数とカスタマイズによる REST API リクエスト数の合計を指しています。
「リクエストの処理時間」は1件ずつのリクエストの処理に要する時間で、よくあるケースとして次の要因によって処理時間が変動します。
- レコード件数
- 絞り込み・ソート条件
- アプリ構成(フィールド、アクセス権など)
「同時リクエスト数」と「リクエストの処理時間」はお互いに影響し合います。
- 同時リクエスト数が増えた場合
同時リクエスト数が増えると kintone への負荷がかかる傾向があります。その結果、リクエストの処理時間も長くなる可能性が高くなります。 - リクエストの処理時間が長くなった場合
処理時間が長くなると同時に処理されるリクエストが増える可能性が高くなり、同時リクエスト数も増えやすくなります。
そのため、リクエストの処理時間を短くし、同時リクエスト数も減らす構成が理想となります。
リクエスト処理時間の考慮点
レコード件数
レコード件数が多くなるにつれ、リクエストの処理時間が長くなります。
利用者の快適さを考慮すると、レコード件数は多くても100万レコードが目安となります。
絞り込み・ソート条件やアプリ構成によっては数万レコードでも性能に影響が出る場合もあります。
参考:レコードの登録や閲覧に関しては、アクセス権や絞り込みの設定を行っていない1つのアプリに、100万件を登録した状態で快適に使用できることを確認しています。
絞り込み・ソート条件
絞り込み・ソート条件の設定数が多くなるにつれ、リクエストの処理時間が長くなります。
レコード数が多いアプリで、次に当てはまる場合は特に注意が必要です。
- 絞り込み条件で「いずれかの条件を満たす」を利用している
- 絞り込み条件で「次のキーワードを含む/含まない」を利用している
- 文字列(複数行)、リッチエディター、テーブルを条件に利用している
- ドロップダウンまたはラジオボタンをソート条件に利用している
アプリ構成
フィールド数やアクセス権の設定数が多くなるにつれ、リクエストの処理時間が長くなります。
フィールド数の上限は500ですが、100を超えるとレコード一覧/詳細画面の表示に遅延が生じる可能性があります。
次に当てはまる場合は特に注意が必要です。
- アクセス権の設定数が多い
- 一覧に表示するフィールド数が多い
- テーブル、関連レコード一覧が多い
- テーブルのフィールド数や行数が多い
- レコード/フィールドのアクセス権で、アクセス権の対象者に多数のユーザー・組織・グループを設定している
- レコード/フィールドのアクセス権で、アクセス権の対象者にレコード内のフィールド値を利用している
リクエストの処理時間の改善策
レコード件数
不要なレコードを削除できないか、利用頻度の低いレコードを CSV に書き出して保管できないか検討してください。
また、アプリの分割も有効です。分割方法の案を2つ紹介します。
時系列で分割
年ごと、もしくは複数年ごとにアプリを分ける。
例:○○アプリ(2022年版)、○○アプリ(2021年版)、○○アプリ(2020年版)所属で分割
利用者の所属でアプリを分ける。
例:○○アプリ(東京エリア)、○○アプリ(大阪エリア)、○○アプリ(第一営業部)、○○アプリ(第二営業部)
絞り込み・ソート条件
不要な絞り込み・ソート条件がないか確認してください。
初期表示される一覧はアクセスされる頻度が高くなります。絞り込み・ソート条件の設定数が少ない一覧で代用できないか検討してください。
ソート条件はフィールドタイプによって処理時間が変わります。
処理時間が短いフィールドタイプに変更できないか検討してください。詳細はこちらを確認してください。
アプリ構成
不要なフィールドを削除できないか検討してください。
また、アクセス権の設定数を減らせないか検討してください。
アクセス権の軽量化についてはこちらを参考にしてください。
おわりに
本記事では kintone の性能やリクエストの処理時間に関する考慮事項と改善策を案内しました。
Vol.2 では同時リクエスト数の考慮点と改善策について案内しています。こちらも確認してください。
このTipsは、2022年9月版で確認したものになります。
記事に関するフィードバック
記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。