はじめに
みなさんこんにちは!
Flutterでアプリを開発する際に、データの流れが分かりづらいと感じることはありませんか?
今回は大きく分けて2つのデータ取得の流れを説明します。
- ローカル環境でデータを取得する流れ
- APIを経由して外部データを取得する流れ
この2つのデータ取得の流れをざっくりでもイメージできれば、アプリ開発がもっと楽しくなると思います!
1. ローカル環境のデータ取得の流れ
ローカル環境のデータ取得は、アプリ内でデバイスに保存されているデータを直接利用します。
データの流れ
-
ビュー(クライアント)
ユーザーがアプリを操作します。 -
プロバイダ
プロバイダはステートを通じて、ローカルデータベースにデータを取得しにいきます。 -
ステート
アプリ内部の状態を一時的に管理します。プロバイダ経由でローカルDBから取得したデータを保持し、それをビューに渡します。 -
アプリDB
デバイス内部に保存されているデータにアクセスし、必要な情報を提供します。 -
ビュー(クライアント)
ステートから取得したデータをUIに反映します。
メリット
ローカルデータ取得のメリットは、ネットワーク接続が不要なため、高速かつ安定した動作が可能なことです。
2. API経由の外部データ取得の流れ
API経由のデータ取得は、外部のDBからリアルタイムでデータを取得します。
データの流れ
-
ビュー(クライアント)
ユーザーが操作する画面のことです。 -
プロバイダ
リポジトリを通じて、外部のAPIサーバーにデータ取得を指示します。 -
リポジトリ
リクエストをAPIサーバーに送信し、必要なデータを取得します。 -
APIサーバ
外部サーバーがリクエストを受け取り、内部のデータベースから必要な情報を取得します。そして、リクエストに応じたデータを返します。 -
リポジトリ
サーバーからデータを取得しアプリ内で使いやすい形に加工します。その後、プロバイダを通じてステートに渡します。 -
ステート
リポジトリから渡されたデータを一時的に保持します。 -
ビュー(クライアント)
ステートに保持されたデータがUIに反映され、ユーザーに表示されます。
メリット
API経由のデータ取得のメリットは、外部サーバーの膨大なデータにアクセスできることです。
その代わり、ネットワーク接続が必須であるため、通信環境に応じて動作が遅くなる場合もあります。