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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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 Agentをシステムに組み込む前にゆるく向き合ってみる
hayama17
0
170
AWS Security Hub CSPMの成功・失敗体験
cmusudakeisuke
0
590
GitHub Copilot運用のリアル ~AI Credit時代にどう向き合うか~
takafumisu2uk1
0
520
なぜ人は自分のプロジェクトを 「なんちゃってアジャイル」と 自嘲するのか
kozotaira
0
160
作る力から、見極める力へ — AI時代に広がるエンジニアの価値と役割
rince
0
370
はてなのサービス基盤を支える Kubernetes《足腰》
masayoshimaezawa
0
230
AWS Summit の片隅で、体育座りしながらコミュニティがにぎわう理由を考えた
k_adachi_01
2
290
Multi-Agent並列開発を 安全に回すための技術 / Technology for Safely Multi-Agent Parallel Development
tooppoo
0
220
コミュニティの有益性 ~JAWS Days 2026 での体験を通して~ / The Benefits of a Community ~Through My Experience at JAWS Days 2026~
seike460
PRO
0
300
事業会社は今こそSWEを高給で雇ってWebシステムを内製しよう
masaokb
0
110
「ビジネスがわかるエンジニア」とは何か?
ryooob
0
400
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
7.7k
Featured
See All Featured
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
300
So, you think you're a good person
axbom
PRO
2
2.1k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
From π to Pie charts
rasagy
0
220
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
The Invisible Side of Design
smashingmag
301
52k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Making Projects Easy
brettharned
120
6.7k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
360
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
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/