Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WebRTCリリースで辛かったこと

 WebRTCリリースで辛かったこと

B4e8461292c2cccef061741f8ba1ac3f?s=128

Ken Jumbo Haneda

April 19, 2018
Tweet

Transcript

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

  2. None
  3. WebRTCϦϦʔεͰਏ͔ͬͨ͜ͱ 4LZ8BZ6(

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

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

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

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

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

  11. ʮਏΈʯΛ࿨Β͛Δ޻෉

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

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

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

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

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

    ɹ೉͍͠ɻ
  17. 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)) !!πϥΠϙΠϯτ!!
  18. 2.׬શͳεΧΠϓͷ୅ସ͡Όͳ͍ ʻAppʼ iOS: UILabel͸HTMLܗࣜͰදࣔͰ͖Δ Android: TextView͸HTMLܗࣜͰදࣔͰ͖Δ → 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)
  19. 2.׬શͳεΧΠϓͷ୅ସ͡Όͳ͍ ʻAppʼ iOS: UILabel͸HTMLܗࣜͰදࣔͰ͖Δ Android: TextView͸HTMLܗࣜͰදࣔͰ͖Δ → 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తͳ
  20. 2.׬શͳεΧΠϓͷ୅ସ͡Όͳ͍ Skype͸ଟػೳͰ͋Δɻ ө૾ɺνϟοτɺֆจࣈɺIMɺ௨஌ɺෳ਺σόΠε ΞΧ΢ϯτ؅ཧɺ௨஌ઃఆɺetcɾɾɾ ࠶ݱ͖͠Εͳ͍͚Ͳ޻෉ͰΧόʔͰ͖Δͱ͜Ζ͸͢Δ ແཧʹskypeΛ࠶ݱ͖͠Ζ͏ͱͤͣɺΑΓຊ࣭తͳ෦෼ʹ༏ઌ౓Λ ͋ͯͯ৽͍͠ମݧΛ࡞Δ

  21. 3. σόΠεࠩҟͱෳ਺ΫϥΠΞϯτͷ؅ཧ ௐࢠʹ৐ͬͨΜͰ͢ɻ ϨΞδϣϒӳձ࿩ (iPhone/iPad/Android/Android Tablet) ๏ਓ޲͚͓΋ͯͳ͠ӳձ࿩ (iPhone/iPad/Android/Android Tablet) WebαΠτ

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

    ڞ௨ԽΛ͕Μ͹Δ ڞ௨ϞδϡʔϧԽ android/iosͦΕͧΕͰ2ΞϓϦ͋Δ͚Ͳ1ͭͷιʔεͰ ϏϧυΛ෼͚͍ͯΔɻϨοεϯը໘ɾViewModelͳͲ ͕ͬͪΓڞ༗͍ͯ͠Δɻ ڞ௨ϞδϡʔϧԽ ϝοηʔδϯά෦෼ͳͲΛ ڞ௨Ϟδϡʔϧͱͯ͠෼཭தɺ SPAԽͯ͋͠Δɻ
  23. ʮਏΈʯʹ޲͚ͯ࡞͓ͬͯ͘΂͖ ମ੍ɾ࢓૊Έ

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

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

  26. ࢼߦࡨޡͷ༷ࢠ

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

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

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

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

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

  32. ·ͱΊ

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

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