Quickstarters

Flutterのためのバックエンドを構築する方法は?

36min

はじめに

このチュートリアルでは、Flutterのバックエンドを構築する方法を学びます。Back4appは、オープンソースで信頼性の高いバックエンドサービス(BaaS)です。

データベース管理、クラウドファンクション、RESTful API、GraphQL API、ユーザー認証など、Back4appの重要な機能をFlutterプロジェクトに統合する方法を説明します。

リアルタイム更新をLive Queriesを使用して処理する方法も発見できます。Back4appの強力なバックエンドサーバーを使用することで、多くの手動設定を省略し、動的なFlutterアプリの作成に集中できます。

このガイドでは、Flutter開発者がクライアント側と簡単に通信できる安全でスケーラブル、かつ堅牢なバックエンド構造を設定する方法を示します。

また、ホスティング、ユーザー認証、サーバーロジックなどの重い作業をBack4appに任せる利点を強調します。これにより、自動スケーリング、高度なセキュリティ、簡素化されたメンテナンスなどの機能を利用できます。

Flutterプロジェクトがあり、バックエンドの設定に無数の時間を節約したい場合、ここが始めるのに最適な場所です。

このチュートリアルの終わりまでに、Back4appで作成できるバックエンドの種類を理解し、プロダクション準備が整ったアプリケーションのためにバックエンドサービスを拡張したり、外部APIや高度なユーザー認証などのより複雑な機能を統合する準備が整います。

始めましょう!

前提条件

このチュートリアルを完了するには、次のものが必要です:

これらの前提条件がすべて整っていることを確認してください。Back4appプロジェクトが設定され、ローカルのFlutter環境が構成されていると、より簡単に進めることができます。

ステップ1 – Back4Appで新しいプロジェクトを作成し、接続する

新しいプロジェクトを作成する

Back4appでFlutterバックエンドを構築する最初のステップは、新しいプロジェクトを作成することです。まだ作成していない場合は、次の手順に従ってください:

  1. Back4appアカウントにログインする
  2. Back4appダッシュボードで「新しいアプリ」ボタンをクリックする
  3. アプリに名前を付ける(例:「Flutter-Backend-Tutorial」)。
Document image


プロジェクトが作成されると、Back4appダッシュボードにリストされます。このプロジェクトは、私たちが議論するすべてのバックエンド設定の基盤となります。

FlutterアプリにParse SDKをインストールして初期化する

Back4appは、データの管理、リアルタイム更新、ユーザー認証などを行うためにParseプラットフォームに依存しています。FlutterプロジェクトをBack4appに接続するには、次の手順に従ってください:

  1. Parse Flutter SDKをアプリに追加します:
YAML

  1. Parseパッケージをあなたのmain.dart(またはアプリを初期化する場所)にインポートします:
Dart


あなたのBack4appダッシュボードで、アプリの Security & Keys セクションに移動して、あなたの Application ID, Client Key, および Parse Server URLを見つけてください。上記のプレースホルダーをあなた自身の資格情報に置き換えてください。この初期化により、Flutterアプリからのすべてのリクエストが安全にBack4appインスタンスにルーティングされます。

マスターキーは、Flutterアプリのクライアント側で使用してはいけないことを覚えておいてください。マスターキーが必要な場合は、サーバーまたは安全な環境に保管してください。

ステップ2 – データベースの設定

データモデルの作成

FlutterアプリがBack4appに接続されたら、データベーススキーマの設計を開始できます。これをBack4appダッシュボードから手動で行うことができます:

  1. ダッシュボードの「データベース」セクションに移動します。
  2. 新しいクラスを作成します。(例:「Todo」)を作成し、関連するカラム(例:タイトル、isCompleted)を追加します。
新しいクラスを作成
新しいクラスを作成


Back4appは、スキーマの自動作成を支援する AIエージェント も提供しています。

  1. AIエージェントを開く あなたのアプリダッシュボードまたはメニューから。
  2. データモデルを説明する 簡単な言葉で(例:「完全なクラススキーマを持つ新しいToDoアプリを作成します。」)。
  3. AIエージェントにスキーマを作成させる あなたのために。
Document image


これにより、データアーキテクチャのセットアップが簡素化されます。フィールドを自動的に作成したい場合は、アプリからオブジェクトの保存を開始するだけで、Parseはスキーマの作成を即座にサポートします。

