Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
パラレルの通話を支える 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
AIネイティブプロダクトで顧客価値を最大化するプロダクトエンジニアとFDEの協働
righttouch
PRO
0
220
When Does a Local Qwen Start to Break
morshoto
0
200
『止めない』を設計する — 制約の中で、事業の根幹を支える判断
hiroyaterui
0
260
Where Is JetBrains AI Heading- — Central CLI, Air Alpha, and the Agentic Development Stack
x5gtrn
PRO
0
150
【視聴者参加型!】AWSセキュリティアンチパターンクイズ
syoshie
1
490
スクラムで身についていた動き方を、XPで捉え直してみた
codmoninc
PRO
1
340
Gitは怖い?共有ワークスペースから始めるSnowflakeチーム開発
coco_se
0
100
HRC_Frontend_Conference_Fukuoka_2026.pdf
ts020
0
360
生成AIのテナント制御とシャドーMCP対策 | AIを"止めずに"、情報を守る
yukun
0
140
こんなアーキテクチャ図は嫌だ BEYOND THE TIME: 半年後の自分へ贈る15のメッセージ / 15 of Anti-pattern in AWS Architecture Diagrams
naospon
3
300
[2026-09-11]SREは誰のもの?運用エンジニアが始める 「SRE領域への越境」とチームの進化の軌跡 〜Road to NEXT CRE
tosite
0
110
Podは生きているのにGoだけが落ちる:GOGCとGOMEMLIMITで追うInvisible OOM Killの謎
tkc66buzz
1
500
Featured
See All Featured
Site-Speed That Sticks
csswizardry
13
1.5k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
820
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
280
So, you think you're a good person
axbom
PRO
2
2.1k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Building Applications with DynamoDB
mza
96
7.2k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
290
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
The World Runs on Bad Software
bkeepers
PRO
72
12k
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