【はじめてのFirebase】第一話:GitHub管理からデプロイまで
おはこんばんちはaomaです。
今日からMaday(まっでい)というアプリを作っていくことにしました。(どんなサービスかはお楽しみに?)
プラットフォームはFirebaseです!
ただここでひとつ問題がありまして、Firebase使ったことないんですよね。。。
この物語はそんなaomaがはじめてのFirebaseに挑む壮大なアクションアドベンチャーである!第一話!
第一話の内容
- Firebaseをとりあえず構築してブラウザでアクセスできるようになる
- FirebaseのソースをGitHubで管理できるようになる
- 途中様々な困難(エラー)に出会うが、記録が残されているのでアナタの助けになるかもしれない...
本編
記念Beeってサービス作ろうとしたらもうすでにあった!
— aoma23 (@aoma23) 2020年4月8日
ねーみんぐせんす!!https://t.co/Xm5aDkJdCq
Maday
— aoma23 (@aoma23) 2020年4月8日
Mad as a March harehttps://t.co/HcZ9aeDffA
サービス名が決まったので満足している。
— aoma23 (@aoma23) 2020年4月8日
キターーーー!!
— aoma23 (@aoma23) 2020年4月9日
圧倒的進捗!!! pic.twitter.com/lAN4Hi6z3v
firebaseやってみる!
— aoma23 (@aoma23) 2020年4月11日
説明は見ないぜ!とりあえずアプリを追加してみよう! pic.twitter.com/fHpku6hwoX
gogo!! pic.twitter.com/U3fh8igcPC
— aoma23 (@aoma23) 2020年4月11日
ふう。。(迷子)
— aoma23 (@aoma23) 2020年4月11日
bodyタグの中にコピペしろ言われたけど、どうすればいい?
サンプルおとすべき?一から作るべき?
とりあえずGitHubにリポジトリ作る?どうしよかな。
とりあえず無視して、
— aoma23 (@aoma23) 2020年4月11日
次のFirebase CLI のインストールいってみるか pic.twitter.com/ibfACOUXRu
プライベートリポジトリ作った。SSH登録してなかったのでこちらを参考に進める。いいQiitaです。https://t.co/FtYosgZbrV pic.twitter.com/JZorO8BmHw
— aoma23 (@aoma23) 2020年4月11日
なんだかよさげ。
— aoma23 (@aoma23) 2020年4月11日
Github Actionsを使ってfirebaseへデプロイする https://t.co/1qIOUxttWV #Qiita
一昨日からハマってたcloneできない件、ブログ書きました! #はてなブログ
— aoma23 (@aoma23) 2020年4月23日
複数のGitHubアカウント運用で片方のプライベートリポジトリをcloneできなくて困った話 - aoma bloghttps://t.co/JzccXI0m4f
clone
% env GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa_aoma -F /dev/null" git clone git@github.com:aoma23/maday.git Cloning into 'maday'... remote: Enumerating objects: 3, done. remote: Counting objects: 100% (3/3), done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (3/3), done.
gitアカウント設定
% git config --local user.name "aoma23" git config --local user.email "51367901+aoma23@users.noreply.github.com" git config --local url."github_aoma23".insteadOf "git@github.com"
設定されたこと確認
% git config -l credential.helper=osxkeychain core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true core.ignorecase=true core.precomposeunicode=true remote.origin.url=git@github.com:aoma23/maday.git remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* branch.master.remote=origin branch.master.merge=refs/heads/master user.name=aoma23 user.email=51367901+aoma23@users.noreply.github.com url.github_aoma23.insteadof=git@github.com
% npm install -g firebase-tools
— aoma23 (@aoma23) 2020年4月23日
zsh: command not found: npm
おお、、、
あらためてnpmをインストールするよ!
— aoma23 (@aoma23) 2020年4月23日
> macにNode.jsのインストールを行えば、npmも一緒にインストールすることができます。
> https://t.co/BbTSvpxFLx
へえ。。nodeをインストールするよ!!
% node -v v12.16.2
エラー変わらんやないかーい
— aoma23 (@aoma23) 2020年4月23日
npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
これパーミッション変えていいの?っていうかみんなこの作業してるのかな?
— aoma23 (@aoma23) 2020年4月23日
対策どおりやってみたよ!
— aoma23 (@aoma23) 2020年4月23日
% npm config get prefix
/usr/local
% sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
firebase-toolsインストール
% npm install -g firebase-tools npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 /usr/local/bin/firebase -> /usr/local/lib/node_modules/firebase-tools/lib/bin/firebase.js > protobufjs@6.9.0 postinstall /usr/local/lib/node_modules/firebase-tools/node_modules/protobufjs > node scripts/postinstall + firebase-tools@8.1.1 added 532 packages from 357 contributors in 23.914s
googleにlogin
% firebase login
% % firebase init
とりあえず全選択して進んだら下記エラー、、
=== Firestore Setup Error: Cloud resource location is not set for this project but the operation you are attempting to perform in Cloud Firestore requires it. Please see this documentation for more details: https://firebase.google.com/docs/projects/locations
これとかこれと同じ現象。https://t.co/9SnETpOoashttps://t.co/O5FiyMT0rb
— aoma23 (@aoma23) 2020年4月26日
asia-northeast1に設定! pic.twitter.com/YoRDz8Yk9i
— aoma23 (@aoma23) 2020年4月26日
全部チェックして再挑戦! pic.twitter.com/vvfVRGT1x1
— aoma23 (@aoma23) 2020年4月26日
なんでや!なんでこんなにエラーになるんや!
— aoma23 (@aoma23) 2020年4月26日
> Error: Error fetching Firestore indexes
まとめてくれてる!同じ道をたどるぜ!https://t.co/MQTbxZchxV
— aoma23 (@aoma23) 2020年4月26日
とりあえずネイティブモードにすればいいらしいけど、こわいから調べたぜ!
— aoma23 (@aoma23) 2020年4月26日
ネイティブ モードと Datastore モードの2種類があり、ネイティブモードのほうが最新でFirestore のすべての新機能にアクセスできるらしい。これで安心してネイティブ選べる!https://t.co/8ctiLfbKnn
いくぜ! pic.twitter.com/7UHfLfp5PC
— aoma23 (@aoma23) 2020年4月26日
全選択して再々挑戦!! pic.twitter.com/pEhtAxGjVK
— aoma23 (@aoma23) 2020年4月26日
エミュレーターよくわからんからとりあえずスキップするか。
— aoma23 (@aoma23) 2020年4月26日
initコマンドのメモ
? Which Firebase CLI features do you want to set up for this folder? Press Space to select features, then Enter to confirm your choices. (Press <sp ace> to select, <a> to toggle all, <i> to invert selection)Database: Deploy Firebase Realtime Database Rules, Firestore: Deploy rules and create in dexes for Firestore, Functions: Configure and deploy Cloud Functions, Hosting: Configure and deploy Firebase Hosting sites, Storage: Deploy Cloud S torage security rules, Emulators: Set up local emulators for Firebase features === Project Setup First, let's associate this project directory with a Firebase project. You can create multiple project aliases by running firebase use --add, but for now we'll just set up a default project. ? Please select an option: Use an existing project ? Select a default Firebase project for this directory: maday-eeeee (maday) i Using project maday-eeeee (maday) === Database Setup Firebase Realtime Database Rules allow you to define how your data should be structured and when your data can be read from and written to. ? What file should be used for Database Rules? database.rules.json ? File database.rules.json already exists. Do you want to overwrite it with the Database Rules for maday-eeeee from the Firebase Console? Yes ✔ Database Rules for maday-eeeee have been downloaded to database.rules.json. Future modifications to database.rules.json will update Database Rules when you run firebase deploy. === Firestore Setup Firestore Security Rules allow you to define how and when to allow requests. You can keep these rules in your project directory and publish them with firebase deploy. ? What file should be used for Firestore Rules? firestore.rules ? File firestore.rules already exists. Do you want to overwrite it with the Firestore Rules from the Firebase Console? Yes Firestore indexes allow you to perform complex queries while maintaining performance that scales with the size of the result set. You can keep index definitions in your project directory and publish them with firebase deploy. ? What file should be used for Firestore indexes? firestore.indexes.json === Functions Setup A functions directory will be created in your project with a Node.js package pre-configured. Functions can be deployed with firebase deploy. ? What language would you like to use to write Cloud Functions? JavaScript ? Do you want to use ESLint to catch probable bugs and enforce style? No ✔ Wrote functions/package.json ✔ Wrote functions/index.js ✔ Wrote functions/.gitignore ? Do you want to install dependencies with npm now? Yes > protobufjs@6.9.0 postinstall /Users/aoma23/Documents/repo/aoma23/maday/functions/node_modules/protobufjs > node scripts/postinstall npm notice created a lockfile as package-lock.json. You should commit this file. added 258 packages from 206 contributors and audited 972 packages in 11.843s 30 packages are looking for funding run `npm fund` for details found 0 vulnerabilities === Hosting Setup Your public directory is the folder (relative to your project directory) that will contain Hosting assets to be uploaded with firebase deploy. If you have a build process for your assets, use your build's output directory. ? What do you want to use as your public directory? public ? Configure as a single-page app (rewrite all urls to /index.html)? Yes ✔ Wrote public/index.html === Storage Setup Firebase Storage Security Rules allow you to define how and when to allow uploads and downloads. You can keep these rules in your project directory and publish them with firebase deploy. ? What file should be used for Storage Rules? storage.rules === Emulators Setup ? Which Firebase emulators do you want to set up? Press Space to select emulators, then Enter to confirm your choices. (Press <space> to select, <a > to toggle all, <i> to invert selection) i Writing configuration info to firebase.json... i Writing project information to .firebaserc... i Writing gitignore file to .gitignore... ✔ Firebase initialization complete!
とりあえずここまでをリポジトリにコミット!
これにならってfirebase serveしてみた!
— aoma23 (@aoma23) 2020年4月26日
画面出たよー!https://t.co/xXO5e6Fa4t
firebase serve
すると http://localhost:5000/
にアクセスできること確認。開発はここでやってけばいいのかな?
firebase deploy もできたー!!
— aoma23 (@aoma23) 2020年4月26日
うおーー!!
完成やー!!(環境構築が)
無事デプロイできて、ブラウザからアクセスできること確認!
ようこそ素晴らしきFirebaseの世界へ。知らんけど。
To Be Continued...