ラベル #100DaysOfCode の投稿を表示しています。 すべての投稿を表示
ラベル #100DaysOfCode の投稿を表示しています。 すべての投稿を表示

2019年10月4日金曜日

#100DaysOfCode R2 Day39-40

Day 39-40: October 2-3, 2019

Today's Progress:

  • Firebase Functions ローカル開発環境の構築方法をブログに
  • nodemon が起動できないエラーの調査

やってみてすごく便利!と思ったのでブログに書こう書こうと思っていた、 Firebase Functions のローカル環境の作り方をブログにまとめました。
最初に設定したときから1か月くらい経ってしまっていたので、色々バージョンアップしたせいかサーバーが起動できなくなっており…。

結局エラーメッセージからは全然予想しなかった設定で解決しました。だいぶ悩みました…。解決してよかった!

Links to work:

2019年10月1日火曜日

#100DaysOfCode R2 Day37-38

Day 37-38: September 29-30, 2019

Today's Progress:

  • FirebaseUIの導入
  • ログイン後、他のページに遷移させてみる
  • 他のページでもログイン後の情報を利用してみる

JavaScriptの読み込み順、実行順でとにかく引っかかっているなと思います。
ドキュメントを上から順に読んでその通りに並べても動かなくて、どこでinitializeしたインスタンスをどこで使って…というのを意識して読み込み順を整理すると動くようになりました。

ログイン後別のページにリダイレクトさせた際、 firebase.auth() の情報はどうやって引き継いだら…?と思ったのですが、普通に別ページにもfirebaseをinitializeするコードを入れて firebase が使えるようにすると、引き継ぐことができました。

どこまで引き継がれるかはここら辺で設定できるのかな?
認証状態の永続性

Google, Twitter, Email+Password でログインフローが動作することを確認。

Links to work:

2019年9月29日日曜日

#100DaysOfCode R2 Day35-36

Day 35-36: September 27-28, 2019

Today's Progress:

  • <script> タグに書いていたコードを .js ファイルに分離
  • サインイン後、新しい告知を保存後のタイミングで保存されている情報を画面に表示するようにした
  • ESLintの導入

<script> タグでHTMLファイルに直書きすれば動くのに、.jsファイルに分離すると動かない、という状況によく陥るのですが、おそらく $(document).ready を入れるべきなのに入れてない、という状況が多いのかなと…。

下記の記事の、

</body> タグの直前にscriptを入れる場合、$(docment).readyは必要ない

という部分で理解できました。

JavaScript・jQueryの改修・高速化のためのメモ - Qiita

またしばらく経つと忘れてしまいそう…!

Links to work:

  • なし

2019年9月27日金曜日

#100DaysOfCode R2 Day34

Day 34: September 26, 2019

Today's Progress:

  • Firebase FunctionのRegionの変更

変更できました。今日は仕事関係を結構がんばってしまってあまりこちらは進められずという感じですが…。
結構会話の応答が遅い感じするので、Region変えたら速くなるかなとちょっと期待していたのですが、体感で分かるほどは速くならなかったです(笑)

ひとまず新プロジェクトへの移行作業は完了!

Links to work:

2019年9月26日木曜日

#100DaysOfCode R2 Day33

Day 33: September 25, 2019

Today's Progress:

  • Firebaseのプロジェクトを新しく立て直す(完了)

元々動いていた機能を一通りコピーできました。

対応内容↓

  • Dialogflowプロジェクトの作り直し、Restore
  • Actions API の認証情報(サービスアカウントキー)の再設定
  • Firebase Functions のデプロイ
  • Function URLをDialogflowに設定し直し
  • Firebase構成情報の設定し直し
  • Firebase Authenticationを有効化

あとは Function の Region も設定しなおさなければ。

Links to work:

  • なし

2019年9月25日水曜日

#100DaysOfCode R2 Day32

Day 32: September 24, 2019

Today's Progress:

  • Firebaseのプロジェクトを新しく立て直す

今使用しているプロジェクトが1年ほどまえに試作していたものをそのまま使っていて、Location(Region)がUSが選択されていたのですが、現在はTokyoが選べるようになっていて、後々使い続けるとしたら今のうちにTokyoに変更しておいた方が良さそうだったので、プロジェクトを新しく立て直すことにしました。
(Locationだけ変更はできなかった)

