3.1K Views
July 21, 21
スライド概要
Firebase Realtime Database を C# の Azure Functions から利用してみたところ、とても簡単に実現できたので、その紹介です。
30代後半から発信活動を始めて人生が楽しくなりました。 主にC#/設計技法/マネジメント/チームビルディングの情報を発信します。 デブサミ2020関西ベストスピーカー賞1位。 Microsoft Build 2022 スピーカー。 ITエンジニア向けの月刊誌「Software Design」2022年4月号より連載記事を執筆中。 デンソークリエイト所属。発言は個人の見解。
Firebase Realtime Databaseを C#から利用する Serverless LT初心者向け 小島 優介 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. /65
はじめに Firebase Realtime Database を C# の Azure Functions から利用してみたところ とても簡単に実現できたので、その紹介です Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 2 /65
自己紹介 名前:小島 優介 所属:デンソークリエイト 活動実績: C#でのツール開発15年(現在はエンジニアリングマネージャー) デブサミ2020関西 ベストスピーカー賞1位 https://codezine.jp/article/detail/12919 Twitter:@kojimadev https://twitter.com/kojimadev Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 3 /65
• • • • Firebase Realtime Database とは C#での使い方 Azure Functionsで利用 まとめ Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 4 /65
Firebase Realtime Database とは NoSQL クラウド データベースでデータの保管と同期を行うことが できます。データはすべてのクライアントにわたってリアルタイムで 同期され、アプリがオフラインになっても引き続き使用できます。 公式ページは以下参照。 https://firebase.google.com/docs/database?hl=ja Firebaeにはもう1つ Cloud Firestore というデータベースがあり、 それとの違いは、インポート・エクスポート・一括更新に強く、 書き込み・読み込みの頻度が高い場合にリーズナブルな所。 容量1GBまでは無料利用可能。 2つのデータベースの比較は以下参照。 https://techblog.kayac.com/rtdb-vs-firestore Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 5 /65
• • • • Firebase Realtime Database とは C#での使い方 Azure Functionsで利用 まとめ Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 6 /65
C#で利用できるライブラリ FirebaseDatabase.net というライブラリを使えば 簡単に Firebase Realtime Database を利用できる 公式サイトは以下参照。 https://github.com/step-up-labs/firebase-database-dotnet Nuget という C#でのパッケージマネージャから ダウンロードしてインストール可能。 以降で、このライブラリの利用方法を紹介。 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 7 /65
認証方法(サーバー側で secret を利用) 最もシンプルな認証方法は、サーバー側での利用の際に Firebase Realtime Database の secret と URL の2つを設定する。 下図の赤枠部分を書き換えるのみ。 ただし、secret は Googleでは非推奨で、推奨方法は以下参照。 https://firebase.google.com/docs/admin/setup?hl=ja#c_1 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 8 /65
データの取得方法 FirebaseClientクラスのインスタンスを作って Childメソッドでパスを指定して OrderByXXXメソッドで取得する順序を指定して 取得できる Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 9 /65
データの取得の例 右図のデータがある場合に items 以下の要素一覧を IntValueの昇順で 任意のクラス T のコレクションで 取得したい場合は 下図のように実装する Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 10 /65
データの編集方法 FirebaseClientクラスのインスタンスを作って Childメソッドでパスを指定して PutAsyncメソッドで登録および更新 DeleteAsyncメソッドで削除ができる Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 11 /65
データの編集の例 右図のデータがある場合に “items/XXX” というパスに valueというobject型の変数で 追加または更新したい場合は 下図のように実装する Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 12 /65
• • • • Firebase Realtime Database とは C#での使い方 Azure Functionsで利用 まとめ Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 13 /65
簡易利用できるインターフェイスを作成 右図のように 簡単な更新、削除、取得を 行うインターフェイスを作成 こちらのリポジトリで公開 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 14 /65
簡易利用できるインターフェイスの利用方法 呼び出し元のプロジェクトで、下図のようなコードを書けば 簡易利用できるインターフェイスを用いてFirebaseが利用できる これを用いてAzure Functionsで利用する例を以降で紹介 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 15 /65
Azure Functions でデータ取得するAPI作成 Azure Functions は Visual Studioでプロジェクト作成すると ひな形が作成されるため、メソッドの中身を書くだけで実現できる 赤枠の2行を書くだけで、Firebaseからデータを取得できる 行うインターフェイスを作成 Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 16 /65
Azure Functions でデータ編集するAPI作成 データを登録するAPIは、別のメソッドに数行書くだけで作成できる 赤枠の数行を書くだけで、Firebaseにデータを登録できる Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 17 /65
• • • • Firebase Realtime Database とは C#での使い方 Azure Functionsで利用 まとめ Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 18 /65
まとめ Firebase Realtime Database は C#から簡単に利用できる Azure Functions から利用することも簡単 本発表で紹介したソースコードは 以下のリポジトリで公開 https://github.com/kojimadev/FirebaseRealtimeDatabaseService Developers Summit 2020 KANSAI / 2020-8-27 / Yusuke Kojima © DENSO CORPORATION All Rights Reserved. 19 /65