業界トップクラスの求人数を誇る転職エージェントPR

リクルートグループのコネクションを活かした非公開求人も充実、他にはない好条件の求人と出会える

0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Android オフラインファーストの push ベースの同期 について

Last updated at Posted at 2025-01-26

オフラインファーストとは

オフライン状態でコア機能の一部 or 全部が実行できるアプリのことです。

不安定なモバイルデータ通信状態が想定されるシチュエーションは沢山あります。

  • 地下鉄や飛行機での移動中
  • キャンプや登山などのアクティビティ中
  • 災害時

その中でもアプリのコア機能を実行できるようにしようというお話です。

具体例

Spotify

Spotify ではオフラインでも保存した楽曲を再生することができます。
つまり、音楽再生機能という Spotify のメイン機能を、オフラインで使用することができます。

ホーム画面はオフラインでも楽曲のジャケットが表示されます。
ボトムナビゲーションバーにオフラインである表記が追加されます。
また、プレミアムユーザーが最近聴いた楽曲をオフラインで再生できる機能である、「オフライン・バックアップ」についての項目も表示されます。

公式の案内記事

Home マイライブラリ
image.png image.png

Prime Video

ダウンロードタブでは、オフラインでも保存した動画を再生することができます。
つまり、動画再生機能という Prime Video のメイン機能を、オフラインで使用することができます。

ホーム画面はオフラインでも動画のジャケットが表示されます。
画面上部にオフラインである表記が追加されます。

Home ダウンロード
image.png image.png

同期のタイミングについて

ローカルでデータをもつということは、どこかでサーバ側と同期する必要がでてきます。

公式ドキュメント:オフラインファースト アプリの作成 では、 2 種類紹介されています。

  • pull ベース
    • 最新のアプリデータをオンデマンドで読み取る
    • データを表示する直前にのみデータを取得する
  • push ベース
    • ローカルデータソースがネットワークデータソースを可能な限り模倣する
    • サーバーからの通知を受けてデータ更新を行う
pull ベース push ベース
image.png image.png

pull ベース画面毎に必要なデータを取得するために通信を行い、それをローカルでも保持しておくイメージのようです。ローカルを気にしないアプリの通信方式と同じなので、何となく想像がつきました。

push ベースはデータが古くなったとき、サーバーからの通知を受けてデータ更新を行うようです。言いたいことはわかりますが、「データが古くなったとき、サーバーからの通知を受ける」とはどのような仕組みを指すのかいまいち想像ができませんでした。

Push ベースでの同期の実装について

調べたところ、NowInAndroid の実装についてのコメントがでてきました。
https://github.com/android/nowinandroid/discussions/886#discussioncomment-6715116

簡単に言えば、Gitのようなバージョン管理を行っているようです。
順序としては以下の通りです。

  1. API 通信 (バージョン確認を含む)
  2. 差分を取得
  3. ローカル更新

つまり、「ローカルでサーバと同様のデータを模倣し、通信時にそのデータの差分のみ取得する方式」のようです。

「サーバーからの通知を受けてデータ更新を行う」と書かれると紛らわしいですが、
アプリからの要求がない限り、サーバーは何も情報を送信していない ようです。

その他具体的な実装方法について

公式にまとめられてます

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Qiita Conference 2025 will be held!: 4/23(wed) - 4/25(Fri)

Qiita Conference is the largest tech conference in Qiita!

Keynote Speaker

ymrl、Masanobu Naruse, Takeshi Kano, Junichi Ito, uhyo, Hiroshi Tokumaru, MinoDriven, Minorun, Hiroyuki Sakuraba, tenntenn, drken, konifar

View event details
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?