はい。OutSystemsは、オフラインまたはネットワーク接続が弱いときでも稼働するアプリケーションの開発をサポートします。OutSystemsで作られたアプリケーションは、自動的にアプリケーションのコンテンツをユーザーのデバイス上にストアします。また、OutSystemsのビジュアル言語により、デバイスにどのデータがいくかをコントロールできます。
データとコンテンツをキャッシュするだけのシンプルなアプリケーションから、オフライン計算と複雑なオフライン要件を持つようなアプリケーションまで、OutSystemsではすべてのオフラインアプリケーションを容易かつ迅速に開発することが可能です。
オフライン機能の課題
オフライン機能を持つアプリケーションを開発するには、下記のような課題がつきまといます。
- データをローカルで保存するための容量の問題
- 同期のためのテクノロジーの実装と管理
- データの競合
- クライアント側のコードが古くなった
ローカルでストア出来るデータ容量の制限を解決するため、OutSystemsではデバイスにストアされる情報をビジュアルに定義できます。つまり、どのデータがオフライン状態でストアされるかを、スピーディかつ柔軟に制御することが可能です。
さらに、すべてのデータ同期はOutSystemsのビジュアル言語でコントロールできます。いつ同期プロセスが起こるかを定義したり、業務内容に合わせた特定の同期パターンを使用することも可能です。
同期パターンに関しては、こちらこちらのページをご参照ください。
オフラインアーキテクチャ
下の図は、オフライン機能を持つ、典型的なOutSystemsアプリケーションのランタイムアーキテクチャを表しています。
ネイティブアプリケーションは、接続がない状態でサーバからのスタンドアローンでも稼働するリソースを含みます。インターネット接続ができる状態だと、アプリケーションはリソースに新しいバージョンがあるかどうかを確認・更新します。
デバイス上のデータは、SQLiteを使用してローカルデータべースにストアされます。物理的なストレージのサイズ以外にはどれだけのデータ量がストアされるかの制限はなく、アプリケーションが閉じられたり、デバイスが再起動したり、充電がなくなったときでも、データは持続されます。
センシティブな情報をセキュアにする場合は、データの暗号化モジュールをアプリケーション上でアクティベートするだけです。これにより、デバイス上のデータが256ビットAESで暗号化されます。
OutSystemsのビジュアル言語で、サーバとデバイス間の同期プロセスに関しても制御することができます。kのプロセスはアプリケーションからいつでも開始できるほか、アプリケーション開始時のユーザログインなど特定の条件で自動開始したり、サーバへの接続が再開した場合に開始したりすることができます。
バックエンドでは、クライアントがサーバからデータを送受信するようREST APIが自動で生成、公開されます。これらのセキュアなAPIは認証済みのユーザのみが同期プロセスを開始し、すべての接続がSSL上で実行されるよう保証し、データが常にセキュアな状態であるよう保ちます。