SINKCAPITAL
SINKCAPITAL
Comapny Blog
AWSをやめてfirebaseを使い始めて感じたメリットやデメリットとそれの対応策(LT登壇内容)
techeventpersonal

背景

 名古屋出張で知り合った友人の紹介でGCP・firebase関連の勉強会LTをさせていただく機会をいただくことができ、 以下2イベントにて登壇を行ったのでその内容をブログにも書き留めておこうと思います。

詳細は以下スライドに記載していますが、 AWSを使ったwebアプリ作成方法との比較という形でfirebaseのメリットデメリットをまとめています。

https://www.slideshare.net/YujiSakurai/20210326awss3-hostingfirebase

firebaseを使い始めて感じていたメリット・デメリット

メリット

 firebaseを使い始めて感じていたメリットは以下の3つになります。 (3つ並べつつ1つ目が全てを含んでしまっています・・・笑)

  • 簡単・安くて・便利
  • 権限管理がやりやすい
  • (おそらく)認証がやりやすい

2つ目の権限管理については人によって分かれており、 ケースによってやりやすい・やりにくいは変わってくるかもしれないです。 ただ僕の場合は「ROLEがADMINとなっている人は**まで見れる」と言った条件を付けたかったので、 AWSのAPI側で頑張るよりかはやりやすいケースが多かったと感じています。

デメリット

 firebaseを使っていて感じたデメリット(不便さ)は以下の3つになります。

  • firebase functionsで9分以内に終わらない処理の実行環境がない(僕の場合PyOcrを使いたかった)
  • N:Nをfirestoreで実現するのが難しい
  • DBの更新でPromiseの嵐になる

ただLTの後に詳しい方々の意見を伺うことができ、いくつかのデメリットは回避方法がありそうでした。 (LT後に周りの方々の意見を伺うことができるのが勉強会におけるいちばんのメリットですね)

教えていただいたデメリット回避方法

firestoreは参照時でなく格納時に冗長してデータを持たせる

 まず1つ目がデメリットの2,3個目に関連する話ですが、 firestore(NoSQL)はデータ格納の思想がRDBと大きく違っているというものでした。 RDBに慣れている身からすれば「正規化で冗長な情報を削る」ことをしがちですが、 firestoreだとむしろ助長な情報を持たせるのが正しいようです。 これは「いつ欲しいデータを組み立てるか」の違いなのですが、 まとめると以下の表のような形になります。

段階RDBfirestore
データ取得時正規化を行いデータの助長化を防ぐ参照時のことを考えデータを組み立てておく(冗長を許容)
データ参照時SQLでテーブルを結合し欲しいデータを組み立てる組み上がったデータを参照するのみ

思想の違いがどこからくるのかはわからないですが、 firestoreは参照時の処理をなるべく少なくして応答速度をあげることを考えてるんじゃないかと推測しています。 なおfirestoreのデータ格納時の組み立て(データ伝搬)にfirebase functionが活躍するようです。

FirestoreのDatastoreモード

 「firebaseってなんでSQL投げられないんだろう...」ってぼやいていたら教えてもらいました。 Datastoreモードは使ったことがある方がいらっしゃらず珍しい機能のようですが、 時間がある際に使い勝手等調べてみようと思います。

GASを使えば簡易OCRを行うことができる

 最後がデメリット1つ目に関連する話で、 GASを使えば簡単なバッチができる+OCRの場合は簡易的にやる方法があるというものです。 やり方がかなりトリッキーなので実際に使うかどうかは悩みどころですが、 全く新しい発想だったのでとても興味深かったです。

感想

 今回firebaseに関して登壇した内容をまとめさせていただきました。 firebaseは初めて数ヶ月の状態だったので少し迷ったのですが、 自分の悩みなどを発信することで有識者の方からいろいろ教えていただくことができとても良い機会でした。 今後も発信量を増やし引き続き技術面の向上に努めていこうと思います。

参考リンク