ここまで対応した内容。まだ途中です。

  • Firebase console から新しい名前のプロジェクトを取得
  • Cloud Firestoreの使用開始→なぜかエラーになる(「不明なエラーが発生しました」)→タイムラグがあるのか、10分程度時間が経つとエラーが解消された。
  • Google Cloud Platform consoleにもFirebase Consoleから登録した新しいプロジェクト名が表示されなかったが、同じくらいのタイミングで表示されるようになった。
  • .firebaserc で指定されているデフォルトプロジェクト名を、新しいプロジェクト名に書き換えてから firebase init

Links to work:

  • なし

2019年9月24日火曜日

#100DaysOfCode R2 Day31

Day 31: September 23, 2019

Today's Progress:

  • Hostingにデプロイして同じ操作ができることを確認
  • ログイン中のユーザーの告知を取得する

Loadボタンを押したタイミングで、ログインしているユーザーのuidを firebase.auth().currentUser; で取得し、それを元にクエリを作成して読み出すことに成功。

document ID を指定すると1件の .get() でdocumentだけが取得されるけど、 collectionに対してクエリを実行すると .get() で得られるのが複数件のdocumentの集合なのでforEachで回して読み取らないといけないのが、前にも同じところで躓いた気がする。

参考
コレクションから複数のドキュメントを取得する

JavaScript難しい…何度理解したと思っても少し書かない期間が空くと全部忘れてしまう…。

Links to work:

  • なし

2019年9月22日日曜日

#100DaysOfCode R2 Day30

Day 30: September 22, 2019

Today's Progress:

  • 自分のプロジェクトにFirebase Authを使用したルールを設定してみる

Firebase CLI を使用してルールをデプロイしたり、JavaScriptのコード内で firebase.auth().currentUser.uid でuidを取得してその値をCloud Firestore のDBに保存したりするやり方を試しました。

参考にしたドキュメント

Visual Studio Code に Firestore の .rules ファイル用の拡張機能があるのを発見。

Links to work:

2019年9月21日土曜日

#100DaysOfCode R2 Day28, 29

Day 28: September 20, 2019

Today's Progress:

  • Codelabの続き

Firebase Admin SDK Codelab の続きを進めていたのですが、 npm run dev でどうもNode.jsにうまくPathが通ってないような感じのエラーが発生する。

元々開発に手を付けていたバージョンでは firebase serve もうまく動いていたので、このエラーの解消の調査は今学習したいことから逸れていきそうだな…と思ったので、ドキュメントを読んで進める方向に方向転換しようと思います。なかなか迷走している…

Links to work:

  • なし

Day 29: September 21, 2019

Today's Progress:

こちらの動画 Security Rules! 🔑 | Get to Know Cloud Firestore #6 - YouTube の内容をおさらい。だいぶ理解できてきた。

Cloud Firestoreの firestore.rules には、認証情報によるルールだけでなく、リクエストのデータの内容・DBにあるデータの内容を参照してバリデーションのようなルールも設定できるとか。使い方少しずつイメージできてきた気がします。

Links to work:

2019年9月19日木曜日

#100DaysOfCode R2 Day24-27

Day 24: September 16, 2019

Today's Progress:

  • Firebase Auth について勉強

下記の動画を見て、

Controlling Data Access Using Firebase Auth Custom Claims (Firecasts) - YouTube
Security Rules! 🔑 | Get to Know Cloud Firestore #6 - YouTube

こちらのCodelabに手を付け始めましたが、ちょっと行き詰まってる感。

Firebase Admin SDK Codelab

CodelabのサンプルがNode.js のバージョンが古い物にしか対応していなかったので、nvmでバージョンを切り替えるのに挑戦。それはうまくいきました。

Links to work:

  • なし

Day 25-27: September 17-19, 2019

Today's Progress:

  • 既存サイトのURL移転

昨年作って公開したサイトのドメインの更新時期が迫ってきたのですが、対してアクセスもないので他で使っているドメインに統合しようと移転作業。
まるっと複製して、301リダイレクトを設定して、Googleアドレス変更申請。

明日からまたGoogle Assistantの作業に戻ろうと思います~。

Links to work:

2019年9月15日日曜日

#100DaysOfCode R2 Day23

Day 23: September 15, 2019

Today's Progress:

  • CSSでfloatで動かした要素がクリックできない問題
  • Fontawesomeのアイコンを重ねる方法

最近一緒に勉強してくれてるリアル友人のコードでうまくいかないと聞いた所を調査。
自分の発想になかったことを調べるきっかけになってとても勉強になった…!
そして私CSS苦手なんだなと実感(笑)

