Slide 1

Slide 1 text

͍·͞Β͚ͩͲ ʮྑ͍௨஌ʯʹ͍ͭͯߟ͑ͯΈͨ Hiroki Matsue Housmart Inc. Feb 23, 2018 ROPPONGI.swift ୈ1ճ

Slide 2

Slide 2 text

Hiroki Matsue (@macs_6) Swift/Ruby/Docker !

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

͜Μͳ͜ͱ͋Γ·ͤΜ͔

Slide 5

Slide 5 text

ΞϓϦϢʔβʔʰ௨஌ΛࢭΊ͍ͨΜͰ͕͢ʱ

Slide 6

Slide 6 text

Ͳ͏ͨ͠Βʮྑ͍௨஌ʯʹͰ͖Δͷ

Slide 7

Slide 7 text

ྑ͘ͳ͍௨஌ʁ ! • རݾతʁ • ԡ͠ചΓʁ

Slide 8

Slide 8 text

ڵຯͷແ͍΋ͷ͕සൟʹདྷͨΒݏ

Slide 9

Slide 9 text

Ϣʔβʔ͸ʮ˓˓͍ͨ͠ʯ͔Β ΞϓϦΛೖΕͯ͘ΕͯΔ

Slide 10

Slide 10 text

ʮ঎඼Λങ͍͍ͨʯ =>ʮൃചͨ͠Β஌Γ͍ͨʯ ͱ͔ ʮμΠΤοτ͍ͨ͠ʯ =>ʮه࿥Λ๨Εͳ͍Α͏ʹ͍ͨ͠ʯ

Slide 11

Slide 11 text

ڵຯͷ͋ΔਓʹૹΔ

Slide 12

Slide 12 text

ڵຯ͕͋ͬͨͷ͔֬ೝ͢Δ ܭଌ΋େࣄ

Slide 13

Slide 13 text

௨஌ɺܭଌͷ࣮૷͸஍ຯ

Slide 14

Slide 14 text

ϓογϡ௨஌ΛૹΔϢʔβʔΛߜΔ + ܭଌ SDKΛೖΕͯɺϢʔβʔ৘ใΛΠϯϙʔτͯ͠ɺ ͳΔ΂ָ͘ʹղܾ !

Slide 15

Slide 15 text

΋͠σεΫτοϓͰ΋࢖͑ΔαʔϏεͩͱʁ

Slide 16

Slide 16 text

[࣭໰] ୲౰͍ͯ͠ΔαʔϏε͕WebͱωΠ ςΟϒΞϓϦʹରԠ͍ͯ͠Δํʁ

Slide 17

Slide 17 text

Ϣʔβʔ͕ΫϩεσόΠεͰ࢖͏ ʮ௨஌ʯ͸2ͭ

Slide 18

Slide 18 text

• ϓογϡ௨஌ • ϝʔϧ (͋ͱWebϓογϡ)

Slide 19

Slide 19 text

PMʰϝʔϧ͔Β΋ΞϓϦΛ։͚ΔΑ͏ʹ σΟʔϓϦϯΫͷ࣮૷Λ͓ئ͍͠·͢ʱ

Slide 20

Slide 20 text

σΟʔϓϦϯΫ

Slide 21

Slide 21 text

iOSͷ2ͭͷσΟʔϓϦϯΫ • Custom URL Scheme example:// • Universal Links https://example.com/

Slide 22

Slide 22 text

ϝʔϧʹexample://Λ࢖͏ͱ σεΫτοϓ͔Β։͚ͳ͍

Slide 23

Slide 23 text

ͳͷͰUniversal LinksΛ࢖͏

Slide 24

Slide 24 text

ৼΓฦΓ • ʮྑ͍௨஌ʯ͸ૹΔର৅͕ߜΒΕ͍ͯΔ • ʮྑ͍௨஌ʯ͸ܭଌʹΑΓࢧ͑ΒΕ͍ͯΔ

Slide 25

Slide 25 text

ʮྑ͍௨஌ʯͷͨΊʹ ͪΌΜͱܭଌͯ͠PDCAճ͍ͨ͠

Slide 26

Slide 26 text

ࠓ·ͰͷWeb։ൃͳΒ • Mailgun • Sendgrid πʔϧΛೖΕͯΫϦοΫܭଌΛ༗ޮʹͯ͠׬ྃ

Slide 27

Slide 27 text

ͱࢥ͍͖΍ɾɾ ΫϦοΫܭଌʹผυϝΠϯΛ࢖͏ͱ Universal Links͕ൃಈ͠ͳ͍

Slide 28

Slide 28 text

࢓ํͳ͍ͷͰ ΍ͬͺΓCustom URL Scheme?

Slide 29

Slide 29 text

ྫ͑͹ɺϝϧΧϦͷݕࡧ৚݅อଘͨ࣌͠ͷϝʔϧ WebΛ։͍ͯɺ௚ޙʹ Custom URL SchemeͰΞϓϦʹભҠ

Slide 30

Slide 30 text

