Slide 1

Slide 1 text

ಈըΞϓϦͷ౤͛મػೳʹ͓͚Δ
 ফ໣ܕ՝ۚͷ࢓૊Έͱ࣮૷ 2019/09/06 iOSDC 2019 Takeshi Ihara ͓ർΕ༷Ͱ͢ɺʮಈըΞϓϦͷ౤͛મػೳʹ͓͚Δফ໣ܕ՝ۚͷ࢓૊Έͱ࣮૷ʯͱ͍͏λΠτϧͰൃද͍͖ͤͯͨͩ͞·͢ɻ Ҵݟ͞Μͷݍ࿦ͷ࿩΍-5ͷൃදͰ͸ͳ͘ɺ஍ຯͳλΠτϧͷηογϣϯʹདྷͯ͘Εͯ͋Γ͕ͱ͏͍͟͝·͢ɻ ·ͨɺ͜ͷτϥοΫ&ͷઌ΄ͲͷϩΫωϜ͞Μͷʮৄࡉ"VUP3FOFXBCMF4VCTDSJQUJPOTʯ͔Βଓ͚ͯݟ͍ͯΔਓ͸ɺಉ͡՝͕ۚςʔϚͰ͕͢ɺ"VUP3FOFXBCMF 4VCTDSJQUJPOTͰ͸ͳ͘$POTVNBCMFͭ·Γফ໣ܕʹؔ͢ΔτʔΫͳͷͰɺ·ͨগ͠ҧ͏΋ͷʹͳΔͱࢥ͍·͢ɻ ଓ͚ͯݟΔਓ͸ͦͷࠩ෼΋ָ͠ΜͰΈ͍ͯͩ͘͞ɻ

Slide 2

Slide 2 text

Takeshi Ihara • 2018.09.01 AbemaTV Join • 2018.09.02 iOSDC 2018 LT ʮখ͘͞͸͡ΊΔ୺຤؅ཧʯ • ϘϧμϦϯάͱ֨ಆήʔϜ͕झຯ • https://twitter.com/nonchalant0303 ॳΊ·ͯ͠ͷਓ͸ॳΊ·ͯ͠ɺ"CFNB57ͰJ04ΤϯδχΞͱͯ͠ಇ͍͍ͯΔҪݪַࢤͰ͢ɻ ͪΐ͏Ͳࡢ೥ͷʹ"CFNB57ʹδϣΠϯͯ͠ɺॳͷ࢓ࣄ͕ͷڈ೥ͷJ04%$ͷʮখ͘͞͸͡ΊΔ୺຤؅ཧʯͱ͍͏-5Ͱͨ͠ɻ ୀࣾͨ͠ΒϘϧμϦϯά͔֨ಆήʔϜͷͲͪΒ͔Λ໷ͳ໷ͳ΍͍ͬͯ·͢ɻ ઌ݄ʹ֨ಆήʔϜͷੈքେձʹग़ΔͨΊʹϥεϕΨε·Ͱߦ͖ͬͯ·ͨ͠ɻ ͨ·ʹ͔ٕ͠ज़తͳπΠʔτ͸͠ͳ͍Ͱ͕͢ɺझຯͷπΠʔτ͸ଟ͍ͷͰڵຯ͋Δํ͸ϑΥϩʔͯ͘͠ΕΔͱخ͍͠Ͱ͢ɻ

Slide 3

Slide 3 text

αϙʔτػೳ (AbemaTV) • 2019.04.22
 αϙʔτػೳΛ
 ϦϦʔεʂ
 ൪૊΍൪૊ग़ԋऀʹ ελϯϓΛૹͬͯ
 αϙʔτ͕Ͱ͖Δʂ ࠓճͷλΠτϧʹؚ·Ε͍ͯΔಈըΞϓϦͷ౤͛મػೳͰ͕͢ɺࠓ೥ͷ݄ʹ"CFNB57Ͱαϙʔτػೳͱ͍͏໊শͰϦϦʔε͠·ͨ͠ɻ "CFNB57Ͱ์ૹ͍ͯ͠Δ൪૊΍൪૊ग़ԋऀʹελϯϓΛૹͬͯαϙʔτͰ͖ΔػೳͰ͢ɻ αϙʔτ͞Εͨελϯϓ͸൪૊ͷ੍࡞අ΍ग़ԋऀͷग़ԋྉʹ্৐ͤ͞ΕɺϢʔβʔ͕൪૊΍ग़ԋऀʹ௚઀తʹߩݙ͢Δ͜ͱ͕Ͱ͖·͢ɻ ࠓ೥ͷ݄͔Β։ൃΛ։࢝ͯ͠ϦϦʔεͩͬͨͷͱɺʹ։࠵͞Εٕͨज़ॻలʹ"CFNB57ͷJ04νʔϜͰग़లͨ͠ͷͱॏͳΓɺਖ਼௚͚ͬ͜͏Ωπ͍εέ δϡʔϧͰͨ͠ʜ

Slide 4

Slide 4 text

։ൃʹؔΘͬͨϝϯόʔ΋ϦϦʔεͨ͠ͱ͖ʹ৭ʑͳࢥ͍͕ࠐ΋ͬͨπΠʔτΛ͍ͯ͠·ͨ͠ɻ ଟ͘͸ޠΒͳ͍ͱ͍ͬͨײ͡Ͱ͢Ͷɻ ͦΕҎ߱͸ձࣾͷ಺֎ͷਓʹ৭ʑͱ૬ஊͭͭ͠ϓϩδΣΫτશମͰεέδϡʔϧ΍ݟੵ΋Γͷํ๏Λࢼߦࡨޡͯ͠ɺ࠷ۙ͸ฏ࿨ͳ։ൃ͕Ͱ͖͍ͯ·͢ɻ

Slide 5

Slide 5 text

αϙʔτ͢Δͧʂ ͔ͤͬ͘ͷػձͰ͢ͷͰɺ࣮ࡍʹαϙʔτػೳΛ࢖ͬͯΈ·͢ɻ σϞͷ࠷த͸ΞϓϦ಺ͷ൪૊͸࠶ੜ͞Ε·ͤΜ͕ɺͪ͜Β͸"CFNB57ͷػೳͰը໘࿥ըத͸ಈըͷ࠶ੜ͸͞Εͳ͍Α͏ʹ͍ͯ͠·͢ɻ ͜Ε͸ίϯςϯπͷݖརอޢ͕໨తͷػೳͰ͢ͷͰɺࠓճͷσϞʹ͸ؔ܎ͳ͍ͷͰؾʹ͠ͳ͍Ͱ͍ͩ͘͞ɻ Ͱ͸ͬͦ͘͞ݟ͍͖ͯ·͠ΐ͏ɻ

Slide 6

Slide 6 text

1. App಺՝ۚ 2. ՝ۚܗࣜʹΑΔҧ͍ 3. AbemaTVʹ͓͚Δফ໣ܕ՝ۚͷઃܭ 4. AbemaTVʹ͓͚Δফ໣ܕ՝ۚͷಈ࡞ݕূ 5. ·ͱΊ d ࠓճͷτʔΫͰ͕͢ɺ࠷ॳʹ"QQ಺՝ۚʹ͍ͭͯܰ͘આ໌ͯ͠ɺࣗಈߋ৽αϒεΫϦϓγϣϯ΍ফ໣ܕͳͲͷ༷ʑͳ՝ۚܗࣜͷҧ͍ʹ͍ͭͯઆ໌͠·͢ɻ ͦͷҧ͍Λड͚ͯɺ"CFNB57ʹ͓͚Δফ໣ܕ՝ۚͷઃܭͷ֓ཁͱҙਤΛઆ໌͠·͢ɻ ·ͨɺ՝ۚॲཧͳͷͰϦϦʔεͨ͠ޙͷෆ۩߹͸க໋తͳ΋ͷʹͳΓಘΔͷͰɺϦϦʔεલʹͲͷΑ͏ͳಈ࡞ݕূ͔ͨ͠Λઆ໌ͯ͠ɺ࠷ޙʹ·ͱΊͯ͜ͷτʔΫ͸ऴྃʹ ͳΓ·͢ɻ

Slide 7

Slide 7 text

App಺՝ۚ d ͸͡Ίʹ"QQ಺՝ۚʹ͍ͭͯܰ͘આ໌͠·͢ɻ

Slide 8

Slide 8 text

