

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# MQTT クライアントで AWS IoT MQTT メッセージを表示する
<a name="view-mqtt-messages"></a>

このセクションでは、[AWS IoT コンソール](https://console.aws.amazon.com/iot/home)で AWS IoT MQTT テストクライアントを使用して、 によって送受信される MQTT メッセージを監視する方法について説明します AWS IoT。このセクションで使用される例は、[AWS IoT Core チュートリアルの開始方法](iot-gs.md) で使用される例に関連しています。ただし、例で使用されている {{topicName}} を、ご利用の IoT ソリューションで使用されている任意の[トピック名またはトピックフィルター](topics.md)に置き換えることができます。

デバイスは、[トピック](topics.md)によって識別される MQTT メッセージを発行して状態を通信し AWS IoT、MQTT メッセージ AWS IoT を発行してデバイスとアプリケーションに変更とイベントを通知します。MQTT クライアントを使用すると、これらのトピックをサブスクライブして、メッセージを発生時に確認できます。MQTT テストクライアントを使用して、 のサブスクライブしているデバイスやサービスに MQTT メッセージを発行することもできます AWS アカウント。

**Topics**
+ [MQTT クライアントで MQTT メッセージを表示する](#view-mqtt-subscribe)
+ [MQTT クライアントから MQTT メッセージを発行する](#view-mqtt-publish)
+ [MQTT クライアントで共有サブスクリプションをテストする](#view-mqtt-shared-subscriptions)

## MQTT クライアントで MQTT メッセージを表示する
<a name="view-mqtt-subscribe"></a>

次の手順では、デバイスがメッセージを発行する特定の MQTT トピックをサブスクライブし、それらのメッセージを [AWS IoT コンソール](https://console.aws.amazon.com/iot/home) に表示する方法について説明します。

**MQTT テストクライアントで MQTT メッセージを表示するには**

1. [AWS IoT コンソール](https://console.aws.amazon.com/iot/home)の左側のメニューで、**[Test]** (テスト)、**[MQTT test client]** (MQTT テストクライアント) の順に選択します。  
![左側のナビゲーションにあるコンソールメニューから、[MQTT テストクライアント] を選択します。](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/images/choose-test.png)

1. **[Subscribe to a topic]** (トピックにサブスクライブする) タブで、{{topicName}} を入力して、デバイスが発行する対象のトピックにサブスクライブします。開始方法のサンプルアプリケーションについては、**\#** にサブスクライブします。これにより、すべてのメッセージトピックにサブスクライブします。

   開始方法の例を使用して続行し、[**Subscribe to a topic**] (トピックをサブスクライブする) タブの [**Topic filter**] (トピックフィルター) フィールドで**\#** と入力し、[**Subscribe** (サブスクライブ)]を選択します。  
![トピックタブへのサブスクライブ。](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/images/subscribe-button-topic.png)

   トピックメッセージログページ **\#** が開き、**\#** が [**Subscriptions**] (サブスクリプション) リストに表示されます。で設定したデバイスがサンプルプログラム[デバイスを設定する](configure-device.md)を実行している場合は、**\#** メッセージログ AWS IoT に に送信するメッセージが表示されます。サブスクライブされたトピックを含むメッセージが によって受信されると、メッセージログエントリが **Publish** セクションの下に表示されます AWS IoT。  
![トピックを表示するセクションは正常にサブスクライブされました。](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/images/subscribed-button-topic.png)

1. **\#** メッセージログページでは、トピックにメッセージを発行することもできますが、トピック名を指定する必要があります。**\#** トピックに発行することはできません。

   サブスクライブしたトピックに発行されたメッセージは、受信されるとメッセージログに表示されます。最初に表示されるのは、最新のメッセージです。

### MQTT メッセージのトラブルシューティング
<a name="view-mqtt-trouble"></a>

**ワイルドカードトピックフィルターを使用する**  
メッセージが期待どおりにメッセージログに表示されない場合は、[トピック名フィルター](topics.md#topicfilters) の説明に従って、ワイルドカードトピックフィルターをサブスクライブしてみてください。MQTT マルチレベルワイルドカードトピックフィルターはハッシュまたはポンド記号 ( `#` ) であり、[**Subscription topic**] (サブスクリプショントピック) フィールドでトピックフィルターとして使用できます。

`#` トピックフィルターにサブスクライブすると、メッセージブローカーによって受信されるすべてのトピックがサブスクライブされます。トピックフィルターパスの要素を `#` 複数レベルのワイルドカード文字または「\+」単一レベルのワイルドカード文字に置き換えることで、絞り込むことができます。

**トピックフィルターでワイルドカードを使用する場合**
+ マルチレベルのワイルドカード文字は、トピックフィルターの最後の文字にする必要があります。
+ トピックフィルターパスには、トピックレベルごとに 1 つの単一レベルのワイルドカード文字のみを使用できます。

以下に例を示します。


|  トピックのフィルター  |  次でメッセージを表示します  | 
| --- | --- | 
|   `#`   |   任意のトピック名   | 
|   `topic_1/#`   |   `topic_1/` で始まるトピック名  | 
|   `topic_1/level_2/#`   |   `topic_1/level_2/`で始まるトピック名  | 
|   `topic_1/+/level_3`   |   `topic_1/` で始まり、`/level_3`で終わり、その間に任意の値の 1 つの要素があるトピック名。  | 

トピックフィルターの詳細については、[トピック名フィルター](topics.md#topicfilters) を参照してください。

**トピック名のエラーをチェックする**  
MQTT トピック名とトピックフィルターでは、大文字と小文字が区別されます。例えば、サブスクライブしたトピックである `topic_1` ではなく `Topic_1` (大文字の *T*) にデバイスがメッセージを発行している場合、そのメッセージは MQTT テストクライアントに表示されません。ただし、ワイルドカードトピックフィルターをサブスクライブすると、デバイスがメッセージを発行していることが表示され、想定したものとは異なるトピック名を使用していることがわかります。

## MQTT クライアントから MQTT メッセージを発行する
<a name="view-mqtt-publish"></a>

**MQTT トピックにメッセージを発行するには**

1. MQTT テストクライアントページの **[Publish to a topic]** (トピックへの発行) タブの **[Topic name]** (トピック名) フィールドに、メッセージの {{topicName}} を入力します。この例では **my/topic** を使用します。
**注記**  
MQTT テストクライアントで使用する場合でも、システム実装で使用する場合でも、トピック名に個人を特定できる情報を使用しないでください。トピック名は、暗号化されていない通信およびレポートに表示できます。

1. メッセージペイロードウィンドウで、次の JSON を入力します。

   ```
   {
       "message": "Hello, world",
       "clientType": "MQTT test client"
   }
   ```

1. [**Publish**] (発行) を選択して、メッセージを AWS IoTに発行します。
**注記**  
メッセージを発行する前に、**my/topic** トピックにサブスクライブしていることを確認してください。  
![トピックタブへの公開。](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/images/publish-to-topic.png)

1. [**Subscriptions**] (サブスクリプション) のリストで、[**my/topic**] を選びます。発行メッセージペイロードウィンドウの下の MQTT テストクライアントにメッセージが表示されます。  
![公開されたトピックを示す画面が受信されました。](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/images/publish-to-topic-received.png)

MQTT メッセージを他のトピックに発行するには、[**Topic name**] (トピック名) フィールドの {{topicName}}を変更し、[**Publish**] (発行) ボタンを選びます。

**重要**  
重複するトピック (例: probe1/temperature および probe1/\#) で複数のサブスクリプションを作成する場合、両方のサブスクリプションに一致するトピックに発行された 1 つのメッセージが、重複するサブスクリプションごとに 1 回ずつ、複数回にわたって配信される可能性があります。

## MQTT クライアントで共有サブスクリプションをテストする
<a name="view-mqtt-shared-subscriptions"></a>

このセクションでは、 [AWS IoT コンソール](https://console.aws.amazon.com/iot/home)で AWS IoT MQTT クライアントを使用して、共有サブスクリプション AWS IoT を使用して送受信された MQTT メッセージを監視する方法について説明します。 では、複数のクライアントが、ランダムディストリビューションを使用してそのトピックに発行されたメッセージを受信するクライアントが 1 つだけであるトピックへのサブスクリプションを共有[共有サブスクリプション](mqtt.md#mqtt5-shared-subscription)できます。同じサブスクリプションを共有する複数の MQTT クライアント (この例では 2 つの MQTT クライアント) をシミュレートするには、複数のウェブブラウザから[AWS IoT コンソール](https://console.aws.amazon.com/iot/home)で AWS IoT MQTT クライアントを開きます。このセクションで使用されている例は、「[AWS IoT Core チュートリアルの開始方法](iot-gs.md)」で使用されている例とは関連がありません。詳細については、「[共有サブスクリプション](mqtt.md#mqtt5-shared-subscription)」を参照してください。

**MQTT トピックのサブスクリプションを共有するには**

1. [AWS IoT コンソール](https://console.aws.amazon.com/iot/home)のナビゲーションペインで、**[テスト]** を選択し、次に **[MQTT テストクライアント]** を選択します。

1. **[Subscribe to a topic]** (トピックにサブスクライブする) タブで、{{topicName}} を入力して、デバイスが発行する対象のトピックにサブスクライブします。共有サブスクリプションを使用するには、以下のように共有サブスクリプションのトピックフィルターにサブスクライブします。

   ```
   $share/{ShareName}/{TopicFilter}
   ```

   サンプルのトピックフィルターは、メッセージトピック **topic1** にサブスクライブしている **\$share/group1/topic1** にすることができます。  
![共有サブスクリプションのトピックフィルターを指定する方法を示すタブ。](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/images/shared-subscription-topicfilter.png)

1. 別のウェブブラウザを開き、手順 1 と手順 2 を繰り返します。この方法では、同じサブスクリプション **\$share/group1/topic1** を共有する 2 つの異なる MQTT クライアントをシミュレートしています。

1. 1 つの MQTT クライアントを選択し、**[トピックに公開する]** タブの **[トピック名]** フィールドに、メッセージの {{topicName}} を入力します。この例では **topic1** を使用します。メッセージを数回公開してみてください。両方の MQTT クライアントの**サブスクリプション**リストで、クライアントがランダム配信を使用してメッセージを受信していることを確認できるようになります。この例では、同じメッセージ「Hello from AWS IoT console」を 3 回公開します。左側の MQTT クライアントはメッセージを 2 回受信し、右側の MQTT クライアントはメッセージを 1 回受信しました。  
![共有サブスクリプションは、1 つのトピックへのサブスクリプションを 2 つのクライアントで共有できますが、そのトピックに公開されたメッセージをランダム配信を使って受信できるのは 1 つのクライアントのみです。](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/images/shared_subscriptions_test.gif)