Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ϞόΠϧΞϓϦߦಈϩάج൫ Λେ౷Ұͨ͠ @giginet 2020/12/10 Cookpad Tech Kitchen #25
Slide 2
Slide 2 text
୭ʁ • Twitter/GitHub : @giginet • ϞόΠϧج൫෦ iOSςοΫϦʔυ • ίϛολʔͬͯΔ • Carthage, fastlane, XcodeGen
Slide 3
Slide 3 text
ࠓ͢͜ͱ • ߴʹαʔϏε։ൃͰ͖Δߦಈϩάج൫ʢʮେ౷ҰϩΨʔʯʣͷ • ैདྷى͖͍ͯͨͷϩά࣮ͷ • ʮେ౷ҰϩΨʔʯͷߏͱΈ • ղܾͰ͖ͨ
Slide 4
Slide 4 text
https://techlife.cookpad.com/entry/ 2020/11/05/110000 υΩϡϝϯτϕʔεͷܕ҆શͳϞόΠϧΞϓϦ ߦಈϩάج൫ͷߏங
Slide 5
Slide 5 text
ߦಈϩάͱ • Ϣʔβʔ͕ߦಈΛىͨ͜͜͠ͱΛه͢ΔΈ • ಛఆͷϘλϯΛλοϓͨ͠ • ϨγϐΛݕࡧͨ͠
Slide 6
Slide 6 text
Α͋͘Δߦಈϩάͷ࣮ʢFirebase Analyticsʣ Analytics.logEvent("select_content", parameters: [ "content_type": "image", "content_id": "P12453", "items": [["name": "Kittens"]] ]) Πϕϯτ໊ ϝλσʔλ
Slide 7
Slide 7 text
ϞόΠϧΞϓϦͷ ߦಈϩάʹ͋Γ͕ͪͳ͜ͱ
Slide 8
Slide 8 text
Α͋͘Δߦಈϩάͷ࣮ʢݱ࣮ʣ Analytics.logEvent("select_contnts", parameters: [ "content_type": “video", "content_id": nil, ]) UZQP DPOUFOU͕ਖ਼͍͠ ະఆٛͷҬ OJM͕ૹΒΕͯ͠·͏ ϝλσʔλ͕Γͳ͍ JUFNT͕ඞཁ
Slide 9
Slide 9 text
ߦಈϩάʹ͋Γ͕ͪͳ͜ͱ • όʔδϣϯʹΑͬͯڍಈ͕มΘΔ • ࣮ϛεΛ͢Δ • ͍ͭͷ·ʹ͔ϩά͕ૹΒΕͳ͘ͳ͍ͬͯΔ
Slide 10
Slide 10 text
dmemo • σʔλϕʔευΩϡϝϯτཧπʔϧʢWebΞϓϦʣ • σʔλϕʔεͷςʔϒϧΧϥϜʹυΩϡϝϯτΛఴͰ͖Δ • https://github.com/hogelog/dmemo
Slide 11
Slide 11 text
ϩάͷυΩϡϝϯςʔγϣϯ • ૹΓଛͳͬͯमਖ਼ͨ͠ͱ͖ʹυΩϡϝϯτΛॻ͚ΔΑ͏ʹͳ͕ͬͨɺ ΧϥϜຖʹແݶͷऍ͕ඞཁ • Ͳ͏͍͏ڍಈʁ • ఆٛҬʁ • ͲͷόʔδϣϯͰʁ
Slide 12
Slide 12 text
৽͍͠ߦಈϩάج൫ͷཁٻ • ڍಈ༷ͳͲͷυΩϡϝϯςʔγϣϯΛ͍ͨ͘͢͠͠ • ϦϦʔεόʔδϣϯຖͷมԽΛ͍͍ͨ • ؒҧ͕ͬͨૹΒΕͳ͍Α͏ʹ͍ͨ͠ • ϩά࣮ͷϛεʹؾ͚ͮΔΑ͏ʹ͍ͨ͠
Slide 13
Slide 13 text
৽͍͠ϩάج൫ʮେ౷ҰϩΨʔʯ • ࣗવݴޠͰॻ͔ΕͨυΩϡϝϯτ͔Βܕ҆શͳϩΨʔͷ࣮Λੜ • υΩϡϝϯτίʔυͱಉ͡ϦϙδτϦͰཧ͞ΕΔͷͰ͍͍͢ • ੜػίϯύΠϥͰϛεΛ͙Έ
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
ϩάͷఆٛΛ.BSLEPXOͰهड़
Slide 16
Slide 16 text
.BSLEPXOΛύʔε
Slide 17
Slide 17 text
ιʔείʔυΛੜ
Slide 18
Slide 18 text
ϩάόοΫΤϯυʹૹ৴
Slide 19
Slide 19 text
ΧςΰϦ Πϕϯτ ΧϥϜͱܕ
Slide 20
Slide 20 text
/// Ϩγϐݕࡧը໘ͷΠϕϯτͰ͢ public enum RecipeSearch: LogCategory { public static var categoryName: String { "recipe_search" } public var eventName: String { switch self { case .showRecipe: return "show_recipe" } } public func makePayload() -> [String: Any] { switch self { case let .showRecipe(recipeId): return [ "recipe_id": recipeId.dump(), ].compactMapValues { $0 } } } /// ݕࡧ݁Ռը໘͔ΒϨγϐৄࡉը໘ʹભҠ͢Δࡍʹૹ͞Ε·͢ case showRecipe(recipeId: Int64) }
Slide 21
Slide 21 text
presentRecipeDetailViewController(recipeID: 42) logger.postLog(RecipeSearch.showRecipe(recipeId: 42)) ϩάΛૹΔ࣮
Slide 22
Slide 22 text
υΩϡϝϯτϕʔεͷϩΨʔͷಛ • ϩάఆٛϦϙδτϦʹ͋Δ • ಛఆͷόʔδϣϯͷίʔυͱඥ͘ • ϩάͷ࣮͕ܕ҆શʹͳΔ • ϛεͮ͠Β͍ • IDEͷิ͚ͩͰ࣮Ͱ͖Δ
Slide 23
Slide 23 text
No content
Slide 24
Slide 24 text
ϩάͷૹ৴ϛεΛ͙Έ࡞Γ
Slide 25
Slide 25 text
ϩάͷഇࢭϚʔΧʔͱ੩తղੳ • ഇࢭͨ͠ϩάΛυΩϡϝϯτʹهड़Ͱ͖ΔΑ͏ʹͨ͠ • ഇࢭͨ͠ϩάίʔυੜ͔Βআ֎͞ΕΔͨΊૹ৴Ͱ͖ͳ͘ͳΔ • ٯʹഇࢭ͞Ε͍ͯͳ͍ϩά͕ૹ͞Ε͍ͯͳ͍߹Կ͔͓͔͍͠ ͷͰؾ͚ͮΔΑ͏ʹͳΔ • ੩తղੳͰ͍ͬͯͳ͍ϩάఆٛΛνΣοΫͯ͠ܯࠂ
Slide 26
Slide 26 text
[obsolete]ࢦఆ ഇࢭϚʔΧʔ
Slide 27
Slide 27 text
/// όφʔΛλοϓͨ͠ͱ͖ʹૹ͞Ε·͢ ///όʔδϣϯXX.X͔Βόφʔදࣔ͞Εͳ͘ͳΓ·ͨ͠ @available(*, unavailable) case tapPromotionBanner()
Slide 28
Slide 28 text
ϩά࣮ͷίϯύΠϧ࣌νΣοΫ • ֤ݴޠͷܕͷػೳΛͬͯɺෆਖ਼ͳૹΕͳ͍Α͏ʹ • Optional • σϑΥϧτͰnilΛૹΕͳ͍ɻૹΕΔΧϥϜ͚ͩࢦఆͰ͖Δ • ΧελϜܕ • ૹΕΔΛenumͳͲܕͰ੍
Slide 29
Slide 29 text
OJMڐ༰ʢΦϓγϣφϧʣ ΧελϜܕ
Slide 30
Slide 30 text
logger.postLog(RecipeSearch.search(keyword: "ܲͷ༲͛", excludeKeyword: nil, order: .popularity)) FNVNͰ੍͞ΕΔ OJMૹΕΔ
Slide 31
Slide 31 text
ߦಈϩάʹ͋Γ͕ͪͳ͜ͱ • ✅όʔδϣϯʹΑͬͯڍಈ͕มΘΔ • →ϦϙδτϦʹυΩϡϝϯτ͕ΔΑ͏ʹͳͬͨ • ✅࣮ϛεΛ͢Δ • →ܕ҆શͳͷͰ࣮Λϛεͮ͠Β͍ • ✅͍ͭͷ·ʹ͔ϩά͕ૹΒΕͳ͘ͳ͍ͬͯΔ • →੩తղੳʹΑ͙ͬͯ͢ʹؾ͚ͮΔ
Slide 32
Slide 32 text
େ౷Ұʁ • υΩϡϝϯτͷཧํ๏͕౷Ұ͞Εͨ • ϓϥοτϑΥʔϜؒͰ౷Ұ͞Εͨ • Swift, Kotlin, TypeScriptͷίʔυੜػ͕࣮ݱ • ੜͷΈ͕ڞ௨ͳ͚ͩͰɺϩάͷఆٛผ • ϩάੳͷͨΊͷςʔϒϧ͕౷Ұ͞Εͨ • ৄ࣍͘͠ͷൃදͰʂ
Slide 33
Slide 33 text
·ͱΊ • υΩϡϝϯτͷཧ͕༰қʹͳͬͨ • υΩϡϝϯτΛॻ͚ͯ؆୯ʹӾཡͰ͖ΔΑ͏ʹ • ϦϦʔεόʔδϣϯͱυΩϡϝϯτ͕ඥ͘Α͏ʹ • ։ൃதʹ֬ೝ͍͢͠Α͏ʹ
Slide 34
Slide 34 text
·ͱΊ • ϩάͷૹΓؒҧ͍͕ΈͰ͛ΔΑ͏ʹͳͬͨ • ఆٛ֎ͷΛૹΕͳ͍Α͏ʹͳͬͨ • ࣮͠ΕΛܯࠂͰ͖ΔΑ͏ʹͳͬͨ
Slide 35
Slide 35 text
https://techlife.cookpad.com/entry/ 2020/11/05/110000 υΩϡϝϯτϕʔεͷܕ҆શͳϞόΠϧΞϓϦ ߦಈϩάج൫ͷߏங
Slide 36
Slide 36 text
͝ਗ਼ௌ ͋Γ͕ͱ͏ ͍͟͝·ͨ͠