CA.swift #10 #ca_swift https://cyberagent.connpass.com/event/143403/
sample project: https://github.com/to4iki/view-impression-sample
ϏϡʔΠϯϓϨογϣϯͷܭଌํ๏2019.09.26#ca_swift@to4iki
View Slide
About Me• Takezawa Toshiki• @to4iki• ि1αφʔ!
1. ϏϡʔΠϯϓϨογϣϯ2. ܭଌσʔλͷར༻༻్3. ϩάܭଌͷ࣮4. ·ͱΊ
ϏϡʔΠϯϓϨογϣϯ
ϏϡʔΠϯϓϨογϣϯ• ΠϯϓϨογϣϯ(Impression)ཁૉͷදࣔճex. ࠂը૾ͷϦΫΤετ• ϏϡʔΠϯϓϨογϣϯ(ViewImpression)ViewableImpressionɺActiveViewɺInView ͱಉٛϢʔβʔ͕ʹ͢ΔҐஔʹදࣔ͞Ε͍ͯΔཁૉͷΠϯϓϨογϣϯ=> Ϣʔβʔ͕ཁૉΛݟ͍ͯΔ͔Λ֬ೝ͢ΔͨΊͷࢦඪࢀߟ: https://dmlab.jp/words.html
ϏϡʔΠϯϓϨογϣϯ• Ռఆٛ“ཁૉͷ50ˋ͕ɺεΫϦʔϯʹ1ඵҎ্දࣔ͞Ε͍ͯΔ”http://measurementnow.net/wp-content/uploads/2015/01/FINAL-062816-Mobile-Viewable-Guidelines-Final-1.pdf• ex. AppStoreΞϓϦͷઢͷηϧ͕ϏϡʔΠϯϓϨογϣϯରͱͳΔ
AbemaTVͰͷϏϡʔΠϯϓϨογϣϯ• ରը໘Ϟδϡʔϧͷ෦ཁૉϞδϡʔϧ֓೦্ͷάϧʔϐϯάϞδϡʔϧ1 : ηΫγϣϯN ͷؔ• ݪଇɺը໘͕࠶ੜ͞Εͳ͍ݶΓཁૉʹରͯ͠ͷϩά1ͷΈૹ৴
ܭଌσʔλͷར༻༻్
ܭଌσʔλͷར༻༻్• CTR(Click Through Rate)ΛධՁ͢ΔΫϦοΫUU / ϏϡʔΠϯϓϨογϣϯUU ※ UU = UniqueUserΫϦοΫ͞Εׂͨ߹• CTVR = CTR × CVR(Conversion Rate)ΛධՁ͢Δ=> ϏϡʔΠϯϓϨογϣϯʹରͯ͠Ͳͷ͘Β͍ͷׂ߹ͰՌ͕ൃੜ͔ͨ͠
ܭଌσʔλͷར༻༻్ex. ը໘Լ෦ʹཁૉΛͨ͘͞Μฒ͕ͨՌʹ݁ͼ͍͍ͭͯΔ͔• ཁૉ͕ͦͦݟΒΕ͍ͯΔ͔Λܭଌ• શମͱͯ͠ͷՌ্͕͍ͬͯΔ͔=> ୯७ʹྔΛ૿ͤ༗ޮ ͔Ͳ͏͔ΛΔ͜ͱ͕ग़དྷΔ
ϩάܭଌͷ࣮
https://github.com/to4iki/view-impression-sample※ ϓϩμΫγϣϯͰ༻͍ͯ͠ΔίʔυΛ؆қԽͨ͠ͷ
͢͜ͱɾ͞ͳ͍͜ͱ͢͜ͱ• ࣮ͷI/Fͷઆ໌ͱܭଌͷํ๏͞ͳ͍͜ͱ• ෦࣮ͷཁૉ͕ը໘্ʹ50%Ҏ্දࣔ͞Ε͍ͯΔఆཁૉ͕ը໘্ʹ1ඵҎ্දࣔ͞Ε͍ͯΔɹɹ• ύϑΥʔϚϯεʹؔ͢Δࡉ͔ͳ
• ImpressionWatcherૹ৴ঢ়ଶͷཧɾཁૉ͕ݟ͑࢝Ί͔ͯΒ1ඵΛ͍͑ͯΔ͔ఆ• ImpressionWatcherConfigurationઃఆ• ImpressionIndexPathSearchableදࣔྖҬ͕50%Λ͍͑ͯΔཁૉͷऔಘ• CollectionViewForImpression /ModuleViewForImpressionܭଌରͷൣғϏϡʔΠϯϓϨογϣϯͷܭଌج൫
ϏϡʔΠϯϓϨογϣϯͷܭଌج൫ImpressionWatcher• ૹ৴ঢ়ଶͷཧɾૹ৴ରͷఆܭଌΛ։࢝͢ΔλΠϛϯάΛड͚औΓɺϩάૹ৴ରͷཁૉΛ௨͢Δ• ཁૉ୯Ґͷૹ৴ࡁΈঢ়ଶΛཧ• ViewController͕อ࣋͢Δఆ
ImpressionWatcherૹ৴ঢ়ଶͷཧɾରఆ
ImpressionWatcherConfigurationઃఆ
CollectionViewForImpression / ModuleViewForImpressionܭଌରͷൣғΛࣔ͢ϓϩτίϧ
ImpressionIndexPathSearchableϑϨʔϜܭࢉʹΑΓදࣔྖҬ͕50%Λ͍͑ͯΔཁૉͷऔಘΛߦ͏
ݺͼग़͠ଆͷ࣮1. ϞδϡʔϧΛఆٛ͢Δ2. ܭଌͷൣғͱͳΔϏϡʔΛࢦఆ͢Δ3. ϩάࢹͷ։࢝ͱऴྃΛߦ͏
1. ϞδϡʔϧΛఆٛ͢Δ
2. ܭଌͷൣғͱͳΔϏϡʔΛࢦఆ͢ΔεΫϩʔϧํͱϧʔτͷϏϡʔΛࢦఆ
2. ܭଌͷൣғͱͳΔϏϡʔΛࢦఆ͢Δ[Ϟδϡʔϧ:ൣғͷΈ߹Θͤ] ͷࢦఆ※ ύϑΥʔϚϯεͷ؍Ͱɺ୳ࡧରΛߜΔͨΊʹϏϡʔͷࢦఆൣғΛڱΊΔ͜ͱ
2. ܭଌͷൣғͱͳΔϏϡʔΛࢦఆ͢ΔϞδϡʔϧ୯ҐͰݟ͍͑ͯΔϏϡʔ͕ܭଌର͔Λఆ͢Δ
3. ϩάࢹͷ։࢝ͱऴྃΛߦ͏• ൃՐىҼͱͳΔΠϕϯτΛInputͱ͢ΔviewDidAppearrotationcollectionView.rx.contentOffsetetc..• ܭଌλΠϛϯάΛViewModelͷOutputͱ͢Δ`impressionTrigger: Observable`※ ύϑΥʔϚϯε؍ͰtriggerΛগͳ͘͢Δ͜ͱ͕ॏཁ
3. ϩάࢹͷ։࢝؍ଌ͍ͨ͠ཁૉΛอ࣋͢ΔViewController͔Β`setup`Λݺͼग़͢͜ͱͰܭଌΛ։࢝͢Δ
3. ϩάࢹͷऴྃఀࢭλΠϛϯάͰ`dispose`Λݺͼग़͢͜ͱͰܭଌΛऴྃ͢Δ
෦࣮: ܭଌॲཧͷྲྀΕ
ςετ• ରͷ୳ࡧʹؔͯ͠WatcherଆͰ୲อ• ViewModelͷOutput.impressionTrigger͕ςετର- දࣔσʔλ͕ଘࡏ͠ͳ͍ͱ͖ൃՐ͠ͳ͍- طʹϩάΛૹ৴ࡁΈͷ߹ൃՐ͠ͳ͍• ҙsendModuleIndexPathsHandlerΛྲྀ͠ܭଌσʔλੜΛςετ͢Δ
·ͱΊ
·ͱΊ• ϏϡʔΠϯϓϨογϣϯɺϢʔβʔ͕ཁૉΛݟ͍ͯΔ͔Ͳ͏͔Λ֬ೝ͢ΔͨΊͷࢦඪ• ImpressionWatcherΛར༻͢Δ͜ͱͰ֤ཁૉͷܭଌΛूதཧͰ͖ΔܭଌൣғΛࢦఆ͠ɺݺͼग़͚ͩ͢ͷ؆୯ͳΈ• ύϑΥʔϚϯεʹؔͯ͠ݺͼग़͠ଆ͕ߟྀ͢Δඞཁ͕͋ΔରͷϏϡʔൣғͷࢦఆΛڱΊΔɺܭଌ։࢝ͱͳΔtriggerͷසΛগͳ͘͢Δͷ͕ॏཁ
Thank you