---
schema_version: "1"
id: 19286e47ca6e5be2aecf092a9f4bdf73111d10f24ce4010368515e2dc10c77b9
title: "Mule 4 の概要: 変換とストリーミング"
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/mule-runtime/4.3/intro-transformations.md
canonical_url: https://docs.mulesoft.com/jp/mule-runtime/4.3/intro-transformations
source_site: docs.mulesoft.com
content_type: documentation
content_hash: d850ded4e761584fa254d126be541549e8162f594ffc6b0a0743b940ee6ddfd2
description: MuleSoft Documentation Site
release: "4.3"
latest: false
---
# Mule 4 の概要: 変換とストリーミング

Mule 4 ではデータについての考え方が根本的に Mule 3 とは異なります。Mule 3 では多くの場合、基本的な Java データ型、InputStream の管理方法、ペイロードがメモリ量を上回っていないか、MEL でアクセス可能にするためにデータを Java オブジェクトに変換する方法を認識している必要があります。

Mule 4 では、次のベストプラクティスが推奨されます。

- Java データ型への不要な変換を回避し、データを直接操作する。
- ランタイムにストリーミングを処理させる。
- カスタム Java コードとの直接的なインテグレーションを実行している場合を除き、バイナリデータ型を ​`String`​、​`byte[]`​、​`InputStream`​ に変換しない。

## [](#透過的なストリーミング)透過的なストリーミング

[「Mule 4 の概要: DataWeave 式言語」](https://docs.mulesoft.com/jp/mule-runtime/4.3/intro-expressions)​で、DataWeave を使用してデータを直接操作する方法を説明しました。各種のデータ形式にアクセスできるこの機能を Mule 4 のストリーミング機能と組み合わせれば、データを最初に Java オブジェクトに変換する必要がなくなります。この改善によって次のことが可能になるため、ランタイムでのデータの操作が大幅に簡素化されます。

- DataWeave 式言語を使用してデータを数回読み取ったり、ランダムにアクセスすることができ、副次的影響がない。
- データを最初にメモリにキャッシュしなくても、複数の場所に送信できる。
- メモリ量を超えるデータに透過的にアクセスできる。

Mule 4 でのストリーミングのしくみについての詳細は、​[「Mule 4.0 でのストリーミングについて」](https://docs.mulesoft.com/jp/mule-runtime/4.3/streaming-about)​を参照してください。

## [](#データ型とオブジェクトから-stringbyteinputstream-へのトランスフォーマー)データ型とオブジェクトから String/Byte/InputStream へのトランスフォーマー

Mule でデータストリームが自動的に管理されるようになったことため、データに簡単にアクセスできます。そのデータ型の基本的な Java 表現が ​`byte[]`​、​`InputStream`​、​`String`​ なのか、それとも他の形式なのかを気にする必要がありません。

Mule 3 アプリケーションで多くみられたパターンは、データをログに記録したり、いずれかのトランスポート経由で送信したりするために、ユーザーがデータを文字列に変換するというものです。ストリームを 2 回コンシュームすることができなかったためこの処理が必要でした。つまり、トランスフォーマーが必要でした。

```xml
<http:listener ... /> <!-- Obtains an InputStream payload -->
<object-to-string/> <!-- consume the stream and convert it to a String -->
<logger message="#[payload]"/> <!-- log the String -->
<http:request .../> <!-- send the String somewhere else-->
```

Mule 4 では、基になるデータ型やストリームのコンシューム回数を気にすることなく、データを簡単に記録や送信することができます。ペイロードを ​`InputStream`​ ではなく、単なるバイナリデータと考えます。また、コンテンツタイプがわかっている場合は、そのまま JSON、XML、あるいはそのコンテンツタイプに対応するデータ型と考えることができます。

```xml
<http:listener ... /> <!-- payload is JSON document -->
<logger message="#[payload]"/> <!-- log the JSON document -->
<http:request .../> <!-- send the JSON document somewhere else-->
```

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

- [Mule アプリケーションでのストリーミング](https://docs.mulesoft.com/jp/mule-runtime/4.3/streaming-about)