Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Data APIを活用したWEBサイト構築手法

Data APIを活用したWEBサイト構築手法

redamoon

June 25, 2021
Tweet

More Decks by redamoon

Other Decks in Technology

Transcript

  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’ } }
  2. "1*ͱදࣔͷ෼཭ CMSαʔό WEBαʔό Database API Template CMS Image/File CSS JavaScript

    HTML ैདྷͷCMSߏ੒ CMS؅ཧ͍ͯ͠ΔςϯϓϨʔτ࢖͍ɺWebαʔό΁഑৴/ಉҰᝑମͷυΩϡϝϯτϧʔτͰ؅ཧ
  3. "1*ͱදࣔͷ෼཭ Headless CMS Storage/Vercel etc API CMS Image/File CSS JavaScript

    HTML Headless CMSߏ੒ σʔλΛCMSͰ؅ཧ͠ߋ৽͝ͱʹCI্ͰϏϧυΛߦ͍ϗεςΟϯάઌͱͯ͠S3΍VercelΛར༻ Git/CI Template (static generator)
  4. ϚϧνϑΟʔϧυ Viewଆ΋ίʔυͰ؅ཧ͍ͨ͠৔߹ React΍VueͳͲͷίϯϙʔωϯτϕʔεͰ։ൃͰ͖Δ ελΠϧ΍HTMLͷมߋཤྺΛอ࣋Ͱ͖ΔʢGitʣ ϑΟʔϧυ୯ҐͰ୯ମςετՄೳ ϑΟʔϧυ୯ҐͰܕఆ͕ٛͰ͖Δ ίʔυ͕ෳࡶʹͳΔͨΊJSྗ͕ࢼ͞ΕΔ ඇΤϯδχΞ͕ͬ͘͞ͱϑΟʔϧυΛ௥ՃͰ͖ͳ͍ ϚϧνϑΟʔϧυͱ.5ϒϩοΫΤσΟλҧ͍ MTϒϩοΫΤσΟλ

    ඇΤϯδχΞͰ΋ͬ͘͞ͱ࡞Γ͍ͨ৔߹ ͢ͰʹͰ͖͍ͯΔϑΟʔϧυΛGUIͰ༻ҙͰ͖Δ ඇΤϯδχΞͰ΋ΧελϚΠζ͸Մೳ MTλάͰͦͷ··ग़ྗͰ͖Δ ϑϨʔϜϫʔΫͰ΋ͦͷ··஋ग़ྗͰදࣔՄೳ ελΠϧ΍HTML͕MTʹґଘ͢Δ ϑΟʔϧυ୯ҐͰͷ୯ମςετ͸೉͍͠ ϚϧνϑΟʔϧυͱMTϒϩοΫΤσΟλͷ࢖͍෼͚
  5. ୤.5.- MTMLͰͷ؅ཧɾ࣮૷ํ๏ • MTMLςϯϓϨʔτΛGitͰ؅ཧ • Docker؀ڥΛ༻ҙͯ͠ɺϩʔΧϧ؀ڥͰςϯϓϨʔτͷ࣮૷ • ຊ൪ɾεςʔδϯάɾϩʔΧϧ؀ڥ͝ͱʹMovable TypeΛ༻ҙ •

    ຊ൪σϓϩΠ͸खݩͷMTMLΛ؅ཧը໘΁ίϐʔ&ϖʔετͯ͠࠶ߏங • ϩʔΧϧ؀ڥͷڞ༗͸SQLͷμϯϓσʔλͱग़ྗͨ͠ΞηοτΛzipͰڞ༗ɾɾɾ
  6. ୤.5.- ։ൃϑϩʔɾӡ༻ͷ໰୊఺ • ςϯϓϨʔτ͕Movable Typeʹґଘ͍ͯ͠ΔͨΊɺDB͚͕ͩຊ౰ͷ࠷৽ɾɾɾ • ؅ཧը໘͔ΒςϯϓϨฤूՄೳͳͷͰɺඇΤϯδχΞ͕मਖ਼΋Մೳɾɾɾ • յΕ͔ͯΒ࿈བྷ͖ͯɺ࠷৽ͷίʔυΛ؅ཧը໘͔Βίϐʔ&ϖʔετͯ͠ϦϙδτϦʹϚʔδ •

    ϦϏδϣϯ͔Β௥ͬͯࠩ෼Λ֬ೝ͢Δʢϒϥϯν͝ͱʹςϯϓϨʔτ։ൃ͕Ͱ͖ͳ͍ʣ • MTML͸Τϥʔݕ஌ʹऑ͍ ※λΠϙͯ͠΋ग़ྗͰ͖Δ • ౉ͤΔ஋ʹܕ৘ใΛ͚ͭΕͳ͍ͨΊɺҙਤ͠ͳ͍ڍಈ͕ग़Δ͜ͱ͕͋Δ • ิ׬͕ͳ͍ͨΊɺͲͷϞδϡʔϧ͕ݺͼग़͔͢͸ςϯϓϨϞδϡʔϧ͔Βࢀর • ৘ใ͕ݹ͍ͨΊɺӡ༻Ͱ஁͑ͨ஌ݟͷΈ͔͠ͳ͍ʢڞ༗ͣ͠Β͍ʣ • ෳࡶʹ࡞Γ͗ͯ͢ɺҾ͖ܧ͗ઌ͔Βຖճ࿈བྷ͕དྷΔʢୈࡾऀ͕ಡΊͳ͍ʣ 😵 😵 😴
  7. σʔλͱςϯϓϨʔτͷ෼཭ ։ൃɾӡ༻ͷݟ௚͢͠Δ఺ • ςϯϓϨʔτ͸Movable Typeʹґଘͤͨ͘͞ͳ͍ • ͔ͳΒͣGit -> CIΛ௨ͯࣗ͠ಈԽ͍ͨ͠ •

    खݩͷίʔυ࠷৽ԽͷίϐʔΞϯυϖʔετෆཁʹ͍ͨ͠ • ϏϧυલʹΤϥʔΛݕ஌͍ͨ͠ • ొ࿥͞ΕΔ஋ͷܕ৘ใ΍ίʔυ্ͷܕ৘ใΛ΋࣮ͨͤͯ૷தͷૣظΤϥʔΛݕ஌͍ͨ͠ • ΤσΟλ্Ͱͷิ׬͕΄͍͠ • ૺ۰͢ΔΤϥʔΛ͙͙͚ͬͨͩͰղফͰ͖Δ͘Β͍ͷ৘ใྔ͕΄͍͠ • MTMLͰ࡞ΒΕͨΦϨΦϨυΩϡϝϯτ୤٫͍ͨ͠
  8. %BUB"1*Λ׆༻ͨ͠+BNTUBDLͷ։ൃϫʔΫϑϩʔ JamstackͷߏஙϙΠϯτ • جຊతʹαʔόϨεͳӡ༻Λҙࣝ͢ΔͨΊMTΫϥ΢υΛ࠾༻ • Ϗϧυ࣌ʹData APIΛݺͼग़͢ඞཁʢWebhookʣαʔόϨεߏ੒͸AWSΛ࠾༻ • ςϯϓϨʔτ͸Next.jsʢReactϕʔεʣΛ࠾༻ʢ΋ͪΖΜVueͳͲଞͷπʔϧ΋Մೳʣ •

    DockerͷMovable Type͸ෆཁʢMTΫϥ΢υͷData APIΛࢀর৘ใͱͯ͠࢖͏ʣ • Ξηοτؔ࿈͸Ϗϧυ࣌S3ͳͲ΁഑৴ʢϩʔΧϧͷࢀর͸MTΫϥ΢υͷΞηοτURLʣ • ImgixͳͲͷݕ౼΋ඞཁʢWebPͳͲʣ
  9. %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ͷϚʔδࣦഊ
  10. %BUB"1*Λ׆༻ͨ͠+BNTUBDLͷ։ൃϫʔΫϑϩʔ ϝϦοτ • αʔόϨεߏ੒͢Δ͜ͱͰαʔόӡ༻ෆཁʢίϯςϯπ؅ཧऀ͸ීஈͷར༻ͱมΘΒͳ͍ʣ • ैདྷͷ࠶ߏஙಉ༷ʹ੩తͰ͋Δ • SSG / CDNΛར༻͢Δ͜ͱͰίϯςϯπͷϖʔδεϐʔυ΋վળ͞ΕΔ

    • ϒϥϯν͝ͱʹςϯϓϨʔτΛ։ൃͰ͖ΔͨΊɺϦϦʔε୯ҐͰෆཁͳ࡞ۀʢίϐϖʣΛࣗಈԽ • ༷ʑͳαʔϏεΛ૊Έ߹ΘͤΔ͜ͱ͕Ͱ͖ΔͨΊςϯϓϨʔτͷ֦ுੑ͕ߴ͍ • JavaScript/TypeScriptΛར༻͢Δ͜ͱͰίʔυ͕ݎ࿚׌ͭΞαΠϯઌ͕૿͑Δ • React/VueͳͲͷϑϨʔϜϫʔΫΛར༻͢ΔͨΊΦϨΦϨυΩϡϝϯτ͸ෆཁ • ςϯϓϨʔτͷ෼཭͢Δ͜ͱͰɺґଘ͕ղফ͞Ε໰୊͕Ͳ͜ʹ͋Δͷ͔௥͍΍͍͢
  11. %BUB"1*Λ׆༻ͨ͠+BNTUBDLͷ։ൃϫʔΫϑϩʔ σϝϦοτ • αʔόϨεߏ੒ͷΞʔΩςΫνϟઃܭͱ࣮૷͕Ͱ͖ΔΤϯδχΞ͕ඞཁ • αʔϏεར༻͕ଟ͍ͨΊɺো֐͸ඞͣى͖Δ • Gitͷૢ࡞पΓͷཧղ͕ඞཁʢඇΤϯδχΞ޲͚ʣ • JavaScript/TypeScript/React/VueͳͲͷ஌͕ࣝඞཁ

    • ར༻͢ΔαʔϏε΍Ϋϥ΢υͷ஌͕ࣝඞཁ • Movable Typeͷߋ৽λΠϛϯάͷͨΊͷWebhookϓϥάΠϯ͕ඞཁ • ΤϯυϙΠϯτ͕idϕʔεͷͨΊ؅ཧը໘͔Βࢀর͢Δ͔͠ͳ͍ ※ͦ͏͍͏ϓϥάΠϯ࡞Δʁ • Data APIࣗମ͸ॏ͍ͨɻͦͷ··Ͱ͸ϨϯμϦϯά͕஗͍ʢϩʔΧϧʹอଘ͢Δख๏΋औΕΔʣ
  12. ·ͱΊ • Data APIΛ׆༻͢Δ͜ͱͰ࠶ߏஙෆཁ • MTΫϥ΢υΛ׆༻͢Δ͜ͱͰαʔό؅ཧ͕ෆཁɾϦεΫ෼ࢄՄೳ • Jamstackߏ੒ʹ͢Δ͜ͱͰදࣔͷ୯ମςετ͕͠΍͍͢ʢΤϯδχΞϥΠΫʣ※γφϦΦςετՄ • ैདྷͷΤσΟλฤू

    -> ؅ཧը໘΁ίϐϖෆཁ • TypeScriptΛར༻͢Ε͹ɺ͞Βʹܕ҆શͳίʔυͱσόοάʢίʔυ׬݁ʣ͕Ͱ͖Δ • ैདྷͷςϯϓϨʔτࠩ෼໰୊΋ղফ͞ΕΔʢඇΤϯδχΞ͕؅ཧը໘͔Βউखʹमਖ਼͢Δ໰୊ʣ • MTML஌Βͳ͍ΤϯδχΞͰ΋࣮૷Մೳ
  13. 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/