Slide 1

Slide 1 text

RailsͰͷAMP࣮૷ࣄྫ

Slide 2

Slide 2 text

Profile ߥҪ ༐ี 2006-2011 Yahoo!JAPAN 2011- VASILY.inc ʮiQONʯͱ͍͏ঁੑ޲͚ϑΝογϣϯαʔϏεΛ࡞͍ͬͯ·͢ https://www.iqon.jp/ tech.vasily.jp/

Slide 3

Slide 3 text

AMPɹɹ Accelerated Mobile Pages

Slide 4

Slide 4 text

AMPͱ͸ ϞόΠϧϖʔδΛߴ଎ʹϢʔβʔಧ͚ΔͨΊʹൃ଍ͨ͠ϓϩδΣΫτ

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

࣮૷ʹ͸ਏ੍͍໿͕͋Δ

Slide 7

Slide 7 text

• ඞਢϚʔΫΞοϓ͕ଟ͍ • ࡞੒ͨ͠JavaScriptېࢭ • ༻ҙ͞Ε͍ͯΔAMP ComponentΛ࢖༻ • CSS͸headλά಺͔StyleཁૉͰΠϯϥΠϯͷΈ • linkཁૉ͸canonical͚ͩ ͳͲͳͲ...

Slide 8

Slide 8 text

ݫ͍͠৚݅ԼͰ΋खͬऔΓૣ͘Rails Ͱ࣮૷͠·͠ΐ͏

Slide 9

Slide 9 text

• routing • Controller • View • CSS

Slide 10

Slide 10 text

routing ௨ৗϖʔδͷURLʹ/ampΛ෇͚଍ͨ͠αϒςΟϨΫτϦํࣜ https://item.iqon.jp/15011036 // ௨ৗϖʔδ https://item.iqon.jp/15011036/amp // AMPϖʔδ get '/:item_id/amp', to: 'item#amp', constraints: {item_id: /[0-9]+/} ?amp=1 / .ampͰ൑அͳͲαʔϏε͝ͱʹ౎߹͕ྑ͍ͷʹ͠·͠ΐ͏ αϒυϝΠϯͰ΋͍͚·͢

Slide 11

Slide 11 text

Controller PC/ϞόΠϧͱڞ௨ͷॲཧͰcanonical͚ͩઃఆ AMP༻ͷviewͱlayoutͰϨϯμϦϯά def amp if _detail # PC/ϞόΠϧͳͲͱڞ௨ͷॲཧ @html[:canonical] = "https://item.iqon.jp/#{@item[:item_id]}/" # ϞόΠϧϖʔδ΁canonical render 'item/amp/detail', layout: 'amp/layout' # AMP༻ͷৄࡉϖʔδͱϨΠΞ΢τ end end def sp @html[:amphtml] = "https:#{domain_item}/#{@item[:item_id]}/amp/" if params[:amp].blank? end

Slide 12

Slide 12 text

View ෆཁͳίϯϙʔωϯτͷJSΛಡΈࠐΉͱܯࠂ͕ग़Δ JSͷಡΈࠐΈॱ΋ݫີʹܾ·͍ͬͯΔ layout # ڞ௨ͷAMP JS͸layoutͰಡΈࠐΉ script async=true custom-element="amp-analytics" src="https://cdn.ampproject.org/v0/amp-analytics-0.1.js" = yield(:extended_component_tags) script async=true src='https://cdn.ampproject.org/v0.js' Template content_for :extended_component_tags do script async=true custom-element="amp-carousel" src="https://cdn.ampproject.org/v0/amp-carousel-0.1.js"

Slide 13

Slide 13 text

CSS ͸ېࢭ͞Ε͍ͯΔ View಺ͰCSSΛrender͠ͳ͍ͱ͍͚ͳ͍ গ͠޻෉͢Ε͹ίϯύΠϧ͕ඞཁͳSassͰ΋࢖͏͜ͱ͕Մೳ

Slide 14

Slide 14 text

Template ࢖༻͢ΔsassΛࢦఆ content_for :css_path, 'item/amp/show.sass' layout render_cssͱ͍͏ϔϧύʔΛ࢖༻ style amp-custom=true = render_css(yield :css_path)

Slide 15

Slide 15 text

Helper RubyεΫϦϓτ಺෦ͰSCSSΛCSSʹม׵͢Δ def render_css path raw Sass::Engine.for_file("#{Rails.root}/app/assets/stylesheets/#{path}", { load_paths: ["#{Rails.root}/app/assets/stylesheets"], #importͷج४path style: :compressed # ѹॖ }).to_css end

Slide 16

Slide 16 text

·ͱΊ • ੍໿͸ଟ͍͕޻෉͢Ε͹ϞόΠϧ͔Βมߋ͕গͳͯ͘ࡁΉ • AMP͸ಋೖ͕ਐΜͰ͍·͢ɻະରԠͷ৔߹͸৘ใΛूΊ·͠ΐ͏

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

͋Γ͕ͱ͏͍͟͝·ͨ͠