{"id":556,"date":"2019-05-07T23:50:07","date_gmt":"2019-05-07T14:50:07","guid":{"rendered":"http:\/\/www.typea.info\/blog\/index.php\/2019\/05\/07\/vuetify_firebase_ui\/"},"modified":"2019-05-07T23:50:07","modified_gmt":"2019-05-07T14:50:07","slug":"vuetify_firebase_ui","status":"publish","type":"post","link":"https:\/\/www.typea.info\/blog\/index.php\/2019\/05\/07\/vuetify_firebase_ui\/","title":{"rendered":"Vuetify \uff0b Firebase UI \u3067\u7c21\u5358\u306b\u30ed\u30b0\u30a4\u30f3\u6a5f\u80fd\u3092\u8ffd\u52a0\u3068\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u30e1\u30cb\u30e5\u30fc"},"content":{"rendered":"<p><a href=\"https:\/\/www.amazon.co.jp\/%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%83%AC%E3%82%B9%E9%96%8B%E7%99%BA%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0-Firebase%E5%85%A5%E9%96%80-%E6%8E%8C%E7%94%B0%E6%B4%A5%E8%80%B6%E4%B9%83\/dp\/4798057754\/ref=as_li_ss_il?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&amp;keywords=Firebase&amp;qid=1557240236&amp;s=gateway&amp;sr=8-1&amp;linkCode=li2&amp;tag=typea09-22&amp;linkId=0dd5672268efba3ecd0d1c366615e4ec\" target=\"_blank\"><img decoding=\"async\" src=\"\/\/ws-fe.amazon-adsystem.com\/widgets\/q?_encoding=UTF8&amp;ASIN=4798057754&amp;Format=_SL160_&amp;ID=AsinImage&amp;MarketPlace=JP&amp;ServiceVersion=20070822&amp;WS=1&amp;tag=typea09-22\" border=\"0\"><\/a><img loading=\"lazy\" decoding=\"async\" width=\"1\" height=\"1\" style=\"margin: 0px !important; border: currentcolor !important; border-image: none !important !important;\" alt=\"\" src=\"https:\/\/ir-jp.amazon-adsystem.com\/e\/ir?t=typea09-22&amp;l=li2&amp;o=9&amp;a=4798057754\" border=\"0\"><\/p>\n<ol>\n<li><a href=\"https:\/\/www.typea.info\/blog\/index.php\/2019\/04\/06\/google_app_engine_java_standard_spring_boot\">Google App Engine Java Standard + Spring Boot \u74b0\u5883\u69cb\u7bc9<\/a>\n<li>\n<p><a href=\"https:\/\/www.typea.info\/blog\/index.php\/2019\/04\/06\/google_app_engine_java_standard_spring_boot_thymeleaf\">Spring Boot\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3 Thymeleaf\u3092\u9069\u7528<\/a><\/p>\n<li>\n<p><a href=\"https:\/\/www.typea.info\/blog\/index.php\/2019\/04\/06\/google_app_engine_java_spring_bootvuejs\">Spring Boot\u306bVue.js\u3092\u5229\u7528\u3059\u308b<\/a><\/p>\n<li>\n<p><a href=\"https:\/\/www.typea.info\/blog\/index.php\/2019\/04\/20\/google_app_engine_java_spring_bootvuetifyajax\">Spring Boot\u306bVuetify\u5c0e\u5165\u304b\u3089\u30af\u30ed\u30b9\u30c9\u30e1\u30a4\u30f3Ajax\u901a\u4fe1<\/a><\/p>\n<li>\n<p><a href=\"https:\/\/www.typea.info\/blog\/index.php\/2019\/04\/24\/google_app_engine_java_spring_bootvuetify_gae\">Spring Boot+Vuetify GAE\u3078\u30c7\u30d7\u30ed\u30a4\u3001\u52d5\u4f5c\u78ba\u8a8d<\/a><\/p>\n<li>\n<p><a href=\"https:\/\/www.typea.info\/blog\/index.php\/2019\/04\/24\/visual_studio2019_xamarinformsios\">Xamarin.Forms\u30a2\u30d7\u30ea\u3092iOS\u7528\u306b\u30d3\u30eb\u30c9<\/a><\/p>\n<li>\n<p><a href=\"https:\/\/www.typea.info\/blog\/index.php\/2019\/04\/28\/xamarinforms_http\">Xamarin.Forms \u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u306e\u8868\u793a\u3068 Http\u901a\u4fe1<\/a><\/p>\n<li>\n<p><a href=\"https:\/\/www.typea.info\/blog\/index.php\/2019\/04\/29\/google_app_engine_java_spring_bootvuetify_json\">Spring Boot+Vuetify \u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3068JSON\u3067\u7d50\u679c\u3092\u8fd4\u3059<\/a><\/p>\n<li>\n<p>Google <a href=\"https:\/\/www.typea.info\/blog\/index.php\/2019\/04\/30\/google_app_enginejavaspring_bootvuetifygoogle_cloud_vision_apiocr\">Google Cloud Vision \u3067OCR\u3002Vuetify\u304b\u3089SpringBoot\u7d4c\u7531\u3067\u547c\u3073\u51fa\u3057<\/a><\/p>\n<li>\n<p><a href=\"https:\/\/www.typea.info\/blog\/index.php\/2019\/05\/01\/xamarinforms\">Xamarin \u30d5\u30a1\u30a4\u30eb\u9078\u629e<\/a><\/p>\n<li>\n<p><a href=\"https:\/\/www.typea.info\/blog\/index.php\/2019\/05\/01\/xamarinforms_multipartpost\">Xamarin \u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.typea.info\/blog\/index.php\/2019\/05\/01\/vuetify_vue_router\">Vue Router \u3092\u5c0e\u5165\u3057\u753b\u9762\u9077\u79fb<\/a><\/p>\n<\/li>\n<\/ol>\n<h2>1.\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u30e1\u30cb\u30e5\u30fc<\/h2>\n<p><a href=\"https:\/\/www.typea.info\/blog\/index.php\/2019\/05\/01\/vuetify_vue_router\">Vue Router\u3092\u5c0e\u5165\u3057\u3066\u753b\u9762\u9077\u79fb\u304c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u3063\u305f<\/a>\u306e\u3060\u304c\u3001<a href=\"https:\/\/www.typea.info\/blog\/index.php\/2019\/04\/20\/google_app_engine_java_spring_bootvuetifyajax\">Vue CLI<\/a> \u3067\u4f5c\u6210\u3057\u305f\u30c8\u30c3\u30d7\u30da\u30fc\u30b8\u306e\u307e\u307e\u3060\u3068\u3001\u30b9\u30de\u30db(\u30b5\u30a4\u30ba)\u3067\u8868\u793a\u3057\u305f\u5834\u5408\u306b\u3001\u53f3\u4e0a\u306e\u30e1\u30cb\u30e5\u30fc\u304c\u96a0\u308c\u3066\u3057\u307e\u3046\u305f\u3081\u3001\u30cf\u30f3\u30d0\u30fc\u30ac\u30fc\u30e1\u30cb\u30e5\u30fc\u3092\u3001 \u4ee5\u4e0b\u3092\u53c2\u8003\u306b\u5c0e\u5165\u3002<\/p>\n<p><a href=\"https:\/\/garicchi.com\/?p=20801\">https:\/\/garicchi.com\/?p=20801<\/a><\/p>\n<p><pre class=\"prettyprint linenums\">&lt;template&gt;\r\n  &lt;v-app&gt;\r\n    &lt;v-navigation-drawer fixed clipped app v-model=\"navBar\"&gt;\r\n      &lt;v-list dense class=\"pt-0\"&gt;\r\n        &lt;router-link to=\"\/\"&gt;\r\n          &lt;v-list-tile&gt;\r\n            &lt;v-list-tile-action&gt;\r\n              &lt;v-icon&gt;home&lt;\/v-icon&gt;\r\n            &lt;\/v-list-tile-action&gt;\r\n            &lt;v-list-tile-content&gt;HOME&lt;\/v-list-tile-content&gt;\r\n          &lt;\/v-list-tile&gt;\r\n        &lt;\/router-link&gt;\r\n        &lt;router-link to=\"\/entry\"&gt;\r\n          &lt;v-list-tile&gt;\r\n            &lt;v-list-tile-action&gt;\r\n              &lt;v-icon&gt;edit&lt;\/v-icon&gt;\r\n            &lt;\/v-list-tile-action&gt;\r\n            &lt;v-list-tile-content&gt;ENTRY&lt;\/v-list-tile-content&gt;\r\n          &lt;\/v-list-tile&gt;\r\n        &lt;\/router-link&gt;\r\n        &lt;router-link to=\"\/login\"&gt;\r\n          &lt;v-list-tile&gt;\r\n            &lt;v-list-tile-action&gt;\r\n              &lt;v-icon&gt;account_box&lt;\/v-icon&gt;\r\n            &lt;\/v-list-tile-action&gt;\r\n            &lt;v-list-tile-content&gt;LOG IN&lt;\/v-list-tile-content&gt;\r\n          &lt;\/v-list-tile&gt;\r\n        &lt;\/router-link&gt;\r\n        &lt;router-link to=\"\/about\"&gt;\r\n          &lt;v-list-tile&gt;\r\n            &lt;v-list-tile-action&gt;\r\n              &lt;v-icon&gt;settings&lt;\/v-icon&gt;\r\n            &lt;\/v-list-tile-action&gt;\r\n            &lt;v-list-tile-content&gt;ABOUT&lt;\/v-list-tile-content&gt;\r\n          &lt;\/v-list-tile&gt;\r\n        &lt;\/router-link&gt;\r\n      &lt;\/v-list&gt;    \r\n    &lt;\/v-navigation-drawer&gt;\r\n    &lt;v-toolbar clipped-left fixed app&gt;\r\n      &lt;v-toolbar-side-icon @click.stop=\"navBar = !navBar\"&gt;&lt;\/v-toolbar-side-icon&gt;\r\n      &lt;v-toolbar-title&gt;FavoPhrase&lt;\/v-toolbar-title&gt;\r\n      &lt;v-spacer&gt;&lt;\/v-spacer&gt;\r\n      &lt;v-toolbar-items class=\"hidden-sm-and-down\"&gt;\r\n        &lt;v-btn flat to=\"\/\"&gt;Home&lt;\/v-btn&gt;\r\n        &lt;v-btn flat to=\"\/entry\"&gt;Entry&lt;\/v-btn&gt;\r\n        &lt;v-btn flat to=\"\/login\"&gt;Login&lt;\/v-btn&gt;\r\n        &lt;v-btn flat to=\"\/about\"&gt;About&lt;\/v-btn&gt;\r\n      &lt;\/v-toolbar-items&gt;\r\n    &lt;\/v-toolbar&gt;\r\n    &lt;v-content&gt;\r\n      &lt;v-container fluid fill-height&gt;\r\n        &lt;v-fade-transition mode=\"out-in\"&gt;\r\n          &lt;router-view&gt;&lt;\/router-view&gt;\r\n        &lt;\/v-fade-transition&gt;\r\n      &lt;\/v-container&gt;\r\n    &lt;\/v-content&gt;\r\n  &lt;\/v-app&gt;\r\n&lt;\/template&gt;\r\n\r\n&lt;script&gt;\r\n  export default {\r\n    name: 'App',\r\n    data() {\r\n      return {\r\n        navBar: null\r\n      }\r\n    }\r\n  }\r\n&lt;\/script&gt;\r\n&lt;style&gt;\r\n  a {\r\n    text-decoration: none;\r\n  }\r\n&lt;\/style&gt;<\/pre>\n<p>\u30d6\u30e9\u30a6\u30b6\u30b5\u30a4\u30ba\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/87bd97ba9084_144C2\/navbar2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"730\" height=\"303\" title=\"navbar2\" style=\"display: inline; background-image: none;\" alt=\"navbar2\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/87bd97ba9084_144C2\/navbar2_thumb.png\" border=\"0\"><\/a><\/p>\n<p>\u30b9\u30de\u30db\u30b5\u30a4\u30ba\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/87bd97ba9084_144C2\/navbar3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"283\" height=\"475\" title=\"navbar3\" style=\"display: inline; background-image: none;\" alt=\"navbar3\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/87bd97ba9084_144C2\/navbar3_thumb.png\" border=\"0\"><\/a><\/p>\n<p>\u30cf\u30f3\u30d0\u30fc\u30ac\u30fc\u30e1\u30cb\u30e5\u30fc\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/87bd97ba9084_144C2\/navbar.png\"><img loading=\"lazy\" decoding=\"async\" width=\"284\" height=\"477\" title=\"navbar\" style=\"display: inline; background-image: none;\" alt=\"navbar\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/87bd97ba9084_144C2\/navbar_thumb.png\" border=\"0\"><\/a><\/p>\n<p>\u3046\u3093\u3002\u308f\u308b\u304f\u306a\u3044\u3002<\/p>\n<h2>2.Firebase \u3092\u4f7f\u3063\u3066\u7c21\u5358\u306b\u30ed\u30b0\u30a4\u30f3\u6a5f\u80fd\u3092\u5b9f\u73fe<\/h2>\n<p>\u4ee5\u4e0b\u306e\u30b5\u30a4\u30c8\u3092\u53c2\u8003\u306b\u5b9f\u88c5\u3002<\/p>\n<p><a href=\"https:\/\/firebase.google.com\/docs\/auth\/web\/firebaseui?hl=ja\">https:\/\/firebase.google.com\/docs\/auth\/web\/firebaseui?hl=ja<\/a><\/p>\n<p><a href=\"https:\/\/qiita.com\/okdyy75\/items\/24e78fdd0f12742b9e82\">https:\/\/qiita.com\/okdyy75\/items\/24e78fdd0f12742b9e82<\/a><\/p>\n<h3>\/main.js<\/h3>\n<p>\u4e0a\u8a18\u30b5\u30a4\u30c8\u3092\u53c2\u8003\u306b\u3001routes \u306e meta \u306b\u3001\u8a8d\u8a3c\u304c\u5fc5\u8981\u304b\u3069\u3046\u304b\u3092bool \u3067\u8a2d\u5b9a\u3057\u3001router.beforeEach \u3067\u3001\u9077\u79fb\u524d\u30ed\u30b0\u30a4\u30f3\u72b6\u614b\u3092\u78ba\u8a8d\u3057\u3001\u30ed\u30b0\u30a4\u30f3\u3055\u308c\u3066\u3044\u306a\u3051\u308c\u3070\u3001Login\u30da\u30fc\u30b8\u306b\u9077\u79fb\u3055\u305b\u308b\u3002<\/p>\n<p><pre class=\"prettyprint linenums\">import Vue from 'vue'\r\nimport VueRouter from 'vue-router'\r\nimport '@\/plugins\/vuetify'\r\nimport firebase from '@\/plugins\/firebase'\r\nimport 'firebase\/auth';\r\n\r\nimport App from '@\/App.vue'\r\n\r\nimport Home from '@\/components\/Home'\r\nimport Entry from '@\/components\/Entry'\r\nimport Login from '@\/components\/Login'\r\nimport About from '@\/components\/About'\r\n\r\nVue.config.productionTip = false\r\nVue.use(VueRouter)\r\n\r\nconst routes = [\r\n  { name:'Home',  path: '\/',      component: Home,  meta: { requiredAuth: false } },\r\n  { name:'Entry', path: '\/entry', component: Entry, meta: { requiredAuth: true  } },\r\n  { name:'Login', path: '\/login', component: Login, meta: { requiredAuth: false } },\r\n  { name:'About', path: '\/about', component: About, meta: { requiredAuth: false } }\r\n]\r\nconst router = new VueRouter({\r\n  routes\r\n})\r\n\r\nrouter.beforeEach((to, from, next) =&gt;{\r\n  if (to.matched.some(record =&gt; record.meta.requiredAuth)) {\r\n    if (firebase.auth().currentUser) {\r\n      console.log(firebase.auth().currentUser);\r\n      next();\r\n      return;\r\n    }\r\n    firebase.auth().onAuthStateChanged(user =&gt; {\r\n      if (user) {\r\n        next();\r\n      } else {\r\n        next({name: 'Login'})\r\n      } \r\n    })\r\n  }\r\n  next();\r\n})\r\n\r\nnew Vue({\r\n  render: h =&gt; h(App),\r\n  router:router\r\n}).$mount('#app')<\/pre>\n<h3>\/plugins\/firebase.js<\/h3>\n<p>Firebase\u3092\u5c0e\u5165\u3059\u308b\u3002<\/p>\n<p><a href=\"https:\/\/firebase.google.com\/docs\/web\/setup?hl=ja\">https:\/\/firebase.google.com\/docs\/web\/setup?hl=ja<\/a><\/p>\n<p><pre class=\"prettyprint linenums\">import firebase from 'firebase\/app'\r\n\r\nvar config = {\r\n    apiKey: \"XXXXXXXXXXXXXxXXXXXXXXXXXXXXXXXX\",\r\n    authDomain: \"xxxxxxxxxxxx.com\",\r\n    databaseURL: \"https:\/\/xxxxxxxxxxxxxx.com\",\r\n    projectId: \"favophrase\",\r\n    storageBucket: \"xxxxxxxxxxxxxxxxxxx.com\",\r\n    messagingSenderId: \"99999999999999999\"\r\n  }\r\n  firebase.initializeApp(config)\r\n\r\n  export default firebase<\/pre>\n<h3>\/components\/Login.vue \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8<\/h3>\n<p>FIrebase UI \u306e\u6700\u4f4e\u9650\u306e\u5b9f\u88c5\u3002\u3053\u308c\u3060\u3051\u3067\u3001\u30ed\u30b0\u30a4\u30f3\u6a5f\u80fd\u304c\u5b9f\u73fe\u3055\u308c\u308b\u3002<\/p>\n<p><pre class=\"prettyprint linenums\">&lt;template&gt;\r\n    &lt;v-container&gt;\r\n        &lt;div&gt;\r\n            &lt;v-btn @click=\"logout\"&gt;LOGOUT&lt;\/v-btn&gt;\r\n        &lt;\/div&gt;\r\n        &lt;div id=\"firebaseui-auth-container\"&gt;&lt;\/div&gt;\r\n    &lt;\/v-container&gt;\r\n&lt;\/template&gt;\r\n&lt;script&gt;\r\nimport firebase   from 'firebase\/app';\r\nimport firebaseui from 'firebaseui-ja';\r\n\r\nexport default {\r\n    mounted() {\r\n        var ui = firebaseui.auth.AuthUI.getInstance() || new firebaseui.auth.AuthUI(firebase.auth());\r\n        ui.start('#firebaseui-auth-container',{\r\n            signInOptions: [\r\n                firebase.auth.EmailAuthProvider.PROVIDER_ID,\r\n                firebase.auth.FacebookAuthProvider.PROVIDER_ID,\r\n                firebase.auth.TwitterAuthProvider.PROVIDER_ID,\r\n                firebase.auth.GoogleAuthProvider.PROVIDER_ID,\r\n            ],\r\n\r\n        });\r\n    },\r\n    methods: {\r\n        logout: function() {\r\n            firebase.auth().signOut().then(\r\n                () =&gt; console.log(\"Sign out.\")\r\n            );\r\n        }\r\n    }\r\n}\r\n&lt;\/Script&gt;<\/pre>\n<p>Firebase UI \u306e\u753b\u9762\u3002<\/p>\n<p>\u3046\u30fc\u3093\u3001\u3053\u308c\u3060\u3051\u306e\u30b3\u30fc\u30c9\u8a18\u8ff0\u3060\u3051\u3067\u3001\u8a8d\u8a3c\u6a5f\u80fd\u304c\u5b9f\u73fe\u3067\u304d\u308b\u306e\u306f\u304b\u306a\u308a\u3046\u308c\u3057\u3044\u3002<\/p>\n<p>\u672c\u7b4b\u306e\u6a5f\u80fd\u5b9f\u88c5\u306b\u5c02\u5ff5\u3067\u304d\u308b\u3063\u3066\u3053\u3068\u3060\u306a\u30fc\u3002<\/p>\n<p>Baas\u4e07\u6b73\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/87bd97ba9084_144C2\/firebaseui.png\"><img loading=\"lazy\" decoding=\"async\" width=\"378\" height=\"542\" title=\"firebaseui\" style=\"display: inline; background-image: none;\" alt=\"firebaseui\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/87bd97ba9084_144C2\/firebaseui_thumb.png\" border=\"0\"><\/a><\/p>\n<p>\u4e0a\u8a18\u3067\u8a8d\u8a3c\u3092\u5229\u7528\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u5404SNS\u306e\u958b\u767a\u8005\u30da\u30fc\u30b8\u306b\u8a2d\u5b9a\u304c\u5fc5\u8981\u3002<\/p>\n<p>Firebase <a href=\"https:\/\/console.firebase.google.com\/u\/1\/\">https:\/\/console.firebase.google.com\/u\/1\/<\/a><\/p>\n<p>Facebook Developer <a title=\"https:\/\/developers.facebook.com\/apps\" href=\"https:\/\/developers.facebook.com\/apps\">https:\/\/developers.facebook.com\/apps<\/a><\/p>\n<p>Twitter Developer <a href=\"https:\/\/developer.twitter.com\/en\/apps\">https:\/\/developer.twitter.com\/en\/apps<\/a><\/p>\n<p><a href=\"https:\/\/www.amazon.co.jp\/Vue-js-Nuxt-js%E8%B6%85%E5%85%A5%E9%96%80-%E6%8E%8C%E7%94%B0%E6%B4%A5%E8%80%B6%E4%B9%83\/dp\/4798056596\/ref=as_li_ss_il?_encoding=UTF8&amp;pd_rd_i=4798056596&amp;pd_rd_r=924db91f-70d6-11e9-a6da-c9c22d6eef92&amp;pd_rd_w=V8ust&amp;pd_rd_wg=esbY8&amp;pf_rd_p=ad2ea29d-ea11-483c-9db2-6b5875bb9b73&amp;pf_rd_r=8YHAZGPJDHC4GDJEVSCK&amp;psc=1&amp;refRID=8YHAZGPJDHC4GDJEVSCK&amp;linkCode=li2&amp;tag=typea09-22&amp;linkId=3e42861564103d31bdc18cf8945816bd\" target=\"_blank\"><img decoding=\"async\" src=\"\/\/ws-fe.amazon-adsystem.com\/widgets\/q?_encoding=UTF8&amp;ASIN=4798056596&amp;Format=_SL160_&amp;ID=AsinImage&amp;MarketPlace=JP&amp;ServiceVersion=20070822&amp;WS=1&amp;tag=typea09-22\" border=\"0\"><\/a><img loading=\"lazy\" decoding=\"async\" width=\"1\" height=\"1\" style=\"margin: 0px !important; border: currentcolor !important; border-image: none !important;\" alt=\"\" src=\"https:\/\/ir-jp.amazon-adsystem.com\/e\/ir?t=typea09-22&amp;l=li2&amp;o=9&amp;a=4798056596\" border=\"0\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Google App Engine Java Standard + Spring Boot \u74b0\u5883\u69cb\u7bc9 Spring Boot\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3 Thymeleaf\u3092\u9069\u7528 Spring Boot\u306bVue.js\u3092\u5229\u7528\u3059\u308b [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"sns_share_botton_hide":"","vkExUnit_sns_title":"","_vk_print_noindex":"","sitemap_hide":"","_veu_custom_css":"","veu_display_promotion_alert":"","vkexunit_cta_each_option":"","footnotes":""},"categories":[104,107],"tags":[],"class_list":["post-556","post","type-post","status-publish","format-standard","hentry","category-firebase","category-vue-js"],"veu_head_title_object":{"title":"","add_site_title":""},"_links":{"self":[{"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/posts\/556","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=556"}],"version-history":[{"count":0,"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/posts\/556\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=556"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=556"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=556"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}