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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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.7k
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
エンジニアリング戦略の作り方 / Crafting Engineering Strategy
iwashi86
21
6.9k
AmazonRoute 53ではじめてのドメイン取得!HTTPS化までの道のりを整理してみた
usanchuu
3
140
AIの性能が向上しても未解決な組織の重大問題は何か?/An Unsolved Organizational Problem in the Age of AI
moriyuya
4
680
2026TECHFRESH畢業分享會 - Lightning Talk - E起 See See : 電商推薦讀心術? 數據說了算
line_developers_tw
PRO
0
1.1k
作って終わりにしない タイミーのセマンティックレイヤー育成の現在地
chanyou0311
4
2.4k
自宅LLMの話
jacopen
1
590
20260619 私の日常業務での生成 AI 活用
masaruogura
1
210
なぜ Platform Engineering の土台に Kubernetes を選ぶのか
r4ynode
2
640
機械学習を「社会実装」するということ 2026年夏版 / Social Implementation of Machine Learning June 2026 Version
moepy_stats
6
2.4k
AAIFに入ってみた ~内から見えるコミュニティ動向~
sato4
0
240
GitHub Copilot 最新アップデート – 「一歩先」の実践活用術
moulongzhang
4
860
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
Featured
See All Featured
How to Talk to Developers About Accessibility
jct
2
230
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
300
Game over? The fight for quality and originality in the time of robots
wayneb77
1
200
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
780
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
We Have a Design System, Now What?
morganepeng
55
8.2k
Designing Powerful Visuals for Engaging Learning
tmiket
1
410
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