Azure Communication Servicesについて調べてみた

gigazine.net

フィクション(創作)に触れることは想像力を豊かにすることにつながることはよく知られていますが、フィクションを読むことが人間の社会的認知パフォーマンスの向上につながるということが新たに確かめられました。

フィクションを読むと認知パフォーマンスが向上する - GIGAZINE

⇧ う~ん、アルツハイマー認知症とかの予防に良いんだろうか?

By the way、AWSAmazon Web Services)だと、クラスメソッド株式会社、GCPGoogle Cloud Platform)だと、クラウドエース株式会社といったように、技術系のブログとして情報をまとめてくれる会社さんがあるんですが、

qiita.com

⇧ 何故かは分からないですが、Microsoft Azureについての技術ブログを扱ってる会社さんが見当たらないんですよね...

完全に個人の頑張りによって支えられているというね...

Azure Communication Servicesとは?

Microsoftさんのドキュメントによりますと、

docs.microsoft.com

Azure Communication Services はクラウドベースのサービスです。用意されている REST API およびクライアント ライブラリ SDK を利用することで、通信を手軽にアプリケーションに組み込むことができます。 基になる技術 (メディアのエンコードやテレフォニーなど) の専門家でなくても、アプリケーションに通信を追加できます。 Azure Communication Service は、複数の Azure 地域と 政府機関向け Azure で利用できます。

https://docs.microsoft.com/ja-jp/azure/communication-services/overview

Azure Communication Services では、さまざまな通信形式がサポートされています。

https://docs.microsoft.com/ja-jp/azure/communication-services/overview

REST API に加えて、Azure Communication Services クライアント ライブラリは、Web ブラウザー (JavaScript)、iOS (Swift)、Android (Java)、Windows (.NET) など、さまざまなプラットフォームと言語で利用できます。

https://docs.microsoft.com/ja-jp/azure/communication-services/overview

⇧ ということらしく、「クロスプラットフォーム」に考慮する必要があるということですかね...

Azure Communication Services は ID に依存しないため、お客様はエンド ユーザーの本人確認と認証の方法を自分で制御することができます。

https://docs.microsoft.com/ja-jp/azure/communication-services/overview

⇧ IDに依存しないとは言うけど、認証方法などの制御ってのを自分で行ってくださいということなんですかね...

まぁ、上記の認証が何に対する認証を意味しているのかが分かり辛いのですが、

docs.microsoft.com

クライアントと Azure Communication Services とのやり取りはすべて認証される必要があります。

https://docs.microsoft.com/ja-jp/azure/communication-services/concepts/authentication

認証オプション

次の表は、Azure Communication Services の SDK とその認証オプションを示しています。

https://docs.microsoft.com/ja-jp/azure/communication-services/concepts/authentication

⇧ 上記の認証オプションを確認する限り、「Azure communication services」を利用するための認証が必要で、

  • アクセス キー
  • Azure AD
  • ユーザー アクセス トーク

の3つの認証方法があるようです。

ですが、「ユーザー アクセス トークン」の説明を確認すると、

ユーザー アクセス トークンは、ID SDK を使用して生成され、ID SDK で作成されたユーザーに関連付けられます。

とあるので、大前提として「アクセス キー」か「Azure AD」のどちらかの認証が必須ということになるんじゃないかと、たぶん。

docs.microsoft.com

Azure Communication Services クライアントが Communication Services のリソースに安全にアクセスするためには、user access tokens が必要です。

https://docs.microsoft.com/ja-jp/azure/communication-services/concepts/client-and-server-architecture

トークンとその生成に必要な接続文字列または Azure AD 認証シークレットの機密性により、User access tokens は信頼できるサービスによって生成および管理される必要があります。

https://docs.microsoft.com/ja-jp/azure/communication-services/concepts/client-and-server-architecture

⇧ ということらしく、「ユーザー アクセス トークン」が必要なことが分かったのですが、

docs.microsoft.com

アクセス トークンを作成するには、ID が必要です。 Azure Communication Services では、軽量の ID ディレクトリが保持されます。

https://docs.microsoft.com/ja-jp/azure/communication-services/quickstarts/access-tokens?pivots=programming-language-java#create-an-identity

⇧『Azure Communication Services は ID に依存しないため』って説明があったから、このあたりの説明に違和感を感じてしまうんよね...

どう解釈しても、IDに依存しているようにしか見えないんですよね...教えて偉い人。

Azure Communication Servicesで利用できるサービス

認証後に利用できる「Azure communication services」の主要なサービスとしては、ドキュメントの目次を見る限りでは、

docs.microsoft.com

4つになるのかな?

ただ、目次の中を見てみると、

⇧「テレフォニーと電話番号」については、「SDK(Software Development Kit)」が用意されてないようなので、実際には、

  • チャット
  • SMS(Short Message Service)
  • 音声およびビデオによる通話

の3つのサービスが利用できるということになるってことですかね?

Azure Commnunication Servicesのチャット

何故か、「Azure communication services」の「チャット」についてはドキュメントの『クライアントとサーバーのアーキテクチャ』のページに説明がないのですが、

