Share
Embed
Transcript
72 slides
-
Who are you MyProfile : { Name : ‘ؔޱ ༐थ‘,
Belongs : ‘גࣜձࣾHAMWORKS ϑϩϯτΤϯυΤϯδχΞ’, Live : ‘ࡳຈ’, Ages : [35, ‘உ’], HistoryMT : ’11’, FavoriteMTML : ‘<mt:SetVarTemplate></mt:SetVarTemplate>’, MyMTPlugins : [ ‘MarkdownItField’, ’NetlifyBuildHooks’, ‘DataAPIResponseOutput’], FavoriteMusic : ‘SIAM SHADE’, Hobby : ‘ԂܳɾDIY’, Hashtag : [‘#ԂδχΞ’, ‘#ԂܳΤϯδχΞ’] Book : ‘ϓϩϑΣογϣφϧWebϓϩάϥϛϯά Vue.js', WebSite : ‘https://www.redamoon.net/’, Social : { Github : ‘redamoon’, Twitter : ‘@redamoon’, Instagram : ‘@redamoon’ } } -
"HFOEB • ࡢࠓͷϑϩϯτΤϯυ։ൃࣄ • MovableType ͷ Data APIʹ͍ͭͯ • Data
API Λ׆༻ͨ͠ Jamstack ͳ։ൃϫʔΫϑϩʔ • ·ͱΊ -
React/Vue.js/Svelte ʢϑϨʔϜϫʔΫʣΛ༻͍ͨߏஙTypeScriptͷใ͕ଟ͘ͳΓ·ͨ͠ɻ ·ͨɺHeadless CMSCI/ςετ/GitͳͲͷπʔϧॆ࣮ ੈ+BWB4DSJQU5ZQF4DSJQUઓࠃ࣌ ͦͷഎܠʹʜ ɾECMAScriptͷຖߦ͏ػೳΞοϓσʔτ ɾϑϨʔϜϫʔΫͷػೳॆ࣮ ɾHeadless CMS
ɾJamstackͱݺΕΔߏஙख๏ ※SSG/ISR ɾAPIͱදࣔͷ ɾCI / ςετ / Git ɾTypeScriptΛ༻͍Δ͜ͱͰΑΓݎ࿚ͳίʔυ -
"1*ͱදࣔͷ CMSαʔό WEBαʔό Database API Template CMS Image/File CSS JavaScript
HTML ैདྷͷCMSߏ CMSཧ͍ͯ͠ΔςϯϓϨʔτ͍ɺWebαʔό৴/ಉҰᝑମͷυΩϡϝϯτϧʔτͰཧ -
"1*ͱදࣔͷ Headless CMS Storage/Vercel etc API CMS Image/File CSS JavaScript
HTML Headless CMSߏ σʔλΛCMSͰཧ͠ߋ৽͝ͱʹCI্ͰϏϧυΛߦ͍ϗεςΟϯάઌͱͯ͠S3VercelΛར༻ Git/CI Template (static generator) -
Movable TypeϋΠΤϯυσϕϩούʔʹ͍͓ۙ٬༷ʹར༻͍͖͍ͯͨͩͨ͠ͱࢥ͍ͬͯ·͢͠ɺ ֎෦APIͷմͷΑ͏ʹ͍ͨ͠Ͱ͢ɻ Ϣʔβʔͱͯ͠ɺMovable Typeͷ֦ுϓϥάΠϯπʔϧΛ࡞ΔͳͲɺػೳՃΛ͢Δ͜ͱΛָ ͠Ήਓ͕ଟ͍Ͱ͢ɻ γοΫεɾΞύʔτ CTO ฏా େ࣏
ࢀߟϦϯΫɿhttps://enterprise.watch.impress.co.jp/cda/web2/2006/01/06/6940.html هࣄɿ2006 -
ϚϧνϑΟʔϧυ ΧελϜϑΟʔϧυدΓ WebαΠτΛૢ࡞͢ΔΑΓϑΟʔϧυΛૢ࡞͢Δײ֮ ςϯϓϨʔτͰཧ͢ΔͨΊϦϏδϣϯ͋Δ ΧελϚΠζJSྗ͕ٻΊΒΕΔ APIͷɺJSONͷจࣈྻ ϚϧνϑΟʔϧυͱ.5ϒϩοΫΤσΟλҧ͍ MTϒϩοΫΤσΟλ ϏδϡΞϧΤσΟλدΓ ཧը໘্Ͱ͋Δ͕ɺWebαΠτΛૢ࡞͢Δײ֮
GUIͰΧελϚΠζՄೳ ΧελϚΠζՄೳ͕ͩϦϏδϣϯ͕ͳ͍ ΧελϜίʔυॻ͚Δ APIͷɺHTMLσʔλ ϊʔίʔυʹ͍ۙ -
ϚϧνϑΟʔϧυ ViewଆίʔυͰཧ͍ͨ͠߹ ReactVueͳͲͷίϯϙʔωϯτϕʔεͰ։ൃͰ͖Δ ελΠϧHTMLͷมߋཤྺΛอ࣋Ͱ͖ΔʢGitʣ ϑΟʔϧυ୯ҐͰ୯ମςετՄೳ ϑΟʔϧυ୯ҐͰܕఆ͕ٛͰ͖Δ ίʔυ͕ෳࡶʹͳΔͨΊJSྗ͕ࢼ͞ΕΔ ඇΤϯδχΞ͕ͬ͘͞ͱϑΟʔϧυΛՃͰ͖ͳ͍ ϚϧνϑΟʔϧυͱ.5ϒϩοΫΤσΟλҧ͍ MTϒϩοΫΤσΟλ
ඇΤϯδχΞͰͬ͘͞ͱ࡞Γ͍ͨ߹ ͢ͰʹͰ͖͍ͯΔϑΟʔϧυΛGUIͰ༻ҙͰ͖Δ ඇΤϯδχΞͰΧελϚΠζՄೳ MTλάͰͦͷ··ग़ྗͰ͖Δ ϑϨʔϜϫʔΫͰͦͷ··ग़ྗͰදࣔՄೳ ελΠϧHTML͕MTʹґଘ͢Δ ϑΟʔϧυ୯ҐͰͷ୯ମςετ͍͠ ϚϧνϑΟʔϧυͱMTϒϩοΫΤσΟλͷ͍͚ -
.5.- MTMLͰͷཧɾ࣮ํ๏ • MTMLςϯϓϨʔτΛGitͰཧ • DockerڥΛ༻ҙͯ͠ɺϩʔΧϧڥͰςϯϓϨʔτͷ࣮ • ຊ൪ɾεςʔδϯάɾϩʔΧϧڥ͝ͱʹMovable TypeΛ༻ҙ •
ຊ൪σϓϩΠखݩͷMTMLΛཧը໘ίϐʔ&ϖʔετͯ͠࠶ߏங • ϩʔΧϧڥͷڞ༗SQLͷμϯϓσʔλͱग़ྗͨ͠ΞηοτΛzipͰڞ༗ɾɾɾ -
.5.- ։ൃϑϩʔɾӡ༻ͷ • ςϯϓϨʔτ͕Movable Typeʹґଘ͍ͯ͠ΔͨΊɺDB͚͕ͩຊͷ࠷৽ɾɾɾ • ཧը໘͔ΒςϯϓϨฤूՄೳͳͷͰɺඇΤϯδχΞ͕मਖ਼Մೳɾɾɾ • յΕ͔ͯΒ࿈བྷ͖ͯɺ࠷৽ͷίʔυΛཧը໘͔Βίϐʔ&ϖʔετͯ͠ϦϙδτϦʹϚʔδ •
ϦϏδϣϯ͔ΒͬͯࠩΛ֬ೝ͢Δʢϒϥϯν͝ͱʹςϯϓϨʔτ։ൃ͕Ͱ͖ͳ͍ʣ • MTMLΤϥʔݕʹऑ͍ ※λΠϙͯ͠ग़ྗͰ͖Δ • ͤΔʹܕใΛ͚ͭΕͳ͍ͨΊɺҙਤ͠ͳ͍ڍಈ͕ग़Δ͜ͱ͕͋Δ • ิ͕ͳ͍ͨΊɺͲͷϞδϡʔϧ͕ݺͼग़͔͢ςϯϓϨϞδϡʔϧ͔Βࢀর • ใ͕ݹ͍ͨΊɺӡ༻Ͱ͑ͨݟͷΈ͔͠ͳ͍ʢڞ༗ͣ͠Β͍ʣ • ෳࡶʹ࡞Γ͗ͯ͢ɺҾ͖ܧ͗ઌ͔Βຖճ࿈བྷ͕དྷΔʢୈࡾऀ͕ಡΊͳ͍ʣ 😵 😵 😴 -
σʔλͱςϯϓϨʔτͷ ։ൃɾӡ༻ͷݟ͢͠Δ • ςϯϓϨʔτMovable Typeʹґଘͤͨ͘͞ͳ͍ • ͔ͳΒͣGit -> CIΛ௨ͯࣗ͠ಈԽ͍ͨ͠ •
खݩͷίʔυ࠷৽ԽͷίϐʔΞϯυϖʔετෆཁʹ͍ͨ͠ • ϏϧυલʹΤϥʔΛݕ͍ͨ͠ • ొ͞ΕΔͷܕใίʔυ্ͷܕใΛ࣮ͨͤͯதͷૣظΤϥʔΛݕ͍ͨ͠ • ΤσΟλ্Ͱͷิ͕΄͍͠ • ૺ۰͢ΔΤϥʔΛ͙͙͚ͬͨͩͰղফͰ͖Δ͘Β͍ͷใྔ͕΄͍͠ • MTMLͰ࡞ΒΕͨΦϨΦϨυΩϡϝϯτ٫͍ͨ͠ -
%BUB"1*Λ׆༻ͨ͠+BNTUBDLͷ։ൃϫʔΫϑϩʔ JamstackͷߏஙϙΠϯτ • جຊతʹαʔόϨεͳӡ༻Λҙࣝ͢ΔͨΊMTΫϥυΛ࠾༻ • Ϗϧυ࣌ʹData APIΛݺͼग़͢ඞཁʢWebhookʣαʔόϨεߏAWSΛ࠾༻ • ςϯϓϨʔτNext.jsʢReactϕʔεʣΛ࠾༻ʢͪΖΜVueͳͲଞͷπʔϧՄೳʣ •
DockerͷMovable TypeෆཁʢMTΫϥυͷData APIΛࢀরใͱͯ͠͏ʣ • Ξηοτؔ࿈Ϗϧυ࣌S3ͳͲ৴ʢϩʔΧϧͷࢀরMTΫϥυͷΞηοτURLʣ • ImgixͳͲͷݕ౼ඞཁʢWebPͳͲʣ -
%BUB"1*Λ׆༻ͨ͠+BNTUBDLͷ։ൃϫʔΫϑϩʔ Asset Contents ※Webhook༻ϓϥάΠϯඞཁ ίϯςϯπཧऀ ςϯϓϨʔτཧʢΤϯδχΞʣ API Gateway هࣄɾΧςΰϦɾมߋɾআ Webhook
URL (API GatewayΤϯυϙΠϯτϦΫΤετ) Lambda WebࢹʢSentryͰϑϩϯτΛࢹʣ issueԽ CIىಈ Asset -> S3 CloudFront S3 HTML CSS JavaScript Image/File ίʔυσϓϩΠ ※ςετΛ௨Βͳ͍ͱσϓϩΠ͠ͳ͍ Git push Drone ʢςετ/Ϗϧυʣ PRͷϚʔδࣦഊ -
%BUB"1*Λ׆༻ͨ͠+BNTUBDLͷ։ൃϫʔΫϑϩʔ ϝϦοτ • αʔόϨεߏ͢Δ͜ͱͰαʔόӡ༻ෆཁʢίϯςϯπཧऀීஈͷར༻ͱมΘΒͳ͍ʣ • ैདྷͷ࠶ߏஙಉ༷ʹ੩తͰ͋Δ • SSG / CDNΛར༻͢Δ͜ͱͰίϯςϯπͷϖʔδεϐʔυվળ͞ΕΔ
• ϒϥϯν͝ͱʹςϯϓϨʔτΛ։ൃͰ͖ΔͨΊɺϦϦʔε୯ҐͰෆཁͳ࡞ۀʢίϐϖʣΛࣗಈԽ • ༷ʑͳαʔϏεΛΈ߹ΘͤΔ͜ͱ͕Ͱ͖ΔͨΊςϯϓϨʔτͷ֦ுੑ͕ߴ͍ • JavaScript/TypeScriptΛར༻͢Δ͜ͱͰίʔυ͕ݎ࿚ͭΞαΠϯઌ͕૿͑Δ • React/VueͳͲͷϑϨʔϜϫʔΫΛར༻͢ΔͨΊΦϨΦϨυΩϡϝϯτෆཁ • ςϯϓϨʔτͷ͢Δ͜ͱͰɺґଘ͕ղফ͞Ε͕Ͳ͜ʹ͋Δͷ͔͍͍͢ -
%BUB"1*Λ׆༻ͨ͠+BNTUBDLͷ։ൃϫʔΫϑϩʔ σϝϦοτ • αʔόϨεߏͷΞʔΩςΫνϟઃܭͱ࣮͕Ͱ͖ΔΤϯδχΞ͕ඞཁ • αʔϏεར༻͕ଟ͍ͨΊɺোඞͣى͖Δ • Gitͷૢ࡞पΓͷཧղ͕ඞཁʢඇΤϯδχΞ͚ʣ • JavaScript/TypeScript/React/VueͳͲͷ͕ࣝඞཁ
• ར༻͢ΔαʔϏεΫϥυͷ͕ࣝඞཁ • Movable Typeͷߋ৽λΠϛϯάͷͨΊͷWebhookϓϥάΠϯ͕ඞཁ • ΤϯυϙΠϯτ͕idϕʔεͷͨΊཧը໘͔Βࢀর͢Δ͔͠ͳ͍ ※ͦ͏͍͏ϓϥάΠϯ࡞Δʁ • Data APIࣗମॏ͍ͨɻͦͷ··ͰϨϯμϦϯά͕͍ʢϩʔΧϧʹอଘ͢Δख๏औΕΔʣ -
·ͱΊ • Data APIΛ׆༻͢Δ͜ͱͰ࠶ߏஙෆཁ • MTΫϥυΛ׆༻͢Δ͜ͱͰαʔόཧ͕ෆཁɾϦεΫࢄՄೳ • Jamstackߏʹ͢Δ͜ͱͰදࣔͷ୯ମςετ͕͍͢͠ʢΤϯδχΞϥΠΫʣ※γφϦΦςετՄ • ैདྷͷΤσΟλฤू
-> ཧը໘ίϐϖෆཁ • TypeScriptΛར༻͢Εɺ͞Βʹܕ҆શͳίʔυͱσόοάʢίʔυ݁ʣ͕Ͱ͖Δ • ैདྷͷςϯϓϨʔτࠩղফ͞ΕΔʢඇΤϯδχΞ͕ཧը໘͔Βউखʹमਖ਼͢Δʣ • MTMLΒͳ͍ΤϯδχΞͰ࣮Մೳ -
5IBOLZPV • https://www.movabletype.jp/developers/ data-api/v4-reference.html • https://github.com/ • https://bitbucket.org/ • https://about.gitlab.com/
• https://ja.reactjs.org/ • https://jp.vuejs.org • https://svelte.dev/ • https://microcms.io/ • https://www.contentful.com/ • https://graphcms.com/ • https://jamstack.org/ • https://www.drone.io/ • https://circleci.com/docs/ja/ • https://jestjs.io/ja/ • https://www.cypress.io/ • https://playwright.dev/ • https://www.typescriptlang.org/ • https://sentry.io/