Slide 1

Slide 1 text

੍໿ͱ੤໿ Մࣇ ५໵ @ka2jun8 2019/10/29 Nihonbashi.js ձ৔ఏڙLT

Slide 2

Slide 2 text

ࣗݾ঺հ ## Մࣇ ५໵ʢKani Junyaʣ
 - twitterɿ @ka2jun8 ### ܦྺͱॴଐ
 - 2014೥4݄ ৽ଔ F ͔Β͸͡·ΔձࣾʢR&Dʣ
 - 2018೥4݄ த్ R ͔Β͸͡·ΔձࣾʢFEʣ ### ΍ͬͯΔ͜ͱ
 - WebαʔϏεͷ৽ن্ཱͪ͛/ϑϧϦϓϨΠε
 - ࠷ۙ͸ AMP Λ࢖ͬͨ։ൃʹணख ### ϚΠϒʔϜ/޷͖ͳ΋ͷ
 - ೫໦ࡔ46 / Dead by Daylight / HUNTER x HUNTER ←্࢘

Slide 3

Slide 3 text

ࡢ೔ͷ͓ன͝ΖͷSlack

Slide 4

Slide 4 text

ಥવͷLT

Slide 5

Slide 5 text

্࢘ʹԿͰ΋࿩͍͍ͯ͠ͱݴ ΘΕͨͷͰ

Slide 6

Slide 6 text

AMP ͷ࿩Λ͠·͢

Slide 7

Slide 7 text

ࠓ͔Β࿩͢ͷ͸શ෦ ྫ͑͹ ͷ࿩Ͱ͢

Slide 8

Slide 8 text

Α͠ʂ৽نͰ B to C ͷ
 WebαʔϏεΛ։ൃΛ͢Δͧ SEO SEO SEO SEO IEରԠ σβΠϯ BFF ։ൃޮ཰ SEO SEO

Slide 9

Slide 9 text

͓Ε͕ࢥ͏ݱ୅࠷ڧͷ෍ਞ • AMP • React • next.js • typescript • styled-components

Slide 10

Slide 10 text

• AMP • React • next.js • typescript • styled-components ͓Ε͕ࢥ͏ݱ୅࠷ڧͷ෍ਞ

Slide 11

Slide 11 text

AMP࢖ͬͨ͜ͱ͋Δਓʁ

Slide 12

Slide 12 text

AMP is … https://amp.dev/about/websites/ https://blog.amp.dev/2018/11/20/progressively-amplify-ec-cube/

Slide 13

Slide 13 text

AMP is … ༷ʑͳݫ੍͍͠໿ͱ੤໿ͷԼͰ AMP valid ͳWebϖʔδΛ։ൃ ͢Δ͜ͱͰɺGoogle ͷΩϟογϡʹࡌΓɺݕࡧ݁Ռ͔Βߴ଎ʹ WebϖʔδΛදࣔՄೳʹ͢Δɻ ੍໿ͱ੤໿ͷྫ
 - JavaScript ͕ར༻Ͱ͖ͳ͍
 - ಈతͳ෦෼͸ AMP ίϯϙʔωϯτΛ࢖͏
 - CSS 50KB ҎԼ
 - ෼ੳ/޿ࠂλά͸ڐ༰͞Εͨ΋ͷͷΈར༻Մೳ
 ͳͲͳͲ…..

Slide 14

Slide 14 text

AMP ͷ։ൃύλʔϯ • Hybrid AMP • Full AMP ( AMP First )

Slide 15

Slide 15 text

hybrid ? 8FCϖʔδ ".1ϖʔδ canonical User

Slide 16

Slide 16 text

Hybrid AMP • ͍͍ͱ͜Ζ
 ˠ AMP valid ͳϖʔδΛผʹ༻ҙ͢ΔͨΊɺແཧʹAMP ίϯϙʔωϯτΛۦ࢖ͯ͠ػೳΛ࡞ΓࠐΉඞཁ͸ͳ͍ • ΘΔ͍ͱ͜Ζ
 ˠ ೋॏ։ൃʹͳΔ