AIエージェントを使用してデータモデルを作成する

Back4app AIエージェントを使用することを選択した場合は、短い説明を提供するだけで、スキーマを構築または提案してくれます。これは、Flutterプロジェクトの初期データモデリングフェーズを加速する優れた方法です。

Flutter Parse SDKを使用したデータの読み書き

以下は、Parse Flutter SDKを使用してオブジェクトを作成および取得する方法を示す簡単な例です。

Dart


これを使えば、Flutterアプリから直接Back4appデータベースと対話できます。単に createTodoItem('Feed the cat', false) または fetchTodos() を呼び出してデータの読み書きを行います。

REST APIを使用したデータの読み書き

他のサービスと統合する必要がある場合や、より従来のアプローチを好む場合でも、Back4app REST APIを使用できます:

Bash


GraphQL APIを使用したデータの読み書き

Back4appはGraphQLエンドポイントも提供しています:

GraphQL


これにより、Flutterアプリに最適なアプローチを構築する柔軟性が得られます。

ライブクエリの利用

Back4appは ライブクエリ を提供しており、データのリアルタイム更新を受け取ることができます。Back4appのダッシュボード(サーバー設定)でライブクエリを有効にし、その後Parse LiveQuery Flutterクライアントを使用します。

Dart


このサブスクリプションを使用すると、データの変更をリアルタイムでリスニングできます。これは、複数のユーザーがライブデータの更新を確認できるコラボレーティブアプリを構築するのに素晴らしいです。ホットリロードがトリガーされると、アプリが再起動しない限り、サブスクリプションは維持されます。

ステップ3 – ACLとCLPによるセキュリティの適用

ACLとCLPとは何ですか?

Back4appは ACL(アクセス制御リスト)CLP(クラスレベルの権限) を使用して、オブジェクトおよびクラスレベルでデータの読み取りや書き込みを制限します。このレイヤーは、データが不正アクセスから保護されることを保証します。

クラスレベルの権限の設定

  1. あなたの Back4app ダッシュボードで、Databaseを選択し、クラスを選択します(例:「Todo」)。
  2. 次に、Class-Level Permissionsに移動します。
  3. デフォルトを設定します(例:認証されたユーザーのみが新しいオブジェクトを作成できます)。
Document image


コードでの ACL の設定

Flutter コードからオブジェクトレベルで ACL を適用することもできます:

Dart


CLP と ACL を組み合わせることで、特定のデータにアクセスまたは変更できるのは正しい人や役割だけであることを保証できます。

ステップ 4 – クラウド コード関数の作成

なぜクラウド コードなのか?

Cloud Codeを使用すると、バックエンドサーバーを手動で設定することなく、サーバーサイドのロジックを実行できます。これは、データの検証、外部サービスとの統合、またはバックエンドサービス(BaaS)で特定のルールを強制するのに最適です。

例の関数

テキストの長さを計算するCloud Functionの例を示します:

JS


このコードは、Back4app CLIを介して、またはアプリのダッシュボードの Cloud Code でデプロイできます。

デプロイメント

Back4app CLIを使用する:

Bash


ダッシュボードを使用する:

  1. アプリのダッシュボードで、 Cloud Code > Functions に移動します。
  2. JavaScriptコードを貼り付けます。
  3. デプロイ 」をクリックします。
Document image


FlutterからCloud Codeを呼び出す

Dart


この安全なアプローチにより、機密ロジックがサーバーに留まり、Flutterアプリがリクエストを行うだけで済みます。

ステップ5 – 認証の設定

ユーザー認証を有効にする

Back4appは、ユーザーのサインアップとログインを処理するためにParse.Userクラスを使用します。デフォルトでは、Parseはパスワードのハッシュ化、セッショントークン、および安全なストレージを処理します。

Dart


ソーシャルログイン

Back4appは、Google、Apple、Facebookなどとの統合をサポートしています。各プロバイダーには特定のアプローチがあり、追加のライブラリ(例:FacebookまたはGoogleサインイン用)が必要な場合があります。その後、次のように呼び出すことができます:

Dart


プロバイダーのドキュメントに従ってパラメータを調整してください。

ステップ6 – ファイルストレージの処理

ファイルストレージの設定

