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
WebRTCリリースで辛かったこと
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Ken Jumbo Haneda
April 19, 2018
Programming
1.6k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
WebRTCリリースで辛かったこと
Ken Jumbo Haneda
April 19, 2018
More Decks by Ken Jumbo Haneda
See All by Ken Jumbo Haneda
Vue.jsのない会社にVue.jsを入れていく
jumbo_ken
0
610
20200115_skyway_ug_6
jumbo_ken
0
560
サブスクミートアップ2.pdf
jumbo_ken
0
920
20180614_AppsJapan
jumbo_ken
1
500
アプリを作ってて気づいた、 教育サービスの難しいところ
jumbo_ken
1
1.6k
WebRTCで実現する次世代英会話と旧世代式開発手法
jumbo_ken
0
2.1k
bonfire android #2
jumbo_ken
1
1.1k
iOSでのSkyWay開発の勘所とTips (リリース後・新SDK編)
jumbo_ken
0
6k
両OSやるマンという選択
jumbo_ken
9
6.4k
Other Decks in Programming
See All in Programming
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
200
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
210
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
180
FDEが実現するAI駆動経営の現在地
gonta
2
270
仕様駆動開発へのトライを機に チームに適合する手法を模索し続けている話
freee
PRO
0
440
5分で問診!Composer セキュリティ健康診断
codmoninc
0
900
torikago - Ruby::Boxで照らすモジュラモノリスの実行境界
se4weed
1
340
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
290
テーブルをDELETEした
yuzneri
0
140
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
210
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.6k
AI時代に設計が 最大の生産性レバーになる 意図駆動開発とデータを消さない設計|Don't Delete Your Data or Your Intent — Design as the Deepest Lever in the AI Era
tomohisa
1
720
Featured
See All Featured
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
440
Done Done
chrislema
186
16k
Building Applications with DynamoDB
mza
96
7.2k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
780
Bash Introduction
62gerente
615
220k
Ruling the World: When Life Gets Gamed
codingconduct
0
290
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.7k
Making the Leap to Tech Lead
cromwellryan
135
10k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
230
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
Transcript
WebRTCϦϦʔεͰਏ͔ͬͨ͜ͱ 4LZ8BZ6(
None
WebRTCϦϦʔεͰਏ͔ͬͨ͜ͱ 4LZ8BZ6(
δϟϯϘ@jumboOrNot Kentaro Haneda APPɾUX Team Leader@RareJob Swift/kotlin/Golang/WebRTC
None
None
SPA/Typescript/Vue.js/spectre/webpack swift/kotlin/firebase/MVVM/RxXXX re:dash/kibana… ৭ʑͳٕज़ελοΫΛΈ߹Θͤͯ ࣮ɾӡ༻͍ͯ͠·͢ UXɾٕज़తʹ͍ΖΜͳઓΛΈࠐΜͰ·͢ɻ
ฐࣾͷϝσΟΞͰ͜ΕΛ࡞͍ͬͯ͘ͱ͖ͷ ϓϩηεͱ͔Λॻ͍͍ͯ·͢ɻ https://appeal.rarejob.co.jp/creator/2018/03/28/about- webrtc-release-story/
ࠓͷ͓ • WebRTCܥͷػೳΛϦϦʔε͢Δʹ͋ͨΓ • ʮਏΈʯΛΒ͛Δ • ʮਏΈʯʹ͚ͯ࡞͓͖ͬͯ͘ମ੍ɾΈ
͜Μͳਓʹ͍͑ͨ • WebRTCʹؔΘΔαʔϏεͷۀΛ͍ͯ͠Δ • WebRTCʹؔΘΔαʔϏεΛӡ༻͢Δ༧ఆͷਓ
ʮਏΈʯΛΒ͛Δ
ʮਏΈʯΛΒ͛Δ 1. ͍͢͝ظ 2. εΧΠϓʹͰ͖ΔΜͩ͠ɾɾɾ 3. σόΠεࠩҟͱෳΫϥΠΞϯτͷཧ
جຊతʹWebRTCͼͬ͘Γ͢Δ΄ͲͳΜͰͰ͖Δ ͱࢥΘΕ͍ͯΔʢࣾɾϢʔβʔ͞ΜؚΊʣ ˎͰ͖ͳ͍ʢۃʹ͍͏ͱʣ ɾEdge/IEͰಈ͔ͳ͍Ͳ͜Ζ͔ଟ͘ͷϒϥβͰಈ͔ͳ͍ ɾεϚϗWebͩͱಈ͔ͳ͍ɺΞϓϦ͕ඞཁ ɾࠓܨ͕͔ͬͨΒຊ൪Ͱܨ͕ΔͱݶΒͳ͍ ɾܨ͕ͬͯͯө૾͕ݟ͑ͳ͍͜ͱ͋Δ 1.͍͢͝ظ
جຊతʹWebRTCͼͬ͘Γ͢Δ΄ͲͳΜͰͰ͖Δ ͱࢥΘΕ͍ͯΔ ʮͰ͖ͳ͍ʯΛ༷ʹམͱ͢ • Firefox/ChromeҎ֎ͩͱڥνΣοΫͰΤϥʔΛදࣔ͢Δ • εϚϗͰͷදࣔ࣌ʹΞϓϦ or ετΞඈ͢ ɻҧ͍͕͋Δ͜ͱΛʮڞ༗ʯ͚ͩ
͡Όͳͯ͘ମݧϓϩμΫτͰ͑Δɻ 1.͍͢͝ظ
2. εΧΠϓʹͰ͖ΔΜͩ͠ɾɾɾ SkypeଟػೳͰ͋Δɻ ө૾ɺνϟοτɺֆจࣈɺIMɺ௨ɺෳσόΠε ΞΧϯτཧɺ௨ઃఆɺetcɾɾɾ ͜ΕΛશʹ࠶ݱ͢Δͷେมɺྫ͑IM https://support.skype.com/ja/faq/FA34696/skype-insutantometsusezi-im- noshu-shi-she-ding-wosuruniha ͜ΕΛ࡞Δʹ֤ΫϥΠΞϯτଆͰʮ**Ͱғ·Εͨจࣈʹରͯ͠boldΛ ͔͚ΔʯͳͲͷରԠ͕ඞཁɻ
2.શͳεΧΠϓͷସ͡Όͳ͍ ʻWebʼ **ͳͲΛड͚औͬͨΒ<b><i>λάͰғΊ͍͍ → َͷਖ਼نදݱࡇΓɺͰΕΔ ʻAppʼ ios/androidͷඪ४ͷ০ΛΖ͏ͱ͢Δ → HTMLΛҧͬͯɺʮಛఆͷRangeͷจࣈྻʹରͯ͠ ɹAttiributeΛ͚ͭΔʯͱ͍͏ΈͳͷͰෳࡶͳܗࣜʹରԠ͢Δͷ͕
ɹ͍͠ɻ
2.શͳεΧΠϓͷସ͡Όͳ͍ ʻAppʼ Ͳ͏͍͏͜ͱ͔ͱ͍͏ͱɾɾɾ myMutableString = NSMutableAttributedString(string: myString, attributes: [NSFontAttributeName:UIFont(name: "Georgia",
size: 18.0)!]) myMutableString.addAttribute(NSForegroundColorAttributeName, value: UIColor.redColor(),range: NSRange(location:2,length:4)) !!πϥΠϙΠϯτ!!
2.શͳεΧΠϓͷସ͡Όͳ͍ ʻAppʼ iOS: UILabelHTMLܗࣜͰදࣔͰ͖Δ Android: TextViewHTMLܗࣜͰදࣔͰ͖Δ → HTMLʹཔΖ͏ // kotlin
label.setText(Html.fromHtml(“<b>text</b>", Html.FROM_HTML_MODE_COMPACT)) // swift var err:NSError? self.label.attributedText = NSAttributedString( data: htmlText.dataUsingEncoding(NSUnicodeStringEncoding, allowLossyConversion: true), options: [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType], documentAttributes: nil, error: &err)
2.શͳεΧΠϓͷସ͡Όͳ͍ ʻAppʼ iOS: UILabelHTMLܗࣜͰදࣔͰ͖Δ Android: TextViewHTMLܗࣜͰදࣔͰ͖Δ → HTMLʹཔΖ͏ // kotlin
label.setText(Html.fromHtml(“<b>text</b>", Html.FROM_HTML_MODE_COMPACT)) // swift var err:NSError? self.label.attributedText = NSAttributedString( data: htmlText.dataUsingEncoding(NSUnicodeStringEncoding, allowLossyConversion: true), options: [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType], documentAttributes: nil, error: &err) ͍͍ײ͡ʹͰ͖ͨͷͰ ޙOSSͰެ։͠·͢ skype-IM-kitతͳ
2.શͳεΧΠϓͷସ͡Όͳ͍ SkypeଟػೳͰ͋Δɻ ө૾ɺνϟοτɺֆจࣈɺIMɺ௨ɺෳσόΠε ΞΧϯτཧɺ௨ઃఆɺetcɾɾɾ ࠶ݱ͖͠Εͳ͍͚ͲͰΧόʔͰ͖Δͱ͜Ζ͢Δ ແཧʹskypeΛ࠶ݱ͖͠Ζ͏ͱͤͣɺΑΓຊ࣭తͳ෦ʹ༏ઌΛ ͋ͯͯ৽͍͠ମݧΛ࡞Δ
3. σόΠεࠩҟͱෳΫϥΠΞϯτͷཧ ௐࢠʹͬͨΜͰ͢ɻ ϨΞδϣϒӳձ (iPhone/iPad/Android/Android Tablet) ๏ਓ͚͓ͯͳ͠ӳձ (iPhone/iPad/Android/Android Tablet) WebαΠτ
(ੜె༻ɾߨࢣ༻) ΞϓϦͰ4ΞϓϦɺwebͰ2ΞϓϦ͋Γ·͢
3. σόΠεࠩҟͱෳΫϥΠΞϯτͷཧ ϨΞδϣϒӳձ (iPhone/iPad/Android/Android Tablet) ๏ਓ͚͓ͯͳ͠ӳձ (iPhone/iPad/Android/Android Tablet) WebαΠτ (ੜె༻ɾߨࢣ༻)
ڞ௨ԽΛ͕ΜΔ ڞ௨ϞδϡʔϧԽ android/iosͦΕͧΕͰ2ΞϓϦ͋Δ͚Ͳ1ͭͷιʔεͰ ϏϧυΛ͚͍ͯΔɻϨοεϯը໘ɾViewModelͳͲ ͕ͬͪΓڞ༗͍ͯ͠Δɻ ڞ௨ϞδϡʔϧԽ ϝοηʔδϯά෦ͳͲΛ ڞ௨Ϟδϡʔϧͱͯ͠தɺ SPAԽͯ͋͠Δɻ
ʮਏΈʯʹ͚ͯ࡞͓͖ͬͯ͘ ମ੍ɾΈ
࡞͓͖ͬͯ͘ମ੍ɾΈ • ·ͣઈର͘Δɺ͓͍߹Θͤʮܨ͕Βͳ͍ʯʹରͯ͠ • ԿΛ͓͖ͯ͘͠ͳͷ͔
·ͣઈର͘Δɺ͓͍߹Θͤʮܨ͕Βͳ͍ʯʹରͯ͠ ཧ༝༷ʑɻ ωοτϫʔΫɺσόΠεɺΞϓϦέʔγϣϯɺSkyWayɺ όʔδϣϯɺϒϥβɺͦͷଞॾʑɾɾɾ Γ͚࢝ΊΔͱΩϦ͕ͳ͍ɻ ઈରདྷ·͢ɻ
ࢼߦࡨޡͷ༷ࢠ
ࢼߦࡨޡͷ༷ࢠ ͜Εʹֻ͚ࢉͰରԠΫϥΠΞϯτ ʢweb/ios/androidʣͳͲ͕ Έ߹Θ͞ΔͱɺΓ͚͙͍͑ɾɾɾ
ԿΛ͓͖ͯ͘͠ͳͷ͔ ɾͷ͋ͬͨΫϥΠΞϯτͷUAʁ ɾԿϨοεϯWebRTCͰఏڙͰ͖͔ͨʁ ɾߨࢣ͝ͱʹWebRTCͰͷϨοεϯఏڙʁ ɾߨࢣ͝ͱʹWebRTCͰͷϨοεϯఏڙޭʁ ɾੜె͝ͱʹWebRTCͰͷϨοεϯఏڙʁ ɾੜె͝ͱʹWebRTCͰͷϨοεϯఏڙޭʁ ௐࠪͰ͖Δڥͮ͘Γ
ԿΛ͓͖ͯ͘͠ͳͷ͔ ɾͷ͋ͬͨΫϥΠΞϯτͷUAʁ ɾԿϨοεϯWebRTCͰఏڙͰ͖͔ͨʁ ɾߨࢣ͝ͱʹWebRTCͰͷϨοεϯఏڙʁ ɾߨࢣ͝ͱʹWebRTCͰͷϨοεϯఏڙޭʁ ɾੜె͝ͱʹWebRTCͰͷϨοεϯఏڙʁ ɾੜె͝ͱʹWebRTCͰͷϨοεϯఏڙޭʁ ௐࠪͰ͖Δڥͮ͘Γ ύϑΥʔϚϯεΛϞχλϦϯάͰ͖ΔΈ ϩάΛҰཡͰ͖ΔΈΛOSSͰߏங
ԿΛ͓͖ͯ͘͠ͳͷ͔ ɾͷ͋ͬͨΫϥΠΞϯτͷUAʁ ɾԿϨοεϯWebRTCͰఏڙͰ͖͔ͨʁ ɾߨࢣ͝ͱʹWebRTCͰͷϨοεϯఏڙʁ ɾߨࢣ͝ͱʹWebRTCͰͷϨοεϯఏڙޭʁ ɾੜె͝ͱʹWebRTCͰͷϨοεϯఏڙʁ ɾੜె͝ͱʹWebRTCͰͷϨοεϯఏڙޭʁ ௐࠪͰ͖Δڥͮ͘Γ
ԿΛ͓͖ͯ͘͠ͳͷ͔ ɾͷ͋ͬͨΫϥΠΞϯτͷUAʁ ɾԿϨοεϯWebRTCͰఏڙͰ͖͔ͨʁ ɾߨࢣ͝ͱʹWebRTCͰͷϨοεϯఏڙʁ ɾߨࢣ͝ͱʹWebRTCͰͷϨοεϯఏڙޭʁ ɾੜె͝ͱʹWebRTCͰͷϨοεϯఏڙʁ ɾੜె͝ͱʹWebRTCͰͷϨοεϯఏڙޭʁ ௐࠪͰ͖Δڥͮ͘Γ webrtc-internalsΛऔಘ͢ΔαʔϏε͋Γ·͢ ࿈བྷ͢Δͱ15͘Β͍σϞΛͯ͘͠ΔͷͰੋඇɻ
·ͱΊ
ͬͺΓͭΒ͍ͧWebRTC • ҧ͍ࣾ֎ʹཧղͯ͠Β͑ΔΑ͏ߟ͑ͯಈ͘ɾ४උ͢Δ • ඞͣى͖ΔͷͰɺࣄલʹͦΕΛϞχλϦϯάɾௐࠪ Ͱ͖ΔڥΛ࡞Δ ͦΕͰࠓΑ͘৸ΔͨΊʹ
SPA/Typescript/Vue.js/spectre/webpack swift/kotlin/firebase/MVVM/RxXXX re:dash/kibana… we are hiring. https://www.wantedly.com/projects/199723