Slide 17

Slide 17 text

Full AMP ".1POMZ User

Slide 18

Slide 18 text

Full AMP • ͍͍ͱ͜Ζ
 ˠ ೋॏ։ൃͷඞཁ͕ͳ͍ • ΘΔ͍ͱ͜Ζ
 ˠ AMP valid ͷ੍໿ͷԼɺ͢΂ͯͷػೳΛ࡞Γ্͛ Δඞཁ͕͋Δ

Slide 19

Slide 19 text

ϦϦʔε·Ͱͷεϐʔυ༏ઌ ೋॏ։ൃ͸ͤͣʹ Full AMP Ͱ͍͘

Slide 20

Slide 20 text

߈Ίͷ࢟੎ • Full AMP • React • next.js • typescript • styled-components

Slide 21

Slide 21 text

next.js + AMP • pages/${hoge}.tsx ϖʔδʹ config Λ export ͢Δ͚ͩ • next.js ಺෦ͷ _document.tsx ͳͲͰ amp ༻ʹ html ΛՃ޻ ͯ͘͠ΕΔ https://github.com/zeit/next.js/blob/canary/packages/next/pages/_document.tsx headλά htmlλά

Slide 22

Slide 22 text

AMP + next.js + styled-components https://github.com/zeit/next.js/blob/canary/examples/with-styled-components/pages/_document.js _document.tsx Ͱ SSR ࣌ʹ head λάʹ style Λॻ͖ग़͢ॲཧΛೖΕΔ GlobalStyle ͸ _app.tsx Ͱఆٛ͢Δ ※ͳͥ͜͏ॻ͘ͷ͔͸ɺ಺ ෦ͷॲཧܥ͕݁ߏ΍΍͜͠ ͍ͷͰɺ͜Ε͸·ͨผͰϒ ϩάͱ͔ॻ͔͘΋ AMP ༻ʹ Style Λ 
 ʹશ෦ॻ͘

Slide 23

Slide 23 text

ͳͷͰAMPԽ͸ָউ

Slide 24

Slide 24 text

ͱ͸͍͔ͳ͍

Slide 25

Slide 25 text

ͭ·ͬͨͱ͜ΖΛڞ༗

Slide 26

Slide 26 text

ܕ͕ͳ͍ • Typescript + react Ͱ΍ΔͳΒࣗ෼Ͱܕ Λॻ͘ඞཁ͕͋Δ ɾ ɾ ɾ

Slide 27

Slide 27 text

Styled-components ͱ૬ੑ͕ѱ͍ • styled.div`` ͷΑ͏ͳϊϦͰɺ
 styled[“amp-img”]`` ͕Ͱ͖ͳ͍ɻ • ӈͷ AmpImg ͷΑ͏ ͳϥούΛ༻ҙͯ͠ styled(AmpImg) ͱ͔͠ͳ͍ͱ͍͚ͳ ͍

Slide 28

Slide 28 text

Styled-components ͱ૬ੑ͕ѱ͍2 • AMP ͸ [class] (data-amp-bind-class) ͱ͍͏ଐੑΛ࣋ͨͤ Δ͜ͱ͕Ͱ͖Δɻ
• ͜ΕΛ styled-components ʹ͋ͯΔͱ class ͷมߋͱಉ࣌ ʹ style ͕શ෦ॻ͖มΘΔͨΊɺ ͱ͍͏;͏ʹ͸ॻ͚ͳ͍ɻ const StyledDiv = styled.div`style: hogehoge;`

Slide 29

Slide 29 text

AMP analytics / GTM ͕… • Adobe analytics ͷಈ࡞͕ෆ҆ఆ • GTM Ͱ AMP ޲͚ͷίϯςφΛ࡞ΕΔ΋ͷ ͷɺಈ࡞อূ͞Εͯͳ͍λά΋ଟ͍ • ͦ΋ͦ΋ AMP cache ʢgoogle υϝΠϯʣ͸ ITP 2.3 Ͱ࠶๚ΛऔΔͷ͸յ໓త…

Slide 30