Nuxt上でのd3を利用した散布図の作成方法
櫻井 裕司
2021/10/29 櫻井 裕司
techdataAnalytics
クリック可能な散布図をNuxtjs上で作成する場合にd3.jsが汎用性が高く便利でした。利用するにあたって難しかった点などを備考録としてまとめています。
アクセスログを可視化しGAのデータを直感的に理解できる型態にする試み(ネットワーク型)
櫻井 裕司
2021/09/05 櫻井 裕司
techdataAnalytics
ビジネスに活きる分析を進める上で弊社では「理解できる」ことを重要と考えており、特に直感的理解は可視化を進める上で特に重要だと考える内容の一つです。弊社では様々なお客様のデータ分析を進める上で常により示唆の大きい可視化を追求しており、今回はその中で最近試みているネットワーク側の可視化についてまとめたいと思います。
代表櫻井による特別講演会が白陵高等学校で開かれました
櫻井 裕司
2021/07/31 櫻井 裕司
eventpersonal
2021年の夏に兵庫県の私立白陵高等学校において、代表櫻井による特別講演会を開催いたしました。今振り返って高校の頃の自分に伝えたいことについてお話しました。
Nuxtで動的ページを随時追加する場合にNot Foundとなる
櫻井 裕司
2021/05/31 櫻井 裕司
tech
Nuxtで動的ページを登録する方法はありますが、登録後に随時コンテンツが追加される際はNot Foundとなってしまうので、そう言った際の対処方法について
GKEをやめてCloud Runを始めてみました
櫻井 裕司
2021/04/19 櫻井 裕司
tech
firebaseで構築したシステムの裏で動かすバッチの負荷が大きく、cloud functionsで終わらなかったためCloud Runを利用してみました。動作確認までの知見等を雑多にまとめてみました。
PWA+SPAのwebアプリ作成にnuxtjs+firebaseがめちゃ便利だった
櫻井 裕司
2021/01/16 櫻井 裕司
tech
PWA+SPAのwebアプリを作る際にnuxt.js+firebaseを合わせて利用すると便利だったので知見を書き留めています
s3のhostingでPWAを導入する方法
櫻井 裕司
2020/12/19 櫻井 裕司
tech
アプリ作成時にpwaが比較されることが多かったですが、実際にpwaを実装した経験がなかったため今回自社サイトをPWA化してみました。
dockerでseleniumを動かしてみる(chrome_headless)
櫻井 裕司
2020/12/06 櫻井 裕司
tech
seleniumの相談をいただくことが増えたため、seleniumの勉強もかねてdockerでの実行テストを行いました
THE DECKのイベントにお邪魔させていただきました
本林 秀和
2020/12/05 本林 秀和
eventpersonal
大学コンソーシアム大阪のイベント@The DECK にお邪魔してきました
flutter(dart)を触ってみた感想
櫻井 裕司
2020/11/18 櫻井 裕司
tech
android向けアプリへの対応も考慮してflutter(dart)を触ってみたので、感想をまとめておこうと思います。理解が深まっていく中で定期的にまとめていければと思います。
代表本林による特別講演会が滝高校で開かれました
本林 秀和
2020/11/07 本林 秀和
eventpersonal
2020年11月7日(土)愛知県の私立滝高校において、代表本林による特別講演会を開催いたしました。IT業界やデータサイエンスについてお話しました。
AWS・GCPを選ぶ際の観点
櫻井 裕司
2020/10/28 櫻井 裕司
tech
AWSかGCPを選ぶ際の観点について書き留めておこうと思います
CloudFormationとterraformの比較
櫻井 裕司
2020/10/04 櫻井 裕司
tech
AWS CloudFormationとterraformの両方を使ってみて感じた違いをまとめてみました。
iosのcallkit周りでできること
櫻井 裕司
2020/08/24 櫻井 裕司
tech
新規事業を検討する上でios(swift)の電話周りでできることを調査したため、調査結果をブログとして残しています。
【個人ブログ】CTOの株運用ブログ_順調な滑り出し
櫻井 裕司
2020/07/19 櫻井 裕司
personalstock
長年放置してた株に少し手を出してみました。自分なりに少し情報整理と分析と予想をしたので記事にしてみます。
総務省特定サービス産業実態調査のデータ分析
櫻井 裕司
2020/07/18 櫻井 裕司
techdataAnalytics
総務省がAPIで市場データを公開しており、分析技術向上と市場感を養うことを目的に定期的に分析を行なっていこうと思います。今回は「特定サービス産業実態調査」について見ていこうと思います。
「お絵かきつみ木バトル」をリリースしました
櫻井 裕司
2020/07/12 櫻井 裕司
techapp
タスク管理を二次元的に行うアプリ「お絵かきつみ木バトル」をリリースしました。SinkCapitalはデータコンサルですが、知見蓄積のため様々な媒体での実験的開発を行っています
総務省工業統計調査のデータ分析
櫻井 裕司
2020/07/11 櫻井 裕司
techdataAnalytics
総務省がAPIで市場データを公開しており、分析技術向上と市場感を養うことを目的に定期的に分析を行なっていこうと思います。今回は「工業統計調査」について見ていこうと思います。
【個人ブログ】CTOが個人的に株をはじめました
櫻井 裕司
2020/07/08 櫻井 裕司
personalstock
長年放置してた株に少し手を出してみました。自分なりに少し情報整理と分析と予想をしたので記事にしてみます。
総務省サービス産業動向調査のデータ分析
櫻井 裕司
2020/07/08 櫻井 裕司
techdataAnalytics
総務省がAPIで市場データを公開しており、分析技術向上と市場感を養うことを目的に定期的に分析を行なっていこうと思います。初回は「サービス産業動向調査」について見ていこうと思います。
タスク管理アプリ「タスククロス」をリリースしました
櫻井 裕司
2020/04/08 櫻井 裕司
techapp
タスク管理を二次元的に行うアプリ「タスククロス」をリリースしました。SinkCapitalはデータコンサルですが、知見蓄積のため様々な媒体での実験的開発を行っています
【terraform】gcpでcicd環境を構築する方法
櫻井 裕司
2020/01/04 櫻井 裕司
tech
企業サイトはAWSを利用しているのですが、要件によってはGCPの方が適している場合もあるため、GCPでのcicd構築も行いました。AWSと比較しつつ説明しているため是非ご参考にしてみてください。
【合格体験記】GCP_Cloud_Archtectに受かりました
櫻井 裕司
2019/12/23 櫻井 裕司
personalqualification
Google Professional Cloud Architectに合格したので、勉強法別のコスパをまとめてみました。
AWSでサブドメインなし(wwwなし)からサブドメインあり(wwwあり)へのリダイレクト設定
櫻井 裕司
2019/12/23 櫻井 裕司
tech
もともと企業サイトがサブドメインありで公開していたが、サブドメインなしでもエラーなく接続できるように設計。terraformで作成しているので是非ご参考ください。
マークダウンで記事を書けるようにしてみた
櫻井 裕司
2019/12/16 櫻井 裕司
tech
ホームページのブログをマークダウンを使用してかけるようにしました。gatsbyなどもありますが、今回はお手製cicd+pythonを使用してライトに作成しました。