[Swift] macOSでFirebaseを使う ~ 準備編


##これは何？
[Firebase iOS SDK](https://github.com/firebase/firebase-ios-sdk)はmacOSでは使えないと思ってはいませんか？
**その通りです！**
ただし、Authentication、 Realtime Database、Storageの３つに関しては、アンオフィシャルではありますが、有志によるビルドチェックとユニットテストが行われており、アンオフィシャルではありますが、macOSでも利用が可能です。アンオフィシャルですが。

すごく欲しい Analytics は動きません。

この記事は4回にわたって、macOSで動くFirebaseを使ったログイン機構を備える個人メモ的な何かを作っていくチュートリアル的な奴です。

最新の（ベータではない）Swift、XcodeおよびCocoaPodsを使ってmacOSアプリケーションを作ることができる方を対象としています。
Xcode、Swift、CocoaPodsの使い方に関しては全く説明してません。
また、Googleのアカウントは取得済みであるとします。

##プロジェクトを作る
###Xcodeで新規プロジェクトを作成する
CoreDataを使わない、ドキュメントベースではない、Storyboardも使わない Cocoa Appの新規プロジェクトを作成してください。
名称を含めそのほかの設定はお好みで構いませんが、バンドルIDはFirebaseに登録しますので、使いまわしを考えている場合はちゃんとしたバンドルIDを設定してください。
Firebaseに登録したバンドルIDは変更できません。

###CocoaPodsの設定とインストール
Firebase iOS SDKのプロジェクトへの取り込みはCocoaPodsを使用します。
Podfileが iOS のものとは全く異なります。
mscOSでFirebaseを利用する場合のPodfileは以下の通りです。

```Podfile:Podfile
target 'YOUR_TARGET_NAME' do
	
	use_frameworks!
	
	pod 'FirebaseCore', :git => 'https://github.com/firebase/firebase-ios-sdk.git', :tag => '5.0.0'
	pod 'FirebaseAuth', :git => 'https://github.com/firebase/firebase-ios-sdk.git', :tag => '5.0.0'
	pod 'FirebaseDatabase', :git => 'https://github.com/firebase/firebase-ios-sdk.git', :tag => '5.0.0'
	pod 'FirebaseStorage', :git => 'https://github.com/firebase/firebase-ios-sdk.git', :tag => '5.0.0'
end
```
上の取り込みが出来ているなら、細かい書き方はお好みで。

作成したPodfileを使ってinstallを行ってください。

##Firebaseに登録する
###Firebaseプロジェクトの作成
Firebaseを使い始めるためにはFirebase内にプロジェクトを作成する必要があります。
[Firebase console](https://console.firebase.google.com/)から「プロジェクトを追加」をクリックしてください。

「プロジェクト名」はご自由に付けてください。
「プロジェクト ID」は自動作成されたもので構いません。
「プロジェクトを作成」してください。
![スクリーンショット (1).png](https://qiita-image-store.s3.amazonaws.com/0/2117/32e033c2-21ee-e668-5312-f9510e5555ee.png)

しばらくすると作成が完了するので次へをクリック。
以下のような画面になりますので、泣きながら「iOS アプリに Firebase を追加 」を選択します。

![スクリーンショット (3).png](https://qiita-image-store.s3.amazonaws.com/0/2117/c7cc88fc-6a1c-9da9-1287-87c5f8cd6f4a.png)

「iOS バンドルID」に 先ほど設定した”macOS"のバンドルIDを設定します。
これは後から変更できません。

<img width="213" alt="スクリーンショット_2018-07-12_20_43_26.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/2117/2e2e9db1-1ca7-8549-3aa5-fdbcd0df9d3c.jpeg">

次へをクリックして「GoogleService-Info.plist」をダウンロードして、プロジェクトに追加します。

<img width="199" alt="スクリーンショット_2018-07-12_20_44_24.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/2117/0583a996-41ec-4bf0-45e0-65c13560357f.jpeg">

あとは、全部スキップします。

###ログインプロバイダの設定
[Firebase console](https://console.firebase.google.com/)の「Authentication」の「ログイン方法」を選択します。

<img width="422" alt="スクリーンショット_2018-07-12_21_19_32.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/2117/51ee575b-a484-13d8-1e8c-6d166dd4bd64.jpeg">


今回は「メール/パスワード」のみを有効にします。

<img width="415" alt="スクリーンショット_2018-07-12_21_22_00.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/2117/e61a9ad9-a103-1048-0928-e36a04bd0ce5.jpeg">


##プロジェクトを整理
プロジェクトに無駄なものがあるので削除しておきます。

一度ビルドしないとCocoaPodsで入れたモジュールが認識されないと思うのでビルドしておきます。

MainMenu.xibからWindowを削除します。
AppDelegate.swiftを以下のようにします。

```swift:AppDelegate.swift
import Cocoa
import FirebaseCore

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
    
    func applicationWillFinishLaunching(_ aNotification: Notification) {
        
        FirebaseApp.configure()
    }
}
```

`FirebaseApp.configure()`はFirebaseを使用する時に一番始めに呼び出してFirebaseを利用する環境を設定するものです。
`applicationDidFinishLaunching(_:)`ではなく`applicationWillFinishLaunching(_:)`で行うほうが多分いいです。

##次回

次回はFirebaseのAuthenticationを利用したログインとログアウトを実装します。

[macOSでFirebaseを使う ~ Authentication編](https://qiita.com/masakihori/items/0b49bf902f9aa7f9dccc)

[macOSでFirebaseを使う ~ Realtime Database用準備編](https://qiita.com/masakihori/items/992eb83171d6269a30ba)

[macOSでFirebaseを使う ~ Realtime Database編](https://qiita.com/masakihori/items/dbeba6f3c92208b8db9d)

[macOSでFirebaseを使う ~ おまけ](https://qiita.com/masakihori/items/9975b938a12d759d5d22)