Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
みてねのAndroid課金開発環境 / Android In-App Purchase Env...
Search
satoru.sasaki
May 20, 2019
Technology
0
1.7k
みてねのAndroid課金開発環境 / Android In-App Purchase Environment
satoru.sasaki
May 20, 2019
Tweet
Share
More Decks by satoru.sasaki
See All by satoru.sasaki
Dynamic Links with mitene
caad1229
0
1.8k
In-Memory Realms を使って API キャッシュした話 / Use In-Memory Realms
caad1229
0
1.8k
Other Decks in Technology
See All in Technology
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
230
GSIが複数キー対応したことで、俺達はいったい何が嬉しいのか?
smt7174
3
130
セキュリティについて学ぶ会 / 2026 01 25 Takamatsu WordPress Meetup
rocketmartue
1
270
あたらしい上流工程の形。 0日導入からはじめるAI駆動PM
kumaiu
5
730
変化するコーディングエージェントとの現実的な付き合い方 〜Cursor安定択説と、ツールに依存しない「資産」〜
empitsu
4
1.2k
Agile Leadership Summit Keynote 2026
m_seki
1
170
2人で作ったAIダッシュボードが、開発組織の次の一手を照らした話― Cursor × SpecKit × 可視化の実践 ― Qiita AI Summit
noalisaai
1
360
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
1.8k
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
1
150
Data Hubグループ 紹介資料
sansan33
PRO
0
2.7k
プロダクト成長を支える開発基盤とスケールに伴う課題
yuu26
3
1.1k
Featured
See All Featured
Darren the Foodie - Storyboard
khoart
PRO
2
2.3k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
440
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.5k
How to train your dragon (web standard)
notwaldorf
97
6.5k
Designing for Timeless Needs
cassininazir
0
120
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
0
130
Evolving SEO for Evolving Search Engines
ryanjones
0
120
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
Transcript
ΈͯͶͷ "OESPJE՝ۚ։ൃڥ ΈͯͶͷ.FFUVQܾࡁΛࢧ͑Δٕज़ גࣜձࣾϛΫγΟΈͯͶࣄۀ෦ ࠤʑڿ!DBBE IUUQTCJUMZ70.'K+
ࣗݾհ ࠤʑڿ !DBBE ݄ೖࣾ ݄4/4NJYJΈͯͶʹҠಈ
ࠓ͢͜ͱ w "OESPJEʹ͓͚Δ՝ۚʹ͍ͭͯ w ΈͯͶͷ"OESPJE։ൃڥʹ͍ͭͯ w ಋೖखॱ w ͓͍ͬͯͨํ͕Α͍͜ͱ w
͓·͚ w ·ͱΊ
"OESPJEʹ͓͚Δ՝ۚʹ͍ͭͯ
wΞϓϦ՝ۚ(PPHMFͱͷΓऔΓ ͢Δ w1MBZ$POTMFͱ࿈ܞ͢ΔͨΊొ͞Εͨ ύοέʔδͰͳ͚Ε՝ۚػೳ͑ͳ ͍ "OESPJEʹ͓͚Δ՝ۚʹ͍ͭͯ
ΈͯͶͷ"OESPJE։ൃڥʹ͍ͭͯ
ΈͯͶͷ։ൃڥ wݸਓڥআ͖ɺେ·͔ʹ̏ͭͷڥ
ΈͯͶͷ։ൃڥ wݸਓڥআ͖ɺେ·͔ʹ̏ͭͷڥ
ΈͯͶͷ։ൃڥ wݸਓڥআ͖ɺେ·͔ʹ̏ͭͷڥ
ΈͯͶͷ։ൃڥ wݸਓڥআ͖ɺେ·͔ʹ̏ͭͷڥ
w ֤ڥ͝ͱʹΞϓϦΛ࡞ w ՝ۚΛ༗ޮʹ͢Δ w ςετ՝ۚͰ͖ΔΑ͏ʹ͢Δ w ࣮͢Δ ಋೖखॱ
w ֤ڥ͝ͱʹΞϓϦΛ࡞ w ՝ۚΛ༗ޮʹ͢Δ w ςετ՝ۚͰ͖ΔΑ͏ʹ͢Δ w ࣮͢Δ ࣮·Ͱͷखॱ
՝ۚ࣌ͷཧ wखݩͷϏϧυɾ%FQMPZ(BUF৴ͨ͠ΞϓϦͰςετ՝͍ۚͨ͠
֤ڥ͝ͱʹΞϓϦΛ࡞
֤ڥ͝ͱʹΞϓϦΛ࡞ wEFWFMPQͱTUBUJOHશମެ։͠ͳ͍લఏ
wϝϦοτ wΒ͔͕͠ڐ͞ΕΔ wࣦഊΛؾʹͤͣ͋Δఔ͖ʹͰ͖Δ wച্Ϩϙʔτ͕ςετڥͱผʹͳΔ wσϝϦοτ w͏͔ͬΓશମެ։ͯ͠͠·͏ڪΕ͋Γ wಉ͡ઃఆΛ֤ڥʹө͢Δඞཁ͕͋Δ ΞϓϦΛ͚Δ͜ͱͷϝϦοτɾσϝϦοτ
w ֤ڥ͝ͱʹΞϓϦΛ࡞ w ՝ۚΛ༗ޮʹ͢Δ w ςετ՝ۚͰ͖ΔΑ͏ʹ͢Δ w ࣮͢Δ ࣮·Ͱͷखॱ
#JMMJOH-JCSBSZΛؚΉBQLΛ1MBZ4UPSFʹެ։͢Δ ՝ۚΛ༗ޮʹ͢ΔͨΊʹ͢Δ͜ͱ
ᶃ#JMMJOH-JCSBSZՃͯ͠Ϗϧυ ᶄ1MBZ$POTPMFʹBQLΞοϓϩʔυ ᶅ1MBZ$POTPMFͰఆظߪೖΞΠςϜ࡞ ᶆΫϩʔζυΞϧϑΝͰެ։ ՝ۚΛ༗ޮʹ͢ΔͨΊʹ͢Δ͜ͱ
ᶃ#JMMJOH-JCSBSZՃͯ͠Ϗϧυ ᶄ1MBZ$POTPMFʹBQLΞοϓϩʔυ ᶅΫϩʔζυΞϧϑΝͰެ։ ᶆ1MBZ$POTPMFͰఆظߪೖΞΠςϜ࡞ ՝ۚΛ༗ޮʹ͢ΔͨΊʹ͢Δ
ᶃ#JMMJOH-JCSBSZՃͯ͠Ϗϧυ ᶄ1MBZ$POTPMFʹBQLΞοϓϩʔυ ᶅΫϩʔζυΞϧϑΝͰެ։ ᶆ1MBZ$POTPMFͰఆظߪೖΞΠςϜ࡞ ՝ۚΛ༗ޮʹ͢ΔͨΊʹ͢Δ
ᶃ#JMMJOH-JCSBSZՃͯ͠Ϗϧυ ᶄ1MBZ$POTPMFʹBQLΞοϓϩʔυ ᶅΫϩʔζυΞϧϑΝͰެ։ ᶆ1MBZ$POTPMFͰఆظߪೖΞΠςϜ࡞ ՝ۚΛ༗ޮʹ͢ΔͨΊʹ͢Δ
ᶃ#JMMJOH-JCSBSZՃͯ͠Ϗϧυ ᶄ1MBZ$POTPMFʹBQLΞοϓϩʔυ ᶅΫϩʔζυΞϧϑΝͰެ։ ᶆ1MBZ$POTPMFͰఆظߪೖΞΠςϜ࡞ ՝ۚΛ༗ޮʹ͢ΔͨΊʹ͢Δ
w ֤ڥ͝ͱʹΞϓϦΛ࡞ w ՝ۚΛ༗ޮʹ͢Δ w ςετ՝ۚͰ͖ΔΑ͏ʹ͢Δ w ࣮͢Δ ࣮·Ͱͷखॱ
wެࣜʹΑΔͱ ςετߪೖ ςετߪೖɺಛఆͷϥΠηϯε ςετ Ϣʔβʔ͕՝ۚΛ ΘͣʹΞϓϦΞΠςϜΛߪೖͰ͖Δํ๏Ͱ͢ɻςετߪ ೖΞϧϑΝ൛ɺϕʔλ൛ϦϦʔεʹରͯ͠ͷΈՄೳͰ͢ɻ
wͭ·Γɺςετߪೖ͢Δʹɺɺ ςετߪೖ
wͭ·Γɺςετߪೖ͢Δʹɺɺ ςετߪೖ ςελʔ ϥΠηϯε ςετ Ϣʔβʔ ʹͳΔඞཁ͕͋Δ
wςελʔ wΞϧϑΝ൛ɾϕʔλ൛ΛHPPHMFQMBZTUPSF͔ΒऔಘͰ͖Δ wϥΠηϯεςετϢʔβ wςετߪೖ͕ڐՄ͞ΕͨϢʔβ ςελʔͱϥΠηϯεςετϢʔβ ΞϓϦϥΠηϯεΛ༻ͨ͠ΞϓϦ՝ۚͷςετ https://support.google.com/googleplay/android-developer/answer/6062777?hl=ja ΞϓϦϥΠηϯε https://developer.android.com/google/play/licensing/overview.html
w1MBZ$POTPMFͷΞϓϦμογϡϘʔυ͔ΒςελʔՃ wΦϓτΠϯ63-ʹΞΫηε ςελʔʹͳΔ https://play.google.com/apps/testing/<package>
w1MBZ$POTPMFઃఆΞΧϯτͷৄࡉϥΠηϯεςετ wΞΧϯτՃ ϥΠηϯεςετϢʔβʔʹͳΔ
wखݩͷϏϧυͰςετߪೖͰ͖ΔΑ͏ʹͳΔ w(PPHMF1MBZ͔ΒΞϧϑΝ൛ΛΠϯετʔϧ͠ͳͯ͘Α͍ ςετߪೖͰ͖·͢
ςετߪೖͱຊߪೖ
ςετߪೖͰগ͠ϋϚΔ͜ͱ
ςετߪೖͰগ͠ϋϚΔ͜ͱ ొ͢ΔΞΧϯτϓϥΠϚϦΞΧϯτͰ͋Δ͜ͱ
ςετߪೖͰগ͠ϋϚΔ͜ͱ wϓϥΠϚϦΞΧϯτ w"OESPJEҰͭͷʹෳΞΧϯτΛొ͢ Δ͜ͱ͕Ͱ͖Δ wΞϓϦ՝ۚʹ͏ΞΧϯτ࠷ॳʹొͨ͠ ΞΧϯτͱͳ͍ͬͯΔ ϓϥΠϚϦΞΧϯτ wͭ·ΓɺΞϧϑΝ൛ςετߪೖ͢Δʹɺϓϥ ΠϚϦΞΧϯτΛొ͠ͳ͍ͱςετ՝ۚͰ͖
ͳ͍
ςετߪೖͰগ͠ϋϚΔ͜ͱ ςετߪೖ͍ͨ͠ΞΧϯτ cc ʹ࠷ॳʹొ͢ΔΞΧϯτ wͭ·Γ
w ֤ڥ͝ͱʹΞϓϦΛ࡞ w ՝ۚΛ༗ޮʹ͢Δ w ςετ՝ۚͰ͖ΔΑ͏ʹ͢Δ w ࣮͢Δ ࣮·Ͱͷखॱ
ௐࠪͱ͔ࢀߟʹͨ͠ͷ wϥΠϒϥϦ w#JMMJOH$MJFOU-JCSBSZW ࠷ۙWϦϦʔε͞Εͨ wࢀߟʹͨ͠ͷ wެࣜυΩϡϝϯτ w(PPHMFͷαϯϓϧɺྫͷΞϨ 5SJWJBM%SJWF@W
w%SPJE,BJHJৄղఆظߪೖ Droidkaigi 2019 ৄղఆظߪೖ (·Μͩʔ @ymnd ͞Μ) https://developer.android.com/google/play/billing/billing_testing?hl=ja#solo TrivalDrive_v2 https://developer.android.com/google/play/billing/billing_library_overview
ઃܭ wΑ͋͘ΔΞϨ w.77. wࠓճɺ#JMMJOH$MJFOUΛѻ͏%BUB4PVSDFʹ ͍ͭͯগ͚ͩ͠
ઃܭ wΑ͋͘ΔΞϨ w.77. wࠓճɺ#JMMJOH$MJFOUΛѻ͏%BUB4PVSDFʹ ͍ͭͯগ͚ͩ͠
ઃܭ wΑ͋͘ΔΞϨ w.77. wࠓճɺ#JMMJOH$MJFOUΛѻ͏%BUB4PVSDFʹ ͍ͭͯগ͚ͩ͠
%BUB4PVSDF w#JMMJOH-JCSBSZΛ3Y+BWBͰϥοϐϯά wҰ෦ϨεϙϯείʔϧόοΫ෦Ͱ໘ͳ "1*͕͋ͬͨ w$BMMCBDLϝΠϯεϨουͰͷ࣮ߦ͕ඞਢ w(JTUࢀরͯ͠Έ͍ͯͩ͘͞ Google ͷ੩తϨεϙϯε͕͋ΔͷͰɺΞΠςϜͳͯ͘୯ମςετͰ͖·͢ https://developer.android.com/google/play/billing/billing_testing?hl=ja#solo Gist
https://gist.github.com/caad1229/a6aea2e863b87074e5cf29e13504fcff
w ֤ڥ͝ͱʹΞϓϦΛ࡞ w ՝ۚΛ༗ޮʹ͢Δ w ςετ՝ۚͰ͖ΔΑ͏ʹ͢Δ w ࣮͢Δ ࣮·Ͱͷखॱ
͓͍ͬͯͨ΄͏͕ྑ͍͜ͱ
4FSWFSͰϨγʔτݕূͯ͠Β͏ wߪೖϋοΫ͢Δ'SFFEPNͱ-VDLZ1BUDIFSͱ͍ͬͨΞϓϦ͕͋Δ wϨγʔτݕূ4FSWFSʹͤΔ͜ͱͰɺෆਖ਼Λ͙͜ͱ͕Ͱ͖Δ wΈͯͶͰ݅ɺෆਖ਼Ϩγʔτ͕͋ͬͨ w($1αʔϏεΞΧϯτ1MBZ$POTPMFͱ࿈ܞ͍ͯ͠Δඞཁ͕͋Δ
4FSWFSͰϨγʔτݕূͯ͠Β͏ wߪೖϋοΫ͢Δ'SFFEPNͱ-VDLZ1BUDIFSͱ͍ͬͨΞϓϦ͕͋Δ wϨγʔτݕূ4FSWFSʹͤΔ͜ͱͰɺෆਖ਼Λ͙͜ͱ͕Ͱ͖Δ wΈͯͶͰ݅ɺෆਖ਼Ϩγʔτ͕͋ͬͨ w($1αʔϏεΞΧϯτ1MBZ$POTPMFͱ࿈ܞ͍ͯ͠Δඞཁ͕͋Δ ͔͔Δ͕ɺ͋ͬͨ΄͏͕ྑ͍
ߪೖ෮ؼॲཧ w(PPHMFɾΈͯͶΞϓϦɾ4FSWFSͰͷ߹ੑ͕औΕͳ͔ͬͨ߹ͷରԠ
͓·͚
։ൃ༻ΞϓϦͷϦδΣΫτ w(PPHMF͔Β։ൃ༻ΞϓϦ͕ϦδΣΫτ͞Εͨ w։ൃΞϓϦ͕ɺͳΓ͢·͠ೝఆ͞Εͨ wύοέʔδ͕ࣅ͍ͯͨ w4UPSFใΛ1SPEVDUͱಉ͡ͷ͍ͬͯͨ wυϝΠϯূ໌ͱ͔ɺ1MBZ$POTPMFͷεΫγϣΛϝʔϧͰૹͬͯ߅ٞ
։ൃ༻ΞϓϦͷϦδΣΫτ w(PPHMF͔Β։ൃ༻ΞϓϦ͕ϦδΣΫτ͞Εͨ w։ൃΞϓϦ͕ɺͳΓ͢·͠ೝఆ͞Εͨ wύοέʔδ͕ࣅ͍ͯͨ w4UPSFใΛ1SPEVDUͱಉ͡ͷ͍ͬͯͨ wυϝΠϯূ໌ͱ͔ɺ1MBZ$POTPMFͷεΫγϣΛϝʔϧͰૹͬͯ߅ٞ
·ͱΊ
·ͱΊ wΈͯͶͰ͜ͷΑ͏ͳྲྀΕͰ՝ۚڥΛߏஙɾ։ൃͨ͠ w։ൃํ๏༷ʑͰ͋ΔͷͰɺͦΕͧΕͷ։ൃڥʹ͋ͬͨํ๏Λ ಋೖͯ͠ྑ͍ͱࢥ͏ wҰͭͷಋೖࣄྫͱͯ͠ࢀߟʹ͍͚ͯͨͩ͠Ε͍Ͱ͢
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