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
640
もくテク_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
FinOps Agentが生んだ技術負債:コスト自動調査の落とし穴と解消までの道のり
oasis1994liveforever
3
250
DGX Spark でどこまでハッキングができるのか?
kash1064
3
1.4k
LLM-as-a-Judgeは本当に信頼できるのか――評価器を評価する話
taka_aki
2
1k
Optunaの最新リリースv5.0について
pfn
PRO
0
130
『SAR衛星データ解析入門』のご紹介とその応用
syuchimu
0
140
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
1
1k
ポケモン対戦を自動で記録して振り返ろう
fufufukakaka
0
150
AI導入は済んだ。次は統制を作り替える番だ_AI×開発組織 Summit 2026
techtekt
PRO
0
470
How to Design Configuration for Rails Applications
willnet
1
1.1k
Classmethod Company Deck
satoshi7
1
800
初海外で注意すべきこと12選!!!安全快適なre:invent生活にするために
yuuuuuuu168
1
190
20年間 SNS サービス「GREE」 を支えた技術の刷新と、長期運用サービスの Kubernetes へのリアーキテクト
gree_tech
PRO
0
110
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
371
20k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.3k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
2
2k
Become a Pro
speakerdeck
PRO
31
6.3k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
530
Into the Great Unknown - MozCon
thekraken
41
2.8k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
A better future with KSS
kneath
240
18k
Amusing Abliteration
ianozsvald
1
350
The Cost Of JavaScript in 2023
addyosmani
55
10k
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/