---
schema_version: "1"
id: a667588235fb9c70582d1fdb92a66fa700f8b13c9d30a78d483d5ae5a5d27aa6
title: Mule メッセージ構造
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/mule-runtime/4.3/about-mule-message.md
canonical_url: https://docs.mulesoft.com/jp/mule-runtime/4.3/about-mule-message
source_site: docs.mulesoft.com
content_type: documentation
content_hash: ad3d939899f02023d27bf09dcaee56b04785bb1ba5cea5f2930f6e787a55c912
description: MuleSoft Documentation Site
release: "4.3"
latest: false
---
# Mule メッセージ構造

Mule メッセージは、Mule アプリケーションのフロー内で処理されるときに、通常は外部ソースのメッセージコンテンツとメタデータのコンテナとして機能する、Mule イベントの一部です。

Mule イベントは不変であるため、Mule メッセージを変更するたびに新しいインスタンスが作成されます。メッセージを受信するフロー内の各プロセッサーは、次の要素で構成される新しい Mule メッセージを返します。

- メッセージ​`payload`​。メッセージの本文が含まれます。たとえば、ファイルの内容、データベースのレコード、REST または Web サービス要求への応答が含まれます。
- メッセージ​`attributes`​。ペイロードに関連付けられたメタデータ。

![mule message structure 82af1](/mulesoft/current/ja-jp/mule-runtime/4.3/_images/mule-message-structure-82af1.png)

