# ネームスペースの作成

EMQXでは、ネームスペースを作成する方法として明示的作成と自動作成の2種類があります。これらの方法を使い分けることで、ニーズに応じて柔軟にネームスペースを作成できます。

- **明示的作成**は、厳密に管理された環境に適しています。
- **自動作成**は、手動操作を減らして動的かつ大規模なデプロイメントに適しています。

EMQX 6.3.0以降、`multi_tenancy.deny_namespaces`にリストされている名前は、いずれの作成方法でも使用できません。デフォルトリストおよび設定方法については、[Denied Namespace Names](./namespace-global-settings.md#denied-namespace-names)を参照してください。

## ネームスペースを明示的に作成する

ネームスペースは、ダッシュボードまたはREST APIを通じて手動で作成できます。明示的に作成されたネームスペースは、直接管理・編集・削除が可能です。

**ユースケース**：どのネームスペースが存在するかを明確に管理し、細かく制御したい場合に推奨されます。

### ダッシュボードでネームスペースを作成する

ダッシュボードでネームスペースを素早く作成する手順は以下の通りです。

1. ダッシュボード左メニューの **Management** -> **Namespace** に移動します。
2. **Create** をクリックし、表示される **Create Namespace** ダイアログでネームスペース名を入力します。他のオプションはデフォルトのままで構いません。最大セッション数やレート制限の設定詳細は、[Configure and Manage Namespaces via Dashboard](./configure-manage-namespace.md)を参照してください。
3. **Create** をクリックすると、新しく作成されたネームスペースがリストに表示されます。

### REST APIでネームスペースを作成する

ネームスペース固有の設定を適用する前に、以下のAPIを使って明示的にネームスペースを作成する必要があります。

```
POST /mt/ns/<namespace>
```

`<namespace>`は作成したいネームスペースIDに置き換えてください。リクエストボディは不要です。

名前が`multi_tenancy.deny_namespaces`に含まれている場合、EMQXはHTTP 400でリクエストを拒否します。

## ネームスペースを自動で作成する

EMQXでは、クライアントが接続した際にネームスペースを自動的に作成することも可能です。

自動作成は直接`client_attrs.tns`フィールドに基づくものではなく、**[Take Namespace From](./namespace-global-settings)** 設定に依存します。

クライアントが接続すると、EMQXは設定された **Take Namespace From** ルールに従ってクライアント接続メタデータから`tns`（テナントネームスペース）属性を導出します。導出された名前が`multi_tenancy.deny_namespaces`に含まれている場合、EMQXは`not_authorized`で接続を拒否します。そうでなければ、自動作成が許可されており該当ネームスペースが存在しない場合に限り、EMQXが自動的にネームスペースを作成します。

**典型的なユースケース**：クライアント接続が信頼できるソースから発生し、ネームスペース識別子を接続メタデータから確実に導出できる場合や、多数のテナントや事業単位のために動的にネームスペースを作成する必要がある場合に適しています。

::: tip 注意

自動作成されたネームスペースは読み取り専用であり、ダッシュボード上で編集できません。

これらのネームスペースの設定（セッション制限やレート制限など）も変更できません。自動作成はネームスペースソースルールに基づいて生成されるためです。

:::

::: tip 注意

自動ネームスペース作成は、`multi_tenancy.allow_only_managed_namespaces = false` の場合にのみ許可されます。

この設定が`true`の場合、明示的に作成されたネームスペースのみが許可され、自動作成は無効になります。

この動作はダッシュボードの **[Allow Only Explicitly Created Namespaces](./namespace-global-settings.md#allow-only-explicitly-created-namespaces)** 設定からも制御可能です。

:::