App಺՝ۚͱ͸ • App ಺՝ۚͱ͸ɺiOS σόΠε΍ίϯϐϡʔλ্ͷ 
 App ͷதͰ௥Ճͷίϯςϯπ΍ఆظߪಡίϯςϯπΛ
 ߪೖͰ͖Δ࢓૊Έ https://support.apple.com/ja-jp/HT202023 "QQMFͷެࣜυΩϡϝϯτΛࢀߟʹ͢Δͱɺ"QQ಺՝ۚͱ͸ʮJ04σόΠε΍ίϯϐϡʔλ্ͷ"QQͷதͰ௥Ճͷίϯςϯπ΍ఆظߪಡίϯςϯπΛߪೖͰ͖Δ࢓૊ ΈʯͰ͢ɻ

Slide 9

Slide 9 text

՝ۚܗࣜ • ফ໣ܕ (Consumable) - ΞϓϦ಺௨՟ͳͲ Ұ౓࢖͏ͱͳ͘ͳΓɺ࠶ߪೖ͢Δ͜ͱ͕Ͱ͖Δ
 • ඇফ໣ܕ (Non-Consumable) - ޿ࠂͷඇදࣔͳͲ Ұ౓ͷߪೖ͚ͩͰແ੍ݶʹ࢖༻Ͱ͖Δ • ࣗಈߋ৽αϒεΫϦϓγϣϯ (Auto-Renewable Subscriptions) - ֹ݄VODͳͲ ݄ؒαʔϏε΍ఆظతʹΞοϓσʔτ͞ΕͨίϯςϯπΛߪೖ͢Δ͜ͱ͕Ͱ͖Δ • ඇߋ৽αϒεΫϦϓγϣϯ (Non-Renewing Subscriptions) - γʔζϯύεͳͲ ظؒݶఆͷαʔϏε΍ίϯςϯπΛߪೖ͢Δ͜ͱ͕Ͱ͖Δ "QQ಺՝ۚ͸ফ໣ܕɺඇফ໣ܕɺࣗಈߋ৽αϒεΫϦϓγϣϯɺඇߋ৽αϒεΫϦϓγϣϯͷछྨ͕͋Γ·͢ɻ ࠓճͷςʔϚͰ͋Δফ໣ܕ͸͍ΘΏΔιγϟήͷຐ๏ੴͳͲͷΞϓϦ಺௨՟ͳͲͰ༻͍ΒΕ·͢ɻ ͜ͷ՝ۚΞΠςϜ͸Ұ౓࢖͏ͱͳ͘ͳΓɺ࠶ߪೖ͢Δ͜ͱ͕Ͱ͖·͢ɻ ඇফ໣ܕ͸޿ࠂͷඇදࣔػೳͳͲɺҰ౓ͷߪೖ͚ͩͰແ੍ݶʹ࢖༻Ͱ͖·͢ɻ ࣗಈߋ৽αϒεΫϦϓγϣϯ͸ֹ݄70%ͳͲͷఆظతʹΞοϓσʔτ͞ΕΔίϯςϯπΛߪೖ͢ΔͨΊʹ༻͍ΒΕ·͢ɻ ͪ͜ΒΛ࣮૷͍ͯ͠ΔΞϓϦ΍঺հ͍ͯ͠ΔهࣄͳͲ͕ଟ͍ͱࢥ͍·͢ɻ ඇߋ৽αϒεΫϦϓγϣϯ͸ࣗಈߋ৽αϒεΫϦϓγϣϯʹൺ΂ͯ͋·Γ༻͍ΒΕ͍ͯͳ͍ҹ৅ͳͷͰ͕͢ɺγʔζϯύεͳͲͷظؒݶఆͷαʔϏεʹ༻͍ΒΕ·͢ɻ ͜ͷΑ͏ʹαʔϏε͕ఏڙ͢Δੑ࣭ʹΑΓద੾ͳ՝ۚܗࣜΛબͿඞཁ͕͋Γ·͢ɻ

Slide 10

Slide 10 text

AbemaTVʹ͓͚Δࣗಈߋ৽αϒεΫϦγϣϯ • ¥960/݄ͰϓϨϛΞϜػೳΛఏڙ 1. ͢΂ͯͷ࡞඼͕ݟ์୊ 2. ޿ࠂͳ͠ͰϏσΦΛ͙͢࠶ੜ 3. ์ૹதͰ΋࠷ॳ͔ΒΈΒΕΔ 4. μ΢ϯϩʔυͰ௨৴ྔΛ΄΅θϩʹ 5. ์ૹޙͷ൪૊Ͱ΋ίϝϯτָ͕͠ΊΔ "CFNB57Ͱ͸ͭͷ՝ۚܗࣜΛ༻͍ͯαʔϏεΛఏڙ͍ͯ͠·͢ɻ ͭ͸ࣗಈߋ৽αϒεΫϦϓγϣϯͷϓϨϛΞϜػೳͰ͢ɻ ͪ͜Β͸ֹ݄ԁͰ"CFNB57ͷ͢΂ͯͷ࡞඼͕ݟ์୊ʹͳΓɺμ΢ϯϩʔυػೳͳͲ༷ʑͳϓϨϛΞϜͳػೳΛ࢖༻͢Δ͜ͱͰ͖·͢ɻ

Slide 11

Slide 11 text

AbemaTVʹ͓͚Δফ໣ܕ՝ۚ • ΞϓϦ಺௨՟(AbemaίΠϯ) ίΠϯͰελϯϓΛߪೖͯ͠ɺ
 ൪૊΍൪૊ग़ԋऀʹελϯϓΛૹͬͯ
 αϙʔτ͕Ͱ͖Δʂ ΋͏ͭ͸ࠓճͷςʔϚͷফ໣ܕ՝ۚͰ͢ɻ ͪ͜Β͸ࠓ೥ͷʹαϙʔτػೳͱಉ࣌ʹఏڙ͞Ε·ͨ͠ɻ "CFNB57ͷαϙʔτػೳͰ༻͍ΔελϯϓΛߪೖ͢ΔͨΊͷΞϓϦ಺௨՟ɺ"CFNBίΠϯΛߪೖ͢ΔͨΊʹ࢖༻͠·͢ɻ ࠓճ͸ͪ͜Βͷػೳʹ͍ͭͯઃܭͳͲΛத৺ʹ࿩͍͖ͯ͠·͢ɻ

Slide 12

Slide 12 text

՝ۚܗࣜʹΑΔҧ͍ d ઌ΄Ͳ͸ͦΕͧΕͷ՝ۚܗࣜͷఏڙ͢ΔαʔϏεͷੑ࣭ͳͲΛઆ໌͠·͕ͨ͠ɺ͜͜Ͱ͸γεςϜతͳҧ͍ʹ͍ͭͯઆ໌͠·͢ɻ

Slide 13

Slide 13 text

՝ۚܗࣜʹΑΔػೳͷҧ͍ ࠶ߪೖͷՄ൱ Ϩγʔτ΁ͷදࣔ σόΠεؒͰͷಉ ظ ෮ݩ ফ໣ܕ ˓
 Կ౓Ͱ΋ ࠶ߪೖ·Ͱ ಉظͳ͠ ෮ݩ͞Εͳ͍ ඇফ໣ܕ ✖ ৗʹ γεςϜʹΑΓಉ ظ γεςϜʹΑΓಉ ظ ࣗಈߋ৽
 αϒεΫϦϓγϣ ϯ ✖
 ࣗಈతʹߋ৽͞Ε Δ ৗʹ γεςϜʹΑΓಉ ظ γεςϜʹΑΓಉ ظ ඇߋ৽αϒεΫϦ ϓγϣϯ ˓ ߋ৽͢Δ ৗʹ "QQʹΑΓಉظ "QQʹΑΓಉظ https://developer.apple.com/jp/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Products.html#//apple_ref/doc/uid/TP40008267-CH2-SW2 https://developer.apple.com/jp/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Restoring.html#//apple_ref/doc/uid/TP40008267-CH8-SW9 ͜ͷද͸ͦΕͧΕͷ՝ۚܗࣜͷʮ࠶ߪೖͷՄ൱ʯʮϨγʔτ΁ͷදࣔʯʮσόΠεؒͰͷಉظʯʮ෮ݩʯʹ͍ͭͯهࡌ͍ͯ͠·͢ɻ Š γεςϜʹΑΓಉظˠϨγʔτΛߋ৽͢Δ͚ͩͰߪೖ৘ใΛ෮ݩͰ͖Δ 4,3FDFJQU3FGSFTI3FRVFTU "QQʹΑΓಉظˠ׬ྃͨ͠τϥϯβΫγϣϯΛ"QQ4UPSFʹ໰͍߹ΘͤΔ SFTUPSF$PNQMFUFE5SBOTBDUJPOT

Slide 14

Slide 14 text

