Skip to main content

 

OutSystems 11オンラインヘルプ

 

モバイルアプリが対象
OutSystems

オフライン

OutSystemsでは、モバイルアプリの一部またはすべての機能へのオフラインアクセスを要求するユースケースを実装するために必要な機能が用意されています。 たとえば、モバイルデバイスで常時インターネット接続が利用できるとは限らない遠隔作業者を支援する、フィールドサービスのモバイルアプリがあります。

OutSystemsモバイルアプリをインストールすると、そこには、アプリをサーバー接続なしで実行する際に必要なUI要素やクライアント側ロジックなどのリソースがすべてそろっています。データは、SQLiteデータベースにローカルで保持されています。モバイルアプリがサーバー上のデータやロジックにアクセスするために必要なのは、ネットワーク接続のみです。

代表的なOutSystemsモバイルアプリのランタイムアーキテクチャを以下の図に示します。

オフラインアーキテクチャ

ネットワークアクセスが断続的であるという状況でモバイルアプリを利用できるようにするためには、ネットワークアクセスができる間にモバイルデバイスとサーバーとの間でデータ交換を可能にするようにローカルデータモデルを定義して同期の仕組みを実装する必要があります。

ローカルストレージの使用

OutSystemsでは、サーバーのデータベースでもモバイルデバイスのローカルストレージでも同じように、データモデルを定義して永続的なデータを操作します。

ローカルストレージのモデリングは、必要なサーバーエンティティとアトリビュートのみを右クリックでコピーすることにより、高速化できます。新しいローカルストレージエンティティを作成すると、OutSystemsでは、エンティティのレコードをサーバーエンティティの場合と同じように扱うことができるエンティティアクションが自動的に作成されます。

機密データをローカルストレージに保存することを検討している場合は、「モバイルアプリのデータを保護する」のベストプラクティスをご活用ください。

オフラインデータの同期の実装

オフラインデータの同期の仕組みを実装する推奨手順を以下に示します。

同期実装手順

同期の実装を開始する前に、ビジネスニーズを分析してエンドユーザーが誰であるかを定義します。アプリが動作する条件を定義します。この手順は、アプリが満たすべき接続要件およびデータ容量要件を作成するうえで有効です。

さらに、誰がどのようにレコードを変更するのかも決定します。同期の実装は、同時にデータベースレコードにアクセスできるユーザーの数およびモバイルアプリでレコードの編集が可能かどうかによって影響を受けます。サーバーが主データを保持し、クライアントが更新をダウンロードする場合には、読み取り専用データ(最適化)同期パターンを実装することが考えられます。ただし、多数のクライアントがデータにアクセスして変更する場合には、衝突検出付き読み取り/書き込みと同様のより複雑な同期パターンが必要になります。

1. エンティティを作成して適合させる

ローカルストレージエンティティは、複雑なサーバーエンティティより単純なものである必要があります。モバイルアプリで、軽量ローカルストレージを設計するために、データベースの関係を非正規化します。以前に定義したデータ要件に対応するアトリビュートには単純な関係を使用します。より単純なローカルエンティティのアトリビュートをサーバーエンティティにマッピングできる必要があります。

同期パターンを分析して選択します。ローカルストレージおよびサーバー上で、メタデータ用および衝突データ用のデータストラクチャを作成します。バイナリファイルをサポートする場合は、ローカルエンティティに保存する場合とローカルファイルとして保存する場合とでパフォーマンスに与える影響の違いを比較します。

2. 同期ロジックを実装する

OutSystemsには、モバイルアプリとサーバーとの間のデータの同期を可能にする同期フレームワークが用意されています。以下に、このフレームワークを使用して同期の仕組みを実装する主な手順を紹介します。

データ処理ロジック

ビジネスデータを処理して保存するロジックを作成します。実際のユースケースに対して最も効率的で保守しやすい方法で、アクションを単一または複数のフローで作成して構成することが必要です。目標は、データを更新するアクションの入出力値を定義し、その後これらのアクションをサーバー側またはクライアント側のロジックに配置することです。さらに、衝突を検出する全ロジックおよび、衝突を解決するシナリオも作成する必要があります。

そのためOutSystemsでは、サンプルデータの同期パターンをいくつも用意しています。これにより、開発作業にすぐに着手して特定の要件に適合できます。

同期の構成

データの送受信、処理および衝突解決のためのアクションが用意できたら、それらを同期フレームワークに埋め込みます。次に、ネットワーク検出およびアプリの動作を定義します。エンドユーザーが手動で同期を開始できる場合は、TriggerOfflineDataSyncアクションを使用し、同期が非同期呼び出しとして開始されることを確認します。

3. 安定したユーザーエクスペリエンスを作成する

この時点で、同期ロジックの大半がそろっているはずです。次の手順は、同期に関するユーザーエクスペリエンスを作成することです。エンドユーザーの安定したユーザーエクスペリエンスを実現するためには、ユーザーインターフェイスおよびアプリの動作が必要です。エンドユーザーは、ネットワークの状態、扱っているデータが最新かどうか、さらには同期の結果も把握している必要があります。最初の同期には綿密な検討が必要です。衝突があった場合にどう解決するかが明白である必要があります。

4.同期の実装をテストする

定義されたビジネス目標、ユースケースおよびユーザーエクスペリエンスに照らして、同期の実装をテストします。ブラウザシミュレータは、基本的なデバッグには効果的ですが、アプリを複数のデバイスにインストールし、同期およびアプリが実際のシナリオでどのように動くかをテストする必要があります。アプリが内部データベースを使用していること、および接続状態が悪くても更新できる必要があることに留意します。同期テストとしてもう一つ重要なのは、エンドユーザーにとって直感的で使用しやすく応答性の良いアプリかどうかを検証するテストです。

最後に、オフライン同期チェックリストの項目を確認し、アプリケーションが、パフォーマンスおよびエンドユーザーエクスペリエンスに対する期待事項をすべて満たしていることを確認します。

このセクションの記事