すべてのプロダクト
Search
ドキュメントセンター

Simple Message Queue (formerly MNS):メッセージ本文のエンコーディングガイド

最終更新日:Jun 04, 2026

Simple Message Queue (旧称:MNS) クライアントには、Base64 エンコーディングのための組み込みオプションが用意されています。本ガイドでは、メッセージの送信および受信時に Base64 エンコーディングを使用すべきシナリオについて説明します。

背景情報

Base64 はバイナリデータを ASCII 文字列に変換し、テキストベースの環境を通じて安全に転送できるようにします。

Base64 エンコーディングの利点

  • 互換性:Base64 エンコードされた文字列は表示可能な ASCII 文字のみを使用するため、メール、JSON、XML などのテキストベースのフォーマットで使用しても、文字化けのリスクなく安全に扱えます。

  • セキュリティ:Base64 は暗号化ではありませんが、プレーンテキスト形式の一部ではバイナリデータを直接読み取れなくすることで、セキュリティのレイヤーを追加します。

  • 簡便性:ほとんどのプログラミング言語およびライブラリには、Base64 のサポートが組み込まれています。

Base64 エンコーディングの欠点

  • データ肥大化:Base64 エンコーディングにより、データサイズが約 33 % 増加します。

  • 効率低下:エンコードおよびデコードには追加の計算リソースが必要です。特に大量のデータを処理する場合、パフォーマンスへのオーバーヘッドが顕著になる可能性があります。

  • 可読性の低さ:エンコードされたメッセージ本文は人間が読み取れません。

Base64 エンコーディングの使用タイミング

キュー型メッセージングモデル

メッセージ本文に特殊文字が含まれていない場合は、Base64 エンコーディングをスキップしてください。

  • メッセージを送信するには、message.setMessageBodyAsRawString メソッドを呼び出します。

  • メッセージを受信するには、message.getMessageBodyAsRawString メソッドを呼び出します。

トピックモデル(キュー/HTTP サブスクリプション)

トピックモデルでは、サブスクリプションの NotifyContentFormat プロパティによってプッシュメッセージのフォーマット(SIMPLIFIED、JSON、または XML)が決定されます。詳細については、「サブスクリプションフォーマット」をご参照ください。

  • SIMPLIFIED フォーマット:メッセージ本文に特殊文字が含まれていない場合は、Base64 エンコーディングをスキップしてください。

    • メッセージを送信するには、RawTopicMessage を使用してメッセージオブジェクトを初期化します。

    • メッセージを消費するには、message.getMessageBodyAsRawString() を呼び出します。

  • JSON または XML フォーマット:Base64 エンコードされた文字列は JSON や XML などのテキストフォーマットでの転送に適しているため、Base64 エンコーディングを必ず使用する必要があります。

    • メッセージを送信するには、TopicMessage を使用してメッセージオブジェクトを初期化します。本文は自動的に Base64 エンコードされ、Message フィールドに格納されます。

    • メッセージを消費するには、message.getMessageBodyAsRawString(); を呼び出して Message フィールドの値を取得し、その後 Base64 デコードを行います。

      JSONObject object = new JSONObject(message.getMessageBodyAsRawString());
      String jsonMessageData = String.valueOf(object.get("Message"));
      String messageBody = new String(Base64.decodeBase64(jsonMessageData));

トピックモデル(メールサブスクリプション)

メッセージ本文に特殊文字が含まれていない場合は、Base64 エンコーディングをスキップしてください。

  • メッセージを送信するには、message.setMessageBodyAsRawString メソッドを呼び出します。

  • メッセージを受信するには、message.getMessageBodyAsRawString メソッドを呼び出します。

トピックモデル(テキストメッセージサブスクリプション)

メッセージ本文に特殊文字が含まれていない場合は、Base64 エンコーディングをスキップしてください。

  • メッセージを送信するには、message.setMessageBodyAsRawString メソッドを呼び出します。

  • メッセージを受信するには、message.getMessageBodyAsRawString メソッドを呼び出します。

トピックモデル(Mobile Push サブスクリプション)

メッセージ本文に特殊文字が含まれていない場合は、Base64 エンコーディングをスキップしてください。

  • メッセージを送信するには、message.setMessageBodyAsRawString メソッドを呼び出します。

  • メッセージを受信するには、message.getMessageBodyAsRawString メソッドを呼び出します。