TallyKnot
  1. Home
  2. Blog
  3. 経費管理
  4. TallyKnotはオフラインでどう動く?データ同期の仕組みを解説

TallyKnotはオフラインでどう動く?データ同期の仕組みを解説

TallyKnotがオフラインでも帳簿の記録を続けられる仕組みと、インターネット接続が戻ったときにデータがどのように同期されるのかをわかりやすく解説します。

TallyKnotはオフラインでどう動く?データ同期の仕組みを解説

お金の記録は、スマートフォンが常にインターネットにつながっているときだけ必要になるものではありません。

電波の弱い場所で買い物をしたり、旅行中に支出を記録したり、外出先で突然インターネットが切れてしまったりすることもあります。毎回インターネットに接続できるまで支出を記録できないのであれば、日常的な家計管理アプリとしては少し使いにくいですよね。

TallyKnotは、こうした状況を考えて設計されています。アカウントには同期済みの帳簿データがオンラインで保存される一方、Android端末にも、普段の操作に必要なデータをローカルに保持します。

この仕組みによって、TallyKnotには大きく2つのメリットがあります。帳簿データを1台のスマートフォンだけに閉じ込めずに済むこと。そして、一時的にインターネットが使えなくなっても、対応している日常的な記録作業を続けられることです。

同期の仕組みを詳しく知らなくても、TallyKnotを使うことはできます。このページでは、実際にアプリを使うときに何が起きているのかを、できるだけわかりやすく説明します。「オフライン」「オンライン」「同期」という言葉が、TallyKnotでは具体的に何を意味するのかも紹介していきます。

TallyKnotのデータは、1台のスマートフォンだけに保存されるわけではありません

まず、最初に知っておいてほしいポイントがあります。

TallyKnotは、すべてのデータを1台のAndroid端末だけに永久保存する単純なメモ帳のようなアプリではありません。

変更内容が同期されると、そのデータはTallyKnotアカウントに紐づいたオンラインデータとして管理されます。そのため、同じアカウントで別の対応Android端末にログインした場合でも、そのアカウントで利用できる帳簿を再び取得できます。

たとえば、普段はスマートフォンAでTallyKnotを使っているとします。

「家計」という帳簿を作り、そこに日々の支出を記録しているとしましょう。その後、新しいスマートフォンBを使い始め、同じTallyKnotアカウントでログインしたとします。

スマートフォンBに、スマートフォンAのローカルファイルがそのまま移されるわけではありません。TallyKnotは、オンライン上で同期されているアカウントデータを取得し、新しい端末で使うためのデータを準備します。

アカウントが端末同士をつなぎます

変更内容がオンラインに同期されていれば、同じアカウントで別のAndroid端末にログインしたときも、そのアカウントで利用できる帳簿を取得できます。新しい端末で最初から帳簿を作り直す必要はありません。

では、なぜTallyKnotは端末にもデータを保存するのでしょうか?

すべての操作をオンライン上のデータだけに頼る場合、基本的には毎回インターネット接続が必要になります。

たとえば、スーパーで2,400円の買い物を記録しようとしたところ、通信が途切れて読み込み画面のままになってしまったらどうでしょう。あるいは、家に帰るまで支出そのものを記録できなかったら、後から入力するのを忘れてしまうかもしれません。

TallyKnotでは、対応している日常的な操作がインターネット接続だけに左右されないようにしています。

アプリは端末上にローカルの作業用データを保持しています。対応しているお金の記録を新しく追加したり変更したりすると、その内容をまず端末に保存できます。そのため、サーバーからの応答を待たなくても、アプリ上で記録した内容を確認できます。

これが、TallyKnotがオフラインファーストと呼んでいる仕組みです。

オフラインファーストとは、データがオフラインにしか存在しないという意味ではありません。インターネット接続が一時的になくなっても、端末に安全に保存できる対応作業まで止める必要がない、という考え方です。

TallyKnot

オンラインのときは何が起こる?

インターネットに接続できる状態になると、TallyKnotは端末にある作業用データと、アカウントに紐づいたオンライン上の最新情報を同期します。

簡単に言えば、同期には大きく2つの方向があります。

  1. 端末で待機している変更内容をオンラインへ送信する。
  2. オンライン側にある新しい変更内容を端末へ取得する。

