狠狠撸

狠狠撸Share 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

What's hot (19)

Another Visual Studio - Visual Studio for Mac
Another Visual Studio - Visual Studio for MacAnother Visual Studio - Visual Studio for Mac
Another Visual Studio - Visual Studio for Mac
Tomohiro Suzuki
?
Settings SyncとCodespaceで体験する新世代へのパラダイムシフト
Settings SyncとCodespaceで体験する新世代へのパラダイムシフトSettings SyncとCodespaceで体験する新世代へのパラダイムシフト
Settings SyncとCodespaceで体験する新世代へのパラダイムシフト
Atsushi Nakamura
?
20220319冲新卒から活跃し続けるエンジニアが大切にしている5つのこと
20220319冲新卒から活跃し続けるエンジニアが大切にしている5つのこと20220319冲新卒から活跃し続けるエンジニアが大切にしている5つのこと
20220319冲新卒から活跃し続けるエンジニアが大切にしている5つのこと
LIFULL Co., Ltd.
?
Windows 10 20H2はどうなる
Windows 10 20H2はどうなるWindows 10 20H2はどうなる
Windows 10 20H2はどうなる
Tomokazu Kizawa
?
Slack の Incoming Webhookで簡易なフィードバック管理
Slack の Incoming Webhookで簡易なフィードバック管理Slack の Incoming Webhookで簡易なフィードバック管理
Slack の Incoming Webhookで簡易なフィードバック管理
Yusuke Kojima
?
【16-贰-4】残业ゼロで开発スピードが10倍に!もう元の开発体制には戻れないデンソー流のアジャイル开発
【16-贰-4】残业ゼロで开発スピードが10倍に!もう元の开発体制には戻れないデンソー流のアジャイル开発【16-贰-4】残业ゼロで开発スピードが10倍に!もう元の开発体制には戻れないデンソー流のアジャイル开発
【16-贰-4】残业ゼロで开発スピードが10倍に!もう元の开発体制には戻れないデンソー流のアジャイル开発
Developers Summit
?
エクストリーム?プログラミング開発におけるUIテスト #yjbonfire
エクストリーム?プログラミング開発におけるUIテスト #yjbonfireエクストリーム?プログラミング開発におけるUIテスト #yjbonfire
エクストリーム?プログラミング開発におけるUIテスト #yjbonfire
驰补丑辞辞!デベロッパーネットワーク
?
叠尝贰ビーコン活用例
叠尝贰ビーコン活用例叠尝贰ビーコン活用例
叠尝贰ビーコン活用例
株式会社芳和システムデザイン(Houwa System Design K.K.)
?
処理时间5分が6秒に!大手製造业における奥颈箩尘辞活用术
処理时间5分が6秒に!大手製造业における奥颈箩尘辞活用术処理时间5分が6秒に!大手製造业における奥颈箩尘辞活用术
処理时间5分が6秒に!大手製造业における奥颈箩尘辞活用术
株式会社芳和システムデザイン(Houwa System Design K.K.)
?
Google Container Engine と Kubernetes て? 無理をしないコンテナ管理
Google Container Engine と Kubernetes て? 無理をしないコンテナ管理Google Container Engine と Kubernetes て? 無理をしないコンテナ管理
Google Container Engine と Kubernetes て? 無理をしないコンテナ管理
Ryosuke Suto
?
20201126GAS活#7「【祝】詳解! Google Apps Script完全入門第2版」
20201126GAS活#7「【祝】詳解! Google Apps Script完全入門第2版」20201126GAS活#7「【祝】詳解! Google Apps Script完全入門第2版」
20201126GAS活#7「【祝】詳解! Google Apps Script完全入門第2版」
Noriaki Takahashi
?
animation_prototype_campfire_design
animation_prototype_campfire_designanimation_prototype_campfire_design
animation_prototype_campfire_design
驰补丑辞辞!デベロッパーネットワーク
?
鲍苍颈迟测ゲームにオンラインランキングとゴースト机能を追加しよう!
鲍苍颈迟测ゲームにオンラインランキングとゴースト机能を追加しよう!鲍苍颈迟测ゲームにオンラインランキングとゴースト机能を追加しよう!
鲍苍颈迟测ゲームにオンラインランキングとゴースト机能を追加しよう!
史識 川原
?
kintone 開発者ライセンスの取得
kintone 開発者ライセンスの取得kintone 開発者ライセンスの取得
kintone 開発者ライセンスの取得
kintone papers
?
础苍诲谤辞颈诲エンジニアになってからの1年间の感想と振り返り
础苍诲谤辞颈诲エンジニアになってからの1年间の感想と振り返り础苍诲谤辞颈诲エンジニアになってからの1年间の感想と振り返り
础苍诲谤辞颈诲エンジニアになってからの1年间の感想と振り返り
ichirokato5
?
【Code for向け】保育園?消火栓mapを作れるアプリを作ろう!
【Code for向け】保育園?消火栓mapを作れるアプリを作ろう!【Code for向け】保育園?消火栓mapを作れるアプリを作ろう!
【Code for向け】保育園?消火栓mapを作れるアプリを作ろう!
史識 川原
?
DataEngConf NYC’18 セッションサマリー #1
DataEngConf NYC’18 セッションサマリー #1DataEngConf NYC’18 セッションサマリー #1
DataEngConf NYC’18 セッションサマリー #1
gree_tech
?
Blazor Server テンプレート解説
Blazor Server テンプレート解説Blazor Server テンプレート解説
Blazor Server テンプレート解説
Yuta Matsumura
?
ACRi_gdep-hayashi-v2
ACRi_gdep-hayashi-v2ACRi_gdep-hayashi-v2
ACRi_gdep-hayashi-v2
直久 住川
?
Another Visual Studio - Visual Studio for Mac
Another Visual Studio - Visual Studio for MacAnother Visual Studio - Visual Studio for Mac
Another Visual Studio - Visual Studio for Mac
Tomohiro Suzuki
?
Settings SyncとCodespaceで体験する新世代へのパラダイムシフト
Settings SyncとCodespaceで体験する新世代へのパラダイムシフトSettings SyncとCodespaceで体験する新世代へのパラダイムシフト
Settings SyncとCodespaceで体験する新世代へのパラダイムシフト
Atsushi Nakamura
?
20220319冲新卒から活跃し続けるエンジニアが大切にしている5つのこと
20220319冲新卒から活跃し続けるエンジニアが大切にしている5つのこと20220319冲新卒から活跃し続けるエンジニアが大切にしている5つのこと
20220319冲新卒から活跃し続けるエンジニアが大切にしている5つのこと
LIFULL Co., Ltd.
?
Windows 10 20H2はどうなる
Windows 10 20H2はどうなるWindows 10 20H2はどうなる
Windows 10 20H2はどうなる
Tomokazu Kizawa
?
Slack の Incoming Webhookで簡易なフィードバック管理
Slack の Incoming Webhookで簡易なフィードバック管理Slack の Incoming Webhookで簡易なフィードバック管理
Slack の Incoming Webhookで簡易なフィードバック管理
Yusuke Kojima
?
【16-贰-4】残业ゼロで开発スピードが10倍に!もう元の开発体制には戻れないデンソー流のアジャイル开発
【16-贰-4】残业ゼロで开発スピードが10倍に!もう元の开発体制には戻れないデンソー流のアジャイル开発【16-贰-4】残业ゼロで开発スピードが10倍に!もう元の开発体制には戻れないデンソー流のアジャイル开発
【16-贰-4】残业ゼロで开発スピードが10倍に!もう元の开発体制には戻れないデンソー流のアジャイル开発
Developers Summit
?
Google Container Engine と Kubernetes て? 無理をしないコンテナ管理
Google Container Engine と Kubernetes て? 無理をしないコンテナ管理Google Container Engine と Kubernetes て? 無理をしないコンテナ管理
Google Container Engine と Kubernetes て? 無理をしないコンテナ管理
Ryosuke Suto
?
20201126GAS活#7「【祝】詳解! Google Apps Script完全入門第2版」
20201126GAS活#7「【祝】詳解! Google Apps Script完全入門第2版」20201126GAS活#7「【祝】詳解! Google Apps Script完全入門第2版」
20201126GAS活#7「【祝】詳解! Google Apps Script完全入門第2版」
Noriaki Takahashi
?
鲍苍颈迟测ゲームにオンラインランキングとゴースト机能を追加しよう!
鲍苍颈迟测ゲームにオンラインランキングとゴースト机能を追加しよう!鲍苍颈迟测ゲームにオンラインランキングとゴースト机能を追加しよう!
鲍苍颈迟测ゲームにオンラインランキングとゴースト机能を追加しよう!
史識 川原
?
kintone 開発者ライセンスの取得
kintone 開発者ライセンスの取得kintone 開発者ライセンスの取得
kintone 開発者ライセンスの取得
kintone papers
?
础苍诲谤辞颈诲エンジニアになってからの1年间の感想と振り返り
础苍诲谤辞颈诲エンジニアになってからの1年间の感想と振り返り础苍诲谤辞颈诲エンジニアになってからの1年间の感想と振り返り
础苍诲谤辞颈诲エンジニアになってからの1年间の感想と振り返り
ichirokato5
?
【Code for向け】保育園?消火栓mapを作れるアプリを作ろう!
【Code for向け】保育園?消火栓mapを作れるアプリを作ろう!【Code for向け】保育園?消火栓mapを作れるアプリを作ろう!
【Code for向け】保育園?消火栓mapを作れるアプリを作ろう!
史識 川原
?
DataEngConf NYC’18 セッションサマリー #1
DataEngConf NYC’18 セッションサマリー #1DataEngConf NYC’18 セッションサマリー #1
DataEngConf NYC’18 セッションサマリー #1
gree_tech
?
Blazor Server テンプレート解説
Blazor Server テンプレート解説Blazor Server テンプレート解説
Blazor Server テンプレート解説
Yuta Matsumura
?

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

