---
schema_version: "1"
id: ef5fa71ad237fe41c816a4ee2829c499db5ac62d59965f1ee357c53d8e31fe5b
title: カスタムモジュールおよびマッピングの作成
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/dataweave/2.3/dataweave-create-module.md
canonical_url: https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-create-module
source_site: docs.mulesoft.com
content_type: documentation
content_hash: e3f55249d2b1eba1fb30f65ae899f3bd77c75e87dcf65db3f09bb949cdbf98b9
description: MuleSoft Documentation Site
release: "2.3"
latest: false
---
# カスタムモジュールおよびマッピングの作成

組み込みの DataWeave 関数モジュール (​[dw::Core](https://docs.mulesoft.com/jp/dataweave/2.3/dw-core)​ や ​[dw::Crypto](https://docs.mulesoft.com/jp/dataweave/2.3/dw-crypto)​ など) を使用する以外にも、カスタムモジュールおよびマッピングファイルを作成して使用することもできます。 例は、データ抽出および変換の一般的なアプローチを示しています。 開始する前に、DataWeave バージョン 2 は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントの ​[DataWeave バージョン 1 ドキュメントセット](#1.2@index.adoc)​を参照してください。他の Mule バージョンの場合は、Mule Runtime の目次のバージョンセレクターを使用できます。

DataWeave 言語 (​`.dwl`​) ファイルでモジュールおよびマッピングファイルを作成し、Mule コンポーネントの DataWeave スクリプトで Mule アプリケーションにインポートします。モジュールとマッピングファイルのどちらも、同じ機能を何度も再利用する必要がある場合に役立ちます。

- カスタムモジュールでは、関数、変数、型、名前空間を定義できます。これらのモジュールを DataWeave スクリプトにインポートして機能を使用できます。
- カスタムマッピングファイルは、インポートして別の DataWeave スクリプトで使用したり、Mule コンポーネントで参照したりできる完全な DataWeave スクリプトが含まれるモジュールの種類です。

多くの Mule Connector およびコンポーネントの項目では、DataWeave 式やスクリプトを使用できます。

カスタムモジュールではなく、組み込みの DataWeave 関数モジュールをインポートして使用する場合、​[「DataWeave 関数リファレンス」](https://docs.mulesoft.com/jp/dataweave/2.3/dw-functions)​を参照してください。

## [](#create_dw_mapping)DataWeave マッピングファイルを作成して使用する

DataWeave 変換を ​`.dwl`​ マッピングファイル (マッピングモジュール) に保存し、そのファイルを別の DataWeave スクリプトにインポートできます。マッピングファイルは、Transform Message コンポーネントで実行したり、別のマッピングにインポートして ​`main`​ 関数で実行したりできます。

![キーを大文字にしてペイロード値をマップする関数を含む DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.3/_images/dataweave-mapping-file.png)

Figure 1. 例: Studio プロジェクトの DataWeave マッピングファイル

1. Studio プロジェクトで、マッピングモジュールのサブフォルダーとファイルをセットアップします。
    
    - `src/main/resources`​ にサブフォルダーを作成するには、\[New (新規)\] → \[Folder (フォルダー)\] → \[your\_project\] → ​`src/main/resources`​ に移動して、​`modules`​ という名前のフォルダーを追加します。
    - そのフォルダーのモジュールの新しいファイルを作成するには、\[New (新規)\] → \[File (ファイル)\] → \[your\_project\] → ​`src/main/resources/modules`​ に移動し、​`MyMapping.dwl`​ のような DWL (DataWeave 言語) ファイルを追加します。
        
        `src/main/resources`​ 内にモジュールを保存すると、そのプロジェクトの Mule アプリケーションの コンポーネントの DataWeave スクリプトでそのモジュールにアクセスして使用できるようになります。
2. 次のように、マッピングファイルで関数を作成します。
    
    例: マッピングファイルのコンテンツ
    
    ```dataweave
    %dw 2.0
    import dw::core::Strings
    fun capitalizeKey(value:String) = Strings::capitalize(value) ++ "Key"
    ---
    payload mapObject ((value, key) ->
        {
          (capitalizeKey(key as String)) : value
        }
      )
    ```
3. DWL 関数モジュールファイルを保存します。

### [](#dataweave-スクリプトでのマッピングファイルの使用)DataWeave スクリプトでのマッピングファイルの使用

マッピングファイルを使用するには、DataWeave スクリプトにインポートし、マッピングファイルで ​`main`​ 関数を使用してスクリプトの本文にアクセスする必要があります。

このスクリプトが含まれる ​[MyMapping.dwl](#mapping_file)​ ファイルが ​`/src/main/resources/modules`​ に作成されていることが前提となっています。

`MyMapping.dwl`​ ファイル (上記) の本文の式を DataWeave マッピングファイルにインポートして使用するには、次の作業が必要になります。

- ヘッダーで ​`import`​ ディレクティブを指定します。
- `MyMapping::main`​ 関数を呼び出します。この関数では、マッピングファイルと同じ構造の入力を想定しています。たとえば、​`MyMapping.dwl`​ の本文では、​`{"key" : "value"}`​ の形式のオブジェクトを想定しています。

例: DataWeave スクリプトにマッピングをインポートして使用する

```dataweave
%dw 2.0
import modules::MyMapping
output application/json
---
MyMapping::main(payload: { "user" : "bar" })
```

次に、結果を示します。

出力

```json
{
  "UserKey": "bar"
}
```

[capitalizeKey](#mapping_file)​ 関数は非公開でも ​`main`​ 関数コールで使用されます。また、DataWeave マッピングファイルで ​`dw::core::Strings`​ モジュールをインポートして再利用することもできます。

## [](#カスタムモジュールの作成および使用)カスタムモジュールの作成および使用

カスタム DataWeave モジュールを作成する手順は、カスタムマッピングファイルを作成する手順とほぼ同じです。​`.dwl`​ ファイルのコンテンツのみが異なります。一般的な DataWeave スクリプトまたはマッピングファイルとは異なり、カスタム DataWeave モジュールでは、ヘッダーセクションと本文セクションの間に ​`output`​ ディレクティブ、本文の式、区切り文字 (​`---`​) を含めることができません。(マッピングに関する案内については、​[DataWeave マッピングファイルを作成して使用する](#create_dw_mapping)​を参照してください。)

![カスタム関数モジュールを含む DataWeave スクリプト](/mulesoft/current/ja-jp/dataweave/2.3/_images/dataweave-function-custom.png)

Figure 2. 例: Studio プロジェクトのカスタムモジュール

カスタムモジュールファイルには、次のように ​`var`​、​`fun`​、​`type`​、​`ns`​ 宣言のみを含めることができます。

例: カスタム DataWeave モジュール

```dataweave
%dw 2.0
fun myFunc(myInput: String) = myInput ++ "_"
var name = "MyData"
ns mynamespace http://acme.com/bar
```

カスタムモジュールを別の DataWeave スクリプトにインポートすると、モジュールで定義された関数、変数、型、名前空間を DataWeave 本文で使用できるようになります。次の例では、DataWeave スクリプトで以下の作業を行います。

- ヘッダーの ​`import`​ ディレクティブでモジュール ​`MyModule`​ をインポートする。この場合、インポートされたモジュールは Studio プロジェクトパス ​`src/main/resources/modules/MyModule.dwl`​ に保存されます。
- `MyModule::myFunc("dataweave")`​ を使用して ​`MyModule`​ の関数をコールする。

例: カスタム DataWeave モジュールをインポートして使用する

```dataweave
%dw 2.0
import modules::MyModule
output application/json
---
MyModule::myFunc("dataweave") ++ "name"
```

いくつかの方法でモジュールまたは要素をインポートできます。

- モジュールをインポートする (例: `import modules::MyModule`​)。この場合、要素 (ここでは関数) をコールするときに ​`MyModule::myFunc`​ のようにモジュールの名前を含める必要があります。
- モジュールのすべての要素をインポートする (例: `import * from modules::MyModule`​)。この場合、要素をコールするときにモジュールの名前を含める必要はありません。たとえば、​`myFunc("dataweave") ++ "name"`​ は動作します。
- モジュールの特定の要素をインポートする (例: `import myFunc from modules::MyModule`​)。この場合、要素をコールするときにモジュールの名前を含める必要はありません。たとえば、​`myFunc("dataweave") ++ "name"`​ は動作します。たとえば、​`import myFunc someOtherFunction from modules::MyModule`​ (モジュールで ​`myFunc`​ と ​`someOtherFunction`​ の両方が定義されていることが前提) のようにモジュールの複数の要素をインポートできます。

出力

```json
"dataweave_name"
```

## [](#インポートされる要素のローカル別名の割り当て)インポートされる要素のローカル別名の割り当て

名前のクラッシュを避けるために、モジュールを DataWeave スクリプトにインポートするときに ​`as`​ を使用してカスタムモジュールまたはその要素の別名を割り当てることができます。

`MyModule.dwl`​ ファイルで次のようなカスタムモジュールを定義していることが前提となっています。

例: カスタムモジュール

```dataweave
%dw 2.0
fun myFunc(name:String) = name ++ "_"
var myVar = "Test"
```

カスタムモジュールを DataWeave スクリプトにインポートするときに、次のようにカスタムモジュールの要素の別名を作成できます。

例: インポートされる要素に別名を適用する

```dataweave
%dw 2.0
import myFunc as appendDash, myVar as weaveName from modules::MyModule
var myVar = "Mapping"
output application/json
---
appendDash("dataweave") ++ weaveName ++ "_" ++ myVar
```

このスクリプトでは ​`"dataweave_Test_Mapping"`​ を返します。

次のようにインポートされるモジュールの別名を作成できます。

例: インポートされるモジュールに別名を適用する

```dataweave
%dw 2.0
import modules::MyModule as WeaveMod
output application/json
---
WeaveMod::myFunc("dataweave")
```

## [](#dwl-ファイルの参照)DWL ファイルの参照

DWL ファイルは、Mule Connector およびコンポーネントで直接使用できます。

詳細は、​[「dwl ファイル」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-language-introduction#dwl_file)​を参照してください。