Slide 1

Slide 1 text

WebRTCϦϦʔεͰਏ͔ͬͨ͜ͱ 4LZ8BZ6(

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

WebRTCϦϦʔεͰਏ͔ͬͨ͜ͱ 4LZ8BZ6(

Slide 4

Slide 4 text

δϟϯϘ@jumboOrNot Kentaro Haneda APPɾUX Team Leader@RareJob
 Swift/kotlin/Golang/WebRTC

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

SPA/Typescript/Vue.js/spectre/webpack swift/kotlin/firebase/MVVM/RxXXX re:dash/kibana… ৭ʑͳٕज़ελοΫΛ૊Έ߹Θͤͯ ࣮૷ɾӡ༻͍ͯ͠·͢ UXɾٕज़తʹ΋͍ΖΜͳ௅ઓΛ૊ΈࠐΜͰ·͢ɻ

Slide 8

Slide 8 text

ฐࣾͷϝσΟΞͰ΋͜ΕΛ࡞͍ͬͯ͘ͱ͖ͷ ϓϩηεͱ͔Λॻ͍͍ͯ·͢ɻ https://appeal.rarejob.co.jp/creator/2018/03/28/about- webrtc-release-story/

Slide 9

Slide 9 text

ࠓ೔ͷ͓࿩ • WebRTCܥͷػೳΛϦϦʔε͢Δʹ͋ͨΓ • ʮਏΈʯΛ࿨Β͛Δ޻෉ • ʮਏΈʯʹ޲͚ͯ࡞͓ͬͯ͘΂͖ମ੍ɾ࢓૊Έ

Slide 10

Slide 10 text

͜Μͳਓʹ఻͍͑ͨ • WebRTCʹؔΘΔαʔϏεͷۀ຿Λ͍ͯ͠Δ • WebRTCʹؔΘΔαʔϏεΛӡ༻͢Δ༧ఆͷਓ

Slide 11

Slide 11 text

ʮਏΈʯΛ࿨Β͛Δ޻෉

Slide 12

Slide 12 text

ʮਏΈʯΛ࿨Β͛Δ޻෉ 1. ͍͢͝ظ଴ 2. εΧΠϓʹͰ͖ΔΜͩ͠ɾɾɾ 3. σόΠεࠩҟͱෳ਺ΫϥΠΞϯτͷ؅ཧ

Slide 13

Slide 13 text

جຊతʹWebRTC͸ͼͬ͘Γ͢Δ΄ͲͳΜͰ΋Ͱ͖Δ ͱࢥΘΕ͍ͯΔʢࣾ಺ɾϢʔβʔ͞ΜؚΊʣ ˎͰ͖ͳ͍ʢۃ୺ʹ͍͏ͱʣ ɾEdge/IEͰಈ͔ͳ͍Ͳ͜Ζ͔ଟ͘ͷϒϥ΢βͰಈ͔ͳ͍ ɾεϚϗWebͩͱಈ͔ͳ͍ɺΞϓϦ͕ඞཁ ɾࠓܨ͕͔ͬͨΒຊ൪Ͱܨ͕Δͱ͸ݶΒͳ͍ ɾܨ͕ͬͯͯ΋ө૾͕ݟ͑ͳ͍͜ͱ΋͋Δ 1.͍͢͝ظ଴

Slide 14

Slide 14 text

جຊతʹWebRTC͸ͼͬ͘Γ͢Δ΄ͲͳΜͰ΋Ͱ͖Δ ͱࢥΘΕ͍ͯΔ ʮͰ͖ͳ͍ʯΛ࢓༷ʹམͱ͢ • Firefox/ChromeҎ֎ͩͱ؀ڥνΣοΫͰΤϥʔΛදࣔ͢Δ • εϚϗͰͷදࣔ࣌ʹ͸ΞϓϦ or ετΞ΁ඈ͹͢ ౳ɻҧ͍͕͋Δ͜ͱΛʮڞ༗ʯ͚ͩ ͡Όͳͯ͘ମݧ΍ϓϩμΫτͰ఻͑Δɻ 1.͍͢͝ظ଴

Slide 15

Slide 15 text

2. εΧΠϓʹͰ͖ΔΜͩ͠ɾɾɾ Skype͸ଟػೳͰ͋Δɻ ө૾ɺνϟοτɺֆจࣈɺIMɺ௨஌ɺෳ਺σόΠε ΞΧ΢ϯτ؅ཧɺ௨஌ઃఆɺetcɾɾɾ ͜ΕΛ׬શʹ࠶ݱ͢Δͷ͸େมɺྫ͑͹IM https://support.skype.com/ja/faq/FA34696/skype-insutantometsusezi-im- noshu-shi-she-ding-wosuruniha ͜ΕΛ࡞Δʹ͸֤ΫϥΠΞϯτଆͰʮ**Ͱғ·Εͨจࣈʹରͯ͠boldΛ ͔͚ΔʯͳͲͷରԠ͕ඞཁɻ

Slide 16

Slide 16 text

2.׬શͳεΧΠϓͷ୅ସ͡Όͳ͍ ʻWebʼ **ͳͲΛड͚औͬͨΒ΍λάͰғΊ͹͍͍ → َͷਖ਼نදݱࡇΓɺͰ΋΍ΕΔ ʻAppʼ ios/androidͷඪ४ͷ૷০Λ΍Ζ͏ͱ͢Δ → HTMLΛҧͬͯɺʮಛఆͷRangeͷจࣈྻʹରͯ͠ ɹAttiributeΛ͚ͭΔʯͱ͍͏࢓૊ΈͳͷͰෳࡶͳܗࣜʹରԠ͢Δͷ͕ ɹ೉͍͠ɻ

Slide 17

Slide 17 text

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)) !!πϥΠϙΠϯτ!!