画像、文書、またはその他のメディアファイルを使用して保存できます ParseFile. Back4appはこれらのファイルを保護し、取得用のURLを提供します。

Dart


セキュリティの考慮事項

ファイルレベルのセキュリティとACLを組み合わせることで、誰がファイルにアクセスできるか(公開、認証されたユーザー、または制限されたユーザー)を定義できます。これにより、ファイルデータが安全に保たれます。

ステップ7 – メール確認とパスワードリセット

なぜそれが重要なのか

メール確認は、ユーザーが提供したメールアドレスを所有していることを確認し、パスワードリセットの流れはユーザーエクスペリエンスとセキュリティを向上させます。

ダッシュボードの設定

  1. アプリの Email Settings に移動します。
  2. Email VerificationPassword Reset を有効にします。
  3. 必要に応じて、メールテンプレートやカスタムドメインを設定します。

これらの設定により、Flutterアプリが自動的にユーザーの所有権チェックとパスワード回復を処理できるようになります。

Flutterでの実装

Dart


ステップ8 – クラウドジョブによるタスクのスケジューリング

クラウドジョブ

定期的なタスク(古いデータのクリーンアップや定期的なメールの送信など)をスケジュールしたい場合があります。クラウドジョブを使用すると、まさにそれが可能です。

JS


このコードをデプロイしたら、アプリ設定 > サーバー設定 > バックグラウンドジョブに移動してスケジュールを設定します。

クラウドジョブのスケジューリング
クラウドジョブのスケジューリング


ステップ9 – ウェブフックの統合

ウェブフックとは?

ウェブフックを使用すると、特定のイベントが発生したとき(新しいオブジェクトを保存するなど)に、Back4appアプリが外部サービスにHTTPリクエストを送信できます。これは、サードパーティツールとの統合に最適です。

  1. Back4appダッシュボードのその他 > ウェブフックに移動し、ウェブフックを追加します。
  2. エンドポイントとトリガーを設定します(例:「Todoに新しいレコード」)。
ウェブフックの追加
ウェブフックの追加


Cloud CodeでbeforeSaveまたはafterSaveトリガーを使用して、ウェブフックを手動で構成することもできます。

BeforeSave WebHook
BeforeSave WebHook


ステップ10 – Back4App管理パネルの探索

どこで見つけるか

Back4app Admin App」は、非技術的なチームメンバーがParse Dashboardを開くことなくデータ(CRUD操作、データタスクなど)を管理できるユーザーフレンドリーなインターフェースです。

  1. App Dashboard > More > Admin App」に移動します。
  2. Enable Admin App」をクリックします。
Enable Admin App
Enable Admin App


管理ユーザーを作成し、サブドメインを選択し、新しく作成した資格情報でログインします。Admin Appは迅速なデータレビューと修正を支援します。

結論

このチュートリアルでは、 Flutterのバックエンドを構築する方法をBack4appとParse Flutter SDKを使用して学びました。

クラスを作成し、データを保存し、リアルタイムクエリを設定し、ACLとCLPでセキュリティを適用し、Cloud Functionsを書き、タスクをスケジュールし、Webhookを統合し、Back4app管理パネルを探索しました。

このアプローチは、複雑なサーバー設定ではなく、Flutterクライアント側に集中できるようにすることで、開発を加速します。

現在持っている最終的な文字列は、RESTful API、ユーザー認証、および簡単なデータ操作を活用した機能的で安全なバックエンドです。

追加のCloud Functions、外部API呼び出し、またはカスタムロールなど、いつでもより高度な機能を統合できます。

次のステップ

  • 本番環境に対応: 高度なキャッシング、分析、またはロールベースのアクセス制御を実装します。
  • アプリを拡張: サードパーティサービスを統合するか、特化したビジネスロジックのためにさらにCloud Functionsを構築します。
  • Back4appのドキュメントを参照: 高度なセキュリティ、パフォーマンスチューニング、ログ分析などを探索します。
  • もっと学ぶ: ライブチャットアプリ、位置情報サービス、またはより複雑なデータ構造のチュートリアルをチェックしてください。それらをFlutterプロジェクトと組み合わせて、実際のユースケースに活用します。

この設定を継続的に洗練させることで、Flutterアプリを強力でスケーラブルなソリューションに変えることができます。コーディングを楽しんでください!