Slide 1

Slide 1 text

SkyWay CONNECT 〜あなたと創る、新しいオンラインコミュニケーション〜 新SkyWayの魅⼒と今後の展望 NTTコミュニケーションズ株式会社 SkyWay推進室 担当課⻑ 兼 プロダクトマネージャー 仲 裕介 ※ 2023.02.22開催イベントの発表資料を公開⽤に⼀部修正しています

Slide 2

Slide 2 text

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をサービスリリース 横浜市在住、最近の趣味は⾃転⾞

Slide 3

Slide 3 text

ü SkyWayの概要とチャレンジ ü 新SkyWayの特徴 ü 今後の展開(ロードマップ) ü 新しくなっても変わらないこと 今⽇お伝えすること

Slide 4

Slide 4 text

WebRTCを使ったビデオや音声通話を、簡単に実装できるSDK(WebRTC PaaS) 数十行のプログラムを書くだけで 様々な通話形態のリアルタイムコミュニケーションを Webサイトやアプリケーションに追加し、エンドユーザーに提供できる ※ WebRTC … ビデオ・音声通話の標準技術 ※ SDK … ソフトウェアの部品 ※ PaaS … アプリ開発に必要な機能を提供するサービス ※ 通話形態 … 1対1通話や多人数通話 など SkyWayとは

Slide 5

Slide 5 text

SkyWayで UXを向上

Slide 6

Slide 6 text

数字で⾒るSkyWay

Slide 7

Slide 7 text

SkyWayのチャレンジ

Slide 8

Slide 8 text

ü 安定性・機能拡張性を考慮したプラットフォームの刷新 ü 多様化するニーズに対応するための後⽅互換性を担保しな いAPIの刷新 SkyWayのチャレンジ

Slide 9

Slide 9 text

ü 安定性・機能拡張性を考慮したプラットフォームの刷新 ü 多様化するニーズに対応するための後⽅互換性を担保しな いAPIの刷新 SkyWayのチャレンジ

Slide 10

Slide 10 text

ü 安定性・機能拡張性を考慮したプラットフォームの刷新 ü 多様化するニーズに対応するための後⽅互換性を担保しな いAPIの刷新 SkyWayのチャレンジ

Slide 11

Slide 11 text

新SkyWayの特徴

Slide 12

Slide 12 text

ü Pub/SubモデルのAPI ü 同時通話⼈数の拡⼤ ü SFU Botの導⼊ ü サイマルキャストの導⼊ ü 認証・認可機能の充実化 ü 旧SkyWayからの細かな改善点 いいね︕ 新SkyWayの特徴

Slide 13

Slide 13 text

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モデルのイメージ

Slide 14

Slide 14 text

映像や⾳声の柔軟な送受信が可能になるため端末負荷を抑えられる • 例 • スマホで通話に参加している⼈は映像を受信しない • 画⾯上表⽰されていない⼈の映像は受信しない 柔軟なユースケースに対応できる • 例 • オンラインフィットネスなどで、講師の映像は⽣徒全員に送り たいけど、⽣徒の映像は講師にしか送りたくない Pub/Subモデルのメリット

Slide 15

Slide 15 text

項⽬ システム上限 ⽬安 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)への参加⼈数 =通話⼈数 ではないこと 同時通話⼈数の拡⼤

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

サイマルキャストの導⼊ 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'); } } 受信側の実装イメージ ※その時の通信環境等を踏まえて最適な品質を選択するため明示的に選択しなくても良い ※制御が効くまでにタイムラグがあるため予め選択してもよい

Slide 18

Slide 18 text

認証・認可機能の充実化 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"] } } ], ※スペースの関係で以下省略

Slide 19

Slide 19 text

コーデックの選択肢拡⼤ • 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/

Slide 20

Slide 20 text

今後の展開

Slide 21

Slide 21 text

今後の展開 4⽉〜5⽉ バーチャル背景実装⽤ ライブラリ提供(Web版) 5⽉〜6⽉ TURNサーバ IPアドレス公開 7⽉〜9⽉ 録⾳・録画機能 ベータ提供開始 8⽉〜10⽉ 通話状況分析機能 ベータ提供開始 2023年 通話品質や状況を可視化、通話不具合の 原因調査などを⽤意にするためのダッシ ュボードを提供 ※2023/4/4時点の想定であり提供内容や時期を約束するものでは有りません 現時点では時期は未定ですが今後提供を視野に検討していくもの • ノイズキャンセリング • SDKラインナップ拡充(Unityなどのニーズに対応) • お客様のバックエンドサーバからSkyWayを操作するAPI • 超低遅延配信 • 通信負荷低減 ※ 細かな改善やSDKの使い勝手向上などは継続して実施!

Slide 22

Slide 22 text

新しくなっても変わらないもの

Slide 23

Slide 23 text

新しくなっても変わらないもの 無料 すぐに試せる 手軽さ 国内でSkyWay とWebRTCに詳 しいエンジニア が直接サポート 提供 Made in Japan 通信会社提供 安心感 日本人エンジ ニアの事を第 一に考えた 情報発信

Slide 24

Slide 24 text

THANK YOU FOR YOUR ATTENTION