Slide 18

Slide 18 text

2.׬શͳεΧΠϓͷ୅ସ͡Όͳ͍ ʻAppʼ iOS: UILabel͸HTMLܗࣜͰදࣔͰ͖Δ Android: TextView͸HTMLܗࣜͰදࣔͰ͖Δ → HTMLʹཔΖ͏ // kotlin label.setText(Html.fromHtml(“text", 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)

Slide 19

Slide 19 text

2.׬શͳεΧΠϓͷ୅ସ͡Όͳ͍ ʻAppʼ iOS: UILabel͸HTMLܗࣜͰදࣔͰ͖Δ Android: TextView͸HTMLܗࣜͰදࣔͰ͖Δ → HTMLʹཔΖ͏ // kotlin label.setText(Html.fromHtml(“text", 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తͳ

Slide 20

Slide 20 text

2.׬શͳεΧΠϓͷ୅ସ͡Όͳ͍ Skype͸ଟػೳͰ͋Δɻ ө૾ɺνϟοτɺֆจࣈɺIMɺ௨஌ɺෳ਺σόΠε ΞΧ΢ϯτ؅ཧɺ௨஌ઃఆɺetcɾɾɾ ࠶ݱ͖͠Εͳ͍͚Ͳ޻෉ͰΧόʔͰ͖Δͱ͜Ζ͸͢Δ ແཧʹskypeΛ࠶ݱ͖͠Ζ͏ͱͤͣɺΑΓຊ࣭తͳ෦෼ʹ༏ઌ౓Λ ͋ͯͯ৽͍͠ମݧΛ࡞Δ

Slide 21

Slide 21 text

3. σόΠεࠩҟͱෳ਺ΫϥΠΞϯτͷ؅ཧ ௐࢠʹ৐ͬͨΜͰ͢ɻ ϨΞδϣϒӳձ࿩ (iPhone/iPad/Android/Android Tablet) ๏ਓ޲͚͓΋ͯͳ͠ӳձ࿩ (iPhone/iPad/Android/Android Tablet) WebαΠτ (ੜె༻ɾߨࢣ༻) ΞϓϦͰ4ΞϓϦɺwebͰ2ΞϓϦ͋Γ·͢

Slide 22

Slide 22 text

3. σόΠεࠩҟͱෳ਺ΫϥΠΞϯτͷ؅ཧ ϨΞδϣϒӳձ࿩ (iPhone/iPad/Android/Android Tablet) ๏ਓ޲͚͓΋ͯͳ͠ӳձ࿩ (iPhone/iPad/Android/Android Tablet) WebαΠτ (ੜె༻ɾߨࢣ༻) ڞ௨ԽΛ͕Μ͹Δ ڞ௨ϞδϡʔϧԽ android/iosͦΕͧΕͰ2ΞϓϦ͋Δ͚Ͳ1ͭͷιʔεͰ ϏϧυΛ෼͚͍ͯΔɻϨοεϯը໘ɾViewModelͳͲ ͕ͬͪΓڞ༗͍ͯ͠Δɻ ڞ௨ϞδϡʔϧԽ ϝοηʔδϯά෦෼ͳͲΛ ڞ௨Ϟδϡʔϧͱͯ͠෼཭தɺ SPAԽͯ͋͠Δɻ

Slide 23

Slide 23 text

ʮਏΈʯʹ޲͚ͯ࡞͓ͬͯ͘΂͖ ମ੍ɾ࢓૊Έ

Slide 24

Slide 24 text

࡞͓ͬͯ͘΂͖ମ੍ɾ࢓૊Έ • ·ͣઈର͘Δɺ͓໰͍߹Θͤʮܨ͕Βͳ͍ʯʹରͯ͠ • ԿΛ࢒͓ͯ͘͠΂͖ͳͷ͔

Slide 25

Slide 25 text

·ͣઈର͘Δɺ͓໰͍߹Θͤʮܨ͕Βͳ͍ʯʹରͯ͠ ཧ༝͸༷ʑɻ ωοτϫʔΫɺσόΠεɺΞϓϦέʔγϣϯɺSkyWayɺ όʔδϣϯɺϒϥ΢βɺͦͷଞॾʑɾɾɾ ੾Γ෼͚࢝ΊΔͱΩϦ͕ͳ͍ɻ ઈରདྷ·͢ɻ

Slide 26

Slide 26 text

ࢼߦࡨޡͷ༷ࢠ

Slide 27

Slide 27 text

ࢼߦࡨޡͷ༷ࢠ ͜Εʹֻ͚ࢉͰରԠΫϥΠΞϯτ਺ ʢweb/ios/androidʣͳͲ͕ ૊Έ߹Θ͞Δͱɺ੾Γ෼͚͸͙͍͑ɾɾɾ

Slide 28

Slide 28 text

ԿΛ࢒͓ͯ͘͠΂͖ͳͷ͔ ɾ໰୊ͷ͋ͬͨΫϥΠΞϯτͷUA͸ʁ ɾԿϨοεϯWebRTCͰఏڙͰ͖͔ͨʁ ɾߨࢣ͝ͱʹWebRTCͰͷϨοεϯఏڙ਺͸ʁ ɾߨࢣ͝ͱʹWebRTCͰͷϨοεϯఏڙ੒ޭ਺͸ʁ ɾੜె͝ͱʹWebRTCͰͷϨοεϯఏڙ਺͸ʁ ɾੜె͝ͱʹWebRTCͰͷϨοεϯఏڙ੒ޭ਺͸ʁ ௐࠪͰ͖Δ؀ڥͮ͘Γ

Slide 29

Slide 29 text

ԿΛ࢒͓ͯ͘͠΂͖ͳͷ͔ ɾ໰୊ͷ͋ͬͨΫϥΠΞϯτͷUA͸ʁ ɾԿϨοεϯWebRTCͰఏڙͰ͖͔ͨʁ ɾߨࢣ͝ͱʹWebRTCͰͷϨοεϯఏڙ਺͸ʁ ɾߨࢣ͝ͱʹWebRTCͰͷϨοεϯఏڙ੒ޭ਺͸ʁ ɾੜె͝ͱʹWebRTCͰͷϨοεϯఏڙ਺͸ʁ ɾੜె͝ͱʹWebRTCͰͷϨοεϯఏڙ੒ޭ਺͸ʁ ௐࠪͰ͖Δ؀ڥͮ͘Γ ύϑΥʔϚϯεΛϞχλϦϯάͰ͖Δ࢓૊Έ ϩάΛҰཡͰ͖Δ࢓૊ΈΛOSSͰߏங

Slide 30

Slide 30 text

ԿΛ࢒͓ͯ͘͠΂͖ͳͷ͔ ɾ໰୊ͷ͋ͬͨΫϥΠΞϯτͷUA͸ʁ ɾԿϨοεϯWebRTCͰఏڙͰ͖͔ͨʁ ɾߨࢣ͝ͱʹWebRTCͰͷϨοεϯఏڙ਺͸ʁ ɾߨࢣ͝ͱʹWebRTCͰͷϨοεϯఏڙ੒ޭ਺͸ʁ ɾੜె͝ͱʹWebRTCͰͷϨοεϯఏڙ਺͸ʁ ɾੜె͝ͱʹWebRTCͰͷϨοεϯఏڙ੒ޭ਺͸ʁ ௐࠪͰ͖Δ؀ڥͮ͘Γ

Slide 31

Slide 31 text

ԿΛ࢒͓ͯ͘͠΂͖ͳͷ͔ ɾ໰୊ͷ͋ͬͨΫϥΠΞϯτͷUA͸ʁ ɾԿϨοεϯWebRTCͰఏڙͰ͖͔ͨʁ ɾߨࢣ͝ͱʹWebRTCͰͷϨοεϯఏڙ਺͸ʁ ɾߨࢣ͝ͱʹWebRTCͰͷϨοεϯఏڙ੒ޭ਺͸ʁ ɾੜె͝ͱʹWebRTCͰͷϨοεϯఏڙ਺͸ʁ ɾੜె͝ͱʹWebRTCͰͷϨοεϯఏڙ੒ޭ਺͸ʁ ௐࠪͰ͖Δ؀ڥͮ͘Γ webrtc-internalsΛऔಘ͢ΔαʔϏε΋͋Γ·͢ ࿈བྷ͢Δͱ15෼͘Β͍σϞΛͯ͘͠ΔͷͰੋඇɻ

Slide 32

Slide 32 text

·ͱΊ

Slide 33

Slide 33 text

΍ͬͺΓͭΒ͍ͧWebRTC • ҧ͍͸ࣾ಺֎ʹཧղͯ͠΋Β͑ΔΑ͏ߟ͑ͯಈ͘ɾ४උ͢Δ • ໰୊͸ඞͣى͖ΔͷͰɺࣄલʹͦΕΛϞχλϦϯάɾௐࠪ
 Ͱ͖Δ؀ڥΛ࡞Δ ͦΕͰ΋ࠓ೔΋Α͘৸ΔͨΊʹ

Slide 34

Slide 34 text

SPA/Typescript/Vue.js/spectre/webpack swift/kotlin/firebase/MVVM/RxXXX re:dash/kibana… we are hiring. https://www.wantedly.com/projects/199723