kintoneのデータをExcelライクに表示することができるkrewSheetは非常に便利なプラグインではありますが、運用の変化にあわせてアプリの改善・修正を加えていくなかで、最初は気にならなかった一覧表示完了までの時間が、いつの間にか遅くなっていることがあります。
「krewSheet、なんだか最近遅い感じがする。」
「表示が重いな・・・。こんなに待たなきゃいけなかったっけ?」
もしそう感じているなら、原因は「表示するデータ量」「数式」「条件付き書式」のいずれかにある可能性が非常に高いです。保存後の再描画時間も重いと感じる要因の一部なので、「保存処理が遅い」ことへの改善にもつながります。(実際は保存が遅いのではなく、保存後の再描画に時間がかかっている可能性があります。)
本記事では、これまでkrewSheetを使ってアプリ構築を行ってきた視点から、パフォーマンス低下を招く3つの主要因を分析し、それに対する具体的な改善チェックリストをまとめました。
この記事を最後まで読むことで、krewSheetの設定を最適化し、業務効率を最大化するための具体的なアクションプランが明確になるはずです。
目次
なぜ遅くなる?krewSheetのsheetモードが重くなる3大要因
krewSheetには大量データを扱う場合のパフォーマンスガイドラインが設定されています。ガイドラインでは、次の3点がパフォーマンスに影響を与える可能性として記載されています。
パフォーマンスガイドラインより引用
- 画面上に表示する(画面内に見えている)セル数が多い場合
- 数式および数式を条件とする条件付き書式が多数含まれている場合
- 大量の列数が存在し、かつ列幅の自動調整が有効になっている場合
要因①:一度に表示・計算する情報が多すぎる
画面上に表示する(画面内に見えている)セル数が多いほど、画面描画するデータの量が多くなります。表示するデータの量が多ければ多いほど、一覧表示完了まで時間がかかり、その結果待ち時間が長くなり、重いと感じてしまいます。
セル数は、「フィールド(列)数」 × 「レコード数」で算出。
kintone標準の一覧表示では1ページの表示件数は最大で100件ですが、krewSheetでは最大500件まで表示させることができます。kintone標準の一覧に比べると5倍のデータを一覧上に表示させることができるため、多く表示できる分、処理時間がかかることになり、結果として重く感じることがあります。
さらに、集計行を表示する設定をしている場合、一覧表示後に集計処理が入るため、その分だけさらに時間がかかります。
要因②:数式や数式を条件とする条件付き書式が多数
krewSheetでは独自の数式フィールドを定義できますが、この数式フィールドが表示速度に影響します。
Excelのように様々な関数が用意されていることはkrewSheetの魅力の1つですが、便利な反面、中には計算負荷が高い関数もあります。これら計算負荷の高い関数は何か操作をするたびに再計算が実行されるため、このような数式フィールドの数が多ければ多いだけ処理が動き、その結果表示完了まで時間がかかり遅くなる要因となります。
また、セルの値変更のタイミングでも再計算が入るため、表示速度だけではなく、行の追加をした時の「若干重い」と感じる要因の1つにもなります。
条件付き書式についても、パフォーマンスに影響する要因の1つになります。多くのセルに対して書式を設定していたり、数式フィールドを使用した複雑な条件が設定されているような場合、その分だけ判定処理に時間がかかりますので、結果的に「遅い」「重い」に影響してきます。
要因③:大量の列に対して列幅の自動調整が有効になっている
krewSheetでは、各フィールド(列)に対して列幅を自動調整するかどうかを選択できるようになっています。

ここをONにすることで一覧表示時に自動調整処理が入り、その分表示完了までの待ち時間が増加します。
krewSheetのsheetモードの場合は「列幅自動調整する」のチェックボックスはデフォルトではOFFとなっていますので、基本はデフォルトのままチェック無しが良いでしょう。
krewSheetパフォーマンス改善チェック前にまず確認すること
krewSheetを使用したkintoneアプリの一覧表示が「遅い」「重い」と感じた場合、まずは、数式と条件付き書式を使用しない場合はどれぐらいの表示速度なのかを測定することが効果的です。
次のような確認をすることで、速度改善に向けた目安となる表示速度を知ることができます。(この速度が目標値となるでしょう)
これを実際に行ってみるとわかるのですが、krewSheetで「数式フィールド」も「条件付き書式」も使用せずフィールドをそのまま表示した場合は、表示速度は特に問題がないことがわかります。(表示しているフィールド数が極端に多い場合を除く)
つまり、「数式フィールド」「条件付き書式」がパフォーマンスに大きく影響していることがここで確認できます。
次のステップでは、どこを見直せば改善につながるのかを1つ1つ見ていくことになります。
【基本】まずはこれ!データ量を最適化する簡単テクニック
まずは、「要因①:一度に表示・計算する情報が多すぎる」に対する改善を行い、表示が遅い現象の改善を狙っていきます。チェックポイントは次の2点です。
チェック1:不要な「列」は表示しない
krewSheetで表示するフィールド(列)をまずは見直します。必要なフィールドのみ表示するようにすることで、列数を必要最低限にするように見直します。
表示したいフィールドが多く一覧が横長になっているような場合、1つのビューで完結させるのではなく、ビューを分けることを考えてもよいかと思います。例えば、「〇〇用」「△△用」のように、用途や部署によってビューを分けてそれぞれのビューに必要なフィールドのみ表示させるようにすることで、1ビュー内のフィールド数を減らすようにするとよいでしょう。
チェック2:一度に表示する「レコード」を減らす
krewSheetでは1ページに最大500件まで表示できるため、ページ切り替えを減らす目的でページサイズを500で設定していることが多いかもしれません。

