Skip to main content

 

OutSystems 11オンラインヘルプ

 

モバイルアプリが対象
OutSystems

モバイルアプリ開発における一般的な問題を解決する

モバイルアプリの開発中、アプリの問題のトラブルシューティングにヘルプが必要となる場合があります。以下に記載した、発生する可能性のある一般的な問題とその解決策の候補をご確認ください。

未視聴の場合、「モバイルアプリの問題」ウェビナーの視聴もお勧めします。このトピックで示された一般的な問題と、その解決方法を扱ってます。

一般的な問題

要素がちらつく

確認される動作

ある画面要素のコンテンツまたはスタイルがごく短い時間で何度も切り替わり、ユーザーエクスペリエンスの低下を引き起こす。

screen-flicker.gif

考えられる原因

要素のちらつきの原因としては、以下の2つが考えられます。

短時間で画面のステータスが変わる
取り出されたデータが、画面に表示されるウィジェット、またはウィジェットの可視性/スタイルに影響を与えるロジック条件と関連付けられている場合、短時間でデータを変更すると(非空リストから空リストへの移動、またその逆など)ちらつきが発生する場合があります。
CSSスタイルの変動または遅延
画面が描画された後に計算を実行すると、ウィジェットのスタイルに影響します。
また、画面固有のCSSの読み込みに時間がかかり、画面レベルのCSSが画面要素に適用されると、ちらつきが発生する場合があります。

考えられる解決策

データの変更に起因するちらつきの場合

  • 画面とコンポーネントで使用されている条件付きロジックを分析し、レビューします。
  • 実行時のAggregateのタイミングとデータアクションを分析します(結果データを入手できるタイミングと、その実装ロジック上での結果など)。
  • 遷移をスムーズに行うため、遷移時にバッファデータを使用します(新しいものが確定するまで前の状態を保持)。

スタイルに起因するちらつきの場合

  • スタイル計算が終了するまで要素の表示を避けます。
  • 要素の代わりにスピナーなどのプレースホルダを表示します。
  • 画面ではなくテーマでCSSの一部を定義することを検討します。これにより、遷移中も読み込みを維持できます。
  • テーマレベルでCSSを定義する際に、セレクタを使用して画面をターゲット化すると、オーバーライドをしても他の画面に影響を与えません。

画面間の遷移が遅い

確認される動作

画面間の遷移に時間がかかりすぎる。

考えられる原因

この動作の原因としては以下が考えられます。

On Initialize画面イベントハンドラのオペレーションが遅い
ネイティブプラグインアクションの呼び出し、またはサーバーアクションの呼び出しなど、遷移先画面のOn Initializeイベントハンドラでのオペレーションに時間がかかります。このイベントは画面DOMの読み込み前に実施されるため、画面の読み込み時間に影響することがあります。

考えられる解決策

  • On Initialize画面イベントハンドラで時間のかかるオペレーションを実行することを避けます。こうしたオペレーションは、ページの表示後に実行されるOn Readyなどのイベントハンドラに移動します。アプリケーションの動作に影響する可能性があるため、変更をデプロイする前にアプリを徹底的にテストします。

  • 上記を行っても改善が見られない場合、ChromeのDeveloper Toolsにある[Performance]タブを使用して、さらにパフォーマンストラブルシューティングを行います。

デバイスのデータが欠如している

確認される動作

モバイルアプリ画面が、デバイスに存在するはずのデータを表示しない。

考えられる原因

同期の問題
アプリケーションのオフライン同期プロセスにエラーがあり、必要なデータの一部がデバイスにコピーされていません。
デバイスにどのデータをコピーするかを判断するためのフィルタリング規則が正しく定義されていないため、必要なデータが同期プロセスでコピーされていません。
同期プロセス実装が一度に大量のデータを同期したため、最終的にプロセス全体がタイムアウトになり、じきに中止されてしまいます。
Aggregateが正しく定義されていない
データは正しく同期されているものの、ローカルストレージエンティティのクエリを実行するAggregateが、必要なデータをフィルタリングする構成になっています。

考えられる解決策

  • 不足データがサーバーのデータベースに存在していることを確認します。存在する場合、サーバーとデバイス間の同期プロセスの実装に問題がある可能性があります。

  • 不足データがデバイスのローカルストレージコンテンツにあることを確認します。たとえば、モバイルデバイス上のローカルストレージエンティティのデータを参照できる画面をアプリに作成します。

  • デバイスのローカルストレージにデータが存在する場合、アプリケーションクエリ(具体的にはAggregate定義)を確認します。特にJOINとそのOnly With/With or Without設定に注意します。

  • デバイスのローカルストレージにデータが存在しない場合、データの同期実装を確認し、同期プロセスで使用する可能性のあるフィルタ(ユーザーIDや日付範囲など)にエラーがないか調べます。