その後、TallyKnotはアプリが利用する端末上のデータを更新し、最新の同期状態に近づけていきます。

この一連の処理を同期(Sync)と呼びます。

「同期」って、簡単に言うとどういうこと?

端末に残っている未同期の変更とオンライン上の最新データを確認し、必要な変更を送受信したうえで、端末側のデータを最新の状態に近づけることです。

インターネットが突然切れたらどうなる?

たとえば、インターネットに接続していない状態で「家計」帳簿を開いたとします。

スーパーで3,200円分の買い物をして、「忘れないうちに記録しておきたい」と思ったとしましょう。

対応しているオフラインでの記録操作であれば、インターネットがないからといって入力した内容を破棄する必要はありません。

支出内容はまず端末に保存され、帳簿にもすぐ反映されます。同時に、まだオンラインへ送信されていない変更としてTallyKnotが管理します。

ユーザーから見ると、やることはシンプルです。いつもどおり支出を記録し、そのままアプリを使い続けることができます。

操作 TallyKnotの動作
オフラインで対応している支出を追加する 端末に保存し、オンラインへ同期するまで保留します。
オフラインで対応している記録を編集する 端末上の最新の変更を保持し、後で同期できるように管理します。
オフラインで対応している記録を削除する 端末上の表示から削除し、その削除内容を後で同期できるように管理します。
インターネットが戻る 保留中の変更をオンラインへ送信し、オンライン側の新しい情報を取得します。

インターネットが戻ったらどうなる?

オフライン中に入力した支出を、別の場所にメモして後からもう一度入力する必要はありません。

インターネット接続が戻ると、TallyKnotの同期機能が端末上で待機している変更内容を処理します。

基本的な流れは次のとおりです。

  1. 端末に残っている未同期の変更を処理します。
  2. 正常に処理された変更をオンライン上の帳簿に反映します。
  3. オンライン側に新しい変更がないか確認します。
  4. 端末上の作業用データを更新します。
  5. 正常に同期された変更を未同期として扱わなくなります。

実際に使う側からすると、もっとシンプルです。記録したいときに入力し、一時的にインターネットがなくなっても、そのまま使う。そして接続が戻ったら、TallyKnotが必要な同期処理を行います。

なぜTallyKnotは、まず未同期の変更を送るのでしょうか?

ここには重要な理由があります。

たとえば、スマートフォンがオフラインの間に帳簿の記録を変更したとします。この時点では、端末側にはオンライン側がまだ知らない変更が存在しています。

もしインターネットに戻った瞬間に、オンライン側のデータをそのまま取得して端末のデータを無条件に上書きしてしまったらどうでしょう。

同期される前のオフライン作業が消えてしまう可能性があります。

そのためTallyKnotでは、未同期のローカル変更を単なる一時的なキャッシュとして扱うのではなく、同期すべき重要な変更として管理します。

保留されている操作を先に処理したうえで、オンライン側で確定した最新の状態を取得し、端末のデータを更新していきます。

オフラインでの記録を簡単に捨てない仕組み

TallyKnotは、まだ同期されていない対応中の変更を管理しています。新しいオンライン情報を確認するときも、保留中の記録を意図的に破棄することはありません。

同じ帳簿を2台の端末から使ったらどうなる?

ここでは、単純にデータをアップロード・ダウンロードするだけではなく、同期そのものが重要になってきます。

たとえば、同じTallyKnotアカウントを2台のAndroid端末で使っている場合や、ほかのTallyKnotメンバーと同じ帳簿を共有している場合を考えてみましょう。

片方の端末では帳簿が更新されているのに、もう片方の端末には少し古いデータが残っていることがあります。

TallyKnotでは、受け付けた帳簿の変更内容を順番に管理し、どの情報が新しいのか、どの操作がすでに処理されているのかを判断できるようにしています。

ユーザーが普段使う画面で、こうしたバージョン情報を見る必要はありません。これらは裏側で動き、古い端末のデータが新しく確定した変更を簡単に上書きしてしまわないようにするために使われます。

また、同期のたびにすべての取引を最初からダウンロードするのではなく、前回の同期以降に何が変わったのかを確認しながら必要な変更を取得します。

同じ処理が2回送信されたらどうなる?

不安定なインターネット接続では、ユーザーが意識しないところでも問題が起きることがあります。

