---
schema_version: "1"
id: 8bc516c4b75494cc3f17da180a0f5bd13c22d4828509a53496f55d794f79ca38
title: プロパティの設定
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/mule-runtime/4.5/configuring-properties.md
canonical_url: https://docs.mulesoft.com/jp/mule-runtime/4.5/configuring-properties
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 53d1e074ae9e7e6e0ffc9cbd8e443387e026b80c61f470c0c70e06101f51e6dd
description: MuleSoft Documentation Site
release: "4.5"
latest: false
---
# プロパティの設定

プロパティプレースホルダーやシステムプロパティなどのプロパティを設定できます。

## [](#プロパティプレースホルダー)プロパティプレースホルダー

Mule 設定では、 [Ant](http://ant.apache.org/)​ スタイルのプロパティプレースホルダーを使用できます。次に例を示します。

```xml
<email:smtp-config name="config">
    <email:smtp-connection host="${smtp.host}" port="${smtp.port}"/>
</email:smtp-config>
```

後続のセクションで説明されているように、これらのプレースホルダーの値は、さまざまな方法で使用可能にすることができます。

また、プロパティプレースホルダー値の解決をエスケープすることもできます。

```xml
<logger message="\${property.value}"/>
```

プロパティの値を返す代わりに、Logger コンポーネントは文字列 ​`"${property.value}"`​ を返します。エスケープ文字 ​`\`​ を使用して、プロパティのプレフィックス (​`${`​ 文字シーケンス) の解決をエスケープすることもできます。

## [](#グローバルプロパティ)グローバルプロパティ

`<global-property>`​ 要素を使用すると、Mule 設定内 (別の Mule 設定ファイル内など) からプレースホルダーの値を設定できます。グローバルプロパティ構文を使用して、​`.yaml`​ または ​`.properties`​ ファイルの値を参照し、設定プロパティまたはセキュアな設定プロパティに連動する新しい (グローバル) プロパティを作成できます。設定プロパティを参照するには、プロパティファイルのセクションを読み取ります。

```xml
<global-property name="smtp.host" value="smtp.mail.com"/>
<global-property name="smtp.subject" value="Subject of Email"/>
```

## [](#プロパティファイル)プロパティファイル

カスタムファイルのプロパティを読み込むには、カスタムプロパティファイルを ​`src/main/resources`​ に配置し、​`<configuration-properties>`​ タグを使用します。

```xml
<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns="http://www.mulesoft.org/schema/mule/core"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd">

<configuration-properties file="smtp.yaml"/>

<flow name="myProject_flow1">
    <logger message="${propertyFromFile}" doc:name="System Property Set in Property File"/>
</flow>
```

複数のプロパティファイルを読み込むには、読み込むファイルごとに ​`<configuration-properties/>`​ タグを定義します。

- `<configuration-properties/>`​ タグで参照される複数のファイルでプロパティが定義されている場合、最初の定義が保持されます。

これらのファイルは、Mule プロジェクト内の ​`src/main/resources`​ に配置されている必要があります。または、絶対パスを使用することもできます。

## [](#supported_files)サポートされているファイル

設定プロパティでは、YAML 設定ファイル (​`.yaml`​) とプロパティ設定ファイル (​`.properties`​) の両方がサポートされています。 両方のファイル形式でサポートされている型は ​`String`​ のみです。自分にとって読みやすく、編集しやすい形式を使用してください。

YAML ファイルの例:

```xml
<configuration-properties file="ports.yaml"/>
```

`ports.yaml`​ を次に示します。

```yaml
smtp:
    port: "8957"
http:
    port: "8081"
```

プロパティファイルの例:

```xml
<configuration-properties file="ports.properties"/>
```

`ports.properties`​ を次に示します。

```xml
smtp.port=8957
http.port=8081
```

## [](#ファイルプロパティ)ファイルプロパティ

プレースホルダーの値は、ファイルの内容全体になることもあります。プレースホルダーの値は、次のような文字列値になります。

properties-file.txt

Some content

```xml
<mule:set-payload value="${file::properties-file.txt}"/>
```

ペイロードの値は ​`"Some content"`​ になります。他のプロパティファイルと同様に、これらのファイルは Mule プロジェクト内の ​`src/main/resources`​ に配置されている必要があります。絶対パスを使用することもできます。

この方法は、設定ファイルをモジュール化する場合に役立ちます。設定ファイル、SQL クエリ、変換から大きなコンテンツを抽出して設定ファイルを明確化し、そのコンテンツを再利用できます。

## [](#システムプロパティ)システムプロパティ

Mule をオンプレミスで実行するときに JDK システムプロパティを設定し、後でそのプロパティを使用して Mule アプリケーションでコンポーネントまたはモジュールを設定できます。プロパティを指定する方法は 2 つあります。

- Mule インスタンスを開始するときに、コマンドラインから指定します。
    
    mule -M-Dsmtp.username=JSmith -M-Dsmtp.password=ChangeMe
- `$MULE_HOME/conf`​ ディレクトリに配置されている ​`wrapper.conf`​ ファイルを編集し、プロパティごとにエントリを追加します。
    
    wrapper.java.additional.999=-Dsmtp.username=JSmith
    wrapper.java.additional.1000=-Dsmtp.password=ChangeMe

設定についての詳細は、​[システムプロパティ](https://docs.mulesoft.com/jp/mule-runtime/4.5/mule-app-properties-system#set-properties)​を参照してください。

## [](#カスタムプロパティプロバイダー)カスタムプロパティプロバイダー

Mule API を使用して、カスタムプロパティプロバイダーの実装を作成できます。詳細は、​[「カスタム設定プロパティプロバイダー」](https://docs.mulesoft.com/jp/mule-runtime/4.5/custom-configuration-properties-provider)​を参照してください。

### [](#anypoint-studio-でシステムプロパティを設定する)Anypoint Studio でシステムプロパティを設定する

Anypoint Studio でプロジェクトを起動するときに、\[Run Configurations (設定を実行)\] メニューでプロパティを追加できます。

1. Package Explorer でプロジェクトを右クリックします。
2. **\[Run As (別のユーザーとして実行)\]**​ > ​**\[Run Configurations (設定を実行)\]**​ をクリックします。
3. **\[Arguments (引数)\]**​ タブを選択します。
4. **\[VM arguments (VM 引数)\]**​ 項目に引数 (プロパティ名の前に ​**\-D**​) を追加します。
    
    ![Arguments+Tab](/mulesoft/current/ja-jp/mule-runtime/4.5/_images/arguments-tab.png)
    
    これで、アプリケーションをデプロイするたびに Studio でプロパティを使用できるようになりました。次の構文を使用してプロパティを参照できます。
    
    ```xml
    <logger message="${propertyFromJVMArg}" doc:name="System Property Set in Studio through JVM args"/>
    ```

## [](#環境変数)環境変数

環境変数はさまざまな方法で定義でき、アプリケーションから環境変数にアクセスする方法も複数あります。環境変数の定義方法に関係なく、次の構文を使用して参照することをお勧めします。

${variableName}

### [](#os-の環境変数)OS の環境変数

OS で定義された変数を参照するには、次の構文を使用します。

```xml
<logger message="${USER}" doc:name="Environment Property Set in OS" />
```

### [](#anypoint-studio-で環境変数を設定する)Anypoint Studio で環境変数を設定する

Studio の \[Run Configuration (設定を実行)\] メニューで変数を設定できます。

1. Package Explorer でプロジェクトを右クリックします。
2. **\[Run As (別のユーザーとして実行)\]**​ > ​**\[Run Configurations (設定を実行)\]**​ を選択します。
3. \[Environment (環境)\] タブを選択します。
4. **\[New (新規)\]**​ ボタンをクリックし、変数に名前と値を割り当てます。
    
    ![Environment+Tab](/mulesoft/current/ja-jp/mule-runtime/4.5/_images/environment-tab.png)

これで、デプロイするたびに Studio で変数を使用できるようになりました。次の構文を使用して変数を参照できます。

```xml
<logger message="${TEST_ENV_VAR}" doc:name="Environment Property Set in Studio"/>
```

<table><tbody><tr><td class="icon"><i class="fa icon-note" title="Note"></i></td><td class="content">OS で定義された変数を参照する構文と、Studio で定義された変数を参照する構文は同じです。Studio で定義された変数で、OS で定義された同じ名前の変数を置き換えるかどうかを、変数の作成時に UI の対応するラジオボタンをオンにして選択することができます。</td></tr></tbody></table>

![Environment+Tab2](/mulesoft/current/ja-jp/mule-runtime/4.5/_images/environment-tab2.png)

## [](#プロパティファイルの動的な設定)プロパティファイルの動的な設定

一般的な設定のユースケースは、プロパティに連動するファイル (​`env`​ など) を設定して、使用するファイル (開発フェーズの ​`development-properties`​ ファイルや本番ファイルなど) を決定することです。

```xml
<configuration-properties file="${env}-properties.yaml"/>
```

そのため、​`env`​ プロパティの値によって、設定プロパティの読み込みに使用するファイルが決まります。その ​`env`​ プロパティは、グローバルプロパティ、システムプロパティ、または環境プロパティで設定できます。設定プロパティのデフォルト値を定義する方法として、グローバルプロパティを使用できます。グローバルプロパティと同じ名前のシステムおよび環境プロパティは、そのグローバルプロパティよりも優先されます。

```xml
<global-property name="env" value="dev"/>

<configuration-properties file="${env}-properties.yaml"/>
```

`env`​ プロパティのデフォルト値は ​`dev`​ になりますが、システムプロパティや環境プロパティで上書きできます。この設定は、Anypoint Studio でメタデータを解決するために​**必要**​になります。コマンドラインで渡されるプロパティのデフォルト値を定義しないと、それらの値に連動するすべてのメッセージプロセッサーのアプリケーションモデルを作成するときにエラーが発生します。

他にも、設定プロパティのプレースホルダーは別の設定プロパティから読み込まれるプロパティに連動できないという点も考慮する必要があります。上記の例では、プロパティ ​`env`​ は設定プロパティで定義できていません。以下の例は、​**正しくありません**​。

```xml
<configuration-properties file="file-with-env-property.yaml"/>

<configuration-properties file="${env}-properties.yaml"/>
```

これには、他のプロパティ種別 (セキュア設定プロパティやカスタム設定プロパティなど) も含まれます。

## [](#runtime-manager-でプロパティ値を設定する)Runtime Manager でプロパティ値を設定する

アプリケーションを ​[Runtime Manager](https://docs.mulesoft.com/jp/runtime-manager/)​ にデプロイする場合、Runtime Manager コンソールでプロパティを設定することもできます。これらは、​[CloudHub にデプロイ](https://docs.mulesoft.com/cloudhub/deploying-to-cloudhub)​するときや、​[すでに実行中のアプリケーション](https://docs.mulesoft.com/cloudhub/managing-applications-on-cloudhub)​で定義できます。

環境変数またはアプリケーションプロパティを作成する手順は、次のとおりです。

1. Anypoint Platform アカウントにログインします。
2. \[Runtime Manager\] をクリックします。
3. **\[Deploy Application (アプリケーションをデプロイ)\]**​ をクリックして新しいアプリケーションをデプロイするか、実行中のアプリケーションを選択して ​**\[Manage Application (アプリケーションを管理)\]**​ をクリックします。
4. **\[Settings (設定)\]**​ セクションで ​**\[Properties (プロパティ)\]**​ タブを選択します。

詳細は、​[「Managing Applications on CloudHub (CloudHub でのアプリケーションの管理)」](https://docs.mulesoft.com/cloudhub/managing-applications-on-cloudhub)​および​[「Secure Application Properties (セキュアなセキュリティプロパティ)」](https://docs.mulesoft.com/cloudhub/secure-application-properties)​を参照してください。

## [](#properties-hierarchy)プロパティ階層

設定プロパティは上書き可能です。Mule Runtime Engine は、次の階層を使用して、同じ名前の場合に優先されるプロパティを決定します。この階層では、デプロイメントプロパティは上部にあるため、他のプロパティ種別よりも優先されます。

1. デプロイメントプロパティ
2. システムプロパティ
3. 環境プロパティ
4. アプリケーションプロパティ (設定プロパティ、セキュア設定プロパティ、および他のカスタム設定プロパティを含む)
5. グローバルプロパティ

そのため、たとえば、​`size`​ という名前の設定プロパティがシステムプロパティとして定義されていて、​`size`​ という名前のアプリケーション設定プロパティもある場合、アプリケーションの値は、最も優先度の高いプロパティ (この場合はシステムプロパティ) の値になります。

プロパティの値は、階層の上位に位置する他のプロパティから派生させることができます。そのため、アプリケーションプロパティの値は、環境プロパティ、システムプロパティ、デプロイメントプロパティから派生させることができます。システムプロパティの値は、デプロイメントプロパティから派生させることができます (以下同様)。たとえば、​`env`​ という名前のシステムプロパティがある場合、アプリケーション設定プロパティの値を ​`file.${env}.xml`​ のように設定できます。ただし、アプリケーションプロパティは、同じファイルで定義されていないアプリケーションプロパティの値に連動することはできません。たとえば、セキュア設定プロパティは設定プロパティに連動できません。

この階層構造のため、ファイルを読み込む Mule コンポーネントはアプリケーションやグローバルプロパティに連動することはできません。Mule Runtime Engine は、コンポーネントとアプリケーションプロパティを同じ階層で読み込みます。たとえば、Mule がアプリケーションプロパティを読み込む前に ​`import`​ コンポーネントを読み込むと、​`import`​ コンポーネントの読み込みが必要になった時点でプロパティが解決されていないため、デプロイは失敗します。

## [](#組み込みプロパティ)組み込みプロパティ

Mule Runtime Engine は内部のアプリケーションプロパティを定義し、Mule インスタンスとデプロイされたアプリケーションの設定に基づいて値を割り当てます。

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">プロパティ</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>app.home</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Mule アプリケーションの ​<code>/home</code>​ ディレクトリへのパス</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>app.name</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Mule アプリケーションの名前</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>domain.name</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>ドメインの名前</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>api.name</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>API の名前</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>mule.home</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Mule インスタンスの ​<code>/home</code>​ ディレクトリへのパス</p>
</div></div></td>
</tr>
</tbody>
</table>

これらのプロパティは一切上書きしないでください。Mule ではこれらの値のいくつかを内部的に使用しており、上書きすると予期しない動作が発生するおそれがあります。