docs.microsoft.com

⇧『チャットの概念』の説明を見る限りでは、「クライアント・サーバー」モデルで構成されてるように見えるのですが、このあたりハッキリしない...

docs.microsoft.com

チャット クライアントを作成するには、Communications Service エンドポイントと、前提条件の手順で生成されたアクセス トークンを使用します。 ユーザーのアクセス トークンを使用することで、Azure Communication Services に対して直接認証を行うクライアント アプリケーションを作成できます。 サーバーでこれらのトークンを生成した後、それらをクライアント デバイスに渡します。 チャット クライアントにトークンを渡すには、Common SDK の CommunicationTokenCredential クラスを使用する必要があります。

https://docs.microsoft.com/ja-jp/azure/communication-services/quickstarts/chat/get-started?pivots=programming-language-java

⇧ の説明を見る限りだと、『サーバーでこれらのトークンを生成した後、それらをクライアント デバイスに渡します。』ってあるんで、「クライアント・サーバー」モデルだと思うんだけど...

そして、チャットのスレッドのJavaのexample見てみたけど、

github.com

⇧ 全くやる気が感じられないんですが...

そもそも、ユーザーのIDがどう渡ってくるかの想定が適当なのもの辛いんですが、作成したチャットのスレッドにアクセスするのどうするか、作成したスレッドを削除するタイミングとかどうするか、などなど、実用的な情報に言及してないのが不思議で仕方ない...

一旦、チャットのスレッドのIDとかをデータベースとかに保存する感じになるんかな?

ただ、どのチャットのスレッドにユーザー追加したら良いかとかどう判断すれば良いのか...クライアント側から何かしら判断のためのデータを渡してもらう感じになるんかな?

Azure Commnunication ServicesのSMS(Short Message Service)

「Azure communication services」の「SMS(Short Message Service)」についてもドキュメントの『クライアントとサーバーのアーキテクチャ』のページに説明がないのですが、

docs.microsoft.com

Azure Communication Services では、Communication Services SMS SDK を使用して SMS テキスト メッセージを送受信できます。 これらの SDK を使用して、カスタマー サービスのシナリオ、予定リマインダー、2 要素認証、その他のリアルタイム通信のニーズをサポートできます。 Communication Services SMS を使用すると、メッセージを確実に送信しながら、配信性と反応率のメトリクスを明らかにすることができます。

https://docs.microsoft.com/ja-jp/azure/communication-services/concepts/sms/concepts

⇧ 一般的な「SMS(Short Message Service)」の機能を実現できるということかと。

ただ、「Azure communication services」の「SMS(Short Message Service)」のFAQを確認すると、

docs.microsoft.com

Azure Communication Services のお客様は、Azure Event Grid を使用して着信メッセージを受信できます。

https://docs.microsoft.com/ja-jp/azure/communication-services/concepts/sms/sms-faq

⇧「Azure communication services」の「SMS(Short Message Service)」を利用する場合は、「Azure Event Grid」ってサービスも利用する必要があるらしい...FAQのページを確認しないと分からん情報にするの止めて欲しい...

Azure Commnunication Servicesの音声およびビデオによる通話

「Azure communication services」の「音声およびビデオによる通話」については、ドキュメントの『クライアントとサーバーのアーキテクチャ』のページに説明があり、ユースケースとして、3パターン紹介されてますと。

⇧「Teams」との連携は、同じMicrosoftの製品だからってこともあると思われますが、

www.itmedia.co.jp

 さまざまな業務がリモートワークで行われるようになると、ZoomやMicrosoft Teamsなどの汎用的な電子会議ツールよりも、特定用途向けに作られたコミュニケーションツールの方が効率が良くなるケースもあり、今後はそうしたコミュニケーションツールの需要が高まってくると考えられます。

ビデオ会議やチャットを組み合わせ、独自のWeb会議アプリを開発できる「Azure Communication Services」 Microsoftがプレビュー公開:Ignite 2020 - ITmedia NEWS

 Azure Communication Servicesは、そうしたリモートワークをベースにした特定用途のコミュニケーションツールの開発生産性に大きく寄与するフレームワークとなるでしょう。

ビデオ会議やチャットを組み合わせ、独自のWeb会議アプリを開発できる「Azure Communication Services」 Microsoftがプレビュー公開:Ignite 2020 - ITmedia NEWS

⇧ 基本的には、独自のコミュニケーションツール作成向けのサービスが、「Azure communication services」ということらしい。

結構、最近出てきたサービスだから情報が少ないってことなのかもしれないですが、だとしたら、なおさら公式のドキュメントを充実させて欲しい気もしますが...

C#に関しての情報は割かし多い気はしますが、Javaの情報が少ない気がする...

Microsoftさんのドキュメントは情報が読み取り辛いんで、クラスメソッド株式会社さんがAWSAmazon Web Services)のまとめ情報発信してくれてるように、Microsoft Azureについても情報発信してくれる会社さんが出てきてくれるとありがたいんですけどね...

今回はこのへんで。