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
Data APIを活用したWEBサイト構築手法
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
redamoon
June 25, 2021
Technology
78
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
もくテク_AI駆動開発の標準化を進める_-_プロセス整備とルール選定基準の整理.pdf
redamoon
0
1.9k
MTDDCMeetupTokyo_2023_LT.pdf
redamoon
0
180
Supabase + Nuxt3 の実装素振りで チャットアプリを作ってみた
redamoon
1
420
Movable Type を Headless CMS として活用した Jamstack開発手法
redamoon
0
230
sacss110_pdf.pdf
redamoon
1
140
Vue meet up sapporo Vue + Storybook導入について
redamoon
0
71
Movable Type 7を触ってみた
redamoon
0
240
HTML・CMSから考えるコンポーネント化について
redamoon
1
450
おれの使うさいきょうえでぃた
redamoon
0
220
Other Decks in Technology
See All in Technology
サイバーエージェントにおけるAI推進戦略と変革への取り組み
shotatsuge
0
610
4人目のSREはAgent
tanimuyk
0
290
AI時代のコスト管理を考えよう〜明日から使える実践AWSノウハウ~
yoshimi0227
0
970
從觀望到全公司落地:AI Agentic Coding 導入實戰 — 流程整合與安全治理
appleboy
0
170
Hatena Engineer Seminar 37 jj1uzh
jj1uzh
0
210
AI Agentをシステムに組み込む前にゆるく向き合ってみる
hayama17
0
170
はてなのサービス基盤を支える Kubernetes《足腰》
masayoshimaezawa
0
230
初めてのDatabricks勉強会
taka_aki
2
200
Agile and AI Redmine Japan 2026
hiranabe
4
510
“ID沼入口” - 基本とセキュリティから始める、考え続けるためのID管理技術勉強会 告知&イントロ
ritou
0
140
コミュニティの有益性 ~JAWS Days 2026 での体験を通して~ / The Benefits of a Community ~Through My Experience at JAWS Days 2026~
seike460
PRO
0
300
AI時代における最適なQA組織の作り方
ymty
3
190
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
950
Navigating Team Friction
lara
192
16k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
740
Measuring & Analyzing Core Web Vitals
bluesmoon
9
870
Paper Plane
katiecoart
PRO
1
52k
Site-Speed That Sticks
csswizardry
13
1.2k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.6k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
310
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
350
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
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/