とがみんブログ
大学院の中退を決断し、徹底的に自分と向き合い就職活動をする中で、心理学や脳科学に興味を持つ。挙げ句の果てに、この世界の仕組みにも興味を持つ。そんなとがみんの考えや経験を綴ったブログです。
swift

【swift4】Firestoreを利用した簡易ToDoアプリの作成

どうも。とがみんです。

現在セブ島のNexSeedというプログラミングと英語を勉強できる学校で、エンジニア留学卒業後、ティーチングアシスタントとして、インターンをしています。

>エンジニア留学|NexSeed

生徒が作りたいアプリを開発するにあたって、つまりそうな点や必要な機能を先回りして実装して、ヒントをあげたり、一緒に考えたり、授業として解説したりしています。

前回は「Firestore」について説明しました。

今回は、Firebaseのデータベース「Firestore」を用いて、簡単なToDoアプリを作成したので、そこで利用したデータベースへの操作の基本である、データの「作成:Create」「読み込み:Read」「更新:Update」「削除:Delete」といったCRUD処理の仕方について、簡単なToDoアプリの作成を例に説明していきます。

データベース「Firestore」に関する詳細は以下に記述しているので、この記事を読み進める前に、読んでください。

>【Swift4】Firebaseのデータベース「Firestore」の解説

作成するToDoアプリの概要

簡単なToDoアプリを作りました。ただ複数人で使った場合、他の人が登録したToDoも出てきてしまいます(笑)

データベースの基本操作を実装する事を目的にしてるので、細かい事は無視します(笑)

Firebaseとプロジェクトの連携

アプリからFirebaseの「Firestoreデータベース」使うにあたって、それらを連携させる必要があります。

まずはその方法について説明します。

Firebaseにログイン

Firebaseのホームページに行き、ログインします。すると、以下のようなページに遷移するので、プロジェクトを追加を選択し、プロジェクトの登録を行います。

プロジェクト名を記入し、全てにチェックを入れプロジェクトを作成を選択して完了です。

プロジェクトの作成が完了すると、以下のような画面に遷移します。

次に上図のiOSを選択します。すると、以下のような画面に遷移します。Xcodeで立ち上げた、プロジェクトのバンドルIDを入力し、アプリを登録を押します。

アプリのニックネームやApp Store IDは省略します。

次に以下のような画面に遷移するので、GoogleService-Info.plistファイルをダウンロードし、Xcodeのプロジェクトに追加します。

ここで一つ気をつけないといけないことがあります。

過去にGoogleService-Info.plistをダウンロードしている場合、その名前がGoogleService-Info (1).plistというようにファイル名の右に数字がついてしまっていることがあります。

ファイル名がGoogleService-Info.plistでない場合、Xcodeで、そのファイルを読み込むことができず、エラーが出てしまうので、ファイル名を直す必要があります。

次に、CocoaPodsを利用して、FirebaseのFirestoreを使うにあたって必要なライブラリをインストールします。

>CocoaPodsを使うための準備

ターミナルを開き、作成したプロジェクトがあるフォルダまで移動し、pod initと入力し実行します。

すると、プロジェクトのフォルダ内に、Podfileというファイルがあるので、そこに以下の2行を追加します。

Firebase/CoreはiOSアプリでFirebaseを稼働させるために必要なライブラリがインストールされます。

Firebase/FirestoreはFirestoreを使うために必要なライブラリがインストールされます。

追加した後、保存し、再びターミナルに戻り、pod installと入力すると、ライブラリがインストールされます。

新しく白色のファイルが作成されているので、アプリの開発はそのファイルを使って行きます。

次に、白色のファイルを開き、AppDelegate.swiftファイルに、以下の2行を下の写真のように書きます。

import FirebaseでFirebaseのフレームワークをSwiftで使えるようにし、FirebaseApp.configure()で、Firebaseの初期設定をします。

これで、Firebaseとアプリとの連携は完了です。次にFirestoreを使う準備をします。

Firestoreを使う準備

Firebaseと連携が終わったので、次はデータベース「Firestore」を使う準備をします。FirebaseコンソールのメニューからDatabaseを選択すると、以下のような画面になります。

データベースの作成を行います。アクセス権限に関するダイアログが出てくると思うのですが、後から変更できるのでテストモードにチェックを入れ、始めます。

次に、Xcodeの作成したプロジェクトのViewController.swiftを開き以下のようにコードを記入します。

Firestoreを扱うための変数を宣言し、インスタンス化します。

これでFirestoreを使う準備ができたので、次にデータベースへのデータの「作成:Create」「読み込み:Read」「更新:Update」「削除:Delete」といったCRUD処理について説明します。

CRUD処理

データの作成

以前の記事で述べたように、「Firestore」はドキュメント指向型のデータベースで、「コレクション」と「ドキュメント」、「データ」で構成されています。

以下のコードが、データを作成する時のコードで、ToDoListコレクションの中にdataが入ったドキュメントを作成しています。

>【Swift4】Firebaseのデータベース「Firestore」の解説

addDocumentはそれぞれのドキュメントに対して、ランダムなIDを生成します。ランダムなIDが生成されることによって、データが上書きされてしまうことを防ぎます。

同じIDを指定すると上書きされてしまいます。

自分でドキュメントのIDを指定したい場合は以下のように書き換えることもできます。

データをデータベースに入れた後のFirestoreの状態は以下のようになっています。

データの読み込み

getDocuments()ToDoListコレクションの中のドキュメントを全て取得しています。その後、for分を使って、全てのドキュメントのIDとデータを取得しています。

todoList = []とidList = []を最初に書いている理由について、

もし、それらの配列を空にしなかったら、前回取得したデータが蓄積されてしまい、同じデータがどんどん溜まってしまいます。

なので、それらの配列を空にしています。

データを取得後、テーブルをリロードすることによって、テーブルViewにデータを表示します。

データの更新

以下のように書くことによって、ドキュメントのIDがidのデータをdataに上書きすることができます。

データの削除

以下のように書くことによって、ドキュメントのIDがidのデータを削除することができます。

以上がFirestoreデータベースを使うにあたって基本的な処理です。

GitHub

作成したサンプルはGitHubにあげています。参考にしてください。

https://github.com/togamin/FirestoreSampleToDo.git

スポンサードリンク

まとめ

Firebaseへの連携、Firestoreへのデータの処理について書いてきました。

紹介した簡易的なToDoアプリのコードはGitHubにあげているので、参考にしながら作ってみてください。

良い練習になると思います。

また、下記がインターンをしているNexSeedという「プログラミング×英語」の勉強ができるセブにある学校です。

起業志向の人や、フリーランスを目指す人等、意識の高い人が多く、自分も良い刺激をもらっています。

留学を考えているけど、英語だけじゃ物足りないと感じる人、起業やフリーランスとして働くことを見据えている人は是非見てみてください!