アプリケーションのパフォーマンス向上に影響する設定や実装について紹介します。
ページロード時はデータの読み込みやリソースの取得を行うため、多くの通信が行われます。
以下に通信量の削減に有効な設定や実装方法を紹介します。
ページロード時のコマンドは可能な限りシンプルにし必要な情報のみを読み込むようにします。たとえば、ページロード時にはマスターデータのみを読み込むように設定して、ページ内のボタンクリックなどのイベントで詳細情報を読み込み表示させるような実装にします。
ページ内で使用する画像のサイズは可能な限り縮小、圧縮してサイズを小さくします。
ページストレッチモードを使用しページレイアウトを可変するようにした場合はパフォーマンスに影響します。特に[アスペクト比を保ったまま横方向ストレッチさせる]モードは、パフォーマンスに大きく影響を与える可能性があります。
ページの高さや幅が可変なページを実現する場合、行と列の操作を参考に行の高さや列の幅に対し[自動調整]または[比例配分]の使用を検討してください。
1ページ内にセル型を多用することは避けてください。代わりに、以下セル型を使用し複数のサブページに分割することができます。
タブコントロール型セルを使用し、サブページを表示する
コンテナー型セルを使用し、表示情報を別サブページに切り替えて表示する
クライアント(利用者のデバイスなど)がインターネットに接続でき、外部のライブラリJavaScript/CSSを使用する場合、CDN(コンテンツデリバリネットワーク)などのインターネット上で提供されているリソースのURLを指定し使用してください。
コンボボックス型セルのリスト項目をテーブルから取得する場合、リスト項目のデータの読み込みの処理が行われるためパフォーマンスに影響を与える可能性があります。このデータの読み込みは[読み取り専用]オプションを有効にした場合も同様に行われるため、リスト項目を選択する必要がない場合は、コンボボックスは使用を避けるようにしてください。
コンボボックス型セルのリスト項目をテーブルからデータ取得する際に、そのレコード数が多い場合は、[その他]-[ロードオンデマンド]オプションを有効にします。
更新がない(更新頻度が少ない)データやデータ量が多い場合、[リスト項目]-[高度な設定]-[キャッシュを有効にする]オプションを有効にし、利用状況に応じてキャッシュの保持時間を設定します。
参考:コンボボックス
タブコントロール型セルを使用する場合、[遅延読み込み]オプションを有効にして、タブ切り替え時にアクティブなページのみを読み込むようにします。このオプションを有効にしない場合、一度にすべてのタブページを読み込みます。
参考:タブコントロール
テーブルのレコード数が多い場合、ページに表示するレコード数は2,000行以下になるようにします。
ヒント:
データベースからすべてのレコードを取得しようとすると、データベース側で特定のデータにロックがかかる可能性があります。これにより他の処理が同時実行できなくなることがあり、データベースのパフォーマンスに影響を与える可能性があります。
レコード数が多いテーブルとデータ連結する場合は、以下のような方法で取得レコードするを制限してください。
クエリー条件を指定して必要なデータのみに絞り込みます
すべてのデータをページに表示するのではなく、ページナビゲーション型セルを使用し、データを段階的に取得します
リストビューまたはリピーター型セルにクエリー条件を設定する場合、「ページ表示時にリストビューのデータを読み込まない」オプションを有効にします。
データ量が多いテーブルを操作する場合、[セルの自動結合]オプションは描画に時間がかかるため有効にしないでください。
データの更新がない(更新頻度が少ない)場合は、[リストビュー設定]-[データ]-[データ読み込み設定]-[キャッシュを有効にする]オプションを有効にし、キャッシュを使用するようにします。
ログインユーザーごとに表示させるデータが異なるような場合では[キャッシュを有効にする]オプションを有効にしないでください。キャッシュを有効にすると、クエリーで取得したデータがキャッシュされ、そのキャッシュが保持されている間はすべてのユーザーがそのデータにアクセスできる可能性があります。
ページ上に多くのOData関数を設定すると、ページ読み込み速度が遅くなりパフォーマンスに影響を与えます。[変数の設定]コマンドやサーバーサイドコマンド、ビューなどでODataで実装した機能を代用できないか検討してください。
ページ上に多くの数式を配置するとページの読み込み速度に影響します。サーバーサイドコマンドやビュー、データベースの数式フィールドなどで代用できないか検討してください。
VLOOKUP関数を使用した処理は高負荷なため複数個所での使用は避けてください。代わりに、データ連結やビューを使用できないか検討してください。
循環参照(無限ループ式)は避けてください。
Excelエクスポートはサーバー側の負荷が高い処理ですので、大量のデータを一度にExcelにエクスポートするとことは避けて下さい。大量のデータをエクスポートする場合はExcelではなくCSV形式でエクスポートできないか検討してください。CSVはデータのみをエクスポートするためExcelに比べてエクスポート速度が速くなります。
テーブルにデータをインポートする場合は、[リストビュー設定]-[データ]-[データの確定タイミング]-[リストビューのデータを即時更新しない]オプションを有効にすることを推奨します。データをインポートした後、[リストビューの操作]コマンド-[リストビューの更新確定]を使用してデータを一度に更新することで、パフォーマンスの向上が期待できます。
日付型フィールドに用意されている「[日付フィールド].年」「[日付フィールド].月」「[日付フィールド].日」などのサブフィールドは、日付の値から年や月などの値を実行時に計算により抽出します。そのためレコード数が多いようなデータでこのサブフィールドをクエリー条件などで連続して計算するようなケースは実行時のパフォーマンスに影響する可能性があります。
このようなケースでは、下図のように「>=, < =, >, <」などの条件を使用して日付フィールドの値を直接評価することで、サブフィールドの計算が不要になりますのでパフォーマンスの向上が期待できます。
[繰り返し]コマンド内でテーブルデータの更新処理を行うことは避けてください。代わりに[SQLクエリーの実行]コマンドを使用することで、パフォーマンスの向上が期待できます。
[繰り返し]コマンド内で内部データベースに対して[テーブルデータの更新]コマンドを実行する際は、[トランザクション]コマンド内でそれらの処理を行うことで大幅なパフォーマンスの向上が期待できます。
背景画像などに、[画像ファイルサイズの圧縮]オプションを有効にしてください。
ページで使用するリソース(画像や動画)は、外部の圧縮ツールなどを使用しファイルサイズを圧縮します。サイズが大きい画像はパフォーマンスに影響を与える可能性があります。
サーバーサイドコマンドのロジックは、一般的なバックエンドのコーディング開発と似ており、クライアントサイドの処理に比べてシンプルで効率的であることが多いため、パフォーマンスリスクは低く、安定した動作が期待できます。
サーバーサイドコマンドの[変数の設定]コマンドを使用しデータを取得した後で、更新がない(更新頻度が少ない)データの場合、[キャッシュを有効にする]オプションを有効にします。
1,000レコード以上の大量データを扱うようなデータベース操作を行う場合は、[繰り返し]コマンドの使用は避けてください。代わりに[SQLクエリーの実行]コマンドを使用します。