՝ۚܗࣜʹΑΔػೳͷҧ͍ ࠶ߪೖͷՄ൱ Ϩγʔτ΁ͷදࣔ σόΠεؒͰͷಉ ظ ෮ݩ ফ໣ܕ ˓
 Կ౓Ͱ΋ ࠶ߪೖ·Ͱ ಉظͳ͠ ෮ݩ͞Εͳ͍ ඇফ໣ܕ ✖ ৗʹ γεςϜʹΑΓಉ ظ γεςϜʹΑΓಉ ظ ࣗಈߋ৽
 αϒεΫϦϓγϣ ϯ ✖
 ࣗಈతʹߋ৽͞Ε Δ ৗʹ γεςϜʹΑΓಉ ظ γεςϜʹΑΓಉ ظ ඇߋ৽αϒεΫϦ ϓγϣϯ ˓ ߋ৽͢Δ ৗʹ "QQʹΑΓಉظ "QQʹΑΓಉظ https://developer.apple.com/jp/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Products.html#//apple_ref/doc/uid/TP40008267-CH2-SW2 https://developer.apple.com/jp/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Restoring.html#//apple_ref/doc/uid/TP40008267-CH8-SW9 ͜͜Ͱ஫໨ͯ͠ཉ͍͠ͷ͸ফ໣ܕͷʮ࠶ߪೖͷՄ൱ʯͱʮϨγʔτ΁ͷදࣔʯͷ߲໨Ͱ͢ɻ ઌ΄Ͳઆ໌ͨ͠௨Γফ໣ܕ͸Կ౓Ͱ΋࠶ߪೖͰ͖·͢ɻ ΞϓϦ಺՝ۚ͸ߪೖͨ͠ࡍʹ"QQ4UPSF͔ΒϨγʔτ͕ൃߦ͞ΕͯɺͦͷϨγʔτʹߪೖཤྺͳͲ͕ه͞Ε͍ͯ·͢ɻ ͦͷߪೖཤྺ͕͜ͷʮϨγʔτ΁ͷදࣔʯͱ͍͏߲໨Ͱ͢ɻ ফ໣ܕͷϨγʔτ΁ͷදࣔ͸࠶ߪೖ·Ͱʹͳ͍ͬͯ·͢ɻ ͜Ε͸Ͳ͏͍͏ҙຯ͔ͱ͍͏ͱ

Slide 15

Slide 15 text

࠶ߪೖ͕Կ౓Ͱ΋ग़དྷΔ • ϩʔΧϧͷϨγʔτͷߪೖཤྺ্͕ॻ͖͞ΕΔ ߪೖʹԠͨ͡ΠϯηϯςΟϒΛϢʔβʔʹ෇༩Ͱ͖ͳ͘ͳΔ
 AppStoreʹΑΔ՝ۚॲཧ͸׬͍ྃͯ͠Δ → ՝͚ۚͩൃੜͯ͠ϢʔβʔʹΠϯηϯςΟϒΛ
 ෇༩͍ͯ͠ͳ͍ঢ়ଶ ফ໣ܕΛ࠶ߪೖͨ͠ࡍʹɺҎલͷߪೖཤྺ্͕ॻ͖͞ΕΔͨΊɺʮϨγʔτ΁ͷදࣔʯ͕࠶ߪೖ·Ͱͱ͍͏͜ͱʹͳΓ·͢ɻ ্ॻ͖͞Εͨߪೖཤྺ͸෮ݩ͢Δ͜ͱ͸Ͱ͖·ͤΜɻ ଞͷ՝ۚܗࣜ͸࠶ߪೖ͕Ͱ͖ͳ͍ͷͰɺʮϨγʔτ΁ͷදࣔʯ͕ৗʹ͞ΕΔͱ͍͏දݱʹͳ͍ͬͯ·͢ɻ ߪೖʹԠͨ͡ΠϯηϯςΟϒɺࠓճͷྫͰ͍͏ͱ"CFNBίΠϯͰ͕͢ɺίΠϯΛ෇༩͢ΔલʹϢʔβʔ͕࠶ߪೖΛͯ͠͠·͏ͱɺҎલͷߪೖཤྺ্͕ॻ͖͞ΕΔͷͰɺ ߪೖཤྺΛݟͯίΠϯΛ෇༩͢Δ͜ͱ͕Ͱ͖ͳ͘ͳΓ·͢ɻ ͔͠͠ɺ͜Ε͸"QQ4UPSFʹΑΔ՝ۚॲཧࣗମ͸׬͍ྃͯ͠ΔͷͰɺ՝͚ۚͩൃੜͯ͠ϢʔβʔʹΠϯηϯςΟϒΛ෇༩͍ͯ͠ͳ͍ঢ়ଶʹͳΓɺ͜Ε͸ΧελϚʔαϙʔ τͳͲͰΫϨʔϜ͕͘Δۓٸ౓͕ߴ͍໰͍߹ΘͤʹͳΓಘ·͢ɻ

Slide 16

Slide 16 text

