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

More Related Content

PDF
本番用のDBに対してやってしまった話
PDF
リモートワークで楽しく開発するためのチームビルディング
PDF
Azure のApp Center でアプリの 使用状況を分析する
PPTX
楽楽精算iOSアプリのCI/CD紹介
PPTX
Visual Studio 2019で始める「WPF on .NET Core 3.0」開発
PDF
Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -
PDF
【13-B-6】Hondaの生産技術屋さんがソフトウェア開発でアジャイルを初導入し組織変革に挑戦
PPTX
消滅都市5周年の運営を支えた技術とその歴史
本番用のDBに対してやってしまった話
リモートワークで楽しく開発するためのチームビルディング
Azure のApp Center でアプリの 使用状況を分析する
楽楽精算iOSアプリのCI/CD紹介
Visual Studio 2019で始める「WPF on .NET Core 3.0」開発
Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -
【13-B-6】Hondaの生産技術屋さんがソフトウェア開発でアジャイルを初導入し組織変革に挑戦
消滅都市5周年の運営を支えた技術とその歴史

What's hot (19)

PPTX
Another Visual Studio - Visual Studio for Mac
PPSX
Settings SyncとCodespaceで体験する新世代へのパラダイムシフト
PDF
20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと
PDF
Windows 10 20H2はどうなる
PDF
Slack の Incoming Webhookで簡易なフィードバック管理
PDF
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
PDF
エクストリーム・プログラミング開発におけるUIテスト #yjbonfire
PDF
処理時間5分が6秒に!大手製造業におけるWijmo活用術
PDF
Google Container Engine と Kubernetes で 無理をしないコンテナ管理
PDF
20201126GAS活#7「【祝】詳解! Google Apps Script完全入門第2版」
PDF
animation_prototype_campfire_design
PDF
Unityゲームにオンラインランキングとゴースト機能を追加しよう!
PDF
kintone 開発者ライセンスの取得
PPTX
Androidエンジニアになってからの1年間の感想と振り返り
PDF
【Code for向け】保育園・消火栓mapを作れるアプリを作ろう!
PPTX
DataEngConf NYC’18 セッションサマリー #1
PDF
Blazor Server テンプレート解説
PDF
ACRi_gdep-hayashi-v2
Another Visual Studio - Visual Studio for Mac
Settings SyncとCodespaceで体験する新世代へのパラダイムシフト
20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと
Windows 10 20H2はどうなる
Slack の Incoming Webhookで簡易なフィードバック管理
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
エクストリーム・プログラミング開発におけるUIテスト #yjbonfire
処理時間5分が6秒に!大手製造業におけるWijmo活用術
Google Container Engine と Kubernetes で 無理をしないコンテナ管理
20201126GAS活#7「【祝】詳解! Google Apps Script完全入門第2版」
animation_prototype_campfire_design
Unityゲームにオンラインランキングとゴースト機能を追加しよう!
kintone 開発者ライセンスの取得
Androidエンジニアになってからの1年間の感想と振り返り
【Code for向け】保育園・消火栓mapを作れるアプリを作ろう!
DataEngConf NYC’18 セッションサマリー #1
Blazor Server テンプレート解説
ACRi_gdep-hayashi-v2
Ad

Similar to Firebase Realtime Database を C# から利用する (20)

PDF
KustomizeとGitHub Actionsを利用したUbieのデプロイの仕組み
PDF
Cloud Foundry Summit 2017 Recap
PDF
Azure の App Center でアプリの 使用状況を分析する
PDF
scrum_fest_osaka_2020
PDF
Another works_リードエンジニア向け採用資料.pdf
PDF
Decode19 cd42 fixer_public_0601
PDF
Decode19 cd42 fixer_public_0601
PPTX
CData Sync × Google BigQuery 3ステップで各データソースとのデータ連携を実現
PPTX
ノンコーディング・超高速のApi 開発・運用基盤「cdata api server」のご紹介
PPTX
CDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきます
PPTX
kintoneのデータをSQLで操作!? ~Drivers/Gateway/Sync 徹底比較~
PPTX
Excel × Google BigQuery CData Driver で BigQuery とのデータ連携を実現
PPTX
超基本! AWS 認定 SA アソシエイト 受験準備 (2020年3月10日)
PDF
Infrastructure as Code (IaC) 談義 2022
PDF
2023/10/30_CloudOperatorDaysTokyo_開発チームと共に取り組むGCPリソースのGitOps化実践
PPTX
(2017.4.27) IBM watson developer cloudのアプリケーションログを可視化する
PDF
インフラチームの歴史とこれから
PDF
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
PDF
InterBEE 2018 AWS & AWS Elemental Booth Review
PDF
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
KustomizeとGitHub Actionsを利用したUbieのデプロイの仕組み
Cloud Foundry Summit 2017 Recap
Azure の App Center でアプリの 使用状況を分析する
scrum_fest_osaka_2020
Another works_リードエンジニア向け採用資料.pdf
Decode19 cd42 fixer_public_0601
Decode19 cd42 fixer_public_0601
CData Sync × Google BigQuery 3ステップで各データソースとのデータ連携を実現
ノンコーディング・超高速のApi 開発・運用基盤「cdata api server」のご紹介
CDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきます
kintoneのデータをSQLで操作!? ~Drivers/Gateway/Sync 徹底比較~
Excel × Google BigQuery CData Driver で BigQuery とのデータ連携を実現
超基本! AWS 認定 SA アソシエイト 受験準備 (2020年3月10日)
Infrastructure as Code (IaC) 談義 2022
2023/10/30_CloudOperatorDaysTokyo_開発チームと共に取り組むGCPリソースのGitOps化実践
(2017.4.27) IBM watson developer cloudのアプリケーションログを可視化する
インフラチームの歴史とこれから
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
InterBEE 2018 AWS & AWS Elemental Booth Review
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
Ad

More from Yusuke Kojima (6)

PDF
(SPI JAPAN 2020) 組織と個人が内発的動機で継続的に成長し続けるための実践手法
PDF
組織と個人が内発的動機により継続的に成長するための施策
PDF
徹底的にアウトプットを伴う育成をやってみた話
PDF
リモートワークで楽しく開発するためのチームビルディング
PDF
生産性を倍にしたハピネスチームビルディング
PDF
生産性を2倍にしたチームビルディング
(SPI JAPAN 2020) 組織と個人が内発的動機で継続的に成長し続けるための実践手法
組織と個人が内発的動機により継続的に成長するための施策
徹底的にアウトプットを伴う育成をやってみた話
リモートワークで楽しく開発するためのチームビルディング
生産性を倍にしたハピネスチームビルディング
生産性を2倍にしたチームビルディング

Firebase Realtime Database を C# から利用する

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