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

施策基盤としてのディープリンク〜なめらかにアプリが開く体験のために〜

Atsuya Sato
September 10, 2022

 施策基盤としてのディープリンク〜なめらかにアプリが開く体験のために〜

2022/09/10(土)~12(月)に開催されたiOSDC Japan 2022で発表した2022/09/10 16:40〜 Track B「施策基盤としてのディープリンク 〜なめらかにアプリが開く体験のために〜」の資料です

Atsuya Sato

September 10, 2022
Tweet

More Decks by Atsuya Sato

Other Decks in Technology

Transcript

  1. $PPLQBE*OD
    ©︎
    J04%$+BQBO

    5SBDL#
    ࢪࡦج൫ͱͯ͠ͷσΟʔϓϦϯΫ
    ʙͳΊΒ͔ʹΞϓϦ͕։͘ମݧͷͨΊʹʙ
    "UTVZB4BUP [email protected]

    View Slide

  2. $PPLQBE*OD
    ©︎

    ࠤ౻ ರ໵ (@n_atmark)
    ͞ͱ͏ɹɹ͋ͭ΍
    ΫοΫύουגࣜձࣾ ങ෺αʔϏε։ൃ෦
    ΤϯδχΞ
    ΫοΫύουΞϓϦͷങ͍෺ػೳ (iOS/Android)ͷ։ൃ

    View Slide

  3. $PPLQBE*OD
    ©︎

    View Slide

  4. $PPLQBE*OD
    ©︎
    ࢪࡦͱ͸
    ˔
    ͨͱ͑͹ɺΞϓϦΛ࢖͏Ϣʔβʔ͕૿͑Δ͜ͱͰརӹʹͭͳ͕ΔΑ͏ͳ৔߹
    ˓
    ৽نΠϯετʔϧ਺
    ˓
    ΞϓϦͷىಈճ਺
    ˓
    ࿈ଓར༻೔਺
    ˓
    ʜFUD

    ʮ໨ඪୡ੒΍໰୊ղܾͷͨΊʹߨ͡Δ΂͖ܭըɾઓུʯͷ͜ͱ

    View Slide

  5. $PPLQBE*OD
    ©︎
    ࢪࡦͷࣄྫ঺հ

    View Slide

  6. $PPLQBE*OD
    ©︎
    ࢪࡦͷࣄྫ঺հ
    ˔
    ൢଅΩϟϯϖʔϯ
    ˓
    ໨త
    ˙
    ച্֦େ
    ˙
    ৽نϢʔβʔ֫ಘͳͲ

    ࢪࡦͷࣄྫ঺հ

    View Slide

  7. $PPLQBE*OD
    ©︎
    ࢪࡦͷࣄྫ঺հ
    ˔
    8FCΞϓϦ༠ಋ
    ˓
    ໨త
    ˙
    ٳ຾ϢʔβʔͷϦλʔήςΟϯά
    ˙
    ܧଓར༻Λ໨తͱͨ͠ΞϓϦ΁ͷఆணͳͲ

    ࢪࡦͷࣄྫ঺հ

    View Slide

  8. $PPLQBE*OD
    ©︎
    ࢪࡦͷࣄྫ঺հ
    ˔
    ༑ୡট଴Ωϟϯϖʔϯ
    ˓
    ໨త
    ˙
    ೝ஌֫ಘ
    ˙
    ϦϑΝϥϧʹΑΔ৽ن
    Ϣʔβʔ֫ಘͳͲ

    ࢪࡦͷࣄྫ঺հ

    View Slide

  9. $PPLQBE*OD
    ©︎

    ʮΞϓϦ΁ϢʔβʔΛ࿈Εͯ͘ΔͨΊͷ࢓૊Έʯ
    ͱͯ͠ͷσΟʔϓϦϯΫ

    View Slide

  10. $PPLQBE*OD
    ©︎
    ΞδΣϯμ
    ˔
    ֓೦ͱͯ͠ͷσΟʔϓϦϯΫ
    ˔
    Ϣʔβʔঢ়ଶ΍ෳ਺ܦ࿏͔Βͷྲྀೖʹରͯ͠׆༻Ͱ͖Δ࢓૊Έ
    ˔
    Ϣʔβʔʹจ຺Λཧղͨ͠ঢ়ଶͷ··ΞϓϦʹ͖ͯ΋Β͏ͨΊʹ׆༻Ͱ͖
    Δ࢓૊Έ
    ˔
    ࢪࡦ΁ͷద༻
    ˔
    ·ͱΊ

    View Slide

  11. $PPLQBE*OD
    ©︎
    ֓೦ͱͯ͠ͷσΟʔϓϦϯΫ

    View Slide

  12. $PPLQBE*OD
    ©︎
    σΟʔϓϦϯΫ %FFQ-JOLJOH
    ͱ͸
    ˔
    σΟʔϓϦϯΫͱ͍͏lػೳz͸ͳ͍
    ˓
    ֓೦͓Αͼ໊শͱͯ͠lσΟʔϓϦϯΫzͱ͍͏ϫʔυ͕༻͍ΒΕ͍ͯΔ

    ֓೦ͱͯ͠ͷσΟʔϓϦϯΫ
    σΟʔϓϦϯΫʹରԠͨ͠URIͦͷ΋ͷΛࢦ͢ݴ༿ͱͯ͠΋
    ར༻͞ΕΔ
    ֓೦
    ໊শ
    ΞϓϦͷಛఆͷίϯςϯπΛ URI Ͱදݱͯ͠ɺର৅ͷURIΛ
    ϦΫΤετͨ͠ࡍʹΞϓϦͷಛఆͷίϯςϯπʹΞΫηε͢
    ΔͨΊͷ΋ͷ
    ˔

    ΫοΫύουͷϨγϐৄࡉΛ։͘σΟʔϓϦϯΫ
    ˓
    IUUQTDPPLQBEDPNSFDJQFJE
    ˓
    DPPLQBEEPNBJOSFDJQFJE ˞આ໌༻ʹ࣮ࡍͱ͸ผͷ΋ͷΛࡌ͍ͤͯ·͢

    View Slide

  13. $PPLQBE*OD
    ©︎
    σΟʔϓϦϯΫ %FFQ-JOLJOH
    ͱ͸
    ˔
    ΞϓϦͷಛఆͷը໘Λ63*Ͱදݱͯ͠ɺ౿Ήͱͦ͜ʹભҠͤ͞Δ͜ͱɻ·ͨ
    ͸ͦͷ63*ͦͷ΋ͷɻ
    ˔
    ϢχόʔαϧϦϯΫͰ༻͍ΒΕΔ63-΍ΧελϜεΩʔϜͷ63*ͳͲࣗ਎ͷ͜
    ͱΛσΟʔϓϦϯΫͱݺͿ͜ͱ΋͋Δ
    ˔
    ʮϢχόʔαϧϦϯΫʯ΍ʮΧελϜ63-εΩʔϜʯ͸σΟʔϓϦϯΫΛ࣮
    ݱ͢ΔͨΊͷํ๏ͷҰछ

    ֓೦ͱͯ͠ͷσΟʔϓϦϯΫ
    ˔
    ิ଍ݫີʹ͸8PSME8JEF8FCʹ͓͚ΔσΟʔϓϦϯΫ %FFQ-JOLJOH
    ͱϞόΠϧΞϓϦͷ
    จ຺ʹ͓͚ΔσΟʔϓϦϯΫ .PCJMF%FFQ-JOLJOH
    ͸۠ผ͞ΕΔ
    ˓
    ؆୯ͷͨΊ.PCJMF%FFQ-JOLJOHͷ͜ͱΛσΟʔϓϦϯΫͱݺͿ͜ͱʹ͢Δ

    View Slide

  14. $PPLQBE*OD
    ©︎
    σΟʔϓϦϯΫʹରԠͨ͠URIͦͷ΋ͷΛࢦ͢ݴ༿ͱͯ͠΋ར༻͞ΕΔ
    ֓೦
    ໊শ
    ΞϓϦͷಛఆͷίϯςϯπΛ URI Ͱදݱͯ͠ɺର৅ͷURIΛϦΫΤετͨ͠ࡍʹ
    ΞϓϦͷಛఆͷίϯςϯπʹΞΫηε͢ΔͨΊͷ΋ͷ
    σΟʔϓϦϯΫ
    (Deep Linking)
    http(s): Ͱ࢝·ΔϦϯΫΛϋϯυϦϯά͢Δ http(s): Ҏ֎ͷϦϯΫΛϋϯυϦϯά͢Δ
    ػೳ Universal Links
    Android App Links
    ػೳ
    ػೳ Custom URL Scheme

    View Slide

  15. $PPLQBE*OD
    ©︎
    6OJWFSTBM-JOLTͱ͸

    ֓೦ͱͯ͠ͷσΟʔϓϦϯΫ
    ػೳ ಛఆͷ΢ΣϒαΠτʹؔ࿈෇͚ΒΕͨΞϓϦ͕Πϯε
    τʔϧ͞Ε͍ͯΔ৔߹ɺ΢ΣϒαΠτURL͔Β௚઀

    ΞϓϦ಺ͷରԠίϯςϯπΛ։͚ΔΑ͏ʹͳΔ΋ͷ

    View Slide

  16. $PPLQBE*OD
    ©︎
    6OJWFSTBM-JOLTͱ͸

    ֓೦ͱͯ͠ͷσΟʔϓϦϯΫ
    ػೳ ಛఆͷ΢ΣϒαΠτʹؔ࿈෇͚ΒΕͨΞϓϦ͕Πϯε
    τʔϧ͞Ε͍ͯΔ৔߹ɺ΢ΣϒαΠτURL͔Β௚઀

    ΞϓϦ಺ͷରԠίϯςϯπΛ։͚ΔΑ͏ʹͳΔ΋ͷ
    ˔
    "TTPDJBUFE%PNBJOTͰઃఆ͞ΕͨυϝΠϯͷBQQMFBQQ
    TJUFBTTPDJBUJPOϑΝΠϧΛΞϓϦͷॳճىಈ࣌ʹμ΢ϯϩ
    ʔυͯ͠൑ผͰ͖ΔΑ͏ʹ͍ͯ͠Δ
    ˔
    J04ͷΈͰར༻Մೳͳػೳ

    ˞"OESPJEͰ͸ྨࣅٕज़ͱͯ͠"OESPJE"QQ-JOLT͕ར༻Մೳ

    View Slide

  17. $PPLQBE*OD
    ©︎
    6OJWFSTBM-JOLTͱ͸
    "TTPDJBUFE%PNBJOT

    ֓೦ͱͯ͠ͷσΟʔϓϦϯΫ
    ˓
    υϝΠϯͷॴ༗ݖΛূ໌͢ΔͨΊʹ"TTPDJBUFE%PNBJOTͱͯ͠

    TFSWJDFGVMMRVBMJ
    fi
    FEEPNBJOͷܗࣜͰΞϓϦͱΫϨσϯγϟϧΛ
    ڞ༗͢ΔυϝΠϯΛ௥Ճ͢Δ
    ొஃ࣌͸εϥΠυεΩοϓ͠·͢

    View Slide

  18. $PPLQBE*OD
    ©︎
    6OJWFSTBM-JOLTͱ͸
    BQQMFBQQTJUFBTTPDJBUJPO

    ֓೦ͱͯ͠ͷσΟʔϓϦϯΫ
    ˓
    ΞϓϦͷॴ༗ݖΛূ໌͢ΔͨΊʹυϝΠϯͰαϙʔτ͢ΔΞϓϦࣝผࢠΛ
    ྻڍ͠ɺIUUQTEPNBJOOBNFXFMMLOPXOBQQMFBQQTJUF
    BTTPDJBUJPOͷύεͰϗετ͢Δ
    ొஃ࣌͸εϥΠυεΩοϓ͠·͢

    View Slide

  19. $PPLQBE*OD
    ©︎
    ΧελϜ63-εΩʔϜ $VTUPN63-4DIFNF
    ͱ͸

    ֓೦ͱͯ͠ͷσΟʔϓϦϯΫ
    ػೳ ΞϓϦ͝ͱʹఆٛ͞Ε͍ͯΔ https:, http: Ҏ֎ͷಠࣗͷ
    εΩʔϜΛࣝผͯ͠ɺରԠ͢ΔΞϓϦΛ։͘͜ͱͷͰ
    ͖Δػೳ (iOS/AndroidͰར༻Մೳ)
    ˞ิ଍ຊདྷΧελϜ63-εΩʔϜ͕ࢦ͢΋ͷ͸DPPLQBEEPNBJO
    ͷ෦෼͕ͩɺ׳༻తʹDPPLQBEEPNBJOSFDJQFJEͷΑ͏ͳσΟʔ
    ϓϦϯΫʹରԠͨ͠63*ࣗ਎Λࢦ͢ݴ༿ͱͯ͠࢖ΘΕΔ৔߹΋͋Δ

    View Slide

  20. $PPLQBE*OD
    ©︎
    ΧελϜ63-εΩʔϜ $VTUPN63-4DIFNF
    ͱ͸

    ֓೦ͱͯ͠ͷσΟʔϓϦϯΫ
    ػೳ ΞϓϦ͝ͱʹఆٛ͞Ε͍ͯΔ https:, http: Ҏ֎ͷಠࣗͷ
    εΩʔϜΛࣝผͯ͠ɺରԠ͢ΔΞϓϦΛ։͘͜ͱͷͰ
    ͖Δػೳ (iOS/AndroidͰར༻Մೳ)
    ˔
    ΞϓϦଆͰ*EFOUJ
    fi
    FS͓Αͼ63-4DIFNFTΛఆٛ͢Δ͜ͱ
    Ͱར༻Ͱ͖Δ
    ొஃ࣌͸εϥΠυεΩοϓ͠·͢

    View Slide

  21. $PPLQBE*OD
    ©︎

    Ҿ༻: Firebase Dynamic LinksͰطଘͷϢʔβʔ͚ͩͰͳ͘ɺજࡏతϢʔβʔʹ΋ମݧΛ
    ఏڙ͍ͨ͠, 2020/09/21 iOSDC 2020 Japan, த઒ ହ෉
    ֓೦ͱͯ͠ͷσΟʔϓϦϯΫ

    View Slide

  22. $PPLQBE*OD
    ©︎

    σΟʔϓϦϯΫʹରԠͨ͠URIͦͷ΋ͷΛࢦ͢ݴ༿ͱͯ͠΋ར༻͞ΕΔ
    ֓೦
    ໊শ
    ΞϓϦͷಛఆͷίϯςϯπΛ URI Ͱදݱͯ͠ɺର৅ͷURIΛϦΫΤετͨ͠ࡍʹ
    ΞϓϦͷಛఆͷίϯςϯπʹΞΫηε͢ΔͨΊͷ΋ͷ
    σΟʔϓϦϯΫ
    (Deep Linking)
    http(s): Ͱ࢝·ΔϦϯΫΛϋϯυϦϯά͢Δ http(s): Ҏ֎ͷϦϯΫΛϋϯυϦϯά͢Δ
    ػೳ Universal Links
    Android App Links
    ػೳ
    ػೳ Custom URL Scheme

    View Slide

  23. $PPLQBE*OD
    ©︎
    Πϯετʔϧ͞Εͯͳ͍ΞϓϦΛର৅ͱͨ͠
    σΟʔϓϦϯΫ

    View Slide

  24. $PPLQBE*OD
    ©︎
    σΟϑΝʔυσΟʔϓϦϯΫ %FGFSSFE%FFQ-JOLJOH


    Πϯετʔϧ͞Εͯͳ͍ΞϓϦΛର৅ͱͨ͠σΟʔϓϦϯΫ
    ˔
    Ϣʔβʔ͕ΞϓϦΛΠϯετʔϧ͍ͯ͠ͳ͍৔߹ɺΞϓϦ
    ετΞΛ։͘
    ˓
    ΞϓϦ͕Πϯετʔϧ͞ΕͨޙॳΊͯىಈ͞Εͨ࣌
    ʹɺσΟʔϓϦϯΫʹΑΔભҠॲཧ͕࣮ߦ͞ΕΔ
    ֓೦ σΟʔϓϦϯΫͷ࣮ߦΛΞϓϦΠϯετʔϧ׬ྃ
    ޙͷॳճىಈ࣌·ͰʮDeferred(Ԇظ)ʯͤ͞ΔͨΊ
    ͷ΋ͷ

    View Slide

  25. $PPLQBE*OD
    ©︎
    σΟϑΝʔυσΟʔϓϦϯΫ %FGFSSFE%FFQ-JOLJOH


    Πϯετʔϧ͞Εͯͳ͍ΞϓϦΛର৅ͱͨ͠σΟʔϓϦϯΫ
    ˔
    σΟϑΝʔυσΟʔϓϦϯΫΛαϙʔτ͢ΔͨΊͷํ๏͸
    ϓϥοτϑΥʔϜʹΑͬͯҟͳΔ
    ެࣜαϙʔτ͸༻ҙ͞Ε͍ͯͳ͍ɻ

    ΫϦοϓϘʔυʹσΟʔϓϦϯΫͷύϥϝʔλʔΛอ࣋ͯ͠ɺ
    ΞϓϦىಈ࣌ʹΫϦοϓϘʔυ͔ΒσΟʔϓϦϯΫΛಡΈग़͠
    ͯॲཧͤ͞ΔͳͲͷํ๏Ͱ࣮ݱͰ͖Δ
    ػೳ ެࣜػೳͱͯ͠ɺΠϯςϯτΛ࢖༻ͯ͠Google PlayετΞΛհ
    ͯ͠σΟʔϓϦϯΫΛ౉͢Φϓγϣϯ͕ఏڙ͞Ε͍ͯΔ
    ࢓૊Έ

    View Slide

  26. $PPLQBE*OD
    ©︎

    σΟϑΝʔυσΟʔϓϦϯΫ (Deferred Deep Linking)
    ެࣜػೳͰ࣮ݱՄೳ
    σΟʔϓϦϯΫʹରԠͨ͠URIͦͷ΋ͷΛࢦ͢ݴ༿ͱͯ͠΋ར༻͞ΕΔ
    ֓೦
    ໊শ
    ΞϓϦͷಛఆͷίϯςϯπΛ URI Ͱදݱͯ͠ɺର৅ͷURIΛϦΫΤετͨ͠
    ࡍʹΞϓϦͷಛఆͷίϯςϯπʹΞΫηε͢ΔͨΊͷ΋ͷ
    σΟʔϓϦϯΫ
    (Deep Linking)
    http(s): Ͱ࢝·ΔϦϯΫΛϋϯυϦϯά͢Δ http(s): Ҏ֎ͷϦϯΫΛϋϯυϦϯά͢Δ
    ػೳ Universal Links
    Android App Links
    ػೳ
    ػೳ Custom URL Scheme
    ΞϓϦະΠϯετʔϧͷ୺຤Λର৅ʹɺΞϓϦετΞͷμ΢ϯϩʔυϖʔδΛ։͖ɺΞϓϦ͕
    Πϯετʔϧ͞ΕͨޙॳΊͯىಈ͞Εͨ࣌ʹɺݩʑͷURIͰࢦఆ͞ΕͨίϯςϯπʹΞΫηεͤ͞Δ͜ͱ
    ֓೦
    ػೳ
    ࢓૊Έ ΫϦοϓϘʔυͳͲΛ׆༻࣮ͯ͠ݱՄೳ
    σΟϑΝʔυσΟʔϓϦϯΫ΋ؚΊͯσΟʔϓϦϯΫͱݺͿ৔߹΋͋Δ

    View Slide

  27. $PPLQBE*OD
    ©︎
    σΟʔϓϦϯΫΛखܰʹར༻Ͱ͖ΔΑ͏ʹ
    ͢ΔͨΊͷαʔϏε঺հ

    View Slide

  28. $PPLQBE*OD
    ©︎
    σΟʔϓϦϯΫΛखܰʹར༻Ͱ͖ΔΑ͏ʹ͢ΔͨΊͷαʔϏε

    σΟʔϓϦϯΫΛखܰʹར༻Ͱ͖ΔΑ͏ʹ͢ΔͨΊͷαʔϏε঺հ
    ˔
    'JSFCBTF%ZOBNJD-JOLT
    ˔
    "EKVTU
    ʹ͍ͭͯ঺հ͠·͢

    View Slide

  29. $PPLQBE*OD
    ©︎
    'JSFCBTF%ZOBNJD-JOLT

    σΟʔϓϦϯΫΛखܰʹར༻Ͱ͖ΔΑ͏ʹ͢ΔͨΊͷαʔϏε঺հ
    https://firebase.google.com/products/dynamic-links

    View Slide

  30. $PPLQBE*OD
    ©︎
    'JSFCBTF%ZOBNJD-JOLT

    σΟʔϓϦϯΫΛखܰʹར༻Ͱ͖ΔΑ͏ʹ͢ΔͨΊͷαʔϏε঺հ
    ˔
    'JSFCBTFͷػೳͷ͏ͪͷҰͭ
    ˓
    ΞϓϦͷΠϯετʔϧঢ়ଶʹ໰Θͣෳ਺ϓϥοτϑΥʔϜͰར༻Մೳͳ

    ϦϯΫΛੜ੒ͯ͘͠ΕΔ
    ˔
    ΧελϜͷ%ZOBNJD-JOLTυϝΠϯΛऔಘͰ͖Δ
    ˓

    EPNBJOQBHFMJOL
    ˔
    'JSFCBTFίϯιʔϧ͔Βͷ੩తͳ୹ॖ63-ੜ੒΍ύϥϝʔλ෇༩ʹΑΔ

    ಈత63-ੜ੒͕Մೳ
    'JSFCBTF%ZOBNJD-JOLTͱ͸
    ˞'JSFCBTF%ZOBNJD-JOLTͰ࡞੒͞ΕͨϦϯΫͷ͜ͱΛμΠφϛοΫϦϯΫ %ZOBNJD-JOL
    ͱݺͿ

    View Slide

  31. $PPLQBE*OD
    ©︎
    "EKVTU

    σΟʔϓϦϯΫΛखܰʹར༻Ͱ͖ΔΑ͏ʹ͢ΔͨΊͷαʔϏε঺հ
    https://www.adjust.com/

    View Slide

  32. $PPLQBE*OD
    ©︎
    "EKVTU

    σΟʔϓϦϯΫΛखܰʹར༻Ͱ͖ΔΑ͏ʹ͢ΔͨΊͷαʔϏε঺հ
    ˔
    "EKVTUࣾʹΑΔϞόΠϧܭଌͷͨΊͷαʔϏε
    ˔
    6OJWFSTBM-JOLJOHͷઃఆ͔Β"QQ*%1SF
    fi
    Yͱ63-4DIFNFΛઃఆ͢Δ͜ͱ
    ͰΞϓϦέʔγϣϯ͝ͱʹ6OJWFSTBM-JOLT༻ͷυϝΠϯ͕ൃߦ͞ΕΔ
    "EKVTUͱ͸

    View Slide

  33. $PPLQBE*OD
    ©︎
    σΟʔϓϦϯΫΛखܰʹѻ͑ΔαʔϏε

    σΟʔϓϦϯΫΛखܰʹར༻Ͱ͖ΔΑ͏ʹ͢ΔͨΊͷαʔϏε঺հ
    ˔
    ΞϓϦ͕ະΠϯετʔϧͷϢʔβʔ
    ˓
    σΟϑΝʔυσΟʔϓϦϯΫΛ༻͍ͯɺΞϓϦΠϯετʔϧΛଅͨ͠ޙɺ
    ॳճىಈ࣌ʹ໨తͷίϯςϯπ΁࿈Εͯ͘Δ͜ͱ͕Ͱ͖Δ
    ˔
    ΞϓϦΠϯετʔϧࡁΈͷϢʔβʔ
    ˓
    6OJWFSTBM-JOLTΛ༻͍ͯɺΞϓϦͷ໨తͷίϯςϯπʹγʔϜϨεʹ࿈
    Εͯ͘Δ͜ͱ͕Ͱ͖Δ
    ˔
    ର৅ϓϥοτϑΥʔϜ֎ͷϢʔβʔ
    ˓
    ϑΥʔϧόοΫઌͷ63-ʹϦμΠϨΫτͰ͖Δ
    'JSFCBTF%ZOBNJD-JOLT΍"EKVTU

    View Slide

  34. $PPLQBE*OD
    ©︎
    Πϯετʔϧঢ়گʹԠͨ͡ભҠ
    ˔
    'JSFCBTF%ZOBNJD-JOLTͷྫ
    ˓
    'JSFCBTF%ZOBNJD-JOLTͰൃߦ͞ΕͨɺμΠ
    φϛοΫϦϯΫ͸ʮϦϯΫΛϓϨϏϡʔ σό
    οά
    ʯ͔ΒڍಈΛ֬ೝͰ͖Δ
    ˙
    ˞μΠφϛοΫϦϯΫͷ຤ඌʹEΦϓ
    γϣϯΛ෇͚ͯ΋֬ೝͰ͖Δ
    ˓
    ϓϥοτϑΥʔϜ΍ΞϓϦͷΠϯετʔϧঢ়گ
    ʹ
    ˙
    8FCͰ63-Λ։͘
    ˙
    "QQ4UPSFΛ։͘
    ˙
    σΟʔϓϦϯΫͰΞϓϦΛ։͘

    σΟʔϓϦϯΫΛखܰʹར༻Ͱ͖ΔΑ͏ʹ͢ΔͨΊͷαʔϏε঺հ
    ొஃ࣌͸εϥΠυεΩοϓ͠·͢

    View Slide

  35. $PPLQBE*OD
    ©︎

    σΟϑΝʔυσΟʔϓϦϯΫ
    (Deferred Deep Linking)
    http(s): Ͱ࢝·ΔϦϯΫΛϋϯυϦϯά͢Δ
    http(s): Ҏ֎ͷϦϯΫΛϋϯυϦϯά͢Δ
    Universal Links
    Custom URL Scheme
    σΟʔϓϦϯΫ
    (Deep Linking)
    σΟʔϓϦϯΫ
    Λखܰʹར༻Ͱ͖ΔαʔϏε
    Firebase Dynamic Links
    ੡඼໊
    Adjust
    ੡඼໊
    ΞϓϦΠϯετʔϧ
    ࣌ʹ࣮ߦ
    ΞϓϦະΠϯετʔϧ࣌
    ʹ࣮ߦ

    View Slide

  36. $PPLQBE*OD
    ©︎
    ෇࿥ৄࡉʹॻ͍ͨઆ໌ਤ

    View Slide

  37. $PPLQBE*OD
    ©︎
    Ϣʔβʔঢ়ଶ΍ෳ਺ܦ࿏͔Βͷྲྀೖʹରͯ͠
    ׆༻Ͱ͖Δ࢓૊Έ

    View Slide

  38. $PPLQBE*OD
    ©︎
    ॳճઃఆঢ়گʹԠͨ͡ભҠ
    ˔
    ྫ͑͹ɺॳճΠϯετʔϧ࣌ʹΞϓϦͷνϡʔτϦΞϧΛ࣮ߦ͍ͤͨ͞έʔε
    ˓
    σΟϑΝʔυσΟʔϓϦϯΫͷ࣮ߦΛΞϓϦଆͰԆظͤ͞ɺ໨తը໘΁ͷ
    ભҠ࣮ߦΛνϡʔτϦΞϧऴྃޙʹ͢Δ

    Ϣʔβʔঢ়ଶ΍ෳ਺ܦ࿏͔Βͷྲྀೖʹରͯ͠׆༻Ͱ͖Δ࢓૊Έ
    Launch


    Screen
    ໨తը໘

    View Slide

  39. $PPLQBE*OD
    ©︎
    ॳճઃఆঢ়گʹԠͨ͡ભҠ

    Ϣʔβʔঢ়ଶ΍ෳ਺ܦ࿏͔Βͷྲྀೖʹରͯ͠׆༻Ͱ͖Δ࢓૊Έ
    private let deferredDeepLinkCheckpoint = PublishSubject()


    private let deferredDeepLinkSubject: ReplaySubject


    func didFinishTutorial() {


    deferredDeepLinkCheckpoint.onNext(())


    }


    private func setUpDeferredDeepLinkCheckpoint() {


    Observable


    .combineLatest(


    deferredDeepLinkSubject,


    deferredDeepLinkCheckpoint


    ) { deepLink, _ in deepLink }


    .take(1)


    .subscribe(onNext: { [environment] deepLink in


    // σΟϑΝʔυσΟʔϓϦϯΫͷભҠॲཧ


    }, onCompleted: { [weak self] in


    guard let strongSelf = self else { return }


    strongSelf.deferredDeepLinkSubject.onCompleted()


    strongSelf.deferredDeepLinkCheckpoint.onCompleted()


    })


    .disposed(by: disposeBag)


    }


    View Slide

  40. $PPLQBE*OD
    ©︎
    ॳճઃఆঢ়گʹԠͨ͡ભҠ

    Ϣʔβʔঢ়ଶ΍ෳ਺ܦ࿏͔Βͷྲྀೖʹରͯ͠׆༻Ͱ͖Δ࢓૊Έ
    private let deferredDeepLinkCheckpoint = PublishSubject()


    private let deferredDeepLinkSubject: ReplaySubject


    func didFinishTutorial() {


    deferredDeepLinkCheckpoint.onNext(())


    }


    private func setUpDeferredDeepLinkCheckpoint() {


    Observable


    .combineLatest(


    deferredDeepLinkSubject,


    deferredDeepLinkCheckpoint


    ) { deepLink, _ in deepLink }


    .take(1)


    .subscribe(onNext: { [environment] deepLink in


    // σΟϑΝʔυσΟʔϓϦϯΫͷભҠॲཧ


    }, onCompleted: { [weak self] in


    guard let strongSelf = self else { return }


    strongSelf.deferredDeepLinkSubject.onCompleted()


    strongSelf.deferredDeepLinkCheckpoint.onCompleted()


    })


    .disposed(by: disposeBag)


    }


    View Slide

  41. $PPLQBE*OD
    ©︎
    ॳճઃఆঢ়گʹԠͨ͡ભҠ

    Ϣʔβʔঢ়ଶ΍ෳ਺ܦ࿏͔Βͷྲྀೖʹରͯ͠׆༻Ͱ͖Δ࢓૊Έ
    private let deferredDeepLinkCheckpoint = PublishSubject()


    private let deferredDeepLinkSubject: ReplaySubject


    func didFinishTutorial() {


    deferredDeepLinkCheckpoint.onNext(())


    }


    private func setUpDeferredDeepLinkCheckpoint() {


    Observable


    .combineLatest(


    deferredDeepLinkSubject,


    deferredDeepLinkCheckpoint


    ) { deepLink, _ in deepLink }


    .take(1)


    .subscribe(onNext: { [environment] deepLink in


    // σΟϑΝʔυσΟʔϓϦϯΫͷભҠॲཧ


    }, onCompleted: { [weak self] in


    guard let strongSelf = self else { return }


    strongSelf.deferredDeepLinkSubject.onCompleted()


    strongSelf.deferredDeepLinkCheckpoint.onCompleted()


    })


    .disposed(by: disposeBag)


    }


    View Slide

  42. $PPLQBE*OD
    ©︎
    ॳճઃఆঢ়گʹԠͨ͡ભҠ

    Ϣʔβʔঢ়ଶ΍ෳ਺ܦ࿏͔Βͷྲྀೖʹରͯ͠׆༻Ͱ͖Δ࢓૊Έ
    private let deferredDeepLinkCheckpoint = PublishSubject()


    private let deferredDeepLinkSubject: ReplaySubject


    func didFinishTutorial() {


    deferredDeepLinkCheckpoint.onNext(())


    }


    private func setUpDeferredDeepLinkCheckpoint() {


    Observable


    .combineLatest(


    deferredDeepLinkSubject,


    deferredDeepLinkCheckpoint


    ) { deepLink, _ in deepLink }


    .take(1)


    .subscribe(onNext: { [environment] deepLink in


    // σΟϑΝʔυσΟʔϓϦϯΫͷભҠॲཧ


    }, onCompleted: { [weak self] in


    guard let strongSelf = self else { return }


    strongSelf.deferredDeepLinkSubject.onCompleted()


    strongSelf.deferredDeepLinkCheckpoint.onCompleted()


    })


    .disposed(by: disposeBag)


    }


    View Slide

  43. $PPLQBE*OD
    ©︎
    ॳճઃఆঢ়گʹԠͨ͡ભҠ

    Ϣʔβʔঢ়ଶ΍ෳ਺ܦ࿏͔Βͷྲྀೖʹରͯ͠׆༻Ͱ͖Δ࢓૊Έ
    private let deferredDeepLinkCheckpoint = PublishSubject()


    private let deferredDeepLinkSubject: ReplaySubject


    func didFinishTutorial() {


    deferredDeepLinkCheckpoint.onNext(())


    }


    private func setUpDeferredDeepLinkCheckpoint() {


    Observable


    .combineLatest(


    deferredDeepLinkSubject,


    deferredDeepLinkCheckpoint


    ) { deepLink, _ in deepLink }


    .take(1)


    .subscribe(onNext: { [environment] deepLink in


    // σΟϑΝʔυσΟʔϓϦϯΫͷભҠॲཧ


    }, onCompleted: { [weak self] in


    guard let strongSelf = self else { return }


    strongSelf.deferredDeepLinkSubject.onCompleted()


    strongSelf.deferredDeepLinkCheckpoint.onCompleted()


    })


    .disposed(by: disposeBag)


    }


    View Slide

  44. $PPLQBE*OD
    ©︎
    ͞·͟·ͳྲྀೖܦ࿏͔ΒͷΞϓϦىಈ

    View Slide

  45. $PPLQBE*OD
    ©︎
    ଟ༷ͳܦ࿏͔Βͷྲྀೖ
    ˔
    ΞϓϦ಺ͷಛఆͷίϯςϯπΛ։ͨ͘ΊʹɺσΟʔϓϦϯΫΛ༻͍ͯΞϓϦΛ
    ։ͨ͘Ίͷྲྀೖܦ࿏͕ෳ਺ଘࡏ͢Δ
    ˓
    6OJWFSTBM-JOLT
    ˓
    %FGFSSFE%FFQ-JOLJOH
    ˓
    $VTUPN63-4DIFNF
    ˓
    1VTI௨஌
    ˓
    ʜFUD

    ͞·͟·ͳྲྀೖܦ࿏͔ΒͷΞϓϦىಈ

    View Slide

  46. $PPLQBE*OD
    ©︎
    ଟ༷ͳܦ࿏͔Βͷྲྀೖ
    ˔
    ΫοΫύουͰΞϓϦͰ͸HJHJOFU$SPTTSPBEΛར༻

    ͞·͟·ͳྲྀೖܦ࿏͔ΒͷΞϓϦىಈ
    ৄ͘͠͸: https://techlife.cookpad.com/entry/2018/06/01/113000

    View Slide

  47. $PPLQBE*OD
    ©︎
    ଟ༷ͳܦ࿏͔Βͷྲྀೖ
    ˔
    ΫοΫύουͰΞϓϦͰ͸HJHJOFU$SPTTSPBEΛར༻

    ͞·͟·ͳྲྀೖܦ࿏͔ΒͷΞϓϦىಈ
    ˓
    $SPTTSPBEͰෳ਺-JOL4PVSDFରԠ͕
    ͞ΕͨͨΊɺҰͭͷϧʔτఆٛͰଟ༷ͳܦ
    ࿏͔ΒͷྲྀೖʹରԠͰ͖Δ
    ˓
    ΫοΫύουΞϓϦͰ΋
    $VTUPN63-4DIFNFछͱ6OJWFSTBM
    -JOLT 'JSFCBTF%ZOBNJD-JOLT༻
    ʹछར
    ༻͍ͯͯ͠ศར

    View Slide

  48. $PPLQBE*OD
    ©︎
    Ϣʔβʔʹจ຺Λཧղͨ͠ঢ়ଶͷ··ΞϓϦʹ
    དྷͯ΋Β͏ͨΊʹ׆༻Ͱ͖Δ࢓૊Έ

    View Slide

  49. $PPLQBE*OD
    ©︎
    ʮϢʔβʔʹจ຺Λཧղͯ͠΋Β͏ʯͷഎܠ

    Ϣʔβʔʹจ຺Λཧղͨ͠ঢ়ଶͷ··ΞϓϦʹདྷͯ΋Β͏ͨΊʹ׆༻Ͱ͖Δ࢓૊Έ
    ˔
    ಛʹ৽نϢʔβʔ֫ಘΛ໨తͱͯ͠σΟϑΝʔυσΟʔϓϦϯΫΛར༻͢Δ
    ࡍɺΞϓϦΠϯετʔϧͷաఔͰͷ཭୤ΛݮΒͤΔͱخ͍͠

    View Slide

  50. $PPLQBE*OD
    ©︎
    'JSFCBTF%ZOBNJD-JOLTͷϓϨϏϡʔϖʔδͷΧελϚΠζʹ͍ͭͯ

    Ϣʔβʔʹจ຺Λཧղͨ͠ঢ়ଶͷ··ΞϓϦʹདྷͯ΋Β͏ͨΊʹ׆༻Ͱ͖Δ࢓૊Έ
    ˔
    'JSFCBTF%ZOBNJD-JOLTͰΞϓϦΠϯετʔϧ༠ಋΛ͢Δࡍɺ
    ϓϨϏϡʔϖʔδ͕දࣔ͞ΕΔ

    View Slide

  51. $PPLQBE*OD
    ©︎
    'JSFCBTF%ZOBNJD-JOLTͷϓϨϏϡʔϖʔδͷΧελϚΠζʹ͍ͭͯ

    Ϣʔβʔʹจ຺Λཧղͨ͠ঢ়ଶͷ··ΞϓϦʹདྷͯ΋Β͏ͨΊʹ׆༻Ͱ͖Δ࢓૊Έ
    ˔
    'JSFCBTF%ZOBNJD-JOLTͷιʔγϟϧϝλλά
    ύϥϝʔλͷTUɺTEɺTJΛઃఆ͢Δ͜ͱͰɺϓ
    ϨϏϡʔϖʔδͷΧελϚΠζ͕Ͱ͖Δ

    View Slide

  52. $PPLQBE*OD
    ©︎
    'JSFCBTF%ZOBNJD-JOLTͷϓϨϏϡʔϖʔδͷΧελϚΠζʹ͍ͭͯ

    Ϣʔβʔʹจ຺Λཧղͨ͠ঢ়ଶͷ··ΞϓϦʹདྷͯ΋Β͏ͨΊʹ׆༻Ͱ͖Δ࢓૊Έ
    ˔
    'JSFCBTF%ZOBNJD-JOLTͷιʔγϟϧϝλλά
    ύϥϝʔλͷTUɺTEɺTJΛઃఆ͢Δ͜ͱͰɺϓ
    ϨϏϡʔϖʔδͷΧελϚΠζ͕Ͱ͖Δ
    ˓
    4/4ʹϦϯΫ͕γΣΞ͞ΕΔΑ͏ͳࢪࡦͰ΋
    0(1ΛΧελϚΠζ͢Δͷʹ׆༻Ͱ͖Δ

    View Slide

  53. $PPLQBE*OD
    ©︎
    "QQ4UPSF$VTUPN1SPEVDU1BHFʹ͍ͭͯ

    Ϣʔβʔʹจ຺Λཧղͨ͠ঢ়ଶͷ··ΞϓϦʹདྷͯ΋Β͏ͨΊʹ׆༻Ͱ͖Δ࢓૊Έ
    ˔
    J04͔Βར༻Ͱ͖ΔΑ͏ʹͳͬͨετΞͷ
    ৽ػೳ
    ˔
    εΫϦʔϯγϣοτɺ"QQϓϨϏϡʔɺϓϩ
    Ϟʔγϣϯ༻ςΩετΛΧελϜͰ͖Δ
    ˔
    ΧελϜϓϩμΫτϖʔδΛ։ͨ͘Ίͷݻ༗
    63-ΛൃߦͰ͖Δ
    https://developer.apple.com/jp/app-store/custom-product-pages/

    View Slide

  54. $PPLQBE*OD
    ©︎
    'JSFCBTF%ZOBNJD-JOLTͰ"QQ4UPSF$VTUPN1SPEVDU1BHFΛ࢖͏

    Ϣʔβʔʹจ຺Λཧղͨ͠ঢ়ଶͷ··ΞϓϦʹདྷͯ΋Β͏ͨΊʹ׆༻Ͱ͖Δ࢓૊Έ
    ˔
    'JSFCBTF%ZOBNJD-JOLTΛ࢖͏৔߹ɺʮΞϓϦ͕Πϯετʔϧ͞Εͯͳ͍
    ৔߹ͷભҠઌ J
    f
    ύϥϝʔλ
    Λઃఆ͢Δ͜ͱͰΧελϜϓϩμΫτϖʔδ
    Λ։ͨ͘ΊͷQQJEύϥϝʔλ෇͖ͷ"QQ4UPSFϦϯΫΛઃఆͰ͖Δ
    ˔

    ˓
    IUUQTEPNBJOQBHFMJOL MJOLIUUQTEPNBJOOBNF
    JTJJCJOBNFEPNBJO

    J
    fl
    IUUQTBQQTBQQMFDPNKQBQQJE
    QQJE%

    View Slide

  55. $PPLQBE*OD
    ©︎
    Ϣʔβʔʹจ຺Λཧղͯ͠΋Β͏

    Ϣʔβʔʹจ຺Λཧղͨ͠ঢ়ଶͷ··ΞϓϦʹདྷͯ΋Β͏ͨΊʹ׆༻Ͱ͖Δ࢓૊Έ
    ˔
    "QQ4UPSFͷϓϩμΫτϖʔδ΍'JSFCBTF%ZOBNJD-JOLTͷQSFWJFXϖʔ
    δΛ࢖ͬͯจ຺Λཧղͯ͠΋Β͏
    Before After

    View Slide

  56. $PPLQBE*OD
    ©︎
    'JSFCBTF%ZOBNJD-JOLTͷϓϨϏϡʔϖʔδͱ
    J04͔ΒͷσΟϑΝʔυσΟʔϓϦϯΫʹ͍ͭͯ

    View Slide

  57. $PPLQBE*OD
    ©︎
    'JSFCBTF%ZOBNJD-JOLTͷϓϨϏϡʔϖʔδʹ͍ͭͯ

    Firebase Dynamic LinksͷϓϨϏϡʔϖʔδͱiOS 16͔ΒͷσΟϑΝʔυσΟʔϓϦϯΫʹ͍ͭͯ
    ˔
    'JSFCBTF%ZOBNJD-JOLTͷϓϨϏϡʔϖʔδ͸εΩοϓ͢Δ͜ͱ͕Մೳ
    ˓
    ˞FGSΦϓγϣϯΛ෇͚Δ͜ͱͰεΩοϓ͢Δ͜ͱ͕Մೳ
    ˔
    'JSFCBTF%ZOBNJD-JOLTͷϓϨϏϡʔϖʔδΛදࣔ͢Δ͜ͱͰɺʮ01&/ʯϘλϯ
    ͕ԡ͞ΕͨࡍʹϖʔετϘʔυʹμΠφϛοΫϦϯΫ͕อଘ͞ΕɺϖʔετϘʔυʹ
    ΑΔϦϯΫݕূ͕ߦΘΕΔ
    ˓
    ϖʔετϘʔυΛ༻͍ͨϦϯΫݕূ͕ߦΘΕͳ͍ͷͰσΟϑΝʔυσΟʔϓϦϯ
    Ϋͷ৴པੑ͕མͪͯਖ਼ৗʹಈ͔ͳ͍৔߹͕͋ΔͷͰ஫ҙ

    View Slide

  58. $PPLQBE*OD
    ©︎
    'JSFCBTF%ZOBNJD-JOLTͷϓϨϏϡʔϖʔδʹ͍ͭͯ

    Firebase Dynamic LinksͷϓϨϏϡʔϖʔδͱiOS 16͔ΒͷσΟϑΝʔυσΟʔϓϦϯΫʹ͍ͭͯ
    ˔
    'JSFCBTF%ZOBNJD-JOLTͷϦϯΫݕূʹϖʔετ
    Ϙʔυ΁ͷΞΫηε͕ඞཁ
    ˔
    J04͔Β1BTUFCPBSEQFSNJTTJPO͕ಋೖ͞Εͨ
    ˓
    ϓϥΠόγʔอޢͷͨΊʹଞΞϓϦ͔Βίϐʔ
    ϖʔετ͢Δࡍʹڐ୚͕ඞཁʹͳΔ

    View Slide

  59. $PPLQBE*OD
    ©︎
    J04͔ΒͷσΟϑΝʔυσΟʔϓϦϯΫ

    Firebase Dynamic LinksͷϓϨϏϡʔϖʔδͱiOS 16͔ΒͷσΟϑΝʔυσΟʔϓϦϯΫʹ͍ͭͯ
    ˔
    'JSFCBTF%ZOBNJD-JOLTͷέʔε
    ˓
    ϓϨϏϡʔϖʔδΛεΩοϓͨ͠ࡍ͸ϖʔετϘʔυΛར༻͠ͳ͍
    ˓
    'JSFCBTF%FFQ-JOL1BTUFCPBSE3FUSJFWBM&OBCMFEΦϓγϣϯΛແޮʹ
    ͨ͠৔߹ɺϖʔετϘʔυͷಡΈࠐΈ͕ߦΘΕͳ͍
    ˔
    ิ଍"EKVTUʹ͓͍ͯ͸ϖʔετϘʔυಡΈࠐΈ͸σϑΥϧτͰ͠ͳ͍
    ˓
    "EKVTUͰಋೖ͞Εͨ-JOL.FΛ࢖͏ࡍ͸ϖʔετϘʔυΞΫηεΛ
    ߦ͏

    View Slide

  60. $PPLQBE*OD
    ©︎
    J04͔ΒͷσΟϑΝʔυσΟʔϓϦϯΫ
    ˔
    μΠφϛοΫϦϯΫΛԡͨ͠ϢʔβʔͷσόΠε৘ใΛอଘ͓ͯ͠Γɺ
    'JSFCBTF4%,͸ॳճىಈ࣌ʹαʔόʹ୺຤৘ใΛૹΔ͜ͱͰɺԡ͞Εͨ Ͱ
    ͋Ζ͏
    μΠφϛοΫϦϯΫΛϨεϙϯεͱͯ͠ฦ٫͢Δ
    ˓
    ͜ͷࡍʹ୺຤৘ใ͔ΒͰ͸ΞϓϦΠϯετʔϧલʹԡ͞ΕͨϦϯΫΛҰ
    ҙʹಛఆͰ͖ͳ͍৔߹͕͋Δ
    ˙
    σΟϑΝʔυσΟʔϓϦϯΫ͕ਖ਼͘͠ಈ͔ͳ͍৔߹͕ग़ͯ͘Δ
    ˙
    ΞϓϦͷΠϯετʔϧ਺͕աখධՁ͞ΕΔ

    Firebase Dynamic LinksͷϓϨϏϡʔϖʔδͱiOS 16͔ΒͷσΟϑΝʔυσΟʔϓϦϯΫʹ͍ͭͯ

    View Slide

  61. $PPLQBE*OD
    ©︎
    J04͔ΒͷσΟϑΝʔυσΟʔϓϦϯΫ
    ˔
    ϖʔετϘʔυʹμΠφϛοΫϦϯΫ͕อଘ͞Ε͍ͯΕ͹ɺαʔόʹϦΫΤ
    ετ͢Δࡍʹύϥϝʔλͱͯ͠Ұॹʹૹ৴͞Εͯɺਫ਼౓ߴ͍ϨεϙϯεΛಘ
    ΒΕΔɻ৴པੑͷ୲อʹར༻͞Ε͍ͯΔ
    ˔
    ʮը໘ભҠ΍ܭଌͷਖ਼֬ੑʯͱʮϖʔετϘʔυύʔϛογϣϯΛදࣔ͢Δ
    ͜ͱʹΑͬͯൃੜ͢Δ཭୤ʯͷτϨʔυΦϑʹͳΓͦ͏

    Firebase Dynamic LinksͷϓϨϏϡʔϖʔδͱiOS 16͔ΒͷσΟϑΝʔυσΟʔϓϦϯΫʹ͍ͭͯ

    View Slide

  62. $PPLQBE*OD
    ©︎
    ࢪࡦ΁ͷద༻

    View Slide

  63. $PPLQBE*OD
    ©︎
    έʔεελσΟൢଅΩϟϯϖʔϯ
    ˔
    ൢଅΩϟϯϖʔϯ
    ˓

    ΩϟϯϖʔϯྲྀೖϢʔβʔͷ$73
    ΍$1"ʹର͢Δ-57ܭଌΛߦ͍͍ͨ

    ࢪࡦ΁ͷద༻
    *CVR(ίϯόʔδϣϯ཰): ໨తߦಈΛͯ͘͠Ε͔ͨΛଌΔࢦඪ
    *CPA(֫ಘ֫ಘ୯Ձ): ৽نϢʔβʔ֫ಘͷͨΊʹ͔͔ͬͨඅ༻
    *LTV(ސ٬ੜ֔Ձ஋): Ϣʔβʔ͕ΞϓϦʹͲΕ͚ͩͷརӹΛ΋ͨΒ͔͢Λද͢΋ͷ

    View Slide

  64. $PPLQBE*OD
    ©︎
    'JSFCBTF%ZOBNJD-JOLTΛ׆༻͢Δ
    ˔
    'JSFCBTFίϯιʔϧͰੜ੒͞Εͨ%ZOBNJD-JOL
    ○ Firebaseίϯιʔϧ্ͰΫϦοΫ਺΍Πϯετʔϧ਺ͳͲͷύϑΥʔϚϯ
    εΛ֬ೝͰ͖Δ
    ○ Firebase AnalyticsͰऔಘͨ͠ϩάͱ෇͖߹ΘͤͯLTVܭଌ

    ࢪࡦ΁ͷద༻ - ൢଅΩϟϯϖʔϯ

    View Slide

  65. $PPLQBE*OD
    ©︎
    'JSFCBTF%ZOBNJD-JOLTΛ׆༻͢Δ

    ࢪࡦ΁ͷద༻ - ൢଅΩϟϯϖʔϯ
    Ҿ༻: https://developers-jp.googleblog.com/2017/10/whats-new-with-firebase-dynamic-links.html

    View Slide

  66. $PPLQBE*OD
    ©︎
    ΑΓৄ͘͠ܭଌ͍ͨ͠৔߹

    ࢪࡦ΁ͷద༻ - ൢଅΩϟϯϖʔϯ
    ˔
    J5VOFT$POOFDU"QQ"OBMZUJDT$BNQBJHO(PPHMF"OBMZUJDT$VTUPN
    $BNQBJHOΛར༻͢Δ
    ˓
    (PPHMF1MBZJ5VOFT$POOFDUͷղੳ༻ύϥϝʔλΛઃఆ͢Δ
    ొஃ࣌͸εϥΠυεΩοϓ͠·͢

    View Slide

  67. $PPLQBE*OD
    ©︎
    μΠφϛοΫϦϯΫʹΧελϜύϥϝʔλΛ෇༩ͯ͠ΞϓϦଆͰϋϯυϦϯά
    ˔
    μΠφϛοΫϦϯΫΛར༻ͯ͠ΞϓϦଆͰྲྀೖݩΛ൑ผ͍ͨ͠৔߹ʹɺΧε
    λϜύϥϝʔλΛ෇༩ͯ͠ΞϓϦଆͰϋϯυϦϯά͢Δͷ΋༗ޮ
    ● https://customdomain.page.link/?link=https://
    yourdomain.name?custom_parameter=:value&ibi=:custom_scheme&isi=:app
    store_id
    ˓
    ͜ͷΑ͏ͳܗࣜͰμΠφϛοΫϦϯΫΛ૊ΈཱͯΔͱΞϓϦଆͰ
    IUUQTZPVSEPNBJOOBNF [email protected]ͷܗࣜͰσΟ
    ʔϓϦϯΫ63-͕ड͚औΕΔͷͰ[email protected]ͷ஋Λ΋ͱʹϩ
    άૹ৴ͳͲΛߦ͏

    ࢪࡦ΁ͷద༻ - ൢଅΩϟϯϖʔϯ

    View Slide

  68. $PPLQBE*OD
    ©︎
    "EKVTUΛ׆༻͢Δ

    ࢪࡦ΁ͷద༻ - ൢଅΩϟϯϖʔϯ
    ˔
    "EKVTUͰੜ੒͞ΕͨτϥοΧʔ෇͖ϦϯΫ
    ˓
    ΞϓϦʹ࣮૷͞ΕͨFWFOUUSBDLFSͱ૊Έ߹ΘͤΔ͜ͱͰΩϟϯϖʔϯʹ
    Αͬͯྲྀೖͨ͠Ϣʔβʔͷ-57΍ίϗʔτΛμογϡϘʔυ্ͰݟΕΔ
    ˓
    ֤छ޿ࠂϓϥοτϑΥʔϜͱ࿈ܞ͢Δ͜ͱͰϢʔβʔηάϝϯτΛઃఆ
    ͨ͠Γ͢Δ͜ͱ΋Մೳ

    View Slide

  69. $PPLQBE*OD
    ©︎
    "EKVTUΛ׆༻͢Δ

    ࢪࡦ΁ͷద༻ - ൢଅΩϟϯϖʔϯ
    Ҿ༻: https://www.adjust.com/ja/product/adjust-dashboard/
    ొஃ࣌͸εϥΠυεΩοϓ͠·͢

    View Slide

  70. $PPLQBE*OD
    ©︎
    έʔεελσΟ༑ୡট଴
    ˔
    ༑ୡট଴
    ˓
    Ϣʔβʔ͕༑ୡΛট଴Ͱ͖ΔΑ͏
    ʹɺট଴༻ϦϯΫΛੜ੒͍ͨ͠

    ࢪࡦ΁ͷద༻

    View Slide

  71. $PPLQBE*OD
    ©︎
    έʔεελσΟ༑ୡট଴
    ˔
    ༑ୡট଴
    ˓
    Ϣʔβʔ͕༑ୡΛট଴Ͱ͖ΔΑ͏ʹট଴ϦϯΫΛੜ੒
    ˓
    'JSFCBTF%ZOBNJD-JOLT"EKVTU
    ˙
    ύϥϝʔλΛ෇༩͢Δ͜ͱͰಈతϦϯΫੜ੒Ͱ͖Δ͕ɺଞϢʔβʔʹ
    ରͯ͠4/4΍ϝοηʔδϯάΞϓϦ౳Ͱڞ༗͞ΕΔ͜ͱ͕༧૝͞Ε
    ΔͨΊɺ௕͗͢ΔϦϯΫ͸ආ͚͍ͨ

    ࢪࡦ΁ͷద༻ - ༑ୡট଴

    View Slide

  72. $PPLQBE*OD
    ©︎
    'JSFCBTF%ZOBNJD-JOLT#VJMEFSΛ׆༻͢Δ
    ˔
    'JSFCBTF%ZOBNJD-JOLT#VJMEFS
    ˓
    ΞϓϦͰࢦఆͨ͠ύϥϝʔλΛར༻ͯ͠ ୹ॖ63-
    ୹͍μΠφϛοΫϦϯ
    ΫൃߦͰ͖Δ
    ˙
    ˞'JSFCBTFίϯιʔϧͰੜ੒͞ΕΔΑ͏ͳܗ͕ࣜͩɺ'JSFCBTFίϯ
    ιʔϧͷҰཡʹ͸ग़ͯ͜ͳ͍
    ˙
    IUUQTDPOTPMF
    fi
    [email protected]
    [email protected]ʹ௚઀ΞΫηε͢Δ͜ͱͰϦϯ
    Ϋৄࡉϖʔδʹ͸ඈ΂Δ
    ˓
    ΫϦοΫ਺΍Πϯετʔϧ਺ͳͲ͸ίϯιʔϧͰݟΕͳ͍ͷͰɺ3&45"1*͔ΒݟΔ
    ͜ͱʹͳΔ

    ࢪࡦ΁ͷద༻ - ༑ୡট଴

    View Slide

  73. $PPLQBE*OD
    ©︎
    ·ͱΊ

    View Slide

  74. $PPLQBE*OD
    ©︎
    ·ͱΊ
    ˔
    σΟʔϓϦϯΫΛ࣮ݱ͢ΔͨΊͷػೳ
    ˓
    6OJWFSTBM-JOLT$VTUPN63-4DIFNF
    ˔
    Πϯετʔϧঢ়گʹدΒͳ͍ϦϯΫੜ੒
    ˓
    σΟϑΝʔυσΟʔϓϦϯΫ
    ˔
    σΟʔϓϦϯΫΛखܰʹར༻Ͱ͖ΔΑ͏ʹ͢ΔͨΊͷαʔϏε
    ˓
    'JSFCBTF%ZOBNJD-JOLT"EKVTUͳͲ
    ˔
    ϓϨϏϡʔϖʔδ΍ετΞϖʔδΛΩϟϯϖʔϯ༻ʹΧελϚΠζ͢Δ͜ͱͰϢ
    ʔβʔʹจ຺Λҙࣝ͠ଓ͚ͯ΋Β͑Δ
    ˔
    ࢪࡦ࣮ࢪͷࡍʹ'JSFCBTF%ZOBNJD-JOLT΍"EKVTUΛ࢖͏͜ͱͰࢪࡦ෼ੳʹ΋׆
    ༻Ͱ͖Δ

    View Slide

  75. $PPLQBE*OD
    ©︎

    https://cookpad.connpass.com/event/254459/

    View Slide

  76. $PPLQBE*OD
    ©︎

    View Slide