{ "receipt": { …, "in_app": [ { "product_id": “com.nonchalant.consumable1”, "transaction_id": "1000000551439498", "purchase_date": "2019-09-01 00:00:00 Etc/GMT”, … } ] } } Ϩγʔτ (ॳճߪೖ࣌) https://developer.apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html#//apple_ref/doc/uid/TP40010573-CH106-SW1 ࢀߟ·Ͱʹ࣮ࡍͷϨγʔτΛݟͯΈ·͠ΐ͏ɻ ͪ͜Β͸ॳճߪೖ࣌ʹൃߦ͞ΕΔϨγʔτͰ͢ɻ Ϩγʔτ͸KTPOܗࣜʹͳ͍ͬͯͯɺJO@BQQͱ͍͏ϑΟʔϧυʹ͸DPNOPODIBMBOUDPOTVNBCMFͱ͍͏QSPEVDU@JEͷΞΠςϜͷߪೖཤྺ͕͚ͭͩ͋Γ·͢ɻ

Slide 17

Slide 17 text

{ "receipt": { …, "in_app": [ { "product_id": “com.nonchalant.consumable1", "transaction_id": "1000000556349963", "purchase_date": "2019-09-03 10:10:26 Etc/GMT”, … } ] } } Ϩγʔτ (࠶ߪೖ࣌) https://developer.apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html#//apple_ref/doc/uid/TP40010573-CH106-SW1 ͪ͜Β͸࠶ߪೖͨ͠ࡍͷϨγʔτͰ͢ɻ ॳճߪೖ࣌ͱಉ༷ʹɺJO@BQQͱ͍͏ϑΟʔϧυʹ͸DPNOPODIBMBOUDPOTVNBCMFͱ͍͏QSPEVDU@JEͷΞΠςϜͷߪೖཤྺ͕͚ͭͩ͋Γ·͢ɻ ͔͠͠ɺ͜Ε͸USBOTBDUJPO@JEͱQVSDIBTF@EBUF͕ҟͳΔผͷߪೖཤྺʹͳ͍ͬͯ·͢ɻ ͜ͷΑ͏ʹಉ͡ΞΠςϜΛ࠶ߪೖͨ͠ࡍɺҎલͷߪೖཤྺ͸্ॻ͖͞Εͯ͠·͍·͢ɻ

Slide 18

Slide 18 text

࠶ߪೖ͕ग़དྷΔ৚݅ • ಉ͡঎඼ͷ՝ۚτϥϯβΫγϣϯ͕ऴ͍ྃͯ͠Δ ՝ۚτϥϯβΫγϣϯ → SKPaymentTransaction τϥϯβΫγϣϯ͕ऴ͍ྃͯ͠Δ → SKPaymentQueue.finishTransaction(_:) ফ໣ܕ͸࠶ߪೖͰ͖Δͱઆ໌͠·͕ͨ͠ɺϢʔβʔ͕࠶ߪೖͰ͖ΔΑ͏ʹͳΔͨΊʹ͸৚͕݅͋Γ·͢ɻ ͦΕ͸ಉ͡঎඼ͷ՝ۚτϥϯβΫγϣϯ͕ऴ͍ྃͯ͠Δͱ͍͏͜ͱͰ͢ɻ ͪ͜Βͷը໘͸՝ۚτϥϯβΫγϣϯ͕ऴ͓ྃͯ͠Βͣɺ࠶ߪೖͰ͖ͳ͍ͱ͖ʹߪೖ͠Α͏ͱ͢Δͱදࣔ͞ΕΔμΠΞϩάʹͳΓ·͢ɻ ͦΕͧΕͷ༻ޠΛ۩ମతͳΫϥε΍ϝιου໊Ͱઆ໌͢Δͱɺ՝ۚτϥϯβΫγϣϯ͸4UPSF,JUʹ͓͚Δ4,1BZNFOU5SBOTBDUJPOΛࢦ͍ͯ͠·͢ɻ τϥϯβΫγϣϯ͕ऴ͍ྃͯ͠Δͱ͍͏͜ͱ͸4UPSF,JUʹ͓͚Δ4,1BZNFOU2VFVFͷpOJTI5SBOTBDUJPO͕ݺͼग़͞Ε͍ͯΔͱ͍͏͜ͱͰ͢ɻ ͪ͜Β͸Ұ౓՝ۚॲཧΛ࣮૷ͨ͜͠ͱ͕͋Δਓ͸͝ଘ஌͔ͱࢥ͍·͢ɻ

Slide 19

Slide 19 text

՝ۚτϥϯβΫγϣϯͷѻ͍ͷ஫ҙ఺ • ΠϯηϯςΟϒΛ෇༩͢Δ·ͰτϥϯβΫγϣϯΛऴྃͯ͠͸͍͚ͳ͍ > Once you’ve delivered the product, your application must call finishTransaction: to complete the transaction. When you call finishTransaction:, the transaction is removed from the payment queue. To ensure that products are not lost, your application should deliver the product before calling finishTransaction:. • ߪೖཤྺ͕Ϩγʔτʹৗʹදࣔ͞ΕΔ՝ۚܗࣜͰ͸
 ҙࣝ͠ͳͯ͘΋໰୊ͳ͍ ඇফ໣ܕɺࣗಈߋ৽αϒεΫϦϓγϣϯɺඇߋ৽αϒεΫϦϓγϣϯ https://www.rapid-ideas.com/previews/wsa/page9/files/StoreKitGuide.pdf "QQMFͷ*"1՝ۚͷ࣮૷ΨΠυΛݟͯΈΔͱɺΠϯηϯςΟϒΛ෇༩͢Δ·ͰτϥϯβΫγϣϯΛऴྃͯ͠͸͍͚ͳ͍ͱॻ͍͍ͯ·͢ɻ ʮZPVSBQQMJDBUJPOTIPVMEEFMJWFSUIFQSPEVDUCFGPSFDBMMJOHpOJTI5SBOTBDUJPOʯͷจষͰ͢Ͷɻ ຊ೔͸͜ͷจষ͚֮ͩ͑ͯ΋ΒͬͨΒ΄΅΄΅େৎ෉Ͱ͢ɻ ωοτͳͲͷ՝࣮ۚ૷ͷϒϩάͳͲΛݟͯΈΔͱɺΠϯηϯςΟϒ͕෇༩͢Δલͷ"QQ4UPSFʹ͓͚Δߪೖ͕ऴྃͨ͠λΠϛϯάͰτϥϯβΫγϣϯΛऴ͍ྃͯ͠Δ΋ͷ ͕ଟ͘ɺ͜ͷΑ͏ͳ࣮૷͸ΨΠυʹॻ͔Ε͍ͯΔ͜ͱͱ൓͍ͯ͠·͢ɻ ͨͩɺΠϯηϯςΟϒΛ෇༩͢ΔલʹτϥϯβΫγϣϯΛऴྃͯ͠΋໰୊ͳ͍έʔε͕͋Γ·͢ɻ ͦΕ͸ʮϨγʔτ΁ͷදࣔʯ͕ৗʹ͞ΕΔ՝ۚܗࣜͰ͢ɻ ͢ͳΘͪɺʮඇফ໣ܕʯʮࣗಈߋ৽αϒεΫϦϓγϣϯʯʮඇߋ৽αϒεΫϦϓγϣϯʯͷͭʹͳΓ·͢ɻ ͜ΕΒ͸Ϣʔβʔͷಈ࡞Ͱ࠶ߪೖͰ͖ͳ͍ͷͰɺͲͷλΠϛϯάͰ΋ߪೖཤྺΛਖ਼ৗʹऔಘͰ͖·͢ɻ ͜ͷΑ͏ͳ৔߹͸࣮૷ָ͕ʹͳΔέʔε΋͋ΔͷͰɺΨΠυʹ൓͠·͕͢ΠϯηϯςΟϒΛ෇༩͢ΔલʹτϥϯβΫγϣϯΛऴྃ͢Δͷ΋͋Γ͔ͱࢥ͍·͢ɻ ͔͠͠ɺফ໣ܕͰͦͷΑ͏ͳ࣮૷Λͯ͠͠·͏ͱɺαʔϏεͱͯ͠க໋తͳෆ۩߹Λ๊͑ͯ͠·͏Մೳੑ͕͋ΔͷͰ஫ҙ͕ඞཁͰ͢ɻ

Slide 20

Slide 20 text

AbemaTVʹ͓͚Δ
 ফ໣ܕ՝ۚͷઃܭ d ઌ΄Ͳͷ՝ۚτϥϯβΫγϣϯͷѻ͍ͷ஫ҙ఺Λ౿·͑ͯɺ"CFNB57ʹ͓͚Δফ໣ܕ՝ۚͷઃܭΛ঺հ͠·͢ɻ

Slide 21

Slide 21 text

ফ໣ܕ՝ۚͷߪೖϑϩʔ 4. ϨγʔτݕূϦΫΤετ 5. Ϩγʔτݕূ݁Ռ 6. AbemaίΠϯ
 ෇༩ App Store AbemaTV iOS AbemaTV Server 7. ׬ྃϨεϙϯε (201) 1. ߪೖϦΫΤετ
 (τϥϯβΫγϣϯͷ։࢝) 8. τϥϯβΫγϣϯ
 ͷऴྃ 2. ߪೖ׬ྃ 3. Ϩγʔτૹ৴ ফ໣ܕ՝ۚͷߪೖϑϩʔ͸ɺΫϥΠΞϯτͷʮߪೖϦΫΤετʯ͢ͳΘͪʮτϥϯβΫγϣϯͷ։࢝ʯ͔Β࢝·ΓʮτϥϯβΫγϣϯͷऴྃʯ·ͰͷεςοϓͰߏ੒͞ Ε͍ͯ·͢ɻ

Slide 22

Slide 22 text

ফ໣ܕ՝ۚͷߪೖϑϩʔ 4. ϨγʔτݕূϦΫΤετ 5. Ϩγʔτݕূ݁Ռ 6. AbemaίΠϯ
 ෇༩ App Store AbemaTV iOS AbemaTV Server 7. ׬ྃϨεϙϯε (201) 1. ߪೖϦΫΤετ
 (τϥϯβΫγϣϯͷ։࢝) 8. τϥϯβΫγϣϯ
 ͷऴྃ 2. ߪೖ׬ྃ 3. Ϩγʔτૹ৴ ·ͣɺϢʔβʔ͕"QQ4UPSFʹରͯ͠ফ໣ܕͷ՝ۚΞΠςϜͷߪೖϦΫΤετΛͯ͠ɺτϥϯβΫγϣϯ͕։࢝͠·͢ɻ

Slide 23

Slide 23 text

ফ໣ܕ՝ۚͷߪೖϑϩʔ 4. ϨγʔτݕূϦΫΤετ 5. Ϩγʔτݕূ݁Ռ 6. AbemaίΠϯ
 ෇༩ App Store AbemaTV iOS AbemaTV Server 7. ׬ྃϨεϙϯε (201) 1. ߪೖϦΫΤετ
 (τϥϯβΫγϣϯͷ։࢝) 8. τϥϯβΫγϣϯ
 ͷऴྃ 2. ߪೖ׬ྃ 3. Ϩγʔτૹ৴ ͦͷޙɺϢʔβʔ͕'BDF*%΍'JOHFS1SJOUɺύεϫʔυೖྗͳͲͷೝূΛߦ͍ɺೝূʹ੒ޭ͢Ε͹"QQ4UPSF͔Βߪೖ׬ྃͷϨεϙϯε͕ฦ͖ͬͯ·͢ɻ ͜ͷ࣌఺Ͱ"QQ4UPSFʹΑΔ՝ۚ͸׬͍ྃͯ͠·͢ɻ

Slide 24

Slide 24 text

ফ໣ܕ՝ۚͷߪೖϑϩʔ 4. ϨγʔτݕূϦΫΤετ 5. Ϩγʔτݕূ݁Ռ 6. AbemaίΠϯ
 ෇༩ App Store AbemaTV iOS AbemaTV Server 7. ׬ྃϨεϙϯε (201) 1. ߪೖϦΫΤετ
 (τϥϯβΫγϣϯͷ։࢝) 8. τϥϯβΫγϣϯ
 ͷऴྃ 2. ߪೖ׬ྃ 3. Ϩγʔτૹ৴ ͦͷޙɺτϥϯβΫγϣϯͷऴྃΛͤͣʹɺϩʔΧϧʹ%BUBܕͰอଘ͞Ε͍ͯΔϨγʔτΛ#BTFͰΤϯίʔυͯ͠ฐࣾͷαʔόʔʹૹ৴͠·͢ɻ

Slide 25

Slide 25 text

ফ໣ܕ՝ۚͷߪೖϑϩʔ 4. ϨγʔτݕূϦΫΤετ 5. Ϩγʔτݕূ݁Ռ 6. AbemaίΠϯ
 ෇༩ App Store AbemaTV iOS AbemaTV Server 7. ׬ྃϨεϙϯε (201) 1. ߪೖϦΫΤετ
 (τϥϯβΫγϣϯͷ։࢝) 8. τϥϯβΫγϣϯ
 ͷऴྃ 2. ߪೖ׬ྃ 3. Ϩγʔτૹ৴ #BTFͰΤϯίʔυ͞ΕͨϨγʔτΛड͚औͬͨαʔόʔ͸ɺͦͷϨγʔτΛ༻͍ͯ"QQ4UPSFʹݕূϦΫΤετΛ౤͛·͢ɻ

Slide 26

Slide 26 text

ফ໣ܕ՝ۚͷߪೖϑϩʔ 4. ϨγʔτݕূϦΫΤετ 5. Ϩγʔτݕূ݁Ռ 6. AbemaίΠϯ
 ෇༩ App Store AbemaTV iOS AbemaTV Server 7. ׬ྃϨεϙϯε (201) 1. ߪೖϦΫΤετ
 (τϥϯβΫγϣϯͷ։࢝) 8. τϥϯβΫγϣϯ
 ͷऴྃ 2. ߪೖ׬ྃ 3. Ϩγʔτૹ৴ "QQ4UPSF͸ߪೖཤྺΛؚΜͩϨγʔτݕূ݁ՌΛฐࣾͷαʔόʔʹฦ٫͠·͢ɻ

Slide 27

Slide 27 text

ফ໣ܕ՝ۚͷߪೖϑϩʔ 4. ϨγʔτݕূϦΫΤετ 5. Ϩγʔτݕূ݁Ռ 6. AbemaίΠϯ
 ෇༩ App Store AbemaTV iOS AbemaTV Server 7. ׬ྃϨεϙϯε (201) 1. ߪೖϦΫΤετ
 (τϥϯβΫγϣϯͷ։࢝) 8. τϥϯβΫγϣϯ
 ͷऴྃ 2. ߪೖ׬ྃ 3. Ϩγʔτૹ৴ ͦͷݕূ݁Ռʹج͖ͮɺϢʔβʔʹ"CFNBίΠϯΛ෇༩͠·͢ɻ

Slide 28

Slide 28 text

ফ໣ܕ՝ۚͷߪೖϑϩʔ 4. ϨγʔτݕূϦΫΤετ 5. Ϩγʔτݕূ݁Ռ 6. AbemaίΠϯ
 ෇༩ App Store AbemaTV iOS AbemaTV Server 7. ׬ྃϨεϙϯε (201) 1. ߪೖϦΫΤετ
 (τϥϯβΫγϣϯͷ։࢝) 8. τϥϯβΫγϣϯ
 ͷऴྃ 2. ߪೖ׬ྃ 3. Ϩγʔτૹ৴ Ϣʔβʔʹ"CFNBίΠϯͷ෇༩͕׬ྃͨ͠ͷͪɺ׬ྃϨεϙϯεΛΫϥΠΞϯτʹฦ͠·͢ɻ

Slide 29

Slide 29 text

ফ໣ܕ՝ۚͷߪೖϑϩʔ 4. ϨγʔτݕূϦΫΤετ 5. Ϩγʔτݕূ݁Ռ 6. AbemaίΠϯ
 ෇༩ App Store AbemaTV iOS AbemaTV Server 7. ׬ྃϨεϙϯε (201) 1. ߪೖϦΫΤετ
 (τϥϯβΫγϣϯͷ։࢝) 8. τϥϯβΫγϣϯ
 ͷऴྃ 3. Ϩγʔτૹ৴ 2. ߪೖ׬ྃ ͦͷϨεϙϯεΛड͚औͬͯɺΫϥΠΞϯτ͸՝ۚτϥϯβΫγϣϯΛऴྃ͠·͢ɻ ͜Ε͕ਖ਼ৗͳফ໣ܕ՝ۚͷߪೖϑϩʔʹͳΓ·͢ɻ

Slide 30

Slide 30 text

՝ۚ׬ྃޙʹࣦഊ͢Δέʔε 1 4. ϨγʔτݕূϦΫΤετ 5. Ϩγʔτݕূ݁Ռ 6. AbemaίΠϯ
 ෇༩ App Store AbemaTV iOS AbemaTV Server 7. ׬ྃϨεϙϯε (201) 1. ߪೖϦΫΤετ
 (τϥϯβΫγϣϯͷ։࢝) 8. τϥϯβΫγϣϯ
 ͷऴྃ 3. Ϩγʔτૹ৴ 2. ߪೖ׬ྃ ͔͠͠ɺ͜ͷϑϩʔʹ͸"QQ4UPSFͷ՝͕ۚ׬ྃͨ͠ޙʹࣦഊ͢Δέʔε͕ͭଘࡏ͠·͢ɻ ͭΊ͸ͷฐࣾͷαʔόʔʹϨγʔτૹ৴Λ͢ΔεςοϓʹͳΓ·͢ɻ

Slide 31

Slide 31 text

Ϩγʔτૹ৴ʹࣦഊ͢Δέʔε • ωοτϫʔΫͳͲͷ໰୊Ͱ
 APIϦΫΤετͷ։࢝ʹࣦഊ͢Δέʔε • AppStoreʹΑΔ՝ۚ͸ൃੜ͍ͯ͠Δ • αʔόʔଆͰAbemaίΠϯ෇༩͕ग़དྷ͍ͯͳ͍ • ՝ۚτϥϯβΫγϣϯ͸ऴ͍ྃͯ͠ͳ͍ Ϣʔβʔ͕࠶ߪೖͰ͖ͳ͍ Ϩγʔτૹ৴ʹࣦഊ͢Δέʔε͸ɺΫϥΠΞϯτͷωοτϫʔΫ؀ڥͳͲ༷ʑͳݪҼͰ"1*ϦΫΤετͷ։࢝ʹࣦഊ͢ΔέʔεͰ͢ɻ ͪ͜Β͸લͷͱͷεςοϓͰ"QQ4UPSFʹΑΔ՝ۚ͸׬͍ྃͯ͠Δʹ΋ؔΘΒͣɺ"CFNBίΠϯ͸෇༩Ͱ͖͍ͯ·ͤΜɻ ͭ·Γ͸Ϣʔβʔ͔Β͓͚͍͍͍ۚͩͨͩͯΔͱ͍͏ঢ়ଶʹͳΓ·͢ɻ ͔͠΋ɺ՝ۚτϥϯβΫγϣϯ͸ऴ͍ྃͯ͠ͳ͍ͷͰɺϢʔβʔ͸ಉ͡঎඼Λ࠶ߪೖ͢Δ͜ͱ΋Ͱ͖·ͤΜɻ ՝͕ۚҰ੾Ͱ͖ͳ͘ͳΓ٧Έͷঢ়ଶʹͳͬͯ͠·͍·͢ɻ

Slide 32

Slide 32 text

՝ۚ׬ྃޙʹࣦഊ͢Δέʔε 2 4. ϨγʔτݕূϦΫΤετ 5. Ϩγʔτݕূ݁Ռ 6. AbemaίΠϯ
 ෇༩ App Store AbemaTV iOS AbemaTV Server 7. ׬ྃϨεϙϯε (201) 1. ߪೖϦΫΤετ
 (τϥϯβΫγϣϯͷ։࢝) 8. τϥϯβΫγϣϯ
 ͷऴྃ 2. ߪೖ׬ྃ 3. Ϩγʔτૹ৴ ͭΊͷࣦഊ͢Δέʔε͸ͷฐࣾͷαʔόʔ͔ΒͷϨεϙϯεΛड͚औΔεςοϓʹͳΓ·͢ɻ

Slide 33

Slide 33 text

׬ྃϨεϙϯεʹࣦഊ͢Δέʔε • ΞϓϦͷΫϥογϡͳͲͰ
 APIϨεϙϯεͷड৴ʹࣦഊ͢Δέʔε • AppStoreʹΑΔ՝ۚ͸ൃੜ͍ͯ͠Δ • αʔόʔଆͰAbemaίΠϯ෇༩͕׬͍ྃͯ͠ΔՄೳੑ͕͋Δ • ՝ۚτϥϯβΫγϣϯ͸ऴ͍ྃͯ͠ͳ͍ Ϣʔβʔ͕࠶ߪೖͰ͖ͳ͍ ׬ྃϨεϙϯεͷड͚औΓʹࣦഊ͢Δέʔε͸ɺ"1*ϦΫΤετ͸։͍࢝ͯ͠·͕͢ɺϨεϙϯεΛड͚औΔલʹΞϓϦ͕Ϋϥογϡͨ͠Γɺαʔόʔ͕λΠϜΞ΢τ͠ ͨΓͳͲͷέʔεͰ͢ɻ ͪ͜Β΋ಉ༷ʹલͷͱͷεςοϓͰ"QQ4UPSFʹΑΔ՝ۚ͸׬͍ྃͯ͠Δʹ΋ؔΘΒͣɺ"CFNBίΠϯΛ෇༩Ͱ͖͍ͯͳ͍Մೳੑ͕͋Γ·͢ɻ ϦΫΤετ͸։͍࢝ͯ͠ΔͷͰɺαʔόʔଆͰ"CFNBίΠϯΛ෇༩Ͱ͖͍ͯΔՄೳੑ͸͋Γ·͕͢ɺϨεϙϯε͸ฦ͖͍ͬͯͯ·ͤΜɻ ͜Ε΋Ϣʔβʔ͔Β͓͚͍͍͍ۚͩͨͩͯΔՄೳੑ͕͋Δͱ͍͏ঢ়ଶʹͳΓ·͢ɻ ͞Βʹɺ՝ۚτϥϯβΫγϣϯ͸ऴ͍ྃͯ͠ͳ͍ͷͰɺϢʔβʔ͸ಉ͡঎඼Λ࠶ߪೖ͢Δ͜ͱ΋Ͱ͖·ͤΜɻ ͪ͜Β΋՝͕ۚҰ੾Ͱ͖ͳ͘ͳΓ٧Έͷঢ়ଶʹͳͬͯ͠·͍·͢ɻ

Slide 34

Slide 34 text

ະ׬ྃτϥϯβΫγϣϯͷ ϦτϥΠ͕ඞཁ ͪ͜Βͷͭͷέʔε͕ൃੜͨ͠ࡍͷղܾखஈͱͯ͠ɺτϥϯβΫγϣϯͷऴ͕ྃݺ͹Ε͍ͯͳ͍ະ׬ྃτϥϯβΫγϣϯͷϦτϥΠػߏ͕ඞཁʹͳΓ·͢ɻ

Slide 35

Slide 35 text

AbemaίΠϯະ෇༩ͷϦτϥΠ 3. ϨγʔτݕূϦΫΤετ 4. Ϩγʔτݕূ݁Ռ 5. AbemaίΠϯ
 ෇༩ App Store AbemaTV iOS AbemaTV Server 6. ׬ྃϨεϙϯε (201) 7. τϥϯβΫγϣϯ
 ͷऴྃ 2. Ϩγʔτૹ৴ 1. ະ׬ྃτϥϯβΫγϣϯͷऔಘ
 (SKPaymentQueue.transactions) ະ׬ྃͷτϥϯβΫγϣϯ͕ଘࡏ͢Δέʔε΋छྨʹ෼ྨͰ͖ɺ"CFNBίΠϯ͕ະ෇༩͔෇༩ࡁΈͷͭͷέʔε͕͋Γ·͢ɻ ͪ͜Β͸"CFNBίΠϯ͕ະ෇༩ͷέʔεͰ͢ɻ

Slide 36

Slide 36 text

AbemaίΠϯະ෇༩ͷϦτϥΠ 3. ϨγʔτݕূϦΫΤετ 4. Ϩγʔτݕূ݁Ռ 5. AbemaίΠϯ
 ෇༩ App Store AbemaTV iOS AbemaTV Server 6. ׬ྃϨεϙϯε (201) 7. τϥϯβΫγϣϯ
 ͷऴྃ 2. Ϩγʔτૹ৴ 1. ະ׬ྃτϥϯβΫγϣϯͷऔಘ
 (SKPaymentQueue.transactions) ·ͣɺΫϥΠΞϯτ͸4,1BZNFOU2VFVFUSBOTBDUJPOT͔Βະ׬ྃτϥϯβΫγϣϯΛऔಘ͠ɺϨγʔτૹ৴Λ͠·͢ɻ ͦͷޙ͸ਖ਼ৗͷߪೖϑϩʔͱಉ༷ʹɺαʔόʔ͔ΒͷϨεϙϯεΛड͚औͬͨΒτϥϯβΫγϣϯΛऴྃ͠·͢ɻ ͜ΕͰɺ"CFNBίΠϯະ෇༩ͷະ׬ྃτϥϯβΫγϣϯΛਖ਼ৗʹऴྃͤ͞Δ͜ͱ͕Ͱ͖·͢ɻ

Slide 37

Slide 37 text

AbemaίΠϯ෇༩ࡁΈͷϦτϥΠ 3. ϨγʔτݕূϦΫΤετ 4. Ϩγʔτݕূ݁Ռ App Store AbemaTV iOS AbemaTV Server 5. AbemaίΠϯ෇༩ࡁΈΤϥʔ (409) 6. τϥϯβΫγϣϯ
 ͷऴྃ 2. Ϩγʔτૹ৴ 1. ະ׬ྃτϥϯβΫγϣϯͷऔಘ
 (SKPaymentQueue.transactions) ࣍͸"CFNBίΠϯ͸͢Ͱʹ෇༩͞Ε͍ͯ·͕͢ɺαʔόʔ͔ΒͷϨεϙϯεΛड͚औΕͣɺτϥϯβΫγϣϯ͕ະ׬ྃʹͳ͍ͬͯΔέʔεͰ͢ɻ

Slide 38

Slide 38 text

AbemaίΠϯ෇༩ࡁΈͷϦτϥΠ 3. ϨγʔτݕূϦΫΤετ 4. Ϩγʔτݕূ݁Ռ App Store AbemaTV iOS AbemaTV Server 5. AbemaίΠϯ෇༩ࡁΈΤϥʔ (409) 6. τϥϯβΫγϣϯ
 ͷऴྃ 2. Ϩγʔτૹ৴ 1. ະ׬ྃτϥϯβΫγϣϯͷऔಘ
 (SKPaymentQueue.transactions) ͪ͜Β͸ઌ΄Ͳͱಉ༷ʹະ׬ྃͷτϥϯβΫγϣϯΛऔಘ͠ɺϨγʔτΛૹ৴͠·͢ɻ

Slide 39

Slide 39 text

AbemaίΠϯ෇༩ࡁΈͷϦτϥΠ 3. ϨγʔτݕূϦΫΤετ 4. Ϩγʔτݕূ݁Ռ App Store AbemaTV iOS AbemaTV Server 5. AbemaίΠϯ෇༩ࡁΈΤϥʔ (409) 6. τϥϯβΫγϣϯ
 ͷऴྃ 2. Ϩγʔτૹ৴ 1. ະ׬ྃτϥϯβΫγϣϯͷऔಘ
 (SKPaymentQueue.transactions) αʔόʔ͸Ϩγʔτͷݕূޙʹͦͷߪೖཤྺʹରͯ͠"CFNBίΠϯ͸͢Ͱʹ෇༩͍ͯ͠ΔͷͰɺ"CFNBίΠϯ෇༩ࡁΈΛҙຯ͢ΔεςʔλείʔυΛฦ٫͠· ͢ɻ ΫϥΠΞϯτ͸͜ͷεςʔλείʔυΛݟͯɺτϥϯβΫγϣϯΛऴྃ͠·͢ɻ ͜ΕͰɺ"CFNBίΠϯ෇༩ࡁΈͷະ׬ྃτϥϯβΫγϣϯ΋ਖ਼ৗʹऴྃͤ͞Δ͜ͱ͕Ͱ͖·͢ɻ

Slide 40

Slide 40 text

τϥϯβΫγϣϯ͕
 ऴ͍ྃͯ͠Δ → AbemaίΠϯ͕
 ෇༩͞Ε͍ͯΔ ͜ͷΑ͏ʹͯ͠ະ׬ྃτϥϯβΫγϣϯͷϦτϥΠॲཧΛߦ͏͜ͱʹΑΓɺτϥϯβΫγϣϯ͕ऴ͍ྃͯ͠ΔͳΒ͹"CFNBίΠϯ͕෇༩͞Ε͍ͯΔͱ͍͏ঢ়ଶΛอূ͠ ·͢ɻ

Slide 41

Slide 41 text

ϦτϥΠॲཧͷݺͿλΠϛϯά • ىಈ࣌ɺόοΫϑΥΞ࣌ɺίΠϯ࢒ߴදࣔ࣌ʹ
 ϦτϥΠॲཧΛߦ͏ Ϣʔβʔ͕ίΠϯ࢒ߴΛ֬ೝ͢ΔલʹϦτϥΠ͢ΔΑ͏ʹͯ͠ɺ
 ෆ੔߹ʹؾ෇͔ͤͮΒ͍ͤͯ͘͞Δ ͜ͷϦτϥΠॲཧͷݺͿλΠϛϯάͰ͕͢ɺىಈ࣌ɺόοΫϑΥΞ࣌ɺίΠϯ࢒ߴදࣔ࣌ʹߦ͍ͬͯ·͢ɻ ߪೖ࣌ͷଈ࣌ϦτϥΠͩͱωοτϫʔΫ΍αʔόʔෆௐͳͲ͕ଈ࣌ʹղܾ͞Εͳ͍͜ͱ͕ߟ͑ΒΕΔͨΊɺىಈ࣌΍όοΫϑΥΞ࣌΍ίΠϯ࢒ߴදࣔ࣌ͳͲϢʔβʔ͕ ࣗ෼ͷίΠϯ࢒ߴΛ֬ೝ͢Δ௚લʹϦτϥΠ͢ΔΑ͏ʹͯ͠ɺϢʔβʔʹෆ੔߹Λؾ෇͔ͤͮΒ͍ͤͯ͘͞·͢ɻ Ϣʔβʔ͔Β՝͚ۚͩ͞ΕͨͳͲͷ͓໰͍߹Θ͕͖ͤͨࡍ͸ɺ࠶ىಈͳͲͷϦτϥΠॲཧ͕ߦΘΕΔಈ࡞Λ͓ئ͍͍ͯ͠·͢ɻ

Slide 42

Slide 42 text

ϦτϥΠॲཧͷ஫ҙ఺ • ະ׬ྃτϥϯβΫγϣϯ͸SKPaymentQueue.transactionsͰ औಘͰ͖Δ ߪೖதͷτϥϯβΫγϣϯ΋ؚ·ΕΔ
 • ਖ਼ৗͳߪೖϑϩʔͷࡍ͸ϦτϥΠॲཧ
 ΛߦΘͳ͍ͳͲͷॲཧ͕ඞཁ ઌ΄Ͳະ׬ྃτϥϯβΫγϣϯ͸4,1BZNFOU2VFVFUSBOTBDUJPOTͰऔಘͰ͖Δͱઆ໌͠·͕ͨ͠ɺ͜ͷະ׬ྃτϥϯβΫγϣϯʹ͸ݱࡏߪೖதͷτϥϯβΫγϣϯ΋ ؚ·Ε·͢ɻ ͪ͜Β͸ࣦഊஊͳͷͰ͕͢ɺ4,1BZNFOU2VFVFUSBOTBDUJPOTʹߪೖதͷτϥϯβΫγϣϯ΋ؚ·ΕΔ͜ͱΛؾ͔ͮͣɺϦτϥΠॲཧΛ࠷ॳʹ࣮૷͠·ͨ͠ɻ "CFNB57ͷίΠϯߪೖը໘͸ίΠϯ࢒ߴ͕දࣔ͞Ε͍ͯΔͷͰɺϦτϥΠॲཧ͕ߦΘΕ·͢ɻ ͭ·Γ͸ߪೖதͷτϥϯβΫγϣϯͷϦτϥΠ΋ߦͬͯ͠·͍ɺશͯͷτϥϯβΫγϣϯͷϨγʔτૹ৴Λ࠷௿Ͱ΋ߪೖ࣌ͱߪೖ࣌ͷϦτϥΠͷճߦ͏ͱ͍͏࣮૷ʹ ͳ͍ͬͯ·ͨ͠ɻ Ϩγʔτૹ৴Λճߦ͏ͷͰɺͲͪΒ͔Ͱ"CFNBίΠϯ͕෇༩͞Εͯɺ΋͏ยํ͸෇༩ࡁΈͷΤϥʔ͕ฦ͖͍ͬͯͯ·ͨ͠ɻ ͪ͜Β͸αʔόʔଆͷϩάͰ໌Β͔ʹ"CFNBίΠϯ෇༩ࡁΈͷεςʔλείʔυ͕ى͖͍͗ͯ͢Δͱ͍͏͜ͱͰൃ֮͠·ͨ͠ɻ ಈ࡞తʹ͸க໋తͰͳ͍ͷͰ͕͢ɺແବʹαʔόʔʹෛՙΛ͔͚ͨΓϩάΛԚͯ͠͠·͏ͷͰɺਖ਼ৗͳߪೖϑϩʔͷࡍ͸ϦτϥΠॲཧΛߦΘͳ͍Α͏ʹ࣮૷͠·ͨ͠ɻ ϦτϥΠॲཧΛ࣮૷͢Δࡍ͸஫ҙ͕ඞཁͰ͢ɻ

Slide 43

Slide 43 text

AbemaTVʹ͓͚Δ
 ফ໣ܕ՝ۚͷ
 ಈ࡞ݕূ d ফ໣ܕ՝ۚͷઃܭΛͬ͘͟Γͱઆ໌ͨ͠ͷͰɺͪ͜ΒΛݟฦͤ͹ফ໣ܕ՝ۚΛ໰୊ͳ࣮͘૷Ͱ͖ΔΑ͏ʹͳ͍ͬͯΔͱࢥ͍·͢ɻ ͔͠͠ɺઌ΄Ͳͷઃܭ͕ਖ਼࣮͘͠૷͞Ε͍ͯΔ͜ͱΛϦϦʔε͢Δલʹݕূ͢Δඞཁ͕͋Γ·͢ɻ ՝ۚपΓͷॲཧͳͷͰɺக໋తͳ࣮૷ϛε͕͋Δͱ4/4΍ΧελϚʔαϙʔτ͕େมʹͳͬͯ͠·͍·͢ɻ ͔͜͜Β͸࣮ࡍʹͲ͏ݕূΛਐΊͨͷ͔ͱ͍͏͓࿩͕ϝΠϯʹͳ͖ͬͯ·͢ͷͰɺؾܰʹฉ͍͍ͯͩ͘͞ɻ

Slide 44

Slide 44 text

ݕূ߲໨ͷೝࣝ߹Θͤ • ߪೖϑϩʔ͕τϥϯβΫγϣϯͳͲͷ಺෦ͷঢ়ଶʹґଘͯ͠ ͍ΔͷͰɺQAνʔϜʹγʔέϯεਤΛ౉ͯ͠΋
 ݕূ߲໨Λ࡞੒͢Δͷ͕೉͍͠ • ࣮ࡍʹͲͷΑ͏ͳঢ়گͰͲͷΑ͏ͳૢ࡞Λ͢Ε͹ɺͲͷΑ͏ ͳঢ়ଶʹͳΔ͔ͷೝࣝ߹ΘͤΛ͠ͳ͍ͱ
 ݕূ߲໨Λ࡞੒Ͱ͖ͳ͍ ফ໣ܕ՝ۚͷ࣮૷͸ແࣄʹ׬ྃͨ͠ͷͰ͕͢ɺ2"νʔϜͱͷೝࣝ߹Θ͕ͤେมͰͨ͠ɻ ͳͥͳΒɺߪೖϑϩʔ͕τϥϯβΫγϣϯͳͲͷ಺෦ͷঢ়ଶʹґଘ͍ͯ͠ΔͷͰɺ2"νʔϜʹγʔέϯεਤΛ౉ͯ͠΋۩ମతʹͲ͏ͳΔ͔Πϝʔδ͕͖ͭͮΒ͍͔ͬͨ ͨΊͰ͢ɻ ՝ۚॲཧͱ͍͏͜ͱ΋͋Γ৻ॏʹਐΊ͔ͨͬͨͷͰɺ2"νʔϜͱαʔόʔ୲౰ऀͱࣗ෼ͷϓϥοτϑΥʔϜؒͰೝࣝ߹ΘͤΛͭͭ͠ݕূ߲໨Λ࡞੒͢Δ͜ͱʹ͠·͠ ͨɻ ͦ͜Ͱҙࣝͨ͠ͷ͸ɺ2"νʔϜ͕࣮ࡍʹͲͷΑ͏ͳঢ়گͰͲͷΑ͏ͳૢ࡞Λ͢Ε͹ͲͷΑ͏ͳঢ়ଶʹͳΔ͔ΛݴޠԽ͢Δ͜ͱͰͨ͠ɻ

Slide 45

Slide 45 text

Mind Meister • ϚΠϯυϚοϓ࡞੒πʔϧͷMind MeisterΛ༻͍ͯ
 ೝࣝ߹ΘͤΛ͠·ͨ͠ https://www.mindmeister.com/1309256136?t=X6wMB2GxG6 ೝࣝ߹ΘͤͷͨΊʹϚΠϯυϚοϓ࡞੒πʔϧͷ.JOE.FJTUFSΛ༻͍·ͨ͠ɻ ͪ͜Β͸࣮ࡍʹ༻͍ͨ΋ͷΛ໛ͨ͠΋ͷͳͷͰ͕͢ɺಛʹϩάΠϯͳͲ͸ඞཁͳ͍ͷͰɺڵຯ͕͋Δํ͸ͪ͜Βͷ23ίʔυΛಡΈऔͬͯݟ͍ͯͩ͘͞ɻ Ͱ͸ɺ࣮ࡍʹͲͷΑ͏ʹೝࣝ߹ΘͤΛ͔ͨ͠ݟ͍͖ͯ·͠ΐ͏ɻ

Slide 46

Slide 46 text

ίΠϯपΓͷදࣔܥ ͪ͜Β͸γϯϓϧͳදࣔܥͷݕূ߲໨ʹͳΓ·͢ɻ ͜ͷ྘ͷνΣοΫϚʔΫ͕෇͍͍ͯΔ߲໨͕ݕূ߲໨ʹͳΓ·͢ɻ ϚΠϖʔδͱίΠϯ؅ཧͱίΠϯߪೖͷը໘ͰͦΕͧΕίΠϯपΓͷද͕ࣔਖ਼ৗʹදࣔ͞Ε͍ͯΔ͜ͱͷݕূ߲໨ʹͳΓ·͢ɻ

Slide 47

Slide 47 text

ίΠϯपΓͷදࣔܥ ࣮ࡍͷը໘͸ͪ͜ΒʹͳΓ·͢ɻ ࠨ͔ΒϚΠϖʔδɺίΠϯ؅ཧɺίΠϯߪೖը໘ʹͳΓ·͢ɻ ੺ؙ͍ͰғΘΕ͍ͯΔՕॴ͕ݕূ͢ΔՕॴʹͳΓ·͢ɻ

Slide 48

Slide 48 text

੒ޭ͢Δߪೖϑϩʔ ࣍͸ίΠϯߪೖը໘ͷ੒ޭ͢Δߪೖϑϩʔͷݕূ߲໨ʹͳΓ·͢ɻ ಈ࡞ͱͯ͠͸঎඼Λબ୒ͯ͠ߪೖͯ͠ίΠϯ࢒ߴ͕ߋ৽͞Ε͍ͯΔ͜ͱͷ֬ೝʹͳΓ·͢ɻ ͪ͜Βͷ੕ϚʔΫ͕෇͍͍ͯΔ߲໨͕ɺ࣮ࡍͷૢ࡞ʹͳΓ·͢ɻ ͜ͷΑ͏ʹ2"νʔϜ͕௨ৗۀ຿Ͱߦ͏Α͏ͳલఏ৚݅ͱೖྗͱग़ྗΛ໌֬Խ͢ΔΑ͏͜ͱΛҙࣝ͠·ͨ͠ɻ ͪ͜Β͸Ұ੾τϥϯβΫγϣϯ΍Ϩγʔτͱ͍͏༻ޠ͸༻͍͍ͯͳ͍ͷͰ͕͢ɺߪೖϑϩʔͷγʔέϯεਤ΋Ұॹʹ౉͍ͯͨ͠ͷͰɺ࠷ऴతʹ2"νʔϜ΋಺෦ͷγες Ϝ΋ཧղ͍ͯ͠·ͨ͠ɻ ࣮૷ଆ͸γεςϜ͔Βઃܭɾ࣮૷Λͯ͠ɺσόοά΍ςετͰ֬ೝ͢ΔͷͰ͕͢ɺ2"νʔϜ͸ٯʹݕূಈ࡞͔ΒγεςϜΛཧղ͢Δͱ͍͏ϑϩʔͷ΄͏͕ཧղ͠΍ͦ͢ ͏Ͱͨ͠ɻ

Slide 49

Slide 49 text

ࣦഊ͢Δߪೖϑϩʔ ͪ͜Β͸ࣦഊ͢ΔߪೖϑϩʔͳͷͰ͕͢ɺ߲໨͕ଟ͍ͷͰ࣮ࡍʹ.JOE.FJTUFSଆͰݟ͍͖ͯ·͠ΐ͏ɻ IUUQTXXXNJOENFJTUFSDPN U9X.#(Y(

Slide 50

Slide 50 text

ߪೖϑϩʔͷಈ࡞ݕূ • ফ໣ܕ՝ۚͷߪೖϑϩʔΛ࣮૷ͨ͠αϯϓϧϓϩδΣΫτ https://github.com/Nonchalant/Consumable - Consumable In-App Purchase - Combine - SwiftUI Ͱ͸࣮ࡍʹαϯϓϧϓϩδΣΫτΛ༻͍ͯߪೖϑϩʔͷಈ࡞ݕূΛͯ͠Έ·͢ɻ ࠷ॳ͸͜ͷαϯϓϧϓϩδΣΫτ͸ϓϩμΫγϣϯͷํ͔Βίϐʔָͯ͠ʹ࡞Ζ͏ͱࢥ͍ͬͯͨͷͰ͕͢ɺ్தͰ๞͖ͯ͠·ͬͨͷͰɺ$PNCJOFͱ4XJGU6*Λ༻͍࣮ͯ૷ ͯ͠Έ·ͨ͠ɻ ͸ͨͯ͜͠Ε͸αϯϓϧͳͷ͔ͱ͍͏݁Ռʹͳͬͯ͠·͍·ͨ͠ɻ Ͱ͸࣮ࡍʹݟ͍͖ͯ·͠ΐ͏ɻ

Slide 51

Slide 51 text

ಈըΛྲྀͭͭ͠આ໌͢Δ ͜ͷσϞ͸͋͘·ͰҰྫͳͷͰɺ࣮ࡍʹ͸΋ͬͱଟ༷ͳύλʔϯͰ2"͍ͯ͠·͢ɻ

Slide 52

Slide 52 text

·ͱΊ d ࠷ޙʹ·ͱΊͰ͢ɻ

Slide 53

Slide 53 text

·ͱΊ • ফ໣ܕ՝ۚ͸ΠϯηϯςΟϒΛ෇༩͢Δ·Ͱ
 τϥϯβΫγϣϯΛऴྃ͠ͳ͍ ࠶ߪೖ͢Δͱߪೖཤྺ্͕ॻ͖͞ΕΔͨΊ • ߪೖϑϩʔͰࣦഊ͢Δ͜ͱ͕͋ΔͷͰϦτϥΠػߏ͕ඞཁ ਖ਼ৗͳߪೖಋઢ্ͰϦτϥΠ͠ͳ͍ ͍Ζ͍Ζͱ࿩͠·͕ͨ͠ɺ͜ͷൃදͷେࣄͳϙΠϯτ͸ͭͰ͢ɻ ͭΊ͸ʮফ໣ܕ՝ۚ͸ΠϯηϯςΟϒΛ෇༩͢Δ·ͰτϥϯβΫγϣϯΛऴྃ͠ͳ͍ʯͱ͍͏͜ͱɻ ͜Ε͸࠶ߪೖ͢Δͱߪೖཤྺ্͕ॻ͖͞ΕͯΠϯηϯςΟϒ͕෇༩Ͱ͖ͳ͘ͳΔͨΊͰ͢ɻ ͭΊ͸ߪೖϑϩʔͰࣦഊ͢Δ͜ͱ͕͋ΔͷͰϦτϥΠػߏ͸ඞཁͰ͢ɻ ͨͩɺϦτϥΠػߏΛਖ਼ৗͳߪೖಋઢ্Ͱಈ࡞͠ͳ͍Α͏ʹؾΛ͚ͭ·͠ΐ͏ɻ

Slide 54

Slide 54 text

Thank you Ҏ্ʹͳΓ·͢ɺ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ

Slide 55

Slide 55 text

֨ήʔاۀަྲྀձ • ओʹετVͰ֨ήʔاۀަྲྀձ͍ͯ͠·͢ • BizReach • CyberAgent • Cygames • DeNA • Microsoft • Supership • Yahoo! • ίϜγʔυ • ελʔτΞοϓςΫϊϩδʔ ौ୩ք۾ͷ*5اۀ͔Βঃʑʹ޿͕ͬͯɺओʹετϦʔτϑΝΠλʔ7ͰަྲྀձΛ͍ͯ͠·͢ɻ ΋͠ɺετϦʔτϑΝΠλʔ7Λ΍͍ͬͯͯɺڵຯ͕͋Δํ͕͍Ε͹࠙਌ձͳͲͰ࿩͔͚͍ͯͩ͘͞ʂ ަྲྀձͷதͰϛχେձͳͲ΋͋ͬͯɺΘ͍Θָ͍͠ΜͰ͍·͢ɻ