Custom URL Scheme + ܭଌ Pros • طଘͷWebܭଌͰղܾग़དྷΔ Cons • WebϖʔδΛҰ౓։͘ඞཁ͕͋Δ • ભҠલʹ֬ೝΞϥʔτ͕ग़ΔͷͰλοϓ͕૿͑Δ • ϝʔϧʹ໭ΔͱWebը໘͕࢒ͬͯΔ

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

ΞϓϦΛ։͘εςοϓ͕গͳ͍ํ͕ʮྑ͍௨஌ʯ

Slide 33

Slide 33 text

• ʮྑ͍௨஌ʯ͸ૹΔର৅͕ߜΒΕ͍ͯΔ • ʮྑ͍௨஌ʯ͸ܭଌʹΑΓࢧ͑ΒΕ͍ͯΔ • ʮྑ͍௨஌ʯ͸ͳΊΒ͔ʹΞϓϦʹભҠͰ͖Δ

Slide 34

Slide 34 text

ʮྑ͍௨஌ʯͷͨΊʹ ΍ͬͺΓUniversal LinksΛ࢖͍͍ͨ

Slide 35

Slide 35 text

Universal Links + ܭଌ Pros • Ϣʔβʔ͸ϫϯλοϓͰର৅ΞϓϦΛ։͚Δ • Կ͔͸։͚Δ(Πϯετʔϧ͞Ε͍ͯͳ͚Ε͹Web൛΁) Cons • ୹ॖURL౳ͰυϝΠϯ͕ҟͳΔͱൃಈ͠ͳ͍ • ܭଌ͢Δʹ͸ࣗ෼ͷυϝΠϯ಺ͰରԠ͕ඞཁ

Slide 36

Slide 36 text

ϝʔϧ௨஌͕ඞཁͳ৔߹ͷΫϦοΫܭଌ • αʔόʔαΠυ: URLʹύϥϝʔλΛ෇༩ • iOSΞϓϦ: URLʹؚ·ΕΔύϥϝʔλΛղऍͯ͠ه࿥ • AndroidΞϓϦ: URLʹؚ·ΕΔύϥϝʔλΛղऍͯ͠ه࿥ ΋͠σʔλͷอଘઌ͕·ͩແ͍ͳΒKeen IO΋Φεεϝ

Slide 37

Slide 37 text

iOSͰܭଌ͢Δ৔߹ func trackEmailClick(url: URL) -> URL { var properties = [String: Any]() properties["url"] = url.absoluteString properties["category"] = category properties["position"] = position properties = appendGlobalProperties(properties: properties) // Send to somewhere return removeTrackingParameters(url: url) }

Slide 38

Slide 38 text

RailsͰϝʔϧૹΔ৔߹ class ApplicationMailer < ActionMailer::Base include MailClickTracker end module MailClickTracker def mail(*args, &block) mail = super category = category(mail) new_body_source = '' position = 0 mail.body.raw_source.each_line do |line| url_match = line.match(/href\s*=\s*["|'](#{Settings.site_url}[^"^']*)["|']/) new_body_source << line and next if url_match.blank? url_str = url_match[1].to_s new_url_str = set_params(url_str, category) new_body_source << line.sub(url_str, new_url_str) end mail.body.raw_source.replace(new_body_source) mail end end

Slide 39

Slide 39 text

σʔλͷεΩʔϚྫ { "category": "string", "position": "string", "url": "string", "app_version": "string", "device_name": "string", "created_at": "datetime", "os_version": "string", "platform": "string", "user_id": "num" }

Slide 40

Slide 40 text

Universal Linksͷॲཧ࣌ʹ ه࿥͢Δ͚ͩͳͷͰγϯϓϧ

Slide 41

Slide 41 text

ʮྑ͍௨஌ʯͷͨΊͷܭଌͱભҠ

Slide 42

Slide 42 text

ϚʔέλʔɺΞϓϦɺαʔόʔαΠυͰڠྗ͢Δ ͱʮྑ͍௨஌ʯʹۙͮ͘ (·ͨ͸৭ʑ΍ΔϚϯ) https://speakerdeck.com/jumbo_ken/liang-osyarumantoiuxuan-ze

Slide 43

Slide 43 text

·ͱΊ

Slide 44

Slide 44 text

·ͱΊ • ʮྑ͍௨஌ʯ͸ૹΔର৅͕ߜΒΕ͍ͯΔ • ʮྑ͍௨஌ʯ͸ܭଌʹΑΓࢧ͑ΒΕ͍ͯΔ • ʮྑ͍௨஌ʯ͸ͳΊΒ͔ʹΞϓϦʹભҠͰ͖Δ ܭଌͯ͠ɺUniversal LinksΛద੾ʹ࢖͓͏

Slide 45

Slide 45 text

Custom URL Scheme Universal Links ΞϓϦભҠ࣌ͷ֬ೝ Ξϥʔτ͕ෆཁ × ○ URL୹ॖͰͷܭଌ - × <=ରԠͰ͖Δ ΞϓϦ͕ͳͯ͘΋ಈ ࡞͢Δ × ○

Slide 46

Slide 46 text

Thanks