ååã«åŒãç¶ãNuxt.js
ãçšããŠãã¢ããªã±ãŒã·ã§ã³ãäœã£ãŠãããããšæããŸãã
ä»åã¯ãã¿ã€ãã«éãFirebase
ãå°å
¥ããŠãã°ã€ã³æ©èœãå®è£
ããæºåãããŠãããããšæããŸãã
ååã®èšäºãèªãŸããŠããªãæ¹ã¯ãã¡ãããã©ããã
##FirebaseåŽã®æºå
Firebase
ã¯GoogleãéçšããŠãããµãŒãã¹ã«ãªããããå¿
ãGoogleã¢ã«ãŠã³ããå¿
èŠã«ãªããŸãã
Googleã¢ã«ãŠã³ãã¯ããã«ã§ããã®ã§ãããã¯å²æãããŠããã ããŸãã
###Firebaseã®æ©èœ
ãŸãã¯ããã«ãä»å䜿ã£ãŠããæ©èœãç°¡åã«çŽ¹ä»ããŠãããŸãã
Authentication
ãŸãããã°ã€ã³æ©èœãåžã£ãŠããFirebase Authentication
ã§ãã
ãã¡ãã§ãã°ã€ã³ããéã«äœ¿ããã¢ã«ãŠã³ãã»ãã¹ã¯ãŒãã®æ
å ±ãæ±ããŸãã
ä»åã®èšäºã®ã¡ã€ã³ã«ãªããã€ã§ãã
Firestore
ãã¡ããã¢ããªã±ãŒã·ã§ã³ã§æ±ãããŒã¿ãä¿ç®¡ããããŒã¿ããŒã¹ïŒDBïŒã§ãã
管çè
ç»é¢ãªã©ãäœãéã«ã¯ããã«ãŠãŒã¶ãŒæ
å ±ãæ ŒçŽããã®ããããšæããŸãã
ä»åäž»ã«äœ¿ã£ãŠããã®ã¯ãã®ïŒã€ã®ãµãŒãã¹ã ãã§ãã
ä»ã®ãµãŒãã¹ãæ°ã«ãªãæ¹ãããã°ãããã«Firebase
ãæäŸããŠãããµãŒãã¹ã詳ãã説æããŠãããŠããèšäºããã£ãã®ã§ããã§ãã¯ããŠã¿ãŠãã ããã
###Firebaseãããžã§ã¯ããäœã
ã§ã¯ä»¥äžã«èª¬æããæ©èœãå®éã«ã¢ããªã±ãŒã·ã§ã³ã«èœãšã蟌ãã§ããæºåãããŠãããŸãããã
ãããããfifebase
ã®ãããããŒãžã«ç§»åããŠãã䜿ã£ãŠã¿ãããã¯ãªãã¯ããŠãã ããã
ãããšãããããžã§ã¯ããè¿œå ããããã¿ã³ããããšæãã®ã§ãããã¯ãªãã¯ã
ããã§ãä»åã®Firebase
ã®ãããžã§ã¯ãåã決ããŠãã ããã
次ã«ãGoogleã¢ããªãã£ã¯ã¹
ã®äœ¿çšã®æç¡ãèãããã®ã§ãæå¹ã«ããŸãããã
Googleã¢ããªãã£ã¯ã¹
ãšã¯ããã®ãµãŒãã¹ã®ã¢ã¯ã»ã¹æ°ã»äœ¿çšããã€ã¹ã»é²èŠ§æéãªã©ãçµ±èšããŠããããµãŒãã¹ã§ãã
ãããã¯åºæ¬ç¡æãªã®ã§ããšããããæå¹ã«ããŠãããŸãããã
ããã§ãGoogleã¢ããªãã£ã¯ã¹
ã®ã¢ã«ãŠã³ããå¿
èŠã«ãªããŸãã
æè§ã§ãã®ã§ããæ°ããã¢ã«ãŠã³ããäœæãããŠã¿ãŸãããã
ã¢ã«ãŠã³ãåãå
¥åããåŸã«ãã¢ããªãã£ã¯ã¹ã®å¯Ÿè±¡å°åãéžæããŸãã
ãã®èšäºãã¿ãŠããæç¹ã§ãæ¥æ¬åšäœã ãšæãã®ã§ãæ¥æ¬ããéžæããŠãã ããã
ã§ã¯ãããžã§ã¯ããäœæããŠã¿ãŸãããïŒ
ã¯ãã以äžã®ããã«ãªãã°ãããžã§ã¯ãã¯åºæ¥ãŠããŸãã
###Firebaseã®åºæ¬æ
å ±ã衚瀺ããã
ããã§ãåŸã«èšè¿°ããå¿
èŠãåºãŠãããã®ãããžã§ã¯ãã®æ
å ±ãã¿ãŠã¿ãŸãããã
Firebase
ã®ãããããŒãžå·Šäžã«ããæ¯è»ãã¿ã³ãæŒããŠãããããžã§ã¯ãã®èšå®ããã¯ãªãã¯ã
äžçªäžã«ã以äžã®ãããªæ¬ãããã®ã§ä»åã¯>ã®ã¢ã€ã³ã³ãã¯ãªãã¯ã
ãããšãFirebase
ãè¿œå ããã¢ããªã®ããã¯ããŒã ãå
¥åããããŒãžã«é£ã¶ã®ã§ãé©åœã«ååãã€ããŠãããŠãã ããã
ä»åã¯Firebasse Hosting
ã®èšå®ãããªãã®ã§ãäžã®ãã§ãã¯ããã¯ã¹ã¯ç¡èŠã§ããã§ãã
ã¡ãªã¿ã«Firebase Hosting
ãšã¯ãã¢ããªã±ãŒã·ã§ã³ã®å
¬éæã«å®å
šã«é
ä¿¡ã§ããããã«ããæ©èœã®ããã§ãã
Firebase Hosting
ã®å
¬åŒã¯ãã¡ãã
ãããšä»åã®Firebase
ã®æ
å ±ãèŠãããšãã§ããŸãã
ãã®ãŸãŸãã³ã³ãœãŒã«ã«é²ãããæŒããŠãã ããã
以éãã®æ å ±ã¯å ã»ã©ã®ããããžã§ã¯ãã®èšå®ãããç°¡åã«èŠãããšãã§ããŸãã
###Firestoreã®èšå®
次ã«ãFirestore
ã®èšå®ãè¡ããŸãã
Firebase
ãããããŒãžã®å³ã«ãããéçºãã®ãDatabaseãã®ãããŒã¿ããŒã¹ã®äœæããã¯ãªãã¯ã
ãããšã以äžã®ç»é¢ã«ãªãã®ã§ãä»åã¯ããã¹ãã¢ãŒããã§è¡ããŸãã
ãããéèŠãªã®ã§ããããCloud Firestoreã®ãã±ãŒã·ã§ã³ãã¯å¿
ãGoogleã¢ããªãã£ã¯ã¹
ã®ãã±ãŒã·ã§ã³ã«åãããŠãã ããã
ããã§åãããªããšãFirestore
ãæ©èœããŸããã
ããã«ã¿ãã®æªãããšã«ãããã¯äžå決ããŠããŸããšã以éå€æŽããããšãã§ããŸããã
å¿
ãããasia-northeast1ãïŒæ±äº¬ïŒãããã¯ãasia-northeast2ãïŒå€§éªïŒã«èšå®ããŠãã ããã
###Firebase Authentication
次ã«ãFirebase Authentication
ã®èšå®ãè¡ããŸãã
Firebase
ãããããŒãžã®å³ã«ãããéçºãã®ãAuthenticationããã¯ãªãã¯ã
ä»åã¯ã¡ãŒã«ã¢ãã¬ã¹ãšãã¹ã¯ãŒãã§ãã°ã€ã³èªèšŒãè¡ãªã£ãŠããããã®ã§ãããã°ã€ã³æ¹æ³ãã®ãã¡ãŒã«/ãã¹ã¯ãŒãããã¯ãªãã¯ã
ïŒã€ç®ã®ããŒãæå¹ã«ããŠä¿åããŠãã ããã
ããã§ãã¡ãŒã«ã¢ãã¬ã¹/ãã¹ã¯ãŒãã§ã®ãã°ã€ã³ãå¯èœã«ãªããŸããã
ã§ã¯æ©éããã°ã€ã³ã¢ã«ãŠã³ãã®ãµã³ãã«ãäœæããŠã¿ãŸãããã
ããŠãŒã¶ãŒãããããŠãŒã¶ãŒã®è¿œå ããã¯ãªãã¯ããŠãã ããã
ããã§ãå®éã«äœ¿ãã¢ã«ãŠã³ãã®èšå®ãã§ããã®ã§ãé©åœã«äœã£ãŠããŸããŸãããã
ããã¯åŸã«äœ¿ã£ãŠããã®ã§ãèšæ¶ããŠãããŠãã ããã
以äžã§ãFirebase
åŽã®äžæºåã¯å
šãŠçµäºã§ãã
##ã¢ããªã±ãŒã·ã§ã³åŽã®æºå
(2020/3/29ä¿®æ£)
次ã¯ãFirebase
ãå°å
¥ã§ããããã«ã¢ããªã±ãŒã·ã§ã³åŽã®æºåãããŸãã
ãŸãã¯ä»åã®ã¢ããªã±ãŒã·ã§ã³ã«Firebase
ãå°å
¥ããŸãã
以äžã®ãã¡ïŒnpm, yarnïŒååã®è³ªåã§çããæ¹ãå®è¡ããŠãã ããã
npm install firebase --save
yarn add firebase --save
以äžã®ã³ãã³ããçµãããšã/package.json
ã«firebase
ã®èšè¿°ãå ãããå°å
¥ã§ããŠããããšã確èªã§ããŸãã
ããã§ããã«ãfirebase
ã®CLI
ãå°å
¥ããŸããïŒCLI(Command Line Interface)
ã¯ã³ãã³ãæäœã®ããšã§ããïŒ
npm install -g firebase-tools
yarn global add -g firebase-tools
ããã«Firebase
ã«ãã°ã€ã³ããŸãã
firebase login
é£ã°ãããå
ã§æ¯æéãã«é²ã¿ã
ãã®ç»é¢ã衚瀺ããããšããã°ã€ã³å®äºã§ãã
###Firebaseãã£ã¬ã¯ããªã®å°å
¥
次ã«ãFirebaseãã£ã¬ã¯ããª
ãã€ã³ã¹ããŒã«ããŸãã
firebase 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 <space> to selec
t, <a> to toggle all, <i> to invert selection)
â¯â¯ Database: Deploy Firebase Realtime Database Rules
⯠Firestore: Deploy rules and create indexes for Firestore
⯠Functions: Configure and deploy Cloud Functions
⯠Hosting: Configure and deploy Firebase Hosting sites
⯠Storage: Deploy Cloud Storage security rules
⯠Emulators: Set up local emulators for Firebase features
ããã§ã¯Firebase
ã®ã©ã®ãµãŒãã¹ã䜿ãããéžæããŸãã
ä»åã¯Firestore
ãéžæããŸãã
####ãããžã§ã¯ãã®éžæ
? Please select an option: (Use arrow keys)
⯠Use an existing project
Create a new project
Add Firebase to an existing Google Cloud Platform project
Don't set up a default project
å
ã»ã©ãããžã§ã¯ãã¯äœã£ãŠããã®ã§ãUse an existing project
ãéžæããŸãã
? Select a default Firebase project for this directory:
⯠qiita-example-d1ffc (Qiita-Example)
ããã«ãå ã»ã©äœã£ãèªåã®ãããžã§ã¯ããéžæããŸãã
####Firestoreã®ã«ãŒã«ã®èšè¿°
? What file should be used for Firestore Rules? (firestore.rules)
? File firestore.rules already exists. Do you want to overwrite it with the Fire
store Rules from the Firebase Console?
? What file should be used for Firestore indexes? (firestore.indexes.json)
ãããã¯ãã®ãŸãŸEnterã§å€§äžå€«ã§ãã
â Firebase initialization complete!
æåŸã«ãã®äžæã衚瀺ãããããFirebaseãã£ã¬ã¯ããª
ã®åæèšå®ã¯å®äºã§ãïŒ
###Firebaseããã©ã°ã€ã³ãã
次ã«firebase
ã¯å€éšã¢ãžã¥ãŒã«ã®æ±ãã«ãªãã®ã§ãååè¿°ã¹ãplugins
ã«ãèšè¿°ããŠãããŸãã
ãŸãã¯ã/plugins
ã®ãªãã«index.js
ãæ°ããäœã£ãŠãã ããã
import firebase from "firebase";
const config = {
apiKey: process.env.VUE_APP_apiKey,
authDomain: process.env.VUE_APP_authDomain,
databaseURL: process.env.VUE_APP_databaseURL,
projectId: process.env.VUE_APP_projectId,
storageBucket: process.env.VUE_APP_storageBucket,
messagingSenderId: process.env.VUE_APP_messagingSenderId,
appId: process.env.VUE_APP_appId,
measurementId: process.env.VUE_APP_measurementId
};
if (!firebase.apps.length) {
firebase.initializeApp(config);
}
export default firebase;
ãã®process.env
ã¯ã
ã.env
ã®ãã¡ã€ã«ã®äžèº«ã®å€ãæã£ãŠããã
ãšããæå³ã§ãã
ãã®ããã.env
ãã¡ã€ã«ã«ä»åã®Firebaseãããžã§ã¯ã
ã«å¿
èŠãªæ
å ±ãèšè¿°ããŠãããŸãã
ãªããã®ãããªããã©ãããäºãããã®ããšãããšãã¢ããªã±ãŒã·ã§ã³ãå
¬éããéã«ãFirebase
ã®æ
å ±ãæŒããäºãé»æ¢ããããã§ãã
plugins/index.js
ã«æ
å ±ããã¿æã¡ããŠãããšããã«Firebase
ã®ç¹å®ãã§ããŸãããå
¬éãããããšããªã.env
ã«æ
å ±ãèšè¿°ããäºã§ããããé»æ¢ããããšãã§ããŸãã
ã§ã¯ã.env
ã«å
ã»ã©ç¢ºèªããæ
å ±ãèšè¿°ããŠãããŸãããã
ããããžã§ã¯ãã®èšå®ãã®äžçªäžã«ãããFirebase SDK snippet
ã®ãæ§æããéžæããããã«æžããŠããæ
å ±ãèšè¿°ããŠãããŸãã
VUE_APP_apiKeyã= "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
VUE_APP_authDomain = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
VUE_APP_databaseURL = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
VUE_APP_projectId = "xxxxxxxxxxxxxxxxx",
VUE_APP_storageBucket = "xxxxxxxxxxxxxxxxxxxxxxxxxx",
VUE_APP_messagingSenderId = "xxxxxxxxxxxxxx",
VUE_APP_appId = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
VUE_APP_measurementId = "xxxxxxxxxxxxxxx"
ãããªæãã«ãªããšæããŸãã
xxxã®éšåã¯èªåã®Firebase
ã®æ
å ±ãæžããŠãã ããã
ãŸãããã§VUE_APP_
ãé ã«ã€ããå¿
èŠããããŸããïŒããããªããšèªã¿èŸŒãŸããŸãããïŒ
ãŸãplugins
ã䜿ã£ãŠããã®ã§ãnuxt.config.js
ã«ãplugins
ã«Firebase
ã䜿ããŸãïŒããšå®£èšããªããšãããŸããã
import colors from 'vuetify/es5/util/colors'
export default {
...
plugins: [
'~/plugins/firebase',
],
...
}
ãããªæãã§ãã
以äžã§Firebase
ã®å°å
¥ã¯å®äºã§ãã
##ãŸãšã
äžæºåã ãã§ãããªãæéãããã£ãŠããŸããŸããã
次åããã¯ãããããã¬ã€ã¢ãŠãã®å®è£
ãè¡ãªã£ãŠãããããšæããŸãã
ãŸãééããŠããç¹ãªã©ãããã°æããŠããã ãããšå©ãããŸãïŒïŒ
âââââââ ããªãã®èšäºã®å
容
##è¿œèš
(2020/3/29)
ã¢ããªã±ãŒã·ã§ã³åŽã®æºåã®ã»ã¯ã·ã§ã³ã§
yarn add -g firebase-tools
ã®éšåãã
yarn global add -g firebase-tools
ã§ãããšããææãããã ããŸããã
ééããŠããç¹ãææããŠããã ãããããšãããããŸããïŒ
âââââââ
ãã®ïŒã¯ãã¡ãããã©ããïŒ
âââââââ ç·šéãªã¯ãšã¹ãã®å
容