firebaseの基礎知識を得る(1) (雑記)
最近はGoogleHomeアプリ開発でFirebaseにdeployしまくってる。
しかし、つまみ食い知識でFirebaseやっていくのに嫌気がさしてきたので、ここらで基礎知識を学ぶことにする。
まずは、Firebase紹介podキャストを一通り見た。
感想
何はともあれ、スマートフォン連携しろという内容。
中でも特によさそうなのは、Firebase Authenticationだった。再生数もこれはかなり多い。
アカウント新規作成してログインがだるいので、Googleやtwitterアカウントでログインしたい。常に。
Authenticationを使えばそれを簡単に実現できるらしい。とにかくサンプルを試したいと思った。
動画ではユーザー分析と収益化のためのツール群が多い印象を受けた。
素晴らしいとは思うが、紹介動画みただけでは「色々あるけど使いこなせないだろうなあ…」というネガティブな感想だった。
分析ツールは難しそうに感じたが、RealtimeDBとか、Hostingについては、Qiitaで記事を読んだり実装の経験があるため、だいぶ動画の内容が理解できた。やっぱり一度でも使ってみると良いことある。
全体としてはこれからFirebase使っていこう!と思っている人には勇気がわく動画だと思う。
その他
明日はFirebaseお姉さんの動画を一通り見ようと思う。
GoogleHomeアプリ「インターバル計測」をリリースした
リリースした。
前回アプリを呼び出した時間から何分経過したかを通知する。
(使うのも、実装も)かんたん。
全然簡単じゃない
基本ロジック自体はものすごく単純。
ただ、アプリの特性上、常用ユーザーが日に何度も呼ぶという「日常系」アプリなので、
firebase無料運用するとなると、色々安くするための実装が必要となる。
本気のユーザー数増に耐えきれるわけない。祈りながら公開中👏😇
その他仕様
- firebase無料運用のため、強力なアクセス制限
- アクティブユーザー80名のみが使える選ばれし者のアプリです()
- 使い込んでいくうちに応答が
雑シンプルになっていく機能- この方針は面白いのでいろいろ研究したい
- 最終的に、ユーザー「おい」G「あいよ」を目指すのがAIアシスタント
振り返り
Googleによる審査が結構時間かかるので、カテゴリ設定とかは慎重に選んで
リジェクト要因を確実につぶしてから申請したいところ。
webエンジニア用語にSPA(シングルページアプリケーション)という言葉があるが、
GoogleHomeアプリでも、最初の応答で何かしらの情報を伝えて即終わるという構造だとシンプルで作りやすいと感じる。
この構造のアプリをワンショットトークアプリ、OTAとか名付けよう(やめよう)
知りたい情報があるとき、だらだら会話のキャッチボールはしたくない。相手が人間でもそうだ。
GoogleHomeに話しかけるときは何かを得たいときだ。
良いスマートスピーカー(アプリ)は最小文字数の会話でそれを達成すべきだ。
これは中々おもしろい切り口なので、この指標を元に、現在公開中のアプリを分析してみようと思う。
Trelloで全てのタスクが完了したときにごほうび画像を表示するChrome拡張を作った
まんぞく…。
詳細(GitHub)
インストール(Chrome web store)
振り返り
Chrome拡張自体は参考記事読むと簡単に作れる…。
しかし、動作モードをpage_actionにすると急にいろいろやらなきゃいけなくてめんどくさい。
簡単にはbrowserモードで作るのがよい。
page_action用メモ
- popup関連
- Chromeエクステンションでcontentの情報を取得する - Qiita
- popupの有効化にはmessageを利用
- Chrome拡張でruntime.sendMessageのコールバックがうまく動作しない理由 - Qiita
- Chrome - Chrome拡張機能にてpage_actionモードの時にpopup.htmlが表示されない(109480)|teratail
- chrome.tabsを使うとpermissionが一段階落ちるので採取的に採用せず
- Chromeエクステンションでcontentの情報を取得する - Qiita
GoogleHomeアプリ作成時のセキュリティ検討(雑記)
まとまらない内容だったので、本件はこのblogに書く予定だったのだけど、APIgeeってのを見つけたのが若干収穫だったのでQiita側に投稿した。
半端に記事にしようとすると、調べてないところの調査ですごい時間かかる。
しかたなし…。
GASへデータをPOSTし結果をjsonで受け取る時はリダイレクトされる
GoogleHomeのDialogflowを使ってSpreadsheetの値を読み上げたい。
先駆者の記事を見ると、基本的に読み上げはSpreadsheetとDialogflowの間にサーバーを噛まして実現している。
これをもっと簡易的に実現出来ないかと思った。
最近のQiitaの記事にて、DialogFlowからSpreadSheetに書きこみを行っている方がいた。
記事を参考に、単にGASの戻り値にspeechデータを含むJSONを返すようにすれば、SpreadSheetからのデータ読み上げもいけるのではと考え、調査した。
結果
この方法では読み出しはダメだった。
- GASへPOSTし、Sheetへの書き込みは正常に実行される
- 参考記事部分は正常に動作する
- GASのdoPostに戻り値(JSONデータ等)を設定した場合、GAS側にて一度リダイレクトされる。
- リダイレクトされた先でJSONデータが取得される、という仕組み。
- つまり、直接取得はできない
- DialogflowのFulfillmentのwebhookはリダイレクト対応してないと思われる。
- webhookは下記のような「The document has moved」ページ(302エラー表示)のデータを取り出してしまう
- dialogflow側で期待しているのはjsonデータなので、エラーが発生する
- これが分かるまで非常に長かった…😂
<HTML> <HEAD> <TITLE>Moved Temporarily</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF" TEXT="#000000"> <H1>Moved Temporarily</H1> The document has moved <A HREF="https://script.googleusercontent.com/macros/echo?user_content_key=XXXX">here</A>. </BODY> </HTML>
参考
- DialogflowからSpreadsheetに書きこむ
- GASのPOST基礎
既存の構成
- SpreadSheetの間にサーバーを噛ましている例
終わりに
書き込みまではスルッと動くので、webhookでJSONデータがなぜ取り出せないか非常にハマった。 IFTTTにSpreadSheetの読み出しがあれば色々楽なんだけど…。