Xcodeで新規プロジェクトを作成しよう
Create a new Xcode project -> SingleViewApp の順で新規プロジェクトを作成する。
UserInterfaceはStoryBoardにしておきましょう。
Firebaseのプロジェクトを作成しよう
Firebaseに下記のURLからGoogleアカウントでログインします。
Firebase
ログインできたら「プロジェクトを追加」ボタンでプロジェクトを追加しましょう。
Firebaseの設定をしよう
プロジェクトのコンソール画面からアプリを追加することができます。
今回は「iOS」を選択しましょう。

アプリのBundleIDを入力します。アプリ名は適当で良いです。

設定ファイルをダウンロードして、Xcodeプロジェクトに追加します。
その後プロジェクトフォルダまで移動して、ターミナルから、下記コマンドを打ちましょう。
pod init
CocoaPodsをインストールしていない方は、インストールしてから行ってください。
こちらが参考になります。CocoaPodsを導入してみた - Qiita
今回はRealTimeDatabase を使用するので、Podファイルに、以下の文言を追加しましょう。
pod 'Firebase/Core'
pod 'Firebase/Database'
ターミナルから、下記コマンドでSDKをインストールしましょう。
pod install
インストールが完了したら、白いプロジェクトファイルが出来上がっていると思いますので、Xcodeで開きます。

AppDelegeteファイルに、画像のように追記します。![スクリーンショット 2019-12-03 15.22.18.png]
データベースを作成しよう
左のタブのDataBaseを選択し、RealTimeDatabaseを選択します。
今回はテストモードで開始しましょう。
これで準備完了です!
データベースに対して操作してみよう
データを追加してみよう
viewDidLoad に以下のように書いて実行します。
override func viewDidLoad() {
    super.viewDidLoad()
    let ref = Database.database().reference()
  
    // KeyValue型の配列を用意しておきます。
    let user = ["name":"Tarou Yamada", "age":"20", "favorite":"jogging"]
        
    // データを追加します。idは自動で設定してくれます。
    ref.child("Users").childByAutoId().setValue(user)
}
Firebaseのコンソール画面に移動すると、データが追加されているのが確認できます!

データを更新してみよう
先程のデータを更新します。
override func viewDidLoad() {
    super.viewDidLoad()
    
    let ref = Database.database().reference()
    
    // 先程のIDを指定します。(人によって変わるので、自分のDatabaseからコピペしてね)
    let id = "-Lv9asdz8vsqeZSZQdyh"
    // 先程のIDを指定してデータを上書きします。
    ref.child("Users/\(id)/name").setValue("名無しの権兵衛")
}
データを削除してみよう
先程のデータを削除します。
override func viewDidLoad() {
    super.viewDidLoad()
    
    let ref = Database.database().reference()
    
    // 先程のIDを指定します。(人によって変わるので、自分のDatabaseからコピペしてね)
    let id = "-Lv9asdz8vsqeZSZQdyh"
    // 先程のIDを指定してデータを削除します。
    ref.child("Users/\(id)").removeValue()
}
データを取得してみよう
サンプルデータを作ろう
FireBaseのコンソール画面で、データを直接編集することができます。
めんどくさい人は、下記のJSONをファイルにして、FireBaseのインポートしましょう。
{
  "Users" : {
    "-Lv4cGsQbS3cXDLTErXS" : {
      "age" : "18",
      "favoriteFood" : "クッキー",
      "name" : "田中 花子"
    },
    "-Lv8Lrf3ii9bB5p6rcIc" : {
      "age" : "22",
      "favoriteFood" : "牛丼",
      "name" : "山田 太郎"
    },
    "-Lv8gSwpG-ZkEbPsbORu" : {
      "age" : "13",
      "favoriteFood" : "たこ焼き",
      "name" : "木村 正人"
    },
    "-Lv8vAUr79kcpoygkpDl" : {
      "age" : "26",
      "favoriteFood" : "寿司",
      "name" : "川上 純子"
    }
  }
}
サンプルデータを取得してみよう
下記コードで、Xcodeのコンソールに取得結果が表示されます。
override func viewDidLoad() {
    super.viewDidLoad()
    
    let ref = Database.database().reference()
    
    // データの変更を監視(observe)してるため、変更されればリアルタイムで実行されます。
    ref.child("Users").observe(.value) { (snapshot) in
        // Users直下のデータの数だけ繰り返す。
        for data in snapshot.children {
            let snapData = data as! DataSnapshot
            
            // Dictionary型にキャスト
            let user = snapData.value as! [String: Any]
            print(user)
        }
    }
}
まとめ
環境の設定から、CRUDの基本的なところまでは押さえられたはず。 次はFirebaseを使って簡単なアプリを作ってみたい。
