Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
JAMstack_kotohajime.pdf
Search
IMANISHI TOSHIFUMI
December 07, 2019
Technology
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JAMstack_kotohajime.pdf
IMANISHI TOSHIFUMI
December 07, 2019
More Decks by IMANISHI TOSHIFUMI
See All by IMANISHI TOSHIFUMI
Vue 3 超入門 ー ゆく Vue くる Vue
toshifumiimanishi
0
200
Form_design_from_Netflix.pdf
toshifumiimanishi
0
160
New_Sass_Module_System.pdf
toshifumiimanishi
2
900
mercurial_nyuumon.pdf
toshifumiimanishi
0
97
Web制作者のためのSassの参考書.pdf
toshifumiimanishi
3
2.9k
ゆく技術_くる技術.pdf
toshifumiimanishi
0
300
裏CSS.pdf
toshifumiimanishi
0
140
Other Decks in Technology
See All in Technology
型落ちシンクライアント端末のPoEモジュールを自作したかった話
logica0419
0
480
AIエージェントのためのデータ設計
daiz21
0
450
指示待ちから変化に応じるClaude Codeへ!~環境からAgentへの帰り道を作る~
gotalab555
6
860
500名弱規模の組織のPythonプロジェクト(dbt) をどう管理するか?
hiracky16
0
300
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
54k
ClaudeCodeでセキュリティ監視業務を半自動化_1年の運用でわかったAIに任せる設計の5つのポイント
kintotechdev
3
690
『自分で判断できるか』を基準に、プロダクトのハンズオン研修でAI利用の線を引いてみた / Where We Drew the Line on AI in Hands-on Training
honyanya
0
300
EUDIWの枠組みを出発点に民間エコシステムの在り方を考える(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
310
AI時代のアウトプット――変わったこと、変わらないこと / Devsumi 2026 Kansai #devsumi
jnchito
0
590
【書籍出版記念】 10周回って、エージェント開発は RAGがすべてだった。〜RAGの歴史と開発現場で見えた実践知〜
akiratameto
21
8k
Master Dataグループ紹介資料
sansan33
PRO
1
4.8k
Microsoft MVP プログラムを紹介するから目指す人増えてくれ
tsubakimoto_s
0
140
Featured
See All Featured
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.1k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
310
Product Roadmaps are Hard
iamctodd
55
12k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
220
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
HDC tutorial
michielstock
2
820
How to make the Groovebox
asonas
2
2.4k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Amusing Abliteration
ianozsvald
1
260
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
390
BBQ
matthewcrist
89
10k
Automating Front-end Workflow
addyosmani
1369
210k
Transcript
+".TUBDL͜ͱ͡Ί ΤϯδχΞަྲྀձʙ7VFͱ͔3FBDU৮͓͔ͬͯͳ͍ͱͶʙʛ%FD ࠓढ़จ גࣜձࣾΞϯςΟʔɾϑΝΫτϦʔ
ࠓढ़จ ͍·ʹ͠ ϑϩϯτΤϯυΤϯδχΞ !UPTIJNBSOJF UPTIJGVNJJNBOJTIJ ͱ͠;Έ
+BWB4DSJQU "1*T .BSLVQ +".TUBDLͱ ˠΫϥΠΞϯταΠυͷ+BWB4DSJQU ˠ࠶ར༻Մೳͳ"1* ˠ͋Β͔͡Ίߏங͞Εͨ.BSLVQ
IFBEMFTT$.4ͱ "1*
813&45"1* QVTI OVYUHFOFSBUF
813&45"1*Λऔಘ͢Δʹɺ ύʔϚϦϯΫΛઃఆ͠·͢ ߘ*%
const apiUrl = 'http://localhost:8000/wp-json/wp/v2'; export default { … axios: {
baseURL: apiUrl }, … } OVYUDPOpHKT
None
JOEFYWVF export default { data () { return { posts:
[] } }, … async asyncData({ $axios }) { const { data } = await $axios.get('/posts?_embed') return { posts: data } }, } BTZOD%BUB/VYUKTͰఏڙ͢Δಠࣗʹ֦ுͨ͠7VFKTͷίϯϙʔωϯτΦϓγϣϯ ඇಉظʹσʔλΛऔಘ͢ΔͨΊͷϝιουͰɺ7VFKTͷEBUBʹϚʔδ͞Ε·͢ OVYUDPOpHKTͰఆٛͨ͠CBTF63-͕ࢀর͞Ε·͢ @FNCFEύϥϝʔλɺΞΠΩϟονը૾ίϝϯτͳͲͷใΛऔಘͰ͖·͢
JOEFYWVF <template> … <article v-for="post in posts" :key=“post.id"> <n-link :to="{
path: '/posts/' + post.id }"> <h2>{{ post.title.rendered }}</h2> <div v-html="post.excerpt.rendered"></div> </n-link> </article> … </template> ݻఆϖʔδͷϦϯΫऔಘ ݻఆϖʔδͷλΠτϧऔಘ ݻఆϖʔδͷ༰ൈਮ
None
export default { … generate: { routes: async () =>
{ const { data } = await axios.get(`${apiUrl}/posts?_embed`) return data.map(post => { return { route: `/posts/${post.id}`, payload: post } }) } } … } OVYUDPOpHKT HFOFSBUFίϚϯυͰɺಈతͳϧʔςΟϯάແࢹ͞Ε·͢ɻ ಈతͳύϥϝʔλʔΛ༻͍ͨϧʔτΛੜ͍ͤͨ͞߹ɺಈతͳϧʔςΟϯάͷྻΛηοτ͢Δඞཁ͕͋Γ·͢ɻ QBZMPBEɺಈతϧʔςΟϯάੜͷߴԽͷͨΊͰ͢ɻ
@JEWVF <template> <div> <h2>{{ post.title.rendered }}</h2> <div v-html="post.content.rendered"></div> </div> </template>
… export default { data () { return { post: {} } }, async asyncData({ $axios, params, error, payload }) { if (payload) { return { post: payload } } else { const { data } = await $axios.get(`/posts/${params.id}?_embed`) return { post: data } } } }
None
QVTI HBUTCZCVJME
$ npm install --save gatsby-source-contentful $ npm install --save gatsby-transformer-remark
HBUTCZDPOpHKT require('dotenv').config({ path: `.env.${process.env.NODE_ENV}` }) module.exports = { … plugins:
[ … { resolve: `gatsby-source-contentful`, options: { spaceId: `${process.env.CONTENTFUL_SPACE_ID}`, accessToken: `${process.env.CONTENTFUL_ACCESS_TOKEN}`, } }, `gatsby-transformer-remark` … ], } (BUTCZ+4ͭͷڥΛαϙʔτ͠·͢ɻ w HBUTCZEFWFMPQΛ࣮ߦ͢Δͱʮ։ൃʯڥʹͳΓ·͢ɻ w HBUTCZCVJMEɺ·ͨɺHBUTCZTFSWFΛ࣮ߦ͢Δͱʮຊ൪ʯڥʹͳΓ·͢ɻ HBUTCZUSBOTGPSNFSSFNBSL(BUTCZ+4Ͱ.BSLEPXOϑΝΠϧΛѻ͏ͨΊͷ5SBOTGPSNFSϓϥάΠϯͰ͢ɻ
FOWEFWFMPQNFOU CONTENTFUL_SPACE_ID=xxxxxxxx CONTENTFUL_ACCESS_TOKEN=xxxxxxxx FOWQSPEVDUJPO CONTENTFUL_SPACE_ID=xxxxxxxx CONTENTFUL_ACCESS_TOKEN=xxxxxxxx
None
None
w pMUFSɿϩέʔϧӳޠ w TPSUɿهࣄ࡞࣌ͷ߱ॱ
TSDQBHFTJOEFYKT import React from "react" import { Link, graphql }
from "gatsby" const IndexPage = ({ data }) => ( <div> <ul> { data.allContentfulCourse.edges.map(edge => { return ( <li key={edge.node.slug}> <Link to={ edge.node.slug }><h3>{ edge.node.title }</h3></Link> <div>{ edge.node.description.childMarkdownRemark.excerpt }</div> </li> ) }) } </ul> </div> ) export default IndexPage export const pageQuery = graphql` …
None
HBUTCZOPEFKT const path = require(`path`) exports.createPages = async ({ graphql,
actions: { createPage } }) => { const sources = await graphql(` … `) if (sources.errors) return const posts = sources.data.allContentfulCourse.edges posts.forEach(({ node }) => { createPage({ path: `${node.slug}`, component: path.resolve(`src/templates/blog-post.js`), context: { slug: node.slug } }) }) } औಘ͍ͨ͠$POUFOU5ZQFΛࢦఆ͠·͢ɻ w QBUIϖʔδΛग़ྗ͢Δύεͷࢦఆ w DPNQPOFOUϖʔδΛੜ͢Δࡍʹ͏ςϯ ϓϨʔτͷύεΛࢦఆ w DPOUFYUQBHF2VFSZͷҾͱςϯϓϨʔτ ͷQSPQTʹ͢Λࢦఆ σʔλΛऔಘ͢ΔͨΊͷ(SBQI2-ΫΤϦ ϖʔδੜͷॲཧ
None
UFNQMBUFTCMPHQPTUKT import React from 'react' import { graphql } from
'gatsby' export const pageQuery = graphql` … ` export default (props) => { const { title, description } = props.data.contentfulCourse return ( <div> <h1>{ title }</h1> <div dangerouslySetInnerHTML={{ __html: description.childMarkdownRemark.html }} /> </div> ) } QBHF2VFSZϖʔδʹඞཁͳσʔλΛ(SBQI2-ͷRVFSZʹΑͬͯऔಘ͢ΔͨΊͷͷͰɺ औಘͨ͠σʔλΛίϯϙʔωϯτʹQSPQTͰͯ͠ϖʔδΛੜ͠·͢ɻ औಘ͍ͨ͠$POUFOU5ZQFΛࢦఆ͠·͢ɻ
None
None
None
w +".TUBDL8FC։ൃͷΞʔΩςΫνϟ w Έ߹Θͤࣗ༝ w ϑϩϯτΤϯυͷ৽ٕज़ʹ৮ΕΔ w -FU`T+".TUBDL ·ͱΊ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