見出し画像

【3/5ページ】SkyWay SDK for Linuxハンズオン資料 SkyWay事前準備編

このコンテンツはSDK for Linux®︎のハンズオンイベントで利用するコンテンツです。
ハンズオンに参加できなかった方でも、個人で本記事に沿って作成いただけるように構成しています。
ハンズオンの概要・使用する機材の情報については概要ページをご覧ください。


SkyWayの基本的な概念

SkyWayでは、以下のような概念を元にしてビデオ・音声・データ通信機能を実装しています。

  • Roomという要素を作成し、Roomに対してMemberを追加します。これにより同じRoom内のMember同士が通信を行うことができます。

  • Member同士が通信を行う際は、まず片方のMember Aが音声・映像・データを元にしたPublicationを作成します(これをPublishと言います)。

  • このPublicationを、もう片方のMember Bがそれを受け取るSubscriptionを作成することで音声・映像・データが流れ、受信することができます(これをSubscribeと言います)。

詳細は以下を参照してください。

はじめに | ユーザーガイド | SkyWay(スカイウェイ)

SkyWayのアカウント登録およびトークンの払い出し

SkyWayにアカウント登録する

本ハンズオンでは、SkyWayコンソールにてアカウントの登録(無料)が必要です。
画面の案内に従い登録をお願いします。

SkyWayで使用するアプリケーションIDとシークレットキーを発行する

以下の手順でアプリで利用するアプリケーションIDとシークレットキーを取得します。

  1. コンソールにログインします。

  2. 「プロジェクトを作成」を選択します。

赤点線のボタンから作成します。

3.「新しいプロジェクトを作成する」にて任意の名前でプロジェクトを作成します。
4.「アプリケーションを作成」を選択します。

赤点線のボタンから作成します。

5.「アプリケーション作成」にて任意の名前でアプリケーションを作成します。
6. アプリケーション内のアプリケーションIDとシークレットキーを確認します。(このアプリケーションIDとシークレットキーは後で利用します)

アプリケーションIDとシークレットキーをメモします。

次はここで発行したアプリケーションIDとシークレットキーを使ってブラウザ間で通話してみます。

SkyWayでブラウザ間の通話をしてみる

それでは、ブラウザ側でRaspberry Piを操作する環境を作っていきます。
本ハンズオンでは、ブラウザ側はSkyWay Explorerを使用します。
SkyWay Explorerは、ブラウザ側のコーディングを行うことなくSkyWayをお試しいただけるページです。

トークンの作成

SkyWayを利用するためのトークンの作成を行います。先ほど取得したアプリケーションIDとシークレットキーを利用します。
SkyWay JavaScript SDK Explorer のページへアクセスし、以下の操作を行います。

  1. 「SkyWay Auth Tokenタブ」を開きます。

  2. "analytics"の値をfalseに書き換えます。

  3. $appIdの入力欄に先ほどメモしたアプリケーションIDを入力します。

  4. secretの入力欄に先ほどメモしたシークレットキーを入力します。

  5. auto update $exp to $iat(デフォルトでは60)の数値を変更します。この数字がトークンの生存期間を示します。今回生成したトークンはそのままRaspberry Pi側でも利用するため、長期的な期限を持つトークンを生成します。ハンズオンでは30000程度(30000秒≒8時間)あれば十分かと思います。

  6. createAuthTokenStringボタンを押します。

これにより、エンコードされたAuthToken(赤線部)が出力されます。
ここで生成したAuthTokenは後にRaspberry Pi側でも利用しますので、こちらをメモしておいてください。
なお、アプリケーションIDとシークレットキーについてはこれ以降使いませんので、メモは削除しても構いません。

アプリケーションIDとシークレットキーを使用して、トークンを生成します。

Roomの取得から入室

SkyWayを扱うためのインスタンスを作成します。
これをContextと言います。

  1. 「SkyWay Contextタブ」を開きます。先ほど生成したトークンが自動で入力されています。

  2. 「SkyWayContext.Create()ボタン」を押します。

トークンを入力して、Contextを作成します。

次に、映像・音声・データのやり取りをする部屋を作成します。
これをRoomと言います。
Roomには任意の名前をつけることができます。

  1. Roomタブを開きます。

  2. 「CREATE - SkyWayRoom.FindOrCreate()」のエリアにおいて、以下のオプションを設定します。

    • 「type」は「p2p」を選択します。

    • 「name」は「set」を選択し、テキストボックスに利用したいRoomの名称を入力します。

  3. 「SkyWayRoom.FindOrCreate()ボタン」を押します。

必要なRoomを作成・取得します。

Roomが作成できたら、入室を行います。

  1. 「LocalRoomMemberタブ」を開きます。

  2. 「room.join()ボタン」を押します。

成功するとMemberが生成されます。

joinするとMemberが作成され、映像のやり取りをする準備が完了します。

データの送信

ここまでできたら、データを送信する準備を初めていきます。
SkyWayで扱うことができるメディアの種類は、映像・音声・データの3つがあります。
これらの流れは、Streamという概念で表されています。
自分が作ったもの(ここではExplorerが作ったもの)がLocal、それ以外はRemoteと分類されます。
以下では、テキストメッセージを扱うLocalのStreamを作成し、対向に送信する準備をします。

  1. 「LocalStreamタブ」を開きます。

  2. 「SkyWayStreamFactory.createDataStream()ボタン」を押します。

createDataStreamでテキストメッセージを扱うStreamを作成します。
createVideoStreamなら映像、createAudioStreamなら音声のStreamを作成できます。

LocalStreamができたら、これをRoomに向けて送信します。
これをPublishと言います。

  1. 「RoomPublicationタブ」を開きます。

  2. 「localStreamのセレクトボックス」からPublishしたいLocalStreamを選択します。

  3. 「localRoomMember.publish()」を押します。

成功するとRoomPublicationインスタンスが作成されます。

streamをRoomに送信することをPublishと言います。

Explorerからデータを送信するStreamをLocalDataStreamと言います。
このLocalDataStreamは、テキストメッセージを送信することができます。

  1. 「LocalStreamタブ」を開き、該当のLocalStreamを表示します。

  2. data欄に任意のメッセージを入力します。

  3. 「localDataStream.write(data)ボタン」を押します。

ここからテキストメッセージを送ることができます。

ですが、まだ誰もこのPublicationを受信する人がいません。
なのでここで送信したメッセージが届いたか確認することができません。

映像・データの受信

Publicationを受信することを、Subscribeと言います。
Subscribeは、同じRoomに作成されたPublicationのみ行えます。
ただし自身が作成したPublicationはSubscribeできません。
そのためここまでで作ったPublicationを受信したい場合、別のブラウザタブでExplorerを立ち上げ、Roomにjoinする必要があります。

  1. 「RoomSubscriptionタブ」を開きます。

  2. 「publicationIdのセレクトボックスから」受信したいPublicationを選択します。

  3. 「localRoomMember.subscribe()ボタン」を押します。

Subscribeで受信を開始します。

ここまでできたらSkyWayの概念について理解できたと思います。

次のページでいよいよRaspberry Piに接続したLEDを制御していきます。

いいなと思ったら応援しよう!