たとえば、スマートフォンから送信した処理自体はサーバー側で正常に受け付けられたものの、その直後に通信が切れて、端末が完了通知を受け取れなかったとします。その場合、端末は「失敗したのかもしれない」と判断して、同じ処理をもう一度送ろうとすることがあります。

お金の記録でこれがそのまま2回処理されると、1回の支出が2件になってしまう可能性があります。

TallyKnotの同期設計では、各論理的な操作に固有の識別情報を持たせています。同じ処理が同じ情報で再送された場合、サーバー側で「すでに処理済みの操作」であることを判断できるため、同じ金額を二重に記録することを防ぐ仕組みになっています。

同期は「アップロードとダウンロード」だけではありません

安定しない通信、古い端末のデータ、ほかのメンバーによる変更、削除なども考慮しながら、取引が二重に登録されたり、帳簿の合計金額が不正確になったりしないように処理する必要があります。

共有帳簿では、同期がさらに重要になります

オフライン対応は1人でTallyKnotを使う場合にも便利ですが、共有帳簿では同期がさらに重要な役割を持ちます。

たとえば、家族2人で「家計」という帳簿を共有しているとしましょう。

1人が自分のスマートフォンから光熱費を記録し、もう1人が別のスマートフォンから食料品の購入を記録します。

そのたびにスクリーンショットを送り合ったり、2人分の記録を手作業で1つにまとめたりする必要はありません。

それぞれの変更が正常に同期されれば、共有しているオンライン上の帳簿が共通の状態として更新され、権限を持つメンバーが自分の端末からその最新状態を取得できるようになります。

つまり、メンバーごとに完全に独立した帳簿を管理するのではなく、それぞれの端末にある作業用データを同期しながら、同じ共有帳簿を使うことができます。

新しいAndroid端末でログインするとどうなる?

新しい端末には、以前のスマートフォンに保存されていたローカルの帳簿データはありません。

そのため、ログインしてインターネットに接続できる状態になると、TallyKnotはアカウントで利用できる帳簿やメンバー情報などをオンラインから取得し、その端末で使うためのローカルデータを準備します。

その後、アプリの初期化や同期処理に合わせて、必要な取引データも端末側へ取得されます。

これが、オフラインに対応しているTallyKnotでもオンライン側のデータが重要な理由です。

オフライン対応によって、インターネットが一時的に使えないときでも記録を続けられます。一方、オンライン同期によって、そのアカウントを1台のスマートフォンだけに限定せず、複数の端末や共有帳簿で利用できるようになります。

状況 TallyKnotの動作
普段のスマートフォン・オンライン 端末とオンラインの変更内容を同期できます。
普段のスマートフォン・オフライン 端末に保存されているデータを利用でき、対応している変更は同期まで保留できます。
インターネットが戻る 保留中の変更を送信し、オンライン側の新しい変更を取得します。
別のAndroid端末でログインする アカウントで利用できる同期済みの帳簿を取得し、その端末用のローカルデータを準備できます。
共有帳簿を別のメンバーが変更する オンラインで受け付けられた変更を、同期時にほかのメンバーの端末へ取得できます。

ホーム画面の同期ボタンは何のため?

同期のことを、ユーザーが毎回意識する必要はありません。

TallyKnotでは、ログイン後やインターネット接続が復旧したときなど、重要なタイミングで同期処理が行われます。

また、ホーム画面の右上には、手動で同期を実行できる更新・同期ボタンもあります。

たとえば、別の端末に変更したばかりのとき、ほかのメンバーが最近帳簿を更新したとき、または「まだ最新の状態になっていないかもしれない」と感じたときなどに、このボタンからもう一度同期を確認できます。

ただし、取引を追加するたびに毎回このボタンを押す必要はありません。

TallyKnotのすべての機能がオフラインで使えるの?

いいえ。ここは重要なポイントです。

TallyKnotは、重要な帳簿や取引の記録をオフラインでも続けられるように設計されています。ただし、アカウントやサーバー上の最新情報が必要になる操作には、インターネット接続が必要です。

たとえば、すでに端末へ同期されているカテゴリーは、オフラインで支出を入力するときにも選択できます。一方で、新しいカテゴリーを作成したり、カテゴリー名を変更したり、カテゴリーを削除したりする操作にはインターネット接続が必要です。

