Azure Communication Services を使用すると、自分のアプリケーションにリアルタイム コミュニケーションを追加することができます。 このチュートリアルでは、Azure Communication Services をサポートする Web アプリケーションの設定方法について説明します。 リアルタイム コミュニケーションの実装を始めたいと考えている新規開発者向けの入門チュートリアルとなっています。
このチュートリアルの最後には、Azure Communication Services の SDK を使用して構成された基本的な Web アプリケーションが完成します。 そのアプリケーションを足掛かりとして、自分のリアルタイム コミュニケーション ソリューションを構築することができます。
お気軽に Azure Communication Services の GitHub ページにアクセスしてフィードバックをお寄せください。
このチュートリアルでは、次の作業を行う方法について説明します。
- 開発環境を構成する。
- ローカル Web サーバーを設定する。
- Azure Communication Services パッケージを Web サイトに追加する。
- Azure の静的 Web サイトに Web サイトを発行する。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 詳細については、アカウントの無料作成に関するページを参照してください。 無料アカウントでは 200 ドル分の Azure クレジットが提供され、さまざまな組み合わせのサービスをお試しいただけます。
- Visual Studio Code。ローカル開発環境でコードを編集する際に使用します。
- webpack。コードをバンドルしてローカルでホストする際に使用します。
- Node.js。Azure Communication Services の SDK や webpack などの依存関係をインストールして管理する際に使用します。
- nvm および npm: バージョン コントロールの運用に使用します。
- Visual Studio Code 用の Azure Storage 拡張機能。 アプリケーションを Azure Storage に発行する際に、この拡張機能が必要となります。 詳細については、Azure Storage での静的 Web サイトのホスティングに関する記事を参照してください。
- Azure App Service 拡張機能。 この拡張機能を使用すると、Web サイトをデプロイすることに加え、フル マネージドの CI/CD (継続的インテグレーションと継続的デリバリー) を構成することもできます。
- 独自のサーバーレス アプリケーションを構築するための Azure Functions 拡張機能。 たとえば、Azure Functions で認証アプリケーションをホストすることができます。
- アクティブな Communication Services リソースと接続文字列。 Communication Services リソースを作成する方法に関する記事を参照してください。
- ユーザー アクセス トークン。 手順については、アクセス トークンの作成と管理に関するクイックスタートまたは信頼できる認証サービスの構築に関するチュートリアルを参照してください。
開発環境を構成する
ローカルの開発環境は、次のように構成されます。
Node.js、nvm、npm をインストールする
クライアント側アプリケーションに必要な各種依存関係は、Node.js を使用してダウンロード、インストールします。 それを使用して静的ファイルを生成し、それらのファイルを Azure でホストすることになるため、自分のサーバー上での構成を気にする必要はありません。
Windows 開発者の方は、こちらの Node.js チュートリアルに従って、Node、nvm、npm を構成してください。
このチュートリアルは、LTS 12.20.0 のバージョンに基づいています。 nvm のインストール後、次の PowerShell コマンドを使用して目的のバージョンをデプロイします。
nvm list available
nvm install 12.20.0
nvm use 12.20.0
Visual Studio Code を構成する
いずれかのサポート対象プラットフォームに Visual Studio Code をダウンロードしてください。
Azure Communication Services プロジェクト用のワークスペースを作成する
プロジェクト ファイルの格納先となるフォルダーを作成します (例: C:\Users\Documents\ACS\CallingApp
)。 Visual Studio Code の [ファイル]>[ワークスペースにフォルダーを追加] をクリックし、ワークスペースにフォルダーを追加します。
左ペインの [エクスプローラー] に移動すると、 [無題] ワークスペースに CallingApp
フォルダーが表示されます。
ワークスペースの名前は自由に更新してください。 Node.js のバージョンは、CallingApp
フォルダーを右クリックし、 [Open in Integrated Terminal]\(統合ターミナルで開く\) を選択すると確認できます。
ターミナルで次のコマンドを入力して、前の手順でインストールした Node.js のバージョンを確認します。
node --version
Visual Studio Code 用の Azure 拡張機能をインストールする
Visual Studio Marketplace から、または Visual Studio Code ( [表示]>[拡張機能]>[Azure Storage] ) で Azure Storage 拡張機能をインストールします。
Azure Functions や Azure App Service の拡張機能と同じ手順に従います。
ローカル Web サーバーを設定する
npm パッケージを作成する
ターミナルで、ワークスペース フォルダーのパスから次のコマンドを入力します。
npm init -y
このコマンドによって新しい npm パッケージが初期化され、プロジェクトのルート フォルダーに package.json
が追加されます。
npm init
の詳細については、コマンドの npm Docs ページを参照してください。
webpack をインストールする
webpack を使用すると、Azure にデプロイできる静的ファイルとしてコードをバンドルすることができます。 また、これには開発サーバーも含まれています。後で、このサーバーに対し、通話サンプルを使用するための構成を行います。
ターミナルで、次のコマンドを入力して webpack をインストールします。
npm install webpack@4.42.0 webpack-cli@3.3.11 webpack-dev-server@3.10.3 --save-dev
このチュートリアルは、前のコマンドで指定したバージョンを使用してテストされています。 この依存関係は開発用であり、Azure にデプロイするコードに含める必要はないということを、-dev
を指定することでパッケージ マネージャーに伝えています。
package.json
ファイルに、2 つの新しいパッケージが devDependencies
として追加されていることがわかります。 これらのパッケージは ./CallingApp/node_modules/
ディレクトリにインストールされます。
開発サーバーを構成する
ブラウザーから静的アプリケーション (index.html
ファイルなど) を実行する際は file://
プロトコルが使用されます。 ローカルの開発サーバーとして webpack を使用して、npm モジュールを適切に動作させるためには HTTP プロトコルが必要となります。
ここでは、開発環境用と運用環境用に 2 つの構成を作成します。 運用環境用に準備されるファイルは縮小されます。つまり、使用されない空白や文字は削除されます。 この構成は待ち時間を最小限に抑えたり、コードを難読化したりする必要がある運用環境のシナリオに適した処理です。
webpack のさまざまな構成ファイルの操作には、webpack-merge
ツールを使用します。
それでは、開発環境の作業を始めましょう。 最初に webpack merge
をインストールする必要があります。 ご利用のターミナルで、次のコマンドを実行します。
npm install --save-dev webpack-merge
package.json
ファイルを見ると、devDependencies
にもう 1 つの依存関係が追加されていることがわかります。
次に、webpack.common.js
というファイルを作成し、次のコードを追加します。
const path = require('path');
module.exports ={
entry: './app.js',
output: {
filename:'app.js',
path: path.resolve(__dirname, 'dist'),
}
}
さらに、各構成に対応する 2 つのファイルを追加します。
webpack.dev.js
webpack.prod.js
webpack.dev.js
ファイルに次のコードを追加します。
const { merge } = require('webpack-merge');
const common = require('./webpack.common.js');
module.exports = merge(common, {
mode: 'development',
devtool: 'inline-source-map',
});
この構成では、webpack.common.js
から共通パラメーターをインポートし、2 つのファイルをマージします。さらに、モードを development
に設定し、ソース マップを inline-source-map
として構成します。
開発モードを指定した場合、webpack によってファイルは縮小されず、運用環境向けの最適化されたファイルは生成されません。 webpack のモードについて詳しくは、webpack のモードに関する Web ページを参照してください。
ソース マップのオプションは、webpack の Devtool に関する Web ページに記載されています。 ソース マップを設定することで、ブラウザーからのデバッグがしやすくなります。
開発サーバーを実行するには、package.json
に移動し、scripts
に次のコードを追加します。
"build:dev": "webpack-dev-server --config webpack.dev.js"
ファイルは次のようになります。
{
"name": "CallingApp",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build:dev": "webpack-dev-server --config webpack.dev.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"webpack": "^4.42.0",
"webpack-cli": "^3.3.11",
"webpack-dev-server": "^3.10.3"
}
}
npm から使用できるコマンドを追加しました。
開発サーバーをテストする
Visual Studio Code で、次の 3 つのファイルをプロジェクトに作成します。
index.html
app.js
-
app.css
(省略可。アプリのスタイル設定に使用します)
次のコードを index.html
に貼り付けます。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My first Azure Communication Services application</title>
<link rel="stylesheet" href="./app.css"/>
<script src="./app.js" defer></script>
</head>
<body>
<h1>Hello from Azure Communication Services!</h1>
</body>
</html>
app.js
に次のコードを追加します。
alert('Hello world alert!');
console.log('Hello world console!');
app.css
に次のコードを追加します。
html {
font-family: sans-serif;
}
忘れずに保存してください。 エクスプローラーでは、保存されていないファイルの名前の横に白色のドットが表示されます。
このページを開くと、ブラウザのコンソール内に、メッセージがアラートと共に表示されるはずです。
次のターミナル コマンドを使用して開発の構成をテストします。
npm run build:dev
サーバーの実行場所がコンソールに表示されます。 既定では、これは http://localhost:8080
です。
build:dev
は、先ほど package.json
に追加したコマンドです。
ブラウザーで目的のアドレスに移動すると、前の手順で構成したページとアラートが表示されるはずです。
サーバーの実行中に、コードとサーバーに変更を加えることができます。 HTML ページが自動的にリロードされます。
次に、Visual Studio Code で app.js
ファイルに移動し、alert('Hello world alert!');
を削除します。 ファイルを保存し、ブラウザーからアラートが消えたことを確認します。
サーバーを停止するには、ターミナルで Ctrl+C
を実行します。 サーバーを起動したければ、いつでも「npm run build:dev
」を入力してください。
Azure Communication Services パッケージを追加する
npm install
コマンドを使用して、JavaScript 用の Azure Communication Services Calling SDK をインストールします。
npm install @azure/communication-common --save
npm install @azure/communication-calling --save
このアクションによって、Azure Communication Services の common パッケージと calling パッケージがパッケージの依存関係として追加されます。
package.json
ファイルに、2 つの新しいパッケージが追加されていることがわかります。
npm install
の詳細については、コマンドの npm Docs ページを参照してください。
これらのパッケージは Azure Communication Services チームにより提供され、認証ライブラリと通話ライブラリを含んでいます。
--save
コマンドによって、これらのパッケージが運用アプリケーションの依存関係であることが伝えられて package.json
ファイル内の devDependencies
に追加されます。 運用環境向けにアプリケーションをビルドすると、これらのパッケージが運用環境のコードに追加されます。
Azure の静的 Web サイトに Web サイトを発行する
運用環境デプロイ用の構成を作成する
webpack.prod.js
に次のコードを追加します。
const { merge } = require('webpack-merge');
const common = require('./webpack.common.js');
module.exports = merge(common, {
mode: 'production',
});
この構成は webpack.common.js
(入力ファイルと結果の保存先を指定したファイル) にマージされます。 また、この構成によってモードが production
に設定されます。
package.json
に次のコードを追加します。
"build:prod": "webpack --config webpack.prod.js"
ファイルは次のようになります。
{
"name": "CallingApp",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build:dev": "webpack-dev-server --config webpack.dev.js",
"build:prod": "webpack --config webpack.prod.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@azure/communication-calling": "^1.0.0-beta.6",
"@azure/communication-common": "^1.0.0"
},
"devDependencies": {
"webpack": "^4.42.0",
"webpack-cli": "^3.3.11",
"webpack-dev-server": "^3.10.3",
"webpack-merge": "^5.7.3"
}
}
ターミナルから、次のコマンドを実行します。
npm run build:prod
このコマンドによって dist
フォルダーが作成され、運用環境用の app.js
静的ファイルがそこに作成されます。
Azure Storage にアプリをデプロイする
dist
フォルダーに index.html
と app.css
をコピーします。
dist
フォルダーにファイルを作成し、404.html
という名前を付けます。 そのファイルに次のマークアップをコピーします。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="./app.css"/>
<title>Document</title>
</head>
<body>
<h1>The page does not exists.</h1>
</body>
</html>
Ctrl キーを押しながら S キーを押して、変更を保存します。
dist
フォルダーを右クリックして [Deploy to Static Website via Azure Storage]\(Azure Storage を介して静的 Web サイトにデプロイ\) を選択します。
[サブスクリプションの選択] で、 [Azure にサインイン] (過去にサブスクリプションを設定したことがない場合は [無料の Azure アカウントの作成] ) を選択します。
[新しいストレージ アカウントの作成]>[Advanced]\(詳細\) を選択します。
ストレージ グループの名前を入力します。
必要に応じて新しいリソース グループを作成します。
[Would you like to enable static website hosting?]\(静的 Web サイトのホスティングを有効にしますか?\) で [はい] を選択します。
[Enter the index document name]\(インデックス ドキュメント名の入力\) には、既定のファイル名をそのまま使用します。 既に index.html
というファイルを作成済みです。
[Enter the 404 error document path]\(404 エラー ドキュメントのパスを入力してください\) に「404.html」と入力します。
アプリケーションの場所を選択します。 選択した場所によって、今後通話アプリケーションのグループ通話で使用されるメディア プロセッサが定義されます。
メディア プロセッサは、アプリケーションの場所に基づいて Azure Communication Services が選択します。
リソースと Web サイトが作成されるまで待ちます。
[Browse to website]\(Web サイトを参照\) を選択します。
ブラウザーの開発ツールからソースをチェックし、運用に必要なファイルが準備されていることを確認します。
Azure portal に移動してリソース グループを選択し、作成したアプリケーションを選択します。 続けて、 [設定]>[静的な Web サイト] を選択します。 静的な Web サイトが有効になっていることを確認できます。 プライマリ エンドポイント、インデックス ドキュメントの名前、エラー ドキュメントのパスをメモしてください。
[Blob service] で [コンテナー] を選択します。 この一覧を見ると、2 つのコンテナーが作成されていることがわかります。1 つはログ用 ($logs
) で、もう 1 つは Web サイトのコンテンツ用 ($web
) です。
$web
コンテナーを開くと、Visual Studio で作成して Azure にデプロイしたファイルが表示されます。
アプリケーションはいつでも Visual Studio Code から再デプロイすることができます。
初めての Azure Communication Services Web アプリケーションをビルドする準備はこれで完了です。
次の手順
次の記事もご覧ください。