次の方法で共有


テキスト翻訳のリファレンス アーキテクチャ

同じゲーム セッション内に母国語の異なるプレイヤーが複数存在することは珍しくないため、元のメッセージとその翻訳の両方を受信できるようにすると便利な場合があります。

この記事では、GitHub のこのサンプルで使用されているアーキテクチャについて説明します。 このリファレンス アーキテクチャのコードはガイダンスの例にすぎず、運用環境で使用するにはコードの最適化が必要な場合があることに注意してください。

アーキテクチャの図

Tテキスト翻訳のリファレンス アーキテクチャ

アーキテクチャのサービス

  • Translator Text - テキストをオン ザ フライで複数の言語に翻訳します。
  • Azure Traffic Manager - (オプション) チャット サーバーが置かれる場所の待機時間に基づいて、最も適したリージョンのゾーンにプレイヤーを接続します。
  • Event Hubs - 多数のイベント (この場合はチャットの文字列) の受信と処理を正しい順序でリアルタイムに行うためのサービスです。構成や管理のオーバーヘッドはほとんど生じません。
  • Azure Functions - コード (この場合は、さまざまなコグニティブ サービスを呼び出すコード) を、オンデマンドで実行するためのサーバーレス コンピューティング サービスです。

アーキテクチャの考慮事項

作成する必要がある Event Hub 名前空間は 1 つだけです。この名前空間に、メッセージの送信用と受信用の 2 つの Event Hub を含めることになります。

現時点では、サービスですべての言語がサポートされているわけではありません。 サポートされている言語と地域については、Translator Text API での言語と地域のサポートに関するドキュメントを参照してください。

デプロイ テンプレート

プロジェクトを Azure サブスクリプションにデプロイするには、次のボタンをクリックします。

この操作を実行すると、Azure サブスクリプションに対する azuredeploy.json ARM テンプレート ファイルのテンプレート デプロイがトリガーされ、必要な Azure リソースが作成されます。 これにより、Azure アカウントの料金が発生する場合があります。

Azure サービスの名前付け規則と制限事項をまとめたセクションが含まれる一般的なガイドライン ドキュメントを参照してください。

注意

ARM テンプレートの動作に興味がある場合は、このリファレンス アーキテクチャで利用されている各サービスの Azure Resource Manager テンプレートのドキュメントを参照してください。

Azure Cognitive Services には 2 種類のサブスクリプションがあります。 1 つ目は、単一サービスのサブスクリプションです (Computer Vision や Speech Servicesなど)。 単一サービスのサブスクリプションは、そのサービスのみに限定されます。 2 つ目の種類は、マルチサービス サブスクリプションです。 これは、1 つのサブスクリプションで複数の Azure Cognitive Services を利用できるようにするものです。 このオプションでは、課金も統合されます。 このリファレンス アーキテクチャでは、機能を可能な限りモジュール化するため、コグニティブ サービスがそれぞれ 1 つのサービスとしてセットアップされます。

最後に、次の Function アプリケーション設定を追加して、サンプル プロジェクトが Azure サービスに接続できるようにします。

  • EVENTHUB_CONNECTION_STRING - 作成された Azure Event Hub 名前空間への接続文字列
  • TRANSLATORTEXT_KEY - 作成された Azure Translator Text Cognitive Service にアクセスするためのアクセス キー

ヒント

Azure Functions をローカル環境で実行するには、local.settings.json ファイルをこれらの同じアプリ設定で更新します。

ステップ バイ ステップの手順

  1. プレイヤーのデバイスで、Azure Traffic Manager により決定された特定の地域のチャット サーバーに対し、暗号化された永続的な接続が開かれます。 チャット サーバーでは、プレイヤーとの接続を維持するためのプロセスと、いくつかの基本的なメタデータが作成されます。
  2. 以前に作成されたセキュアな接続を介して、プレイヤーのクライアントからチャット サーバーにチャット メッセージが送信されます。 チャット サーバーにあるプレイヤーのプロセスによって、メッセージが受信され、復号化されて解析されます。
  3. 標準的な検証が実行され、メッセージの順序を維持したまま、チャット サーバーによって Azure Event Hubs サービスが呼び出されます。
  4. Azure Event Hubは、Azure Function の入力トリガーとして機能します。
  5. Azure Function によって Azure Text Translator サービスが呼び出されます。このサービスにより、プレイヤーから送信されたメッセージがレビューされ、結果が返されます。
  6. もう 1 つの Azure Event Hubが、Azure Function 用の出力として設定されます。
  7. チャット サーバーで、Azure Event Hub からの結果が受信されます。
  8. 必要な場合、チャット サーバーは、元のメッセージと Azure Text Translator からの翻訳の両方を、Azure Data Lake Storage のような永続的ストレージに保存します。
  9. 結果が保存されたら、必要に応じて、それらを分析用に Azure Data Lake Analytics に保存します。
  10. その後、Azure Text Translator サービスの結果が、チャット サーバーにある受信側プレイヤーの関連プロセスに送信されます。 これらのプロセスは、メッセージに対してさらなる検証を実行し、メッセージをシリアル化したうえで、セキュアな接続を介して受信側プレイヤーのデバイスにメッセージを送信します。 最後に、メッセージがチャット画面に表示されます。

Azure Event Hubs

イベントを複数のプログラミング言語で Event Hub に送信するための簡単な実装については、こちらのクイックスタートを参照してください。 こちらでは、いくつかの追加的なサンプルが提供されています。

別の Azure Event Hub に出力する Azure Event Hub によってトリガーされる関数

Event Hubs トリガー関数がトリガーされる際には、それをトリガーするメッセージが文字列として関数に渡されます。 イベント ストリームにイベントを書き込むには、Event Hubs 出力バインディングを使用します。

[return: EventHub("ehigce-output", Connection = "EventHubConnectionAppSetting")]
    public static string Run([EventHubTrigger("ehigce-input", Connection = "EventHubConnectionAppSetting")] string chatString, ILogger log)

Cognitive Services を呼び出す際に発生する 401 アクセス拒否エラーの一般的な原因と解決策を確認してください。

セキュリティに関する考慮事項

Event Hub や Cognitive Services の接続文字列を Function のソースにハードコードすることはしないでください。 代わりに、少なくとも、関数アプリの設定を利用するか、より強力なセキュリティのためには、代わりに Key Vault を使用します。 キー コンテナーを作成する方法、関数でマネージド サービス ID を使用する方法、および最後に関数から Key Vault に格納されているシークレットを読み取る方法について説明されているチュートリアルがあります。

Event Hub の認証とセキュリティ モデルの概要に関する記事を確認し、その内容を実践して、チャット サーバーが Event Hub と通信できるようにしてください。

Translator Text API では、ドメイン名または IP のフィルタリングを使用して、ファイアウォールの背後で翻訳を実行できます。 推奨される方法は、ドメイン名のフィルタリングです。 今後、セットアップが予告なく中断される可能性もあるため、IP でフィルタリングされたファイアウォールの背後から Microsoft Translator を実行することはお勧めしません。 詳細については、Translator Text API を使用して IP ファイアウォールの背後で翻訳を実行する方法に関する記事を参照してください。

スケーリング

このアーキテクチャでは、次の 2 つの点がボトルネックになる可能性があるため、それらについて計画を立てる必要があります。

  1. Cognitive Services は柔軟にスケーリングできますが、既定では調整されています。 容量を増やすために大規模な環境での使用を計画している場合は、Azure サポートまでお問い合わせください。
  2. Azure Event Hub の応答を受信するチャット サーバーで、スケーリングが必要になります。 需要に対応できる十分な数の仮想マシンをスピンアップするようにしてください。

代替手段

Apache Spark ベースのプラットフォームを使用して分析データを収集する場合は、Azure Cache for RedisAzure Databricks を利用することを検討してください。

その他のリソースとサンプル

Azure Event Hubs SDK for Unity: これはサンドボックス プロジェクトです。 この記事の内容はサポートされていないため、古いか、動作しない可能性があります。

価格設定

Azure サブスクリプションをお持ちでない場合は、無料アカウント を作成して 12 か月間の無料サービスの利用を開始できます。 それらのサービスの制限を超えない限り、Azure 無料アカウントで無償で提供されているサービスに対して料金が発生することはありません。 Azure Portal または使用状況ファイルを通じて使用状況を確認する方法について説明します。

これらのリファレンス アーキテクチャの実行中に使用される Azure サービスのコストはユーザーが負担します。 その合計は使用状況によって異なります。 リファレンス アーキテクチャで使用されていた各サービスの価格は、Web ページで確認ください。

また、Azure の料金計算ツールを使用して、使用する予定の Azure サービスのコストを構成および見積もることもできます。