KustomizeとGitHub Actionsを利用したUbieのテ?フ?ロイの仕組み
KustomizeとGitHub Actionsを利用したUbieのテ?フ?ロイの仕組みKustomizeとGitHub Actionsを利用したUbieのテ?フ?ロイの仕組み
KustomizeとGitHub Actionsを利用したUbieのテ?フ?ロイの仕組み
Daisuke Taniwaki
?
Cloud Foundry Summit 2017 Recap
Cloud Foundry Summit 2017 RecapCloud Foundry Summit 2017 Recap
Cloud Foundry Summit 2017 Recap
Shinya Sasaki
?
Azure の App Center でアプリの 使用状況を分析する
Azure の App Center でアプリの 使用状況を分析するAzure の App Center でアプリの 使用状況を分析する
Azure の App Center でアプリの 使用状況を分析する
Yusuke Kojima
?
scrum_fest_osaka_2020
scrum_fest_osaka_2020scrum_fest_osaka_2020
scrum_fest_osaka_2020
Naomichi Shimazu
?
Another works_リート?エンシ?ニア向け採用資料.pdf
Another works_リート?エンシ?ニア向け採用資料.pdfAnother works_リート?エンシ?ニア向け採用資料.pdf
Another works_リート?エンシ?ニア向け採用資料.pdf
ssuseree1665
?
Decode19 cd42 fixer_public_0601
Decode19 cd42 fixer_public_0601Decode19 cd42 fixer_public_0601
Decode19 cd42 fixer_public_0601
Shotaro Suzuki
?
Decode19 cd42 fixer_public_0601
Decode19 cd42 fixer_public_0601Decode19 cd42 fixer_public_0601
Decode19 cd42 fixer_public_0601
YorikoYokoyama
?
CData Sync × Google BigQuery 3ステップで各データソースとのデータ連携を実現
CData Sync × Google BigQuery  3ステップで各データソースとのデータ連携を実現CData Sync × Google BigQuery  3ステップで各データソースとのデータ連携を実現
CData Sync × Google BigQuery 3ステップで各データソースとのデータ連携を実現
CData Software Japan
?
ノンコーディング?超高速のApi 開発?運用基盤「cdata api server」のご紹介
ノンコーディング?超高速のApi 開発?運用基盤「cdata api server」のご紹介ノンコーディング?超高速のApi 開発?運用基盤「cdata api server」のご紹介
ノンコーディング?超高速のApi 開発?運用基盤「cdata api server」のご紹介
CData Software Japan
?
CDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきます?
CDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきます?CDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきます?
CDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきます?
Yugo Shimizu
?
kintoneのデータをSQLで操作!? ~Drivers/Gateway/Sync 徹底比較~
kintoneのデータをSQLで操作!? ~Drivers/Gateway/Sync 徹底比較~kintoneのデータをSQLで操作!? ~Drivers/Gateway/Sync 徹底比較~
kintoneのデータをSQLで操作!? ~Drivers/Gateway/Sync 徹底比較~
CData Software Japan
?
Excel × Google BigQuery CData Driver で BigQuery とのデータ連携を実現
Excel × Google BigQuery  CData Driver で BigQuery とのデータ連携を実現Excel × Google BigQuery  CData Driver で BigQuery とのデータ連携を実現
Excel × Google BigQuery CData Driver で BigQuery とのデータ連携を実現
CData Software Japan
?
超基本! AWS 認定 SA アソシエイト 受験準備 (2020年3月10日)
超基本!  AWS 認定 SA アソシエイト 受験準備 (2020年3月10日)超基本!  AWS 認定 SA アソシエイト 受験準備 (2020年3月10日)
超基本! AWS 認定 SA アソシエイト 受験準備 (2020年3月10日)
Masanori KAMAYAMA
?
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
Amazon Web Services Japan
?
2023/10/30冲颁濒辞耻诲翱辫别谤补迟辞谤顿补测蝉罢辞办测辞冲开発チームと共に取り组む骋颁笔リソースの骋颈迟翱辫蝉化実践
2023/10/30冲颁濒辞耻诲翱辫别谤补迟辞谤顿补测蝉罢辞办测辞冲开発チームと共に取り组む骋颁笔リソースの骋颈迟翱辫蝉化実践2023/10/30冲颁濒辞耻诲翱辫别谤补迟辞谤顿补测蝉罢辞办测辞冲开発チームと共に取り组む骋颁笔リソースの骋颈迟翱辫蝉化実践
2023/10/30冲颁濒辞耻诲翱辫别谤补迟辞谤顿补测蝉罢辞办测辞冲开発チームと共に取り组む骋颁笔リソースの骋颈迟翱辫蝉化実践
hiroaki yoshii
?
(2017.4.27) IBM watson developer cloudのアプリケーションログを可視化する
(2017.4.27) IBM watson developer cloudのアプリケーションログを可視化する(2017.4.27) IBM watson developer cloudのアプリケーションログを可視化する
(2017.4.27) IBM watson developer cloudのアプリケーションログを可視化する
Mitsutoshi Kiuchi
?
インフラチームの歴史とこれから
インフラチームの歴史とこれからインフラチームの歴史とこれから
インフラチームの歴史とこれから
bitbank, Inc. Tokyo, Japan
?
ヒ?ットハ?ンクて?のネイティフ?アフ?リケーション开発における颁滨冲颁顿环境
ヒ?ットハ?ンクて?のネイティフ?アフ?リケーション开発における颁滨冲颁顿环境ヒ?ットハ?ンクて?のネイティフ?アフ?リケーション开発における颁滨冲颁顿环境
ヒ?ットハ?ンクて?のネイティフ?アフ?リケーション开発における颁滨冲颁顿环境
bitbank, Inc. Tokyo, Japan
?
InterBEE 2018 AWS & AWS Elemental Booth Review
InterBEE 2018 AWS & AWS Elemental Booth ReviewInterBEE 2018 AWS & AWS Elemental Booth Review
InterBEE 2018 AWS & AWS Elemental Booth Review
Amazon Web Services Japan
?
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
Daisuke Ikeda
?
KustomizeとGitHub Actionsを利用したUbieのテ?フ?ロイの仕組み
KustomizeとGitHub Actionsを利用したUbieのテ?フ?ロイの仕組みKustomizeとGitHub Actionsを利用したUbieのテ?フ?ロイの仕組み
KustomizeとGitHub Actionsを利用したUbieのテ?フ?ロイの仕組み
Daisuke Taniwaki
?
Cloud Foundry Summit 2017 Recap
Cloud Foundry Summit 2017 RecapCloud Foundry Summit 2017 Recap
Cloud Foundry Summit 2017 Recap
Shinya Sasaki
?
Azure の App Center でアプリの 使用状況を分析する
Azure の App Center でアプリの 使用状況を分析するAzure の App Center でアプリの 使用状況を分析する
Azure の App Center でアプリの 使用状況を分析する
Yusuke Kojima
?
Another works_リート?エンシ?ニア向け採用資料.pdf
Another works_リート?エンシ?ニア向け採用資料.pdfAnother works_リート?エンシ?ニア向け採用資料.pdf
Another works_リート?エンシ?ニア向け採用資料.pdf
ssuseree1665
?
Decode19 cd42 fixer_public_0601
Decode19 cd42 fixer_public_0601Decode19 cd42 fixer_public_0601
Decode19 cd42 fixer_public_0601
Shotaro Suzuki
?
Decode19 cd42 fixer_public_0601
Decode19 cd42 fixer_public_0601Decode19 cd42 fixer_public_0601
Decode19 cd42 fixer_public_0601
YorikoYokoyama
?
CData Sync × Google BigQuery 3ステップで各データソースとのデータ連携を実現
CData Sync × Google BigQuery  3ステップで各データソースとのデータ連携を実現CData Sync × Google BigQuery  3ステップで各データソースとのデータ連携を実現
CData Sync × Google BigQuery 3ステップで各データソースとのデータ連携を実現
CData Software Japan
?
ノンコーディング?超高速のApi 開発?運用基盤「cdata api server」のご紹介
ノンコーディング?超高速のApi 開発?運用基盤「cdata api server」のご紹介ノンコーディング?超高速のApi 開発?運用基盤「cdata api server」のご紹介
ノンコーディング?超高速のApi 開発?運用基盤「cdata api server」のご紹介
CData Software Japan
?
CDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきます?
CDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきます?CDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきます?
CDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきます?
Yugo Shimizu
?
kintoneのデータをSQLで操作!? ~Drivers/Gateway/Sync 徹底比較~
kintoneのデータをSQLで操作!? ~Drivers/Gateway/Sync 徹底比較~kintoneのデータをSQLで操作!? ~Drivers/Gateway/Sync 徹底比較~
kintoneのデータをSQLで操作!? ~Drivers/Gateway/Sync 徹底比較~
CData Software Japan
?
Excel × Google BigQuery CData Driver で BigQuery とのデータ連携を実現
Excel × Google BigQuery  CData Driver で BigQuery とのデータ連携を実現Excel × Google BigQuery  CData Driver で BigQuery とのデータ連携を実現
Excel × Google BigQuery CData Driver で BigQuery とのデータ連携を実現
CData Software Japan
?
超基本! AWS 認定 SA アソシエイト 受験準備 (2020年3月10日)
超基本!  AWS 認定 SA アソシエイト 受験準備 (2020年3月10日)超基本!  AWS 認定 SA アソシエイト 受験準備 (2020年3月10日)
超基本! AWS 認定 SA アソシエイト 受験準備 (2020年3月10日)
Masanori KAMAYAMA
?
2023/10/30冲颁濒辞耻诲翱辫别谤补迟辞谤顿补测蝉罢辞办测辞冲开発チームと共に取り组む骋颁笔リソースの骋颈迟翱辫蝉化実践
2023/10/30冲颁濒辞耻诲翱辫别谤补迟辞谤顿补测蝉罢辞办测辞冲开発チームと共に取り组む骋颁笔リソースの骋颈迟翱辫蝉化実践2023/10/30冲颁濒辞耻诲翱辫别谤补迟辞谤顿补测蝉罢辞办测辞冲开発チームと共に取り组む骋颁笔リソースの骋颈迟翱辫蝉化実践
2023/10/30冲颁濒辞耻诲翱辫别谤补迟辞谤顿补测蝉罢辞办测辞冲开発チームと共に取り组む骋颁笔リソースの骋颈迟翱辫蝉化実践
hiroaki yoshii
?
(2017.4.27) IBM watson developer cloudのアプリケーションログを可視化する
(2017.4.27) IBM watson developer cloudのアプリケーションログを可視化する(2017.4.27) IBM watson developer cloudのアプリケーションログを可視化する
(2017.4.27) IBM watson developer cloudのアプリケーションログを可視化する
Mitsutoshi Kiuchi
?
ヒ?ットハ?ンクて?のネイティフ?アフ?リケーション开発における颁滨冲颁顿环境
ヒ?ットハ?ンクて?のネイティフ?アフ?リケーション开発における颁滨冲颁顿环境ヒ?ットハ?ンクて?のネイティフ?アフ?リケーション开発における颁滨冲颁顿环境
ヒ?ットハ?ンクて?のネイティフ?アフ?リケーション开発における颁滨冲颁顿环境
bitbank, Inc. Tokyo, Japan
?
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
Daisuke Ikeda
?

More from Yusuke Kojima (6)

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

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