nori-na Tech Night vol2でFirestoreとalgoliaについて爆速で喋りまくった話
新年度を迎えましたね。
新元号が「令和」に決まって、詩が詠まれたのが福岡と知り
大学と大学院時代6年間過ごした福岡での学生生活をふと思い出しました。
もう上京して2年が経ち月日が流れるのは早いなーと感じています。
3年目になりました。アプリエンジニアの岡です。
バタバタしてnoteの更新が遅れてしまいました。
今回は3月27日に開催しましたnori-na Tech Night vol2についてまとめます。
今回はFirebaseとalgoliaについてLTをしました。
最初に前置きで
nori-naはFirebaseゴリゴリ利用してます。
そのおかげでサーバーも管理画面も使ってません。
からはじめました。
色々LTの資料を見ましたが
前置きは重要ですよね。
ここで問題提起と言いますか
結果を述べています。
次に使っている技術
今回のLTは10分だったので主な技術の説明はここだけで行いました。
やっとシステムの構成です。
nori-naはCIとしてbitriseを利用しています。
bitriseはiOS専用と銘打っているだけあって非常に使いやすいです。
Githubのプルリクやマージからそれぞれに合わせてテストを行なっています。
bitriseの「良いところ」はそれをSlackに通知できる点です。
普通に通知ならCircleCIでもできますが、bitriseはテストが成功した場合QRコードを発行できます。
QRコードを読み取ればエンジニア以外の人が実機テストすることが可能になります。
エンジニアにとってDeploygateやTestFlightは便利ですが
アップロードが面倒ですよね。
その煩わしさから解放してくれます。
お問い合わせはTayoriと呼ばれる外部サービスを利用しています。
メールで実装しても特に工数はかからないのですが
管理が面倒です。
お問い合わせのステータスを管理しようとすると
管理画面が必要になってしまいます。
お問い合わせのために管理画面を作るのは勿体無い
そのため、外部サービスを利用しています。
ここからが中身について
Firebaseのデータベースサービスである「Firestoreの利用例」について
Firestoreは長らくベータ版でしたが2019年2月1日にGA版としてリリースされました。
nori-naではログイン情報(ユーザの個人情報)
マッチングした際の情報(場所や時間)、
相乗りの情報(どこからどこまで相乗りしたのか)、
決済情報(決済に必要なもの)、
特に決済関連の情報はアプリからは直接アクセスできないようにして
セキュリティのレベルをあげています。
普通同じ個人情報なのでログイン情報と紐つけるところですが
そうするとセキュリティのリスクが高まります。
同じユーザーの個人情報ですが情報としての重要度によって管理方法を分けることは非常に有効だと思っています。
次に「Firestoreの良い点」
使うまでの設定がはえーってのとタダってとこです笑。
CRUDが何も設定せずに使えるのはすごいです。
タダはある程度まででユーザーが増えたらお金かかります。
nori-naは今の所お金かかっていません泣。
早く料金かかるように頑張らないと!
「Firestoreの惜しい点」
流石にいいとこばっかりじゃないです。
サーバーは必要← あたりまえ〜
検索機能が弱い←クエリも使えるけどAND検索のみ(うーーん微妙)
そこでサーバーとして使うのが「クラウドファンクション(英語の表記は長いのでやめました笑)」です。
クラウドファンクションはTypeScriptで記述しています。
プッシュ通知←相乗り依頼が来た時、近くのユーザーが募集を開始した時、コメントでメンションがついた時に来ます。
データの集計←相乗りの情報(どこからどこまで行って幾ら払ったor支払われたのか)
決済関連の情報←決済サービスのStripeの設定はフロントエンドのみでは無理です。(StackOverFlowで海外のエンジニアが試していましたが無理だったようです。)
検索情報←これも検索する内容を一旦クラウドファンクションで持つ必要があります。
nori-naはMAP上でユーザーをリアルタイムで表示してます。
ユーザーの場所を表示するためには緯度経度の情報と
そのほかにユーザーがオンラインかオフラインか判別する必要があります。
その問題を解決するのがalgoliaです。
Firebaseと比べるとあまり有名なサービスではありませんが、
「高速な外部検索サービス」です。
Firestoreでは高速な検索ができないため、algoliaを利用して
ユーザーをリアルタイムにMAPに表示できています。
Firestoreのアクセス数も抑制できて、素晴らしいサービスです。
しかし
一点惜しい点として
Firebaseは無料では外部サービスを利用することができません。泣
nori-naでは従量制のBlazeプランに加入しています。
お金がかかるのですが、一定量までは無料で使えます。
ちなみに無料で使える量が無料プランより多いです。
ただし!
実装間違えたら多額の請求を受けるかも
最後にFirebaseの便利機能について
「拡大がすごい」
「特にオススメな機能」
Cloud Messaging←プッシュ通知のようなもの
任意のタイミングで通知を送ることができる!
通知を送った数、開いた数などがわかる。
In-App Messaging←任意のアラート機能!
アップデート情報やアンケート情報を表示することが可能で、
ポップアップ、モーダルなど表示方式を切り替えることができる。
Dynamic Links←デープリンク
Twitterに添付してアプリへの流入を管理することができる。
長文になりましたが言いたかったのは
Firebaseはメッセージサービスだけじゃないんだぞ!
ってことです。
ありがとうございました。
発表資料をSpeaker Deckに上げました。
最後に次回のnori-na Tech Night vol3の宣伝です。
5月17日に第3回を行います。アプリエンジニアの方、ぜひお越しください。
LTも募集しています。
初心者でも全然OKです。
第2回ではアプリ開発歴3ヶ月の文系大学生が発表してくれました。
とにかくアウトプットが大切だと思います。
気軽に応募してください!