Slide 30 text

ͦͷ΄͔ʹ΋ • ϦϦʔε͞Εͳ͍ͱ࣮ࡍͷޮՌ͸Θ͔ΒͣɺAMPʹ͔ͨ͠Βͱ͍ͬͯSEO͕ྑ͘ͳΔอূ͕͋ΔΘ ͚Ͱ͸ͳ͍ɻ • จࣈྻϕʔεͰAMPಠࣗͷଐੑ஋΍onΠϕϯτͷεΫϦϓτΛهड़͢ΔͷͭΒEɻ • amp-sidebar Ͱ iOS ͷͱ͖͚ͩ͋Γ͕ͨ໎࿭ͳۭͷ div ΛೖΕͯ͘Δɻ • debugͣ͠Β͍ɻ • AMPΩϟογϡ͕ޮ͍ͯ͠·͏ͱɺApp Indexing͕͖͔ͳ͍ʢΒ͍͠ʣɻ • Chrome ֦ுͷ AMP validator ͕ϦΫΤετΛૹΓ·ͬͯͭ͘Β͍ɻ • next.js Ͱ࢖͍ͬͯΔ amphtml-validator ͷGoogle ຊՈͷ validator ͕ update ͞ΕɺCDNܦ༝Ͱ ഑৴͞Ε͍ͯΔ͜ͱʹΑͬͯ next.js ͕ update ΋ͯ͠ͳ͍ͷʹಥવམͪΔࣄ݅ɻ ͳͲͨ͘͞Μ͋ͬͯॻ͖͖Εͳ͍…

Slide 31

Slide 31 text

AMP Λ࢖ͬͯ։ൃ͢΂͖͔ʁ • ͋Δఔ౓େن໛ͳاۀͷαʔϏε։ൃΛߦ͏࣮ੈքͰ͸ Full AMP ͸ݫ͍͠ɻ • ҰํɺAMPࣗ਎΍ next.js ͕࢖͍΍͘͢ͳΓͭͭ͋ΔʢAMP Bento / next v9ʣɻ AMP ίϯϙʔωϯτ΋ɺWeb Components ͱͯ͠͸࢖͑Δ΋ͷ΋ଟ͍ɻͲͧ͜ ͷ஌Βͳ͍αʔυύʔςΟϥΠϒϥϦΛ࢖͏ΑΓ͸ྑ͍ͱࢥ͏ɻ • AMPΛ࢖͍͍ͨຊ࣭తͳ໨త͸Կཱ͔ͪฦΔɻAMPͱSEO͸௚઀తͳؔ܎ੑ͸ͳ ͍ɻWebϖʔδ͕ߴ଎ʹ͍ͨ͠ͳΒɺύϑΥʔϚϯεόδΣοτ΍lighthouse CI Λ࢖ͬͨύϑΥʔϚϯε୲อͰ΋͍͍͔΋͠Εͳ͍ɻ • GCP, GA ͳͲͷ؀ڥΛ͢΂ͯ Google ʹऔΓғ·Εͨঢ়ଶͰ࡞ΕͯɺAMP cache ͷԸܙ͕ϑϧʹड͚ΒΕΔ؀ڥԼʹ͋ΔͳΒ΍ͬͯ΋͍͍ɻ

Slide 32

Slide 32 text

·ͱΊ • AMP ͸ Google ͷ Web ϖʔδߴ଎ԽͷͨΊͷఏҊ • Full AMP Ͱ։ൃΛߦ͏ࡍͷ Tips Λগ͠঺հ • AMP ʹ͢Δ΂͖͔Ͳ͏͔͸αʔϏε΍ঢ়گ࣍ୈ • ͨͩɺΈΜͳͰ࢖ͬͯෆຬΛFB͠ɺΤίγεςϜΛ վળ͠ଓ͚͍ͯ͘͜ͱͰະདྷ͸໌Δ͘ͳ͍ͬͯ͘

Slide 33

Slide 33 text

ΈΜͳ AMP ࢖ͬͯ͜͏ͳʂʂʂ @ka2jun8