FirebaseのReal Time DatabaseとC#を使ってとりあえずメッセージを送信してみる(1)

こんにちわ、ころんです!

 

内定先の懇親会で最近「Firebaseまじ神!」「Firebaseまじすごいよ」とよく聞くのでいじってみることにしました。

 

qiita.com

loco-partners.hateblo.jp

techlife.cookpad.com

 

ファイアァァアアアアア!!!とえいえばTomollow Land 2018でSalvatore Ganacciが無理やり(?)演出係にファイアーさせてるのがツボってますw

 

Firebaseへの登録

firebase.google.com

 

FirebaseはGoogleの傘下にあるので自分はGoogleアカウントでそのまま入れました。
右上にある「コンソールへ移動」をクリックし、「プロジェクトを追加」を選ぶ。

 

f:id:Collonville:20180917150019j:plain

 

プロジェクトの作成画面で、名前とリージョンを選び作成。今回は「FireBaseChat」で

リージョンはデフォルトでも特に問題ないかと。

Set a project location  |  Firebase

 

f:id:Collonville:20180917150100j:plain

 

するとプロジェクトのメイン画面に移ることができました!

f:id:Collonville:20180917150436j:plain

 認証の設定

Firebaseの魅力にユーザー認証が容易にできることがあります。

わざわざOAuthの認証メソッドを書く必要もないし、Firebaseのプロジェクトごとに認証方法を変えられます。

webbibouroku.com

今回は、分かりやすくするために「匿名」を選びます。

 

f:id:Collonville:20180917151527j:plain

 

DBの設定

今回はユーザーが投稿したメッセージ等を格納するデータベースの設定を行います。

 

プロジェクトのメイン画面の左側にある開発から「Database」-->「データベースの作成」を選択するとセキュリティルールの設定に移ります。

 

f:id:Collonville:20180917152531j:plain

 

今回は「テストモードで開始」を選択。これでDBの設定は終わりです。

 

f:id:Collonville:20180917152205j:plain

 

DBのシークレットキー

DBへのシークレットキーは、左画面の歯車マークから「プロジェクトの設定」-->「サービスアカウント」-->「以前の承認情報」から取得できます。

しかしながら、DBのシークレットは現在廃止されているようなので今後は「Firebase Admin SDK」からの設定が必要らしいです。

今回の動作には問題ないですが、ここについても調べてみます。

 

f:id:Collonville:20180917153411j:plain

 

DBのURL

データベースへのURLは「プロジェクトの設定」-->「全般」-->アプリ-->「ウェブアプリにFirebaseを追加」を選択することで確認できます。

 

f:id:Collonville:20180917154121j:plain

 

C#でコードを書くときにこのDBシークレットキーとURLが必要になるのでメモっておいてください!

 

C#プロジェクトの作成

みんな大好きVisual StudioからC#のコンソールアプリを作成します。

f:id:Collonville:20180917154455j:plain

 

C#でゴリゴリ書くのもいいですが、せっかくなのでFirebase REST APIをラッパーしたFireSharpを使います。

 

github.com

 

Visual Studioのパッケージマネージャーコンソールから「Install-Package FireSharp」と打ってインストール。

 f:id:Collonville:20180917161149j:plain

 

さてコードですが、ラッパーのおかげで単純にテキストを送信する内容だったらこの程度でできます。


AuthSecretとBasePathにさきほどメモったDBシークレットキーとURLを記入し、実行すると「Hello, Firebase!!!」がDBの「chats/」下に格納されます。

 

gistd1d30622b27851dbd2a657396cdbfbee

 

実行後にFirebaseプロジェクトのDatabaseを見ると「Realtime Database」が作成されていることが確認できます。

 

f:id:Collonville:20180917160517j:plain



中身を見ると、先ほど送信したメッセージが格納されています!!
あら簡単!!!

画像は「!!!」の部分が見切れていますがちゃんと入っているので安心を

f:id:Collonville:20180917160701j:plain

ちなみにコードのresonceのbodyを見ると各メッセージのIDが確認できます。

まとめ

今回は、Firebaseを使ってクライアントからサーバーにメッセージを格納する処理を作成しました。

単純ですが書いたコードは僅かで実現できたのは確かに便利!

 

ですがFirebaseの魅力はまだ発揮できていないので、次回からチャットサービスの作成までやっていきますね!!