一覧表示が遅いような場合、このページサイズを減らすことでどの程度改善されるかを確認します。
現状のページが500件となっている場合、200に変えるだけでも一覧表示対象データが2/5になりますので、大きな表示速度の改善を期待できます。ページサイズを500⇒200⇒100と変えていけばいくほど表示速度は改善し重さは感じなくなりますが、1ページに表示されるレコード数が減るため、アプリの使い勝手が下がってしまうかもしれません。アプリの使い方やユーザーの意見も踏まえたうえで検討し、適切なページサイズを設定しましょう。
そのほかには、絞り込みによって表示対象となるレコード数を減らすことが効果的です。初期表示段階で絞り込みしたいような場合は、ビューを事前にいくつか定義しておき、用途によって切り替えしてもらうような形がよいでしょう。
【応用】数式と条件付き書式を見直す
次に、「要因②:数式や数式を条件とする条件付き書式が多数」「要因③:大量の列に対して列幅の自動調整が有効になっている」に対する改善を行い、重さの改善を狙っていきます。チェックポイントは次の3点です。
チェック3:数式フィールドを見直す
数式フィールドの利用が多い場合は、フィールド数を見直す、または、数式フィールド内で使用している関数を見直すことが効果的です。
特に、複数行の値を元に計算するような関数(SUMIF、COUNTIFなど)を多用している場合や、それらを複雑にネストして使用しているような場合は、表示の重さに直結する可能性が大きいので、別の方法で同様の処理ができないかを検討します。
チェック4:不要な条件付き書式を削除し適用範囲を最小限に絞る
krewSheetを使用したアプリであるあるなのは、活用度が増えてくると条件付き書式がどんどん増えていくということです。この条件付き書式は表示速度に影響する部分であるため、改めて整理して不要な条件付き書式は削除することが有効です。
条件付き書式がどの程度処理速度に影響しているのかや、どの書式がネックとなっているのかは実際に調べないとわからないため、検証用のビューを作成したうえで、次のように段階的に確認していくのが良いでしょう。
特に、処理に時間がかかるような関数を使用していたり、IF文で数式フィールドを使用しているようなものが多数含まれている場合は遅くなるようなので、そのような書式は見直し対象となります。
チェック5:列幅の自動調整を無効にする
各フィールドに対して、「列幅自動調整する」にチェックがあるかどうかを確認します。

sheetモードの場合は「列幅自動調整する」のチェックボックスはデフォルトではOFFとなっていますので、基本的には意識する必要はありません。しかし、場合によっては意図的に自動調整する設定に変更していることもあるため、すべてのフィールドを確認し、自動調整しない設定に変更します。
【その他】それでも改善しない場合の切り分け
基本編・応用編で解説した「データ量」「数式」「条件付き書式」を見直しても、まだ動作が重い。そんな時は、もう少し視野を広げて、問題の根本原因を探る必要があります。
他のプラグインやJavaScriptカスタマイズを一時停止して確認
表示速度が遅い原因がkrewSheetの設定そのものではなく、kintoneアプリ全体や他の設定に起因しているケースがあります。その1つが他プラグインやJavaScriptとの競合の可能性です。
krewSheetを利用しているアプリにおいて、他のプラグインや独自のJavaScriptカスタマイズを利用している場合は、それらを削除(または無効化)した上で表示速度がどうなるかを確認してみましょう。もしかするとここがネックとなり全体の動作を遅くさせている可能性があります。
速度が改善した場合、無効化したプラグインやカスタマイズの中に、原因となっているものが含まれています。一つずつ有効に戻しながらテストし、どの要素が影響しているのかを特定しましょう。
kintoneのアクセス権設定の確認
セキュリティのために設定した「アクセス権」が、思わぬパフォーマンスの低下を招いていることがあります。
セキュリティとのトレードオフにはなりますが、もしアクセス権が原因で表示が重くなっているような場合は、アクセス権の設定をシンプルにできないか検討するとよいでしょう。
一覧表示時の条件の確認
krewSheet用の一覧の絞り込み条件が複雑になっていないかを確認します。特に「いずれかの条件を満たす」を使用して条件をしている場合は対象データが増えるため、重くなっている要因の一つになっているかもしれません。条件を指定しない場合と指定した場合でどれだけ表示速度が変わるかを確認し、違いがあれば条件の修正を見直すとよいでしょう。
まとめ
Excelライクな操作感でkintoneを飛躍的に便利にするkrewSheet。しかし、その便利さゆえに、いつの間にか設定が複雑化し、動作が重くなってしまうのは「krewSheetあるある」とも言える現象です。
この記事では、その「重さ」の原因となりやすい「表示するデータ量」「数式」「条件付き書式」いう3つのポイントに絞って、具体的な改善策を解説しました。表示速度は、単なる待ち時間の問題ではなく、業務の生産性や、ツールに対するユーザーの信頼感にも直結するため、やれるところは定期的に見直して改善をしていきましょう。
今回ご紹介したチェックリストが、皆様のアプリ改善のきっかけとなれば幸いです。いきなり全てを試す必要はありません。まずは原因を切り分けるための「速度検証用ビュー」を作成し、ボトルネックを探ることから始めてみてください。
コアノーツ株式会社 代表取締役。
2016年よりkintoneの導入支援・アプリ構築等の数多くのプロジェクトに従事。
現在は現場の「あと一歩」の課題に応えるためのプラグインを開発・販売。パートナー企業の皆様が持つ高い技術力とAPIを掛け合わせることで、お客様の利益を最大化するソリューション創出を目指す。「発想をカタチに、可能性をもっと先へ」がモットー。