メンバーの追加や招待など、アカウントや共有設定に関わる操作もオンラインの情報を必要とするため、インターネット接続が必要になります。

オフライン対応=すべての機能がオフラインで使える、ではありません

TallyKnotは、日常的な帳簿記録を常時インターネットに接続しなくても続けられるようにしています。一方で、最新のアカウント情報、メンバー情報、共有設定などが必要な操作にはインターネット接続が必要です。

端末にすでに保存されているデータなら、オフラインで使えるの?

オフラインになると、TallyKnotはそのAndroid端末にすでに保存・同期されているローカルデータを使って動作します。

そのため、オフライン対応とは「インターネットなしで初めてTallyKnotをインストールして、アカウントのすべての履歴を取得できる」という意味ではありません。

まったく新しいスマートフォンにTallyKnotをインストールした場合、その端末にはまだアカウント情報がありません。最初にログインしてデータを取得するため、インターネット接続が必要です。

同じように、かなり古い取引履歴など、現在の端末にローカル保存されていないデータを確認する場合も、インターネット接続が必要になることがあります。

重要なのは、次の違いです。

  • 端末にすでに保存されているデータ:オフラインでの利用を続けるために使用できます。
  • オンラインにしか存在せず、この端末にまだ取得されていないデータ:この端末で利用するにはインターネット接続が必要です。

なぜ常にインターネット接続を必要にしないの?

常にインターネット接続を必須にすれば、アプリの仕組み自体はシンプルになります。しかし、日常的なお金の記録はかなり不便になってしまいます。

お金の記録は、実際に支払いをした直後に入力するのが一番簡単です。

たとえば、次のような場面があります。

  • スーパーの中で電波が弱い
  • 旅行中で場所を移動している
  • 通信環境が一時的に不安定
  • Wi-Fiがない場所で作業している
  • 短時間だけ通信が途切れている

後で入力しようとすると、金額を忘れたり、レシートをなくしたり、何のための支出だったのか思い出せなくなったりすることがあります。

オフライン対応の家計簿・帳簿アプリが便利なのは、支出を記録するタイミングと、インターネットへ送信するタイミングを完全に同じにする必要がないからです。

TallyKnotでは、まず端末上で記録を受け付け、インターネット接続が利用できるようになったら同期する、という使い方ができます。

最初から最後まで、具体例で見てみましょう

家族のメンバーと「家計」帳簿を共有しているとします。

  1. 朝、スマートフォンはオンラインで、帳簿も最新の状態です。
  2. 外出して、一時的にインターネット接続がなくなります。
  3. スーパーで3,200円の買い物をします。
  4. TallyKnotで「出金」として記録します。
  5. 支出は端末に保存され、帳簿にも表示されます。
  6. しばらくしてスマートフォンがインターネットに再接続します。
  7. TallyKnotが保留されていた変更を処理し、オンラインへ同期します。
  8. 家族のメンバーが自分の端末で共有帳簿を同期します。
  9. スーパーでの3,200円の支出が、共有帳簿のデータとしてそのメンバーの端末でも確認できるようになります。

使う側からすると、重要なのはとてもシンプルです。インターネットがあるかどうかを気にして待つのではなく、支払いをしたその場で記録できることです。

必要なときはオフライン。オンラインになれば同期。

TallyKnotが目指しているのは、「オフラインアプリ」か「オンラインアカウント」のどちらかを選ばせることではありません。

それぞれに役割があります。

Android端末に保存されるローカルデータによって、TallyKnotは軽快に動作し、インターネットが利用できないときでも重要な帳簿の記録を続けられるようにしています。

一方、オンラインで同期されたデータによって、TallyKnotのアカウントを1台のスマートフォンだけに限定せず、共有帳簿を複数の端末から利用できるようにしています。また、権限を持つほかの端末が取得できる共通の帳簿状態もオンライン側で管理されます。

オフライン中に行った対応している変更は、端末上で同期を待つことができます。インターネットに戻れば、その変更をオンラインへ送信し、新しい情報を取得しながら、端末の帳簿を最新の同期状態へ近づけていきます。

ユーザーが支出を記録するときに、サーバーやバージョン、同期の順番について考える必要はありません。

お金を使ったときに、その場で記録する。

そして、インターネットが使えるようになったら、TallyKnotがデータを同期する。

それが、TallyKnotが目指しているシンプルなオフライン・同期体験です。