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
パラレルの通話を支える iOS アプリ上での技術
Search
Naoki ISHIKAWA
July 30, 2021
Technology
2.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
パラレルの通話を支える iOS アプリ上での技術
https://radiotalk.connpass.com/event/219952/
Naoki ISHIKAWA
July 30, 2021
More Decks by Naoki ISHIKAWA
See All by Naoki ISHIKAWA
メルペイのエンジニアリング組織の変化と目指すチーム像
jarinosuke
5
6.8k
RIBs
jarinosuke
2
1.9k
US 版 Mercari をまるごと1から作り直した話
jarinosuke
2
4.5k
メルカリiOSアプリ開発の現状とこれから / Mercari Day 2017
jarinosuke
3
6.8k
Drink Meetup with Mercari #36
jarinosuke
0
1.2k
Switching Icon.png depending on each environment
jarinosuke
2
11k
Other Decks in Technology
See All in Technology
インフラ寄りSREでも 開発に踏み出せる〜境界を越えてユーザー体験に向き合いたい〜
sansantech
PRO
0
2.4k
知見・人・API・DB・予算 ─ ナイナイ尽くしだった人事データ整備 with dbt、5年間の学び
ken6377
1
170
Zoom2Youtube.Claude
kawaguti
PRO
2
460
はじめてのWDM
miyukichi_ospf
1
120
Why is RC4 still being used?
tamaiyutaro
0
310
脱金融のフューチャー・デザイン / Future Design Beyond Finance
ks91
PRO
0
140
Agentic AI 時代のテスト手法: Kiro とはじめるプロパティベーステスト (AWS Summit Japan 2026 | DEV212)
ymhiroki
0
220
AIDLC_ヤフーショッピングの取り組み
lycorptech_jp
PRO
0
560
CIで使うClaude
iwatatomoya
0
160
Foxgloveについて 実際にExtensionを開発して公開するまでの話 / About Foxglove: The Story of Developing and Releasing an Extension
ry0_ka
0
180
デジタル・デザイン構想 by Sayaka Ishizuka
y150saya
0
200
AI時代における最適なQA組織の作り方
ymty
3
460
Featured
See All Featured
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
280
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
190
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.2k
Facilitating Awesome Meetings
lara
57
7k
AI: The stuff that nobody shows you
jnunemaker
PRO
8
770
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
410
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
170
Music & Morning Musume
bryan
47
7.3k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
590
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
480
Transcript
Naoki ISHIKAWA @jarinosuke 2021/7/29 iOS Tech talk ύϥϨϧͷ௨Λࢧ͑Δ iOS ΞϓϦ্Ͱͷٕज़
1
ࣗݾհ 2
ࣗݾհ • 2010ʹϠϑʔʢYahoo! JAPANʣʹΤϯδχΞͱͯ͠ೖࣾɻͦͷޙΠάχε ʹͯेݸͷΞϓϦ։ൃܦݧΛܦͯɺ2016ʹϝϧΧϦస৬ɻϝϧϖΠ։ ൃɺΤϯδχΞϦϯάϚωʔδϟʔΛܦͯ202011݄ʹύϥϨϧʹೖࣾɻ • https://www.wantedly.com/companies/parallel/post_articles/333769 3
ΞδΣϯμ • ✅ࣗݾհ • ύϥϨϧͷઆ໌ • ύϥϨϧͷΞϓϦ্Ͱ࣮ݱ͍ͨ͜͠ͱ • ͍ͬͯΔ֤ٕज़ͷৄࡉ 4
ύϥϨϧͷઆ໌ 5
Copyright © Parallel Inc. All Rights Reserved. ༑ୡͱ༡Δ௨ΞϓϦʮύϥϨϧʯ 6 App
Store ධՁɿ4.7/5.0ʢ 2.3ສ݅ʣ ύϥϨϧͷྑ͍༑ୡͱ௨Λܨ͗ͳ͕ΒɺήʔϜͨ͠ΓಈըΛݟͨΓͯ͠༡Δ௨ΞϓϦͰ͢ ᶃ ๛ͳ௨ػձͷग़ • ༑ୡͷεςʔλεදࣔ • ؆୯ελϯϓΞΫγϣϯ • ௨։࢝࣌ͷϓογϡ௨ ᶄ ࠷దͳ௨ڥ • ݸผʹ௨ԻྔΛௐՄೳ • ѹతʹԆͳ௨৴ ᶅ εϚϗ࠷దԽ͞ΕͨUI/U X • ొ10ඵͰྃ • ͍׳ΕͨUI/UXͰ͙͢ʹ͑Δ ᶆ Ұॹʹ༡ΔύʔςΟʔίϯςϯπ • αΫοͱ༑ୡͱ༡Δίϯςϯπ͕๛ • ϘλϯҰͭͰڞಉମݧ͕Մೳ
ύϥϨϧͷΞϓϦ্Ͱ࣮ݱ͍ͨ͜͠ͱ 7
ύϥϨϧͷΞϓϦ্Ͱ࣮ݱ͍ͨ͜͠ͱ • ߴ࣭ͳԻ • ϦΞϧλΠϜͳϝοηʔδϯά • ༷ʑͳϑΥʔϚοτͷίϯςϯπͷಋೖ 8
ύϥϨϧͷΞϓϦ্Ͱ࣮ݱ͍ͨ͜͠ͱ • ߴ࣭ͳԻ • ϦΞϧλΠϜͳϝοηʔδϯά • ༷ʑͳϑΥʔϚοτͷίϯςϯπͷಋೖ 9
ϦΞϧλΠϜͳϝοηʔδϯά • HTTPS + Push ௨Ҏ্ʹ ϦΞϧλΠϜੑΛߴΊ͍ͨ • ϢʔβʔͷΦϯϥΠϯͷදࣔɺνϟοτૹ৴ɺϧʔϜͷঢ়ଶมԽ •
WebSocket • Starscream 10
WebSocket ֓ཁ • ௨࣌ • background ਐೖ࣌ଓΛܧଓ • background mode:
audio Λࢦఆ͍ͯ͠ΔͷͰɺ௨த background Ͱ main thread ͷϥϯϧʔϓܧଓ͢ΔͨΊ • ඇ௨࣌ • background ਐೖ࣌ʹஅɺforeground ʹͬͨ࣌ʹଓ 11
WebSocket ֓ཁ • ௨࣌ • background ਐೖ࣌ଓΛܧଓ • background mode:
audio Λࢦఆ͍ͯ͠ΔͷͰɺ௨த background Ͱ main thread ͷϥϯϧʔϓܧଓ͢ΔͨΊ • ඇ௨࣌ • background ਐೖ࣌ʹஅɺforeground ʹͬͨ࣌ʹଓ 12
WebSocket background Ͱ௨தʹΕͯ͠·͏ݪҼͱରॲํ๏ • ݪҼ • background ௨தʹ௨৴͕ Cellular <->
WiFi Ͱมߋ͞Εͨͱ͖ • ରॲ • heartbeat(ping/pong) ͷಋೖ • ఆظతʹ Timer Λͬͯૄ௨֬ೝ 13
ύϥϨϧͷΞϓϦ্Ͱ࣮ݱ͍ͨ͜͠ͱ • ߴ࣭ͳԻ • ✅ϦΞϧλΠϜͳϝοηʔδϯά • ༷ʑͳϑΥʔϚοτͷίϯςϯπͷಋೖ 14
༷ʑͳϑΥʔϚοτͷίϯςϯπͷಋೖ • iOS Native • WebView • Unity as a
Library • Broadcast Extension 15
༷ʑͳϑΥʔϚοτͷίϯςϯπͷಋೖ • iOS Native • WebView • Unity as a
Library • Broadcast Extension 16
Unity as a Library • ʲUnityʳMirrativͷEmbedding UnityΛߋ৽ͨ͠: ࣮ફ Unity as
a Library • ͪ͜ΒΛࢀߟʹΞϓϦʹ݁߹ • Ռ UnityFramework.framework Λ repos ʹ push ͢Δ • ͦͷ repos Λ submodule ͰऔΓࠐΉ ڥߏங 17
Unity as a Library • Unity UIWindow Λ͏Ұͭ࡞͍ͯ͠Δ •
Unity ͱ app ͷ window Λަޓʹ makeKeyAndVisible ͠ͳ͕Βը໘ભҠ • Unity ͷ view ্ʹɺUIViewController ΛΦʔόʔϨΠ͍ͤͯ͞Δ • Unity -> Native ͷϝοηʔδϯά • Unity ͷதʹ NativeCallsProxy protocol Λఆٛ • ͦΕʹద߹ͨ͠ object ΛΞϓϦଆͰ `FrameworkLibAPI.registerAPIforNativeCalls` ݺ ͼग़͠ొ ࣮ 18
Unity as a Library • େมͳͱ͜Ζ • όΠφϦαΠζ͕େ͖͘ͳΔ • Unity
ݻ༗ͷΫϥογϡ͕ൃੜ͢Δ • Ϋϥογϡϩάͷղੳ͕͍͠ ࣮ 19
Broadcast Extension • ը໘ڞ༗ʹ༻͍Δ • ReplayKit (2) Λ༻ • 2
͔ΒγεςϜඪ४ͷUIΛͬͯɺʹөΔը໘Λ৴Ͱ͖ΔΑ͏ʹ • Կ͔ͱෆ҆ఆ • Invalid broadcast session Ͱݕࡧ͢Δͱɺը໘ڞ༗Λαϙʔτ͍ͯ͠Δ ΞϓϦ͕Θ͔Δ ֓ཁ 20
Broadcast Extension • App <-> Broadcast Extension ؒͷΠϕϯτ௨͕͍͠ • ࣮ࡍͷը໘ڞ༗ͷ։࢝ͱऴྃΛΞϓϦଆͰΓ͍ͨ
• capturedDidChangeNoti fi cation UIScreen.isCaptured ͋Δ • ͜Εͩͱը໘ڞ༗͚ͩͰͳ͘ɺը AirPlay ରʹͳͬͯ͠·͏ • App Group ܦ༝ͰϑϥάΛड͚͍ͯ͠Δ(!!!) ࣮ 21
ΞδΣϯμ • ✅ࣗݾհ • ✅ύϥϨϧͷઆ໌ • ✅ύϥϨϧͷΞϓϦ্Ͱ࣮ݱ͍ͨ͜͠ͱ • ✅͍ͬͯΔ֤ٕज़ͷৄࡉ 22
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ 23