クリックできない問題は z-index の指定で解決。

見せてもらったページで FontAwesome のアイコンに文字を重ねてかわいいボタンを作っていて、何これどうやってるの…!?と調べた。私にはその発想自体が無かった…!

参考:

Links to work:

  • なし

2019年9月14日土曜日

#100DaysOfCode R2 Day21, 22

Day 21: September 13, 2019

Today's Progress:

  • Actions on Google 開発
    • Firebase Authentication

下記を読んで、

ここら辺からコピペして、とりあえず動くことを確認。

ログイン・ログアウト機能が作れるのは分かった。GoogleでもEmailでもできた。

ではそれで取得したトークン?とかをどうやって権限管理に使ったらいいのか分からない…?

Links to work:

  • なし

Day 22: September 14, 2019

Today's Progress:

  • Actions on Google 開発
    • Firebase Authentication

サンプルを動かしてみる?
FirebaseExtended/firechat: Real-time Chat powered by Firebase

と思ったけど、なんか違う感じがする…?firechatというもう出来上がってるプロダクト(Firebase authとかRealtime Databaseとかを使ってる)を導入する方法の説明みたいな気がする。

FirebaseUI というのが用意されていて、ログインUIはこれを使うのがよさそう。
https://github.com/firebase/firebaseui-web

YouTubeのFirecastもあった。
Using FirebaseUI Auth, on the Web - Firecasts - YouTube

ちょっとまだ情報を探して迷走中。

Links to work:

  • なし

2019年9月12日木曜日

#100DaysOfCode R2 Day20

Day 20: September 12, 2019

Today's Progress:

  • Actions on Google 開発
    • Updatesメソッドでドキュメントの一部を更新

昨日 set メソッドでFirestoreにデータを登録できることを試した時に、指定したドキュメントにすでに他のフィールドが存在しても、 set で渡したフィールドのみの状態に上書きされてしまうことが分かったので、部分的に更新する方法を調査。

update メソッド、または set メソッドに { merge: true } を付けてあげることで実現できるようでした。

var setWithMerge = cityRef.set({
    capital: true
}, { merge: true });

明日試すのはここら辺かなあ。
ウェブサイトで Firebase Authentication を使ってみる | Firebase

Links to work:

  • なし

#100DaysOfCode R2 Day19

Day 19: September 11, 2019

Today's Progress:

  • Actions on Google 開発
    • Firebase Hosting と Cloud Firestore の接続

Cloud Firestore のスタートガイドとそこにあった動画を参考に、Firebase Hosting に置いたウェブページ から Cloud Firestore のデータを操作できることを確認。

HTMLでシンプルな input フォームを設置して、JavaScriptにCloud Firestoreに docRef.set({ notice: "something" }) みたいなコードを書いて、Submitボタンのonclickで実行されるようにする感じ。とりあえずできました。

参考: Cloud Firestore を使ってみる | Firebase

またちょっと体内時計のずれる時期に入ってきて体力が辛い…。

Links to work:

  • なし

2019年9月10日火曜日

#100DaysOfCode R2 Day17, Day18

Day 17: September 9, 2019

Today's Progress:

  • Pluralsight視聴
    • Firebase Functions: Fundamentals
    • Firebase Firestore: Getting Started
    • Firbase Hosting: Fundamentals
    • Architecting Scalable Web Applications with Firebase

無料キャンペーン中に…と思って1.5倍速ぐらいで一気に視聴(笑)

動画の講座って私の場合はあまり頭に入ってこなくて、かつ後で振り返りにくくて苦手なのですが、短時間でざっと概要を掴むという使い方には良いなと思いました。

Pluralsight今回初めて使ったのですが、YouTube等で公開されている無料の動画よりは音声や動画のクオリティも高い感じがして内容もまとまっていて、良かったと思います。
全文のTranscript(文字起こし)が見れるページがあるのも、後で内容を振り返って探すのに役立ちそう。

講座のジャンルも豊富で、Firebase関連の講座があったのも予想外だったので良い勉強になりました。

Links to work:

  • なし

Day 18: September 10, 2019

Today's Progress:

  • Actions on Google 開発
    • Firebase Hostingのセットアップ

Pluralsightで学習した内容から、そもそもRailsアプリにしなくていいのでは…と気が付いてFirebaseHostingで作ってみることに。 セットアップ。 firebase deployfirebase serve も上手くいきました。

Hostingの追加にあたって、既存のプロジェクトに対して firebase init して大丈夫なの…?と不安になりましたが、大丈夫でした。その辺ブログに残しておきました。

Links to work:

2019年9月8日日曜日

#100DaysOfCode R2 Day16

Day 16: September 7, 2019

Today's Progress:

  • Pluralsight (Google Cloud Functions: Getting Started)視聴
  • Actions on Google 開発
    • Rails Appの作成
    • PostgreSQL の再インストール

Pluralsightが今週末限定の無料キャンペーンをやっていたので、ちょっと手を出してみました。
ところが微妙に体調が悪くて思ったように進まず…。全体像を掴むくらいしかできませんでしたが、役には立ったと思います。明日もう少しやりたい。

Actioins on Googleで利用するデータを登録するサイトをRailsで作ろうと思っていて、そのためのRails Appを作り始めました。
WSL上でPostgreSQLが起動できなくなっていたのですが、結局 apt-get --purge remove postgresql\* とやって全部アンインストールして、再インストール。その後Railsアプリの database.yml にポート番号を指定してあげることで rails db:create が成功し、 rails s できるようになりました。

Links to work:

  • なし

2019年9月6日金曜日

#100DaysOfCode R2 Day15

Day 15: September 6, 2019

Today's Progress:

  • Actions on Google 開発
    • search_again intent の追加
    • 会話内容の改善

今日はちょっと内容軽め。でもフォローアップインテントについてドキュメントを読んだり触ってみたり、合言葉のキーワードが足りない時に訊き返す会話(Prompts)を追加したり(これはDialogflow ConsoleのUIから)

あまり複雑に作り込む前に、次はRailsアプリとFirestoreの接続方法を調べようかと思ってます。

Links to work:

  • なし

2019年9月5日木曜日

#100DaysOfCode R2 Day14

Day 14: September 5, 2019

Today's Progress:

  • Actions on Google 開発
    • Cloud Firestore のデータの検索

できましたー!!!

db.collection(FirestoreNames.NOTICES) は取得できているのに db.collection(FirestoreNames.NOTICES).where(FirestoreNames.KEYWORD, '==', keyword) とするとデータが取得できない(Firebase FunctionsのログによるとMalformed responseというエラー)問題で悩んでいたのですが、Dialogflowのパラメータ名/Firestoreのフィールド名/index.js内の変数名の keyword を全て keyword0 に変更すると動くようになりました…原因はわかりません…

キーワード2つを組み合わせての検索もできました。

昨日セットアップしたローカルサーバー大活躍!確かにこれはいちいちFirebase Functionsにデプロイするよりずっと速いし手間がかからない。

Links to work:

  • なし

2019年9月4日水曜日

#100DaysOfCode R2 Day13

Day 13: September 4, 2019

Today's Progress:

  • Actions on Google 開発
    • ローカル実行環境セットアップ

この記事 を参考に、ローカルで Firebase Functions の代わりになるExpressサーバーを実行できるようにセットアップ。

JavaScriptの単純な文法にすら自信がない上にいろんなサービスを連携させて使わないといけないので、自分のコードが悪いのか何かの設定が上手くいってないのかの切り分けを繰り返すのに、少しコードを変える度に毎回 Firebase Functions にデプロイしないといけないのはかなり辛かったので。

セットアップはうまくいきました!DBにもアクセスできることを確認。これで開発がはかどりそう!

機能うまくいかなかったwhere句での絞り込みは同じように上手くいかず…明日からはこれを調査しようと思います。

Links to work:

  • なし

#100DaysOfCode R2 Day12

Day 12: September 3, 2019

Today's Progress:

  • Actions on Google 開発
    • セットアップ

昨日コードを読んでいたサンプルの真似をしながら、Actions on Googleコンソール、Dialogflow、Cloud Firestore等を設定。
Firestoreからデータの取得もできている。

ところが、なぜか where メソッドで検索した結果を取得しようとすると、急にレスポンスが返ってこなくなり、エラーになる。調査中。

Actions on Google、2年前くらいから構想だけはあって調べていて、日本語の音声でお気に入りの声があったので絶対この子で作ろう!と思っていたのですが、バージョンアップされて声が変わってしまっていて悲しい…(笑)
たしかに自然さはアップしてるんですが。好みの問題で…

Links to work:

  • なし(GitLab private repo)