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
新SkyWayの魅⼒と今後の展望
Search
Yusuke Naka
April 06, 2023
Technology
850
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
新SkyWayの魅⼒と今後の展望
新SkyWay ローンチイベントでお話した資料です。
https://go.skyway.ntt.com/skyway_event_20230222
Yusuke Naka
April 06, 2023
More Decks by Yusuke Naka
See All by Yusuke Naka
WebRTCの技術概要 / SkyWayの紹介
yusuke84
0
1k
WebRTCにおけるオーディオとの付き合い方
yusuke84
2
1.7k
あえてWebエンジニア以外の人に聞いてほしいWebRTCの話
yusuke84
3
11k
小さく始めろ、評価は期待するな、理解ある上司を探せ、プロダクト愛を持て!
yusuke84
0
1.9k
新米コミュニティマネージャーが実践した開発者コミュニティ0to1
yusuke84
1
750
Other Decks in Technology
See All in Technology
SONiCで構築・運用する生成AI向けパブリッククラウドネットワーク ~実装編~
sonic
0
280
データサイエンスを価値につなげるプロジェクト設計 〜 DS一年目が現場で得た気づき 〜
ysd113
1
280
Android の公式 Skill / Android skills
yanzm
0
160
iAEONの段階的リアーキテクト戦略 / iAEON's_Gradual_Re-architecture_Strategy
aeonpeople
0
230
Lightning近況報告
kozy4324
0
200
PostgreSQL 19 新機能概要 OSC Hokkaido 2026
nori_shinoda
0
160
脆弱性対応、どこで線を引くか
rymiyamoto
1
420
AWS Security Agent といっしょに脅威モデリングをやってみよう
amarelo_n24
1
180
SONiCの統計情報を取得したい
sonic
0
230
現地で盛り上がった WWDC26 Keynote
zozotech
PRO
1
270
AI-DLCを “そのまま導入しなかった”話 ~組織に合わせてアジャストした 私たちの実践共有~
hiroramos4
PRO
0
230
Chainlitで作るお手軽チャットUI
ynt0485
0
280
Featured
See All Featured
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
950
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
First, design no harm
axbom
PRO
2
1.2k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
290
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
170
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
200
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
210
Transcript
SkyWay CONNECT 〜あなたと創る、新しいオンラインコミュニケーション〜 新SkyWayの魅⼒と今後の展望 NTTコミュニケーションズ株式会社 SkyWay推進室 担当課⻑ 兼 プロダクトマネージャー 仲
裕介 ※ 2023.02.22開催イベントの発表資料を公開⽤に⼀部修正しています
SkyWay推進室 担当課⻑ 兼 プロダクトマネージャー 仲 裕介 SkyWayとの関わり 2013.12 ⽴ち上げメンバー4⼈のうちの⼀⼈としてSkyWayを創業 DevOps
/ プリセールス / 開発者マーケティング(DevRel)全てを担う WebRTC Meetup / WebRTC Beginners Tokyo 等の開発者向け勉強会を⽴ち上げ 2017.09 商⽤化を社内で推し進め、正式リリースを達成 正式リリース後は、プリセールス / ポストセールス / DevRelに注⼒ 2020.10 プロダクトマネージャーに就任し、新SkyWay構想の具体化を推進 2022.02 社内向けのα版を経てSkyWay Betaとしてオープンベータ公開 2022.02 SkyWay推進室の⽴ち上げに関する実務を推進 2023.01 新SkyWayをサービスリリース 横浜市在住、最近の趣味は⾃転⾞
ü SkyWayの概要とチャレンジ ü 新SkyWayの特徴 ü 今後の展開(ロードマップ) ü 新しくなっても変わらないこと 今⽇お伝えすること
WebRTCを使ったビデオや音声通話を、簡単に実装できるSDK(WebRTC PaaS) 数十行のプログラムを書くだけで 様々な通話形態のリアルタイムコミュニケーションを Webサイトやアプリケーションに追加し、エンドユーザーに提供できる ※ WebRTC … ビデオ・音声通話の標準技術 ※
SDK … ソフトウェアの部品 ※ PaaS … アプリ開発に必要な機能を提供するサービス ※ 通話形態 … 1対1通話や多人数通話 など SkyWayとは
SkyWayで UXを向上
数字で⾒るSkyWay
SkyWayのチャレンジ
ü 安定性・機能拡張性を考慮したプラットフォームの刷新 ü 多様化するニーズに対応するための後⽅互換性を担保しな いAPIの刷新 SkyWayのチャレンジ
ü 安定性・機能拡張性を考慮したプラットフォームの刷新 ü 多様化するニーズに対応するための後⽅互換性を担保しな いAPIの刷新 SkyWayのチャレンジ
ü 安定性・機能拡張性を考慮したプラットフォームの刷新 ü 多様化するニーズに対応するための後⽅互換性を担保しな いAPIの刷新 SkyWayのチャレンジ
新SkyWayの特徴
ü Pub/SubモデルのAPI ü 同時通話⼈数の拡⼤ ü SFU Botの導⼊ ü サイマルキャストの導⼊ ü
認証・認可機能の充実化 ü 旧SkyWayからの細かな改善点 いいね︕ 新SkyWayの特徴
Pub/SubモデルのAPI Channel (Room) // P2P方式のRoom情報を取得(なければ作成) const room = await SkyWayRoom.FindOrCreate(context,
{ type: 'p2p', name: roomNameInput.value, }); // Roomに参加する const me = await room.join(); myId.textContent = me.id; // 自分の音声と映像をPublish(送信) await me.publish(audio); await me.publish(video); 送信側の実装イメージ // 受信ボタンをクリックしたら subscribeButton.onclick = async () => { // 送信されているメディアをSubscribe(受信) const { stream } = await me.subscribe(publication.id); // メディア再生用のHTMLエレメントを作成(映像の場合) let newMedia = document.createElement('video’); // 受信したメディアにHTMLエレメントを適用 stream.attach(newMedia); // 再生する newMedia.play(); 受信側の実装イメージ ※Roomパッケージを利用した場合のイメージ ※説明上不要な部分は省略 Pub/Subモデルのイメージ
映像や⾳声の柔軟な送受信が可能になるため端末負荷を抑えられる • 例 • スマホで通話に参加している⼈は映像を受信しない • 画⾯上表⽰されていない⼈の映像は受信しない 柔軟なユースケースに対応できる • 例
• オンラインフィットネスなどで、講師の映像は⽣徒全員に送り たいけど、⽣徒の映像は講師にしか送りたくない Pub/Subモデルのメリット
項⽬ システム上限 ⽬安 Channelあたりの最⼤参加可能Member数 320 最⼤同時通話⼈数(映像・⾳声) ※ SFU利⽤時 100 ※1⼈が最⼤99⼈に送信可能
※SFU botも数に含む 映像: 50 ※端末負荷が⾼いため現実ライン 最⼤同時通話⼈数(映像・⾳声・データ) ※ P2P(Mesh)利⽤時 15 映像: 4 ※端末負荷が⾼いため現実ライン ※ 旧SkyWayのSFUを使った最大通話人数は20名程度 Channel(Room) A B C D E F 旧SkyWayと新SkyWayの⼤きな違いは、 Channel(Room)への参加⼈数 =通話⼈数 ではないこと 同時通話⼈数の拡⼤
SFU Botの導⼊ A B C SFU bot SFUで1:多配信 P2Pで会話 ChannelにSFU
botを参加させることで多人数通話を実現 同⼀のChannel内で SFU経由とそれ以外の 通話が共存可能 今後botとしてSFU以 外の機能も提供予定 (録⾳録画 botなど) Publish Subscribe // SFU botを利用するための準備 const plugin = new SfuBotPlugin(); const context = await SkyWayContext.Create(token); context.registerPlugin(plugin); const channel = await SkyWayChannel.FindOrCreate(context, { name: channelNameInput.value, }); // Channelにbotが居なければ参加させる if (channel.bots.length === 0) { await plugin.createBot(channel); } const bot = channel.bots[0] ?? (await plugin.createBot(channel)); const me = await channel.join(); myId.textContent = me.id; { // メディアをPublish const publication = await me.publish(audio); // PublishしたメディアをSFU botに転送させる await bot.startForwarding(publication); } // 受信ボタンをクリックしたら subscribeButton.onclick = async () => { // SFU botが転送しているメディアをSubscribe(受信)する const { stream, subscription } = await me.subscribe(publication.id); SFU Botに送信する際の実装イメージ SFU Botから受信する際の実装イメージ Channel
サイマルキャストの導⼊ SFU bot ChannelにSFU botを参加させることで多人数通話を実現 Publish const publication = await
me.publish(video, { // Publishする際にencodingパラメーターで品質を設定 encodings: [ { maxBitrate: 80_000, id: 'low' }, { maxBitrate: 200_000, id: 'middle' }, { maxBitrate: 400_000, id: 'high' }, ], }); await bot.startForwarding(publication); 送信側の実装イメージ Channel Hight Middle Low 品質の異なる複数の映像を送信 A B 広帯域 狭帯域 Subscribe Subscribe ※解像度、ビットレート、フレームレート(iOS/Androidは今後対応) で品質を設定可能 // 受信する際に品質を指定する場合 const { stream, subscription } = await me.subscribe(publication.id, { preferredEncodingId: 'low' }); // 受信した後に品質を切り替える場合 const { stream, subscription } = await me.subscribe(publication.id, { preferredEncodingId: 'low' }); const switchEncodingSetting = async () => { if (subscription.preferredEncoding === 'low’) // 品質lowの場合、Hightに切り替える subscription.changePreferredEncoding('high'); } else { subscription.changePreferredEncoding('low'); } } 受信側の実装イメージ ※その時の通信環境等を踏まえて最適な品質を選択するため明示的に選択しなくても良い ※制御が効くまでにタイムラグがあるため予め選択してもよい
認証・認可機能の充実化 SkyWay Auth Tokenを使うことで柔軟な認証・認可を実現 02を実現するための認証情報設定例 Aチーム所属 Aチーム 会議室 Bチーム 会議室
視聴のみ 参加者 発⾔可能 参加者 管理者権限 悪意のある 参加者 強制退室 ⼊室の権限管理 01 参加者ごとの権限設定 02 管理者権限による 参加者の操作 03 const token = new SkyWayAuthToken({jti: uuidV4(), iat: nowInSec(), exp: nowInSec() + 60 * 60 * 24, scope: { app: { id: appId, actions: ["read"], channels: [ { name: 'roomA', action: ["create", "delete"], members: [ { // スピーカーAはRoomAでメディアの送受信が可能 name: 'speakerA', actions: ["create", "delete"], publication: { action: ["create", "delete"] }, subscription: { action: ["create", "delete"] } }, { // スピーカーA以外のRoomA参加者はメディアの受信のみが可能 name: '*', actions: ["create", "delete"], publication: { action: [] }, subscription: { action: ["create", "delete"] } } ], ※スペースの関係で以下省略
コーデックの選択肢拡⼤ • SFUで利⽤できるサポートコーデックにH264を追加※1 • VP9, AV1, Opus/RED(パケロス耐性向上)を指定可能※2 • ⾮発話区間の帯域削減が可能なOpus DTXを利⽤可能※1
※1: JavaScript SDKのみ ※2: P2P通話のみ (JavaScript SDKはSFUでVP9を利⽤できる) iOS SDK / Android SDKの機能を充実 • 映像ファイルや任意の映像ソースの送信に対応 • iOS / Android ともに画⾯共有が可能 • 受信した映像フレームにアクセスできる(UI表⽰以外の使い ⽅が可能)※3 • ソースコードを公開 ※3: Android SDKのみ 旧SkyWayからのその他の変更点 詳しくは開発者ドキュメントをご覧ください https://skyway.ntt.com/ja/docs/
今後の展開
今後の展開 4⽉〜5⽉ バーチャル背景実装⽤ ライブラリ提供(Web版) 5⽉〜6⽉ TURNサーバ IPアドレス公開 7⽉〜9⽉ 録⾳・録画機能 ベータ提供開始
8⽉〜10⽉ 通話状況分析機能 ベータ提供開始 2023年 通話品質や状況を可視化、通話不具合の 原因調査などを⽤意にするためのダッシ ュボードを提供 ※2023/4/4時点の想定であり提供内容や時期を約束するものでは有りません 現時点では時期は未定ですが今後提供を視野に検討していくもの • ノイズキャンセリング • SDKラインナップ拡充(Unityなどのニーズに対応) • お客様のバックエンドサーバからSkyWayを操作するAPI • 超低遅延配信 • 通信負荷低減 ※ 細かな改善やSDKの使い勝手向上などは継続して実施!
新しくなっても変わらないもの
新しくなっても変わらないもの 無料 すぐに試せる 手軽さ 国内でSkyWay とWebRTCに詳 しいエンジニア が直接サポート 提供 Made
in Japan 通信会社提供 安心感 日本人エンジ ニアの事を第 一に考えた 情報発信
THANK YOU FOR YOUR ATTENTION