Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Data APIを活用したWEBサイト構築手法
Search
redamoon
June 25, 2021
Technology
79
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Data APIを活用したWEBサイト構築手法
redamoon
June 25, 2021
More Decks by redamoon
See All by redamoon
「速くなった」では足りない ─ Cursor Meetup Sapporo で話した、弥生の Cursor 組織導入1年
redamoon
0
660
もくテク_AI駆動開発の標準化を進める_-_プロセス整備とルール選定基準の整理.pdf
redamoon
0
2.3k
MTDDCMeetupTokyo_2023_LT.pdf
redamoon
0
190
Supabase + Nuxt3 の実装素振りで チャットアプリを作ってみた
redamoon
1
430
Movable Type を Headless CMS として活用した Jamstack開発手法
redamoon
0
250
sacss110_pdf.pdf
redamoon
1
160
Vue meet up sapporo Vue + Storybook導入について
redamoon
0
72
Movable Type 7を触ってみた
redamoon
0
250
HTML・CMSから考えるコンポーネント化について
redamoon
1
460
Other Decks in Technology
See All in Technology
"計画的無茶振り"を通してAIネイティブ世代の新人を育てる
subroh0508
1
120
キヨさん、67歳。AIコーディングエージェントに挑む
happysamurai294
0
110
[re:Invent2026事前勉強会(有志開催)]続きは、ラスベガスの廊下で / continue-in-the-vegas-hallway
sh_fk2
0
350
How we choose session proposals
kawaguti
PRO
1
180
外国人エンジニアがVueプロトタイプで仕様を合わせている話 / Vue Fes Japan 2026 LT
eluwing
0
280
演劇と私とスクラム
chinmo
0
160
なぜAI時代に技術記事を書くのか?どう書くのか? 〜bunの場合〜
kworkdev
PRO
0
160
Vibe-to-Spec開発_実践ガイド
happysamurai294
0
110
AIに任せられるFlutterコードベースを作る 〜仕様をコードで表し、ハーネスで守る〜
myohei
1
340
生成AI時代、PMは事業責任者に進化するともっと面白い〜PMだからこそ事業構造を動かせる時代に〜
kakehashi
PRO
1
940
PostgreSQL at Microsoft: Open Source, AI, & Cloud | Claire Giordano | PGConf.EU 2026
clairegiordano
0
110
ドメインエキスパートは いかにして AI を使って プロダクト開発をするか
tatsuyashiraishi
1
220
Featured
See All Featured
Color Theory Basics | Prateek | Gurzu
gurzu
1
500
Rails Girls Zürich Keynote
gr2m
96
14k
Exploring anti-patterns in Rails
aemeredith
4
540
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
540
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
580
Into the Great Unknown - MozCon
thekraken
41
2.8k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
470
Transcript
ʢۚʣ %BUB"1*Λ׆༻ͨ͠8&#αΠτߏஙख๏ ʲ.5౦ژʳ%BUB"1*
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’ } }
Who are you Movable Typeͱͷग़ձ͍ ʙ ઌ͕ોͬͨ ʙ
Who are you js workshop sapporo ࡳຈͰJavaScriptʹϑΥʔΧεͨ͠ϋϯζΦϯܗࣜͰษڧձΛओ࠵ ※ෆఆظͰ͋Γ·͕͢ɺݱࡏίϩφӔͷͨΊΦϯϥΠϯʹͯ։࠵Λߦ͍ͬͯ·͢ɻ https://js-workshop-sapporo.connpass.com/
"HFOEB • ࡢࠓͷϑϩϯτΤϯυ։ൃࣄ • MovableType ͷ Data APIʹ͍ͭͯ • Data
API Λ׆༻ͨ͠ Jamstack ͳ։ൃϫʔΫϑϩʔ • ·ͱΊ
ࡢࠓͷϑϩϯτΤϯυ։ൃࣄ
ੈ+BWB4DSJQU5ZQF4DSJQUઓࠃ࣌
React/Vue.js/Svelte ʢϑϨʔϜϫʔΫʣΛ༻͍ͨߏஙTypeScriptͷใ͕ଟ͘ͳΓ·ͨ͠ɻ ·ͨɺHeadless CMSCI/ςετ/GitͳͲͷπʔϧॆ࣮ ੈ+BWB4DSJQU5ZQF4DSJQUઓࠃ࣌ ͦͷഎܠʹʜ ɾECMAScriptͷຖߦ͏ػೳΞοϓσʔτ ɾϑϨʔϜϫʔΫͷػೳॆ࣮ ɾHeadless CMS
ɾJamstackͱݺΕΔߏஙख๏ ※SSG/ISR ɾAPIͱදࣔͷ ɾCI / ςετ / Git ɾTypeScriptΛ༻͍Δ͜ͱͰΑΓݎ࿚ͳίʔυ
&$."4DSJQUͷຖߦ͏ػೳΞοϓσʔτ ECMAScriptEcma Internationalͱ͍͏ஂମʹΑͬͯJavaScriptͷجຊ෦ͷ༷ΛఆΊͯΔ ECMAScript ES2015͔ΒຖΞοϓσʔτΛߦ͍ͬͯΔͨΊɺ લʹ࣮͞Ε͍ͯͳ͔ͬͨػೳ͕࣮͞Ε͍ͯΔ https://www.ecma-international.org/news/ecma-international-approves-new-standards-4/ ઌES2021ਖ਼༷ࣜʹͳΓ·ͨ͠
ϑϨʔϜϫʔΫͷػೳॆ࣮ ػೳڧԽόάϑΟοΫε͕සൟʹߦΘΕ͍ͯΔ ΦʔϓϯιʔεͰͩΕͰར༻ՄೳͳͨΊใଟ͍ ΄͔ʹϑϨʔϜϫʔΫଟ jQueryશظͷࠒ͕ջ͔͍͠
)FBEMFTT$.4 ࡢࠓɺٸʹಋೖࣄྫ͕ଟ͘ͳͬͨHeadless CMS ैདྷͷCMSʹඞͣ͋ΔςϯϓϨʔτͱ͍ͬͨ֓೦͕ͳ͘ɺఏڙ͞ΕΔͷొͨ͠σʔλͷAPIͷΈ
+BNTUBDLͱݺΕΔߏஙख๏˞44(*43 APIͷૄ௨ΛϏϧυ࣌ʹͷΈݶఆͰɺ੩తͳHTMLΛ৴ɾΩϟογϡΛར༻ͨ͠ख๏
+BNTUBDLͱݺΕΔߏஙख๏˞44(*43 ࠶ར༻ՄೳͳAPI ΫϥΠΞϯταΠυ JavaScript ࣄલʹϏϧυ͞Εͨ Markup APIͱදࣔΛͯ͠੩తʹॻ͖ग़͢ΞʔΩςΫνϟʢߏஙख๏ʣ
"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)
$*ςετ(JU CIʢܧଓతΠϯςάϨʔγϣϯʣ ιϑτΣΞ։ൃʹ͓͍ͯظؒͰ࣭ཧΛߦ͏ख๏Ͱ ςετϏϧυͳͲଟ͘ͷ࡞ۀΛࣗಈԽͯ͘͠Ε·͢ɻ Circle CI / droneͱ͍ͬͨαʔϏεʙΠϯετʔϧܕ·Ͱଟ
$*ςετ(JU ୯ମςετɾE2EςετͷࣗಈԽ
$*ςετ(JU GitͰιʔείʔυͷόʔδϣϯཧ ϓϧϦΫΤετͳͲΛߦ͍ɺػೳ֦ுͳͲΘ͔Γ͘͢ӡ༻
5ZQF4DSJQUΛ༻͍Δ͜ͱͰΑΓݎ࿚ͳίʔυ TypeScriptͰJavaScriptʹͳ͍ܕͷ͋Δݎ࿚ͳίʔυΛߏங
+40/৭͚ͷϑϩϯτΤϯυΤϯδχΞͩͬͨͷʹʜ
ϑϩϯτΤϯυΔ͜ͱଟ͗͢͡Όͳ͍ʁ ͜ΕҎ֎·ͩ͋Γ·͕͢ʜ ※࡞ըɿฐࣾᖒ࡞ @nagasawaaaa
Δ͜ͱ͕ଟ͍ɾใ͕ૣ͍ϑϩϯτΤϯυ Ͱ൧৯͍ͯͨ͘Ίʹ͍͔ͬͯͳ͚Ε͍͚ͳ͍ɻ
͋Εʁ.PWBCMF5ZQFʹ%BUB"1*͋Δ͔Β )FBEMFTT$.4ߏͰ͍͚ͬͯΔΜ͡Όͳ͍ʁ
Movable TypeϋΠΤϯυσϕϩούʔʹ͍͓ۙ٬༷ʹར༻͍͖͍ͯͨͩͨ͠ͱࢥ͍ͬͯ·͢͠ɺ ֎෦APIͷմͷΑ͏ʹ͍ͨ͠Ͱ͢ɻ Ϣʔβʔͱͯ͠ɺMovable Typeͷ֦ுϓϥάΠϯπʔϧΛ࡞ΔͳͲɺػೳՃΛ͢Δ͜ͱΛָ ͠Ήਓ͕ଟ͍Ͱ͢ɻ γοΫεɾΞύʔτ CTO ฏా େ࣏
ࢀߟϦϯΫɿhttps://enterprise.watch.impress.co.jp/cda/web2/2006/01/06/6940.html هࣄɿ2006
ɾɾɾɾ $.4"1*ͷմʹͳͬͯɺ$.4 ʓʓͷ࿈ܞͳ࣌ ※ฏా͞ΜɺλΠϜτϥϕϥʔͳͷ͔ͳɾɾɾ 🤔
࣋ͬͯΔࣝʢ.PWBCMF5ZQFʣΛ׆͔ͭͭ͠ɺ ࠓͷτϨϯυʹ߹Θ͍͖͍ͤͯͨ ΤϯδχΞر 🙏
.PWBCMF5ZQFͷ%BUB"1*ʹ͍ͭͯ
%BUB"1*ͱʁ
%BUB"1*ͱʁ APIʢWebAPIʣͱʁ Application Programming InterfaceͷུʹͳΓ·͢ɻ ΞϓϦέʔγϣϯΛϓϩάϥϜ͢ΔͨΊʹͭͳ͙ͨΊͷͷͰɺଞͷϓϩάϥϜ͔Βऔಘ/ߋ৽Λߦ͑Δ
• 2013Movable Type 6͔Βࡌ͞Εͨػೳ • REST/JSONํࣜͰσʔλߋ৽ɾআɾऔಘ͕Մೳ • WebαΠτҎ֎Ͱͷσʔλ׆༻͕Մೳ %BUB"1*ͱʁ https://www.movabletype.jp/developers/data-api/v4-reference.html
%BUB"1*ͱʁ https://my.XXX.com/[mt_directory]/mt-data-api.cgi/v4/sites/[site_id]/entries ※Movable Typeཧը໘ͰData APIΛ༗ޮ 1. ϒϥβΫϥΠΞϯτιϑτͰΤϯυϙΠϯτΛୟ͘ 2. Movable TypeͰొͨ͠σʔλͷϨεϙϯεΛऔಘ
※GETͷ߹
%BUB"1*ͱʁ https://my.XXX.com/[mt_directory]/mt-data-api.cgi/v4/sites/[siteid]/entries [mt_directory]ɿMovable Typeຊମ͕Πϯετʔϧ͞Ε͍ͯΔύε [siteid]ɿཧը໘ͷαΠτʹΞΫηεͨ͠ࡍɺURLʹ༩͞Ε͍ͯΔύϥϝʔλͷblog_idΛࢀর ΤϯυϙΠϯτɿهࣄҰཡͷऔಘྫ
%BUB"1*ͱʁ https://my.XXX.com/[mt_directory]/mt-data-api.cgi/v4/sites/[siteid]/categories/ [category_id]/entries ΤϯυϙΠϯτɿಛఆͷΧςΰϦIDͰهࣄҰཡΛऔಘ͢Δ ಛఆͷΧςΰϦͷΈͷهࣄҰཡΛநग़
%BUB"1*ͱʁ https://my.XXX.com/[mt_directory]/mt-data-api.cgi/v4/sites/[siteid]/ contentTypes/[content_type_id]/data ΤϯυϙΠϯτɿίϯςϯπλΠϓͷσʔλҰཡऔಘ ίϯςϯπλΠϓͷσʔλҰཡΛநग़
%BUB"1*ͱʁ https://my.XXX.com/[mt_directory]/mt-data-api.cgi/v4/sites/[siteid]/ contentTypes/[content_type_id]/data/[content_id]fileds?limit=1&fields=data ΤϯυϙΠϯτɿύϥϝʔλ͋Γ ಛఆͷίϯςϯπλΠϓͷσʔλΛࢦఆͭ݅1݅ͱಛఆͷϑΟʔϧυΛநग़
%BUB"1*ͱʁ Data APIΤϯυϙΠϯτͷ ɾMovable Type ͷઃܭ্ IDϕʔεͷίϯςϯπཧͷͨΊΤϯυϙΠϯτͷΞΫηεํ๏ID͕ඞཁ ɾIDΛௐΔखஈɺཧը໘ʹΞΫηεͯ͠URLΛࢀর͠ͳ͚ΕͳΒͳ͍ ɾϏϧυ͢ΔࡍʹIDΛؚΊͨύεੜ࣌จࣈྻʹม͕ඞཁ
ϚϧνϑΟʔϧυͱ.5ϒϩοΫΤσΟλҧ͍
ϚϧνϑΟʔϧυͱ.5ϒϩοΫΤσΟλҧ͍ ʲؾʹͳΔʳϒϩοΫΤσΟλͱϚϧνϑΟʔϧυͷ ΤϯυϙΠϯτͷอଘσʔλʁ
ϚϧνϑΟʔϧυ bit-partϓϥάΠϯ MTAppjQueryͷػೳͷҰͭ طଘϑΟʔϧυʹuser.jsͰఆٛͨ͠ϑΟʔϧυΛఆٛͯ͠ར༻ ΧελϚΠζɺuser.jsͰߦ͏ ϚϧνϑΟʔϧυͱ.5ϒϩοΫΤσΟλҧ͍ MTϒϩοΫΤσΟλ γοΫεɾΞύʔτϓϥάΠϯ ෳߦςΩετɾຊจͷϑΥʔϚοτͰϒϩοΫΛੵΈ্͛Δ ΧελϚΠζཧը໘ͷઃఆϑΟʔϧυ͔Βߦ͏
จࣈྻ͚ͩͲJSON ϚϧνϑΟʔϧυ ※දࣔͤ͞Δʹ JSON.parse()
HTMLσʔλͩͬͨ… MTϒϩοΫΤσΟλ ※ݩͷϑΟʔϧυ͕ෳߦςΩετͷ༷ͷͨΊ ※ͤΊͯจࣈྻͰJSONͰ΄͍͠ɾɾɾئ͍
ϚϧνϑΟʔϧυ ΧελϜϑΟʔϧυدΓ WebαΠτΛૢ࡞͢ΔΑΓϑΟʔϧυΛૢ࡞͢Δײ֮ ςϯϓϨʔτͰཧ͢ΔͨΊϦϏδϣϯ͋Δ ΧελϚΠζJSྗ͕ٻΊΒΕΔ APIͷɺJSONͷจࣈྻ ϚϧνϑΟʔϧυͱ.5ϒϩοΫΤσΟλҧ͍ MTϒϩοΫΤσΟλ ϏδϡΞϧΤσΟλدΓ ཧը໘্Ͱ͋Δ͕ɺWebαΠτΛૢ࡞͢Δײ֮
GUIͰΧελϚΠζՄೳ ΧελϚΠζՄೳ͕ͩϦϏδϣϯ͕ͳ͍ ΧελϜίʔυॻ͚Δ APIͷɺHTMLσʔλ ϊʔίʔυʹ͍ۙ
ྫʣϚϧνϑΟʔϧυ ϚϧνϑΟʔϧυͱ.5ϒϩοΫΤσΟλҧ͍ ※αϯϓϧίʔυͷͨΊίʔυతʹΑΖ͘͠ͳ͍
ྫʣMTϒϩοΫΤσΟλ ϚϧνϑΟʔϧυͱ.5ϒϩοΫΤσΟλҧ͍ ※αϯϓϧίʔυͷͨΊίʔυతʹΑΖ͘͠ͳ͍
ϚϧνϑΟʔϧυ ViewଆίʔυͰཧ͍ͨ͠߹ ReactVueͳͲͷίϯϙʔωϯτϕʔεͰ։ൃͰ͖Δ ελΠϧHTMLͷมߋཤྺΛอ࣋Ͱ͖ΔʢGitʣ ϑΟʔϧυ୯ҐͰ୯ମςετՄೳ ϑΟʔϧυ୯ҐͰܕఆ͕ٛͰ͖Δ ίʔυ͕ෳࡶʹͳΔͨΊJSྗ͕ࢼ͞ΕΔ ඇΤϯδχΞ͕ͬ͘͞ͱϑΟʔϧυΛՃͰ͖ͳ͍ ϚϧνϑΟʔϧυͱ.5ϒϩοΫΤσΟλҧ͍ MTϒϩοΫΤσΟλ
ඇΤϯδχΞͰͬ͘͞ͱ࡞Γ͍ͨ߹ ͢ͰʹͰ͖͍ͯΔϑΟʔϧυΛGUIͰ༻ҙͰ͖Δ ඇΤϯδχΞͰΧελϚΠζՄೳ MTλάͰͦͷ··ग़ྗͰ͖Δ ϑϨʔϜϫʔΫͰͦͷ··ग़ྗͰදࣔՄೳ ελΠϧHTML͕MTʹґଘ͢Δ ϑΟʔϧυ୯ҐͰͷ୯ମςετ͍͠ ϚϧνϑΟʔϧυͱMTϒϩοΫΤσΟλͷ͍͚
+40/৭͚ͱͯ͠ จࣈྻͰ+40/ͷܗͰ΄͍͠ɾɾɾ ※ϑϨʔϜϫʔΫͷίϯϙʔωϯτΛར༻͍ͨ͠ر
%BUB"1*͕ར༻Ͱ͖Ε ࠓͷαΠτΛ+BNTUBDLԽՄೳͰʁͱ͍͏ൃʹͳΔ ˞.5.-
.5.-
.5.-ͷݺٵ ※َ໓ͷਕΑΓ MTMLྺ11ɺଉΛٵ͏ײ֮ͰMTMLॻ͚Δɻશूத… ͨͿΜࡹϊܕ͘Β͍͍͚Δͣ… 🤪
.5.- MTMLͰͷཧɾ࣮ํ๏ • MTMLςϯϓϨʔτΛGitͰཧ • DockerڥΛ༻ҙͯ͠ɺϩʔΧϧڥͰςϯϓϨʔτͷ࣮ • ຊ൪ɾεςʔδϯάɾϩʔΧϧڥ͝ͱʹMovable TypeΛ༻ҙ •
ຊ൪σϓϩΠखݩͷMTMLΛཧը໘ίϐʔ&ϖʔετͯ͠࠶ߏங • ϩʔΧϧڥͷڞ༗SQLͷμϯϓσʔλͱग़ྗͨ͠ΞηοτΛzipͰڞ༗ɾɾɾ
ςϯϓϨσϓϩΠ͢Δ·Ͱϑϩʔ͕खಈɻ (JUΛ׆༻Ͱ͖ͯͳ͍ӡ༻ɾɾɾ
.5.-
.5.- SetVarTemplateͰมΛఆٛ͢Δ
.5.- ςϯϓϨʔτϞδϡʔϧͰSetVarTemplateΛಡΈࠐΉ VarఆٛͰݺͼग़͢
.5.- Ҿʹͨ݁͠Ռ͕HTMLͱͯ͠ग़ྗ͞ΕΔ
ݟ௨͕͠Αͯ͘ɺ͍ճͤΔ͔Β͍͍ΑͶʁ ͱࢥ͚ͬͯͨͲ͋Δɾɾɾ
.5.- ։ൃϑϩʔɾӡ༻ͷ • ςϯϓϨʔτ͕Movable Typeʹґଘ͍ͯ͠ΔͨΊɺDB͚͕ͩຊͷ࠷৽ɾɾɾ • ཧը໘͔ΒςϯϓϨฤूՄೳͳͷͰɺඇΤϯδχΞ͕मਖ਼Մೳɾɾɾ • յΕ͔ͯΒ࿈བྷ͖ͯɺ࠷৽ͷίʔυΛཧը໘͔Βίϐʔ&ϖʔετͯ͠ϦϙδτϦʹϚʔδ •
ϦϏδϣϯ͔ΒͬͯࠩΛ֬ೝ͢Δʢϒϥϯν͝ͱʹςϯϓϨʔτ։ൃ͕Ͱ͖ͳ͍ʣ • MTMLΤϥʔݕʹऑ͍ ※λΠϙͯ͠ग़ྗͰ͖Δ • ͤΔʹܕใΛ͚ͭΕͳ͍ͨΊɺҙਤ͠ͳ͍ڍಈ͕ग़Δ͜ͱ͕͋Δ • ิ͕ͳ͍ͨΊɺͲͷϞδϡʔϧ͕ݺͼग़͔͢ςϯϓϨϞδϡʔϧ͔Βࢀর • ใ͕ݹ͍ͨΊɺӡ༻Ͱ͑ͨݟͷΈ͔͠ͳ͍ʢڞ༗ͣ͠Β͍ʣ • ෳࡶʹ࡞Γ͗ͯ͢ɺҾ͖ܧ͗ઌ͔Βຖճ࿈བྷ͕དྷΔʢୈࡾऀ͕ಡΊͳ͍ʣ 😵 😵 😴
※࡞ըɿฐࣾᖒ࡞ @nagasawaaaa ݟ௨͠Α͘ߏஙͨ͠ͷʹӡ༻͠ΜͲ͍ɻ ͡ΌʔͲ͏͢Εɾɾɾ
σʔλͱςϯϓϨʔτͷ͕ඞཁ 🤔
σʔλͱςϯϓϨʔτͷ ։ൃɾӡ༻ͷݟ͢͠Δ • ςϯϓϨʔτMovable Typeʹґଘͤͨ͘͞ͳ͍ • ͔ͳΒͣGit -> CIΛ௨ͯࣗ͠ಈԽ͍ͨ͠ •
खݩͷίʔυ࠷৽ԽͷίϐʔΞϯυϖʔετෆཁʹ͍ͨ͠ • ϏϧυલʹΤϥʔΛݕ͍ͨ͠ • ొ͞ΕΔͷܕใίʔυ্ͷܕใΛ࣮ͨͤͯதͷૣظΤϥʔΛݕ͍ͨ͠ • ΤσΟλ্Ͱͷิ͕΄͍͠ • ૺ۰͢ΔΤϥʔΛ͙͙͚ͬͨͩͰղফͰ͖Δ͘Β͍ͷใྔ͕΄͍͠ • MTMLͰ࡞ΒΕͨΦϨΦϨυΩϡϝϯτ٫͍ͨ͠
%BUB"1*Λ׆༻ͨ͠+BNTUBDLͷ։ൃϫʔΫϑϩʔ
%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ࣗମॏ͍ͨɻͦͷ··ͰϨϯμϦϯά͕͍ʢϩʔΧϧʹอଘ͢Δख๏औΕΔʣ
·ͱΊ
·ͱΊ .5.-Ͱ࡞ΒΕͯͨطଘαΠτͨ͘͞Μ͋Δ
·ͱΊ +BNTUBDLϋʔυϧ͕ߴ͍ɻ ͍··Ͱͷ.5.-ख๏Ͱେৎʂ Ͱ+4Ͱ͖ΔͳΒνϟϨϯδͯ͠Έ͍ͯͩ͘͞ʂ
·ͱΊ • Data APIΛ׆༻͢Δ͜ͱͰ࠶ߏஙෆཁ • MTΫϥυΛ׆༻͢Δ͜ͱͰαʔόཧ͕ෆཁɾϦεΫࢄՄೳ • Jamstackߏʹ͢Δ͜ͱͰදࣔͷ୯ମςετ͕͍͢͠ʢΤϯδχΞϥΠΫʣ※γφϦΦςετՄ • ैདྷͷΤσΟλฤू
-> ཧը໘ίϐϖෆཁ • TypeScriptΛར༻͢Εɺ͞Βʹܕ҆શͳίʔυͱσόοάʢίʔυ݁ʣ͕Ͱ͖Δ • ैདྷͷςϯϓϨʔτࠩղফ͞ΕΔʢඇΤϯδχΞ͕ཧը໘͔Βউखʹमਖ਼͢Δʣ • MTMLΒͳ͍ΤϯδχΞͰ࣮Մೳ
·ͱΊ Ұͭͷઃܭख๏ͱͯ͠ɺ.PWBCMF5ZQFΛ)FBEMFTT$.4ͱͯ͠ ͬͯΈΔ͍͔͕Ͱ͠ΐ͏͔ɻ
ʲࠂʳ https://cssnite.doorkeeper.jp/events/121999 Coder’s High - HAMWORKS Special 7݄14ʢਫʣ CSS Nite
ొஃ༧ఆ
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/