Mule メッセージは、HTTP リスナーが応答を受信したときや Scheduler コンポーネントがフローの実行をトリガーしたときと同様に、Mule フロー内のメッセージソースがフローの開始をトリガーしたときに ​[Mule イベント](https://docs.mulesoft.com/jp/mule-runtime/4.3/about-mule-event)​の一部として作成されます。

たとえば、Mule アプリケーションの HTTP リスナーは応答を受信したときに、応答のコンテンツをそのペイロードとして含み、そのコンテンツに関連付けられたメタデータも含む Mule メッセージを使用して Mule イベントを作成します。フロー内のメッセージプロセッサー (コアコンポーネント、File Read 操作、HTTP Request 操作など) は、その設定に従って、Mule イベントに存在する Mule メッセージデータを取得、設定、処理できます。

Anypoint Studio では、​[DataSense Explorer](https://docs.mulesoft.com/studio/datasense-explorer)​ にフローの特定ポイントでの Mule メッセージの構造が表示されます。

## [](#メッセージペイロード)メッセージペイロード

メッセージペイロードには、メッセージのコンテンツまたは本文が含まれます。たとえは、ペイロードには HTTP 要求の結果、Database Connector の Select 操作で取得したレコードの内容、またはファイルコネクタや FTP Connector への Read 操作で取得したファイルの内容が含まれる可能性があります。

ペイロードのコンテンツは、フロー内を移動するにつれ、Mule フロー内のメッセージプロセッサーによって設定、強化、新しい形式への変換、情報の抽出、または Mule イベント変数への保存と新規ペイロードの生成が行われたときに変更されます。

Mule メッセージのペイロードは、​[Mule Runtime 変数](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-variables-context)​ ​`payload`​ を使用する DataWeave 式で選択できます。

たとえば、​`https://jsonplaceholder.typicode.com/users`​ の JSON コンテンツに対する HTTP 要求への応答の ​`payload`​ を表示するように設定された Logger コンポーネントでは、次の例のような JSON コンテンツが Studio コンソールに出力されます。

例: HTTP 応答ペイロード

```txt
[
  {
    "id": 1,
    "name": "Leanne Graham",
    "username": "Bret",
    "email": "Sincere@april.biz",
    "address": {
      "street": "Kulas Light",
      "city": "Gwenborough",
      "zipcode": "92998-3874",
      "geo": {
        "lat": "-37.3159",
        "lng": "81.1496"
      }
    }
  },
  {
    "id": 2,
    "name": "Ervin Howell",
    "username": "Antonette",
    "email": "Shanna@melissa.tv",
    "address": {
      "street": "Victor Plains",
      "city": "Wisokyburgh",
      "zipcode": "90566-7771",
      "geo": {
        "lat": "-43.9509",
        "lng": "-34.4618"
      }
    }
  }
]
```

単純な JSON ファイルに対する File Read 操作の出力の ​`payload`​ を表示するように設定された Logger コンポーネントでは、次の例のような JSON コンテンツが Studio コンソールに出力される可能性があります。

例: ファイルペイロード

```txt
{ "hello" : "world" }
```

フロー内の次のメッセージプロセッサーは、このペイロードに対して、​`payload.'hello'`​ を含むペイロード内の JSON オブジェクトの値を選択し、先行する JSON ペイロードを文字列 ​`"world"`​ で置き換えるアクションなどを実行できます。

## [](#attributes)属性

属性には、メッセージの本文 (またはペイロード) に関連付けられたメタデータが含まれます。メッセージの特定の属性は、そのメッセージに関連付けられたコネクタ (HTTP、FTP、ファイルなど) によって異なります。メタデータはコネクタによって受信または返されたヘッダーとプロパティ、およびコネクタまたはコアコンポーネント (Transform Message など) によって入力された他のメタデータで構成されます。

Mule メッセージの属性は、​[Mule Runtime 変数](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-variables-context)​ ​`attributes`​ を使用する DataWeave 式で選択できます。

たとえば、Logger コンポーネントを介して HTTP 応答メタデータを表示する ​`attributes`​ 変数を使用している場合、次の例のような HTTP 応答属性が Studio コンソールに出力されます。

例: HTTP 応答の属性

```txt
{
   Status Code=200
   Reason Phrase=OK
   Headers=[
      date=Sun, 20 Jan 2019 19:13:51 GMT
      content-type=text/html;
      charset=UTF-8
      transfer-encoding=chunked
      connection=keep-alive
      set-cookie=__cfduid=d03462713a0b2c57c8d2ad3bf311287041548011631;
      expires=Mon, 20-Jan-20 19:13:51 GMT;
      path=/;
      domain=.typicode.com;
      HttpOnly
      x-powered-by=Express
      vary=Origin, Accept-Encoding
      access-control-allow-credentials=true
      cache-control=public, max-age=14400
      last-modified=Tue, 15 Jan 2019 18:17:15 GMT
      via=1.1 vegur
      cf-cache-status=HIT
      expires=Sun, 20 Jan 2019 23:13:51 GMT
      expect-ct=max-age=604800,
      report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
      server=cloudflare
      cf-ray=49c3dc570c2f281c-SJC
   ]
}
```

この例は、Web ページ ​`https://jsonplaceholder.typicode.com/users`​ に対する HTTP Request 操作からの応答です。

各属性は、等号 (​`=`​) で区切られたキー-値のペアになっています。フローでコネクタまたはコンポーネント (Logger など) を使用する場合、​`attribute`​ 変数を特定の属性やその内部属性と共に使用して、必要な属性値 (状況コードやコンテンツタイプなど) を選択できます。たとえば、次の構文を使用して HTTP 応答で属性の値を選択できます。

- `attributes.statusCode`​: `200`​ などの HTTP 状況コードを選択。
- `attributes.headers.date`​: HTTP 応答のヘッダーから ​`Sun, 20 Jan 2019 18:54:54 GMT`​ を選択。
- `attributes.headers.'content-type'`​: HTTP コンテンツタイプ ​`application/json`​ を選択。
    
    `content-type`​ などの内部属性を選択するには、名前 ​`content-type`​ を引用符で囲む必要があります。DataWeave では ​[属性名の有効な識別子](#valid_identifiers)​ で記述されたルールが内部値に適用されるため、​`date`​ などの値を引用符で囲む必要はありません。状況コード値を選択するセレクターで ​`'Status Code'`​ または ​`"Status Code"`​ ではなく ​`statusCode`​ を使用する理由については、該当のセクションの​[「注意」](#note_top_level_selectors)​を参照してください。

ファイルメタデータの場合、属性は異なります。たとえば、Logger コンポーネントを介してファイルメタデータを表示する ​`attributes`​ 変数を使用している場合、次の例のようなコンテンツが Studio コンソールに表示されます。

例: ファイルの属性

```txt
LocalFileAttributes[
  lastModifiedTime=2019-01-20T08:17:55,
  lastAccessTime=2019-01-20T10:54:55,
  creationTime=2019-01-20T08:17:55,
  size=22,
  regularFile=true,
  directory=false,
  symbolicLink=false,
  path=/Users/me/Desktop/myJson.json,
  fileName=myJson.json
```

各属性は、キー-値のペア (​`fileName=myJson.json`​ など) になっています。属性の値を選択するには、次のようにそのキーを参照します。

- `attributes.'fileName'`​: ファイルの名前 (​`myJson.json`​) を返す。
- `attributes.size`​: ファイルのサイズ (​`22`​) を返す。

### [](#valid_identifiers)属性名の有効な識別子

[「有効な識別子を宣言するためのルール」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-language-introduction#valid-identifiers)​で説明されているルールに従う属性名については、引用符を使用せずにアクセスおよび宣言できます。

有効な識別子ではない属性を使用するには、次のいずれかの文字で属性名を囲みます。

- 単一引用符 (​`'`​)
- 二重引用符 (​`"`​)
- バッククォート (`` ` ``)

たとえば、次の DataWeave 変数宣言について考えてみます。

```java
var myVar = {
              id : "1234",
              "123 abc !@#" : "some_value"
            }
```

属性名 ​`123 abc !@#`​ は有効な識別子ではないため、引用符またはバッククォートを使用して宣言する必要があります。

属性 ​`123 abc !@#`​ の値 (​`"some_value"`​) にアクセスするには、引用符またはバッククォートを使用します。

```none
myVar.'123 abc !@#'
```

属性名が有効な識別子の場合も、引用符またはバッククォートを使用して属性を宣言したり、属性の値を選択したりできます。

前述の変数宣言の例では、属性 ​`id`​ は引用符を使用せずに宣言されています。​`id`​ に保存された値にアクセスするには、次のいずれかの方法を使用できます。

- `myVar.id`
- `myVar.'id'`
- `myVar."id"`
- `myVar.`​id\`\`

注意: コンソール出力に表示される、人間が解読できる最上位属性の名前 (​`Status Code`​ など) は、属性の選択で使用する名前 (​`statusCode`​) とは異なる可能性があります。人間が解読できる名前 ​`Status Code`​ を引用符で囲むと、その最上位属性が選択可能になるのではなく ​`null`​ が返されます。最上位属性名 (​`Status Code`​、​`Reason Phrase`​、​`Headers`​ など) の選択に使用する構文は、​[Studio のオートコンプリート](https://docs.mulesoft.com/studio/datasense-concept#using-datasense-for-autocomplete)​を使用して確認できるほか、コネクタのドキュメント (​[「HTTP 要求」など](#connectors::http/http-connector-xml-reference.adoc#http-request)​) で確認できます。

## [](#関連情報)関連情報

- [定義済み変数](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-variables-context)
- [Mule イベント](https://docs.mulesoft.com/jp/mule-runtime/4.3/about-mule-event)
- [DataWeave セレクター](#dataweave-selectors.adoc)
- [Set Payload トランスフォーマー](https://docs.mulesoft.com/jp/mule-runtime/4.3/set-payload-transformer-reference)