Flutter×Firebaseで学ぶ認証とDB連携入門

  • このエントリーをはてなブックマークに追加

 これまでFlutterを使ってモバイルアプリ制作の基礎を学んできましたが、今回はログイン機能やクラウド上でのデータ保存を実装するため、FirebaseとFirestoreを使った連携アプリに挑戦します。匿名ログインからタスク登録・編集・削除までを通して、アプリ開発の全体像を体験します。

こんにちは。wat(@watlablog)です。ここではFlutterとFirebaseの連携方法を学びます!

この記事のモチベーション

 この記事ではFlutterとFirebaseの連携方法を学びます。最終的にはバックエンドでPythonを動かすモバイルアプリをつくりたいのですが、その前段です。せっかくFirebaseを使うのでユーザーログインの機能やデータベースも実装してみようと思います。

 ここではそれらのチュートリアルとして、ToDoアプリを作成します。ToDoアプリにはユーザー毎にタスク管理が必要です。ユーザー認証にはFirebaseのAuthenticationを使います。また、タスク登録は自由な情報をデータベースに残す必要があります。FirebaseにはFirestore Databaseがそのデータベース機能を担います。

Advertisements

 ちなみにPythonをバックエンドで動かすチュートリアルは以下の記事で実施済です。
FirebaseのFunctionsでPythonを動かす方法

Firebase プロジェクトと Flutter アプリを接続する

Firebase プロジェクトを用意

 このブログの過去記事である以下リンク先「Firebaseプロジェクトの準備」の手順にしたがってFirebaseのプロジェクトを作成します。

FirebaseのFunctionsでPythonを動かす方法

Authenticationを有効にする

 構築Authenticationを選択し、始めるをクリックします。

Authenticationの画面例

 色々なログイン方法がありますが、今回は最も簡単な匿名を選びます。

Authenticationの画面例2

 有効にするにチェックをつけて保存します。

Authenticationの画面例3

Firestoreでデータベースを作成する

 次に構築Firestore Databaseを選択します。データベースの作成をクリックしましょう。

Firestore Databaseの画面例

 続いてエディションロケーションを選択します。ロケーションはasia-northeast1(Tokyo)を選択しました(ロケーションは後で変更できません)。構成の項目はまずはテストモードを選択します。

Firestore Databaseの画面例2

Flutterプロジェクトを作成する

 次のコマンドでFlutterアプリのプロジェクトを作成します。

 Flutter開発環境の構築がまだであれば以下の記事を参考にしてください。

環境構築からはじめるFlutterモバイルアプリ開発入門

FlutterFire CLIを導入する

  cdコマンドで先ほど作成したプロジェクトフォルダに移動し、 dartコマンドを実行します。

 パスを通しておかないとその後のコマンド実行時にエラーになるのでこちらも実行します。

 そして次のコマンドを実行します。

 先ほど作成したFirebaseアプリがターミナルの選択肢に表示されているので、Enterキーで確定します。
 次にプラットフォーム選択を行います。デフォルトで全てにチェックが入っていますが、今回はこのままEnterキーで実行します。

 ここまででFlutterとFirebaseを紐づける準備ができました。

Firebase初期化と匿名ログイン

 次にアプリ起動時にFirebaseを初期化し、ユーザー識別用に匿名ログインを行います。

Flutter外部ライブラリの追加

 次のコマンドで外部ライブラリをプロジェクトに追加します。

パッケージ名 役割 なぜ必要か
firebase_core Firebase SDK の土台。アプリ起動時に初期化する。 すべての Firebase 機能はこれを通して動く。いわば “Firebase の電源スイッチ”。
firebase_auth Firebase Authentication 機能を扱う。 今回は匿名ログイン(ユーザー識別)に使う。ユーザーごとにタスクや通知を分けるため。
cloud_firestore Firestore データベースを操作する。 タスクデータやトークンなどを保存・取得するため。
firebase_messaging FCM(Firebase Cloud Messaging)機能。 プッシュ通知を受け取るため。デバイスの FCM トークンもここから取得する。

.dartファイルの編集

 既に作成されている lib/main.dartファイルを次のように修正します。これは最小構成で初期化&匿名サインするコードです。VScode等のエディタを立ち上げて編集しましょう。

iOSシミュレータによるテスト

 次のコマンドを実行しiOSシミュレータを起動させます。

 シミュレータが起動したら次のコマンドでアプリを実行します。

 シミュレータの画面に「Firebase init OK」と表示されていればFirebaseの初期化と匿名ログインからモバイルアプリのUI更新までが成功したことにいなります。

アプリ実行画面(ログインの確認)

 FirebaseのAuthenticationのページを確認すると、匿名ユーザーがログインしている様子が確認できます。

Firebase Authenticationのログイン結果

データベースへの登録(タスクの追加)を実装

 .dartファイルを次のように修正して、タスクの登録を行うようにします。

 このコードを実行すると、画面にタスク・日付・通知時間という入力欄が表示されます。ここに情報を入力してFirestoreへ保存をタップするとFirestore Databaseに情報が送信され、データベースに保存されます。

タスク送信

 タスクをFirestoreへ保存すると、Firestore Databaseの画面に情報が保存されていることがわかります。

データベースの内容

データベースの情報を編集・削除

 もう少しアプリを実用的なものにしてみましょう。次のコードで先ほどのタスクを編集したり削除できるようにします。

 このコードを flutter runで実行した結果例が次の動画です。ブラウザにはFirebaseのコンソール画面も表示していますが、タスクを追加・編集・削除するとFirestoreのデータベース情報がリアルタイムに書き換わる様子がわかります。

まとめ

 Flutterで画面を作るだけでなく、Firebaseと連携させることで「ログインしてデータを扱う」アプリの基本形を体験できました。匿名認証でログインし、Firestoreを使ってタスクを登録・編集・削除する流れを実装したことで、バックエンドとフロントエンドの関係がより明確になったと思います。

はじめてログインやデータベースを使ってみました!
Xでも関連情報をつぶやいているので、wat(@watlablog)のフォローお待ちしています!

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*