---
description: このセクションでは、EMQX 5.2以降で導入された新機能を一覧で紹介します。
---

# 新機能

このページでは、現在のリリースでサポートされている主な新機能を紹介します。EMQXが提供するすべての機能を網羅しているわけではありませんのでご注意ください。

## EMQX 6.x シリーズ

### サブスクリプションフィルター

EMQX 6.2では、MQTT 5.0クライアント向けにサブスクリプションフィルターが導入されました。サブスクライバーは、トピックフィルターの`?`の後にフィルター条件を追加します。パブリッシャーはトピックに条件を含めず、通常のトピック名を使用し、評価対象の値をMQTT 5.0 User Propertiesに含めます。メッセージのトピックとフィルター条件の両方が一致した場合にのみ、EMQXはメッセージを配信します。

例えば、サブスクリプション`sensor/+/temperature?location=roomA&value>25`は、`sensor/1/temperature`にパブリッシュされ、User Propertiesに`location=roomA`と`value=26`を含むメッセージに一致します。

#### 機能のハイライト

- **条件に一致するメッセージのみを配信**：最初にメッセージのトピックを照合し、次にUser Propertiesに対してフィルター条件を評価します。
- **柔軟なフィルター式**：等価演算子と数値比較演算子を使用でき、`&`で複数の条件を組み合わせることができます。
- **ネットワークおよびクライアント負荷の軽減**：サブスクライバーの条件に一致しないメッセージがクライアントへ配信されるのを防ぎます。
- **オプトインと後方互換性**：`mqtt.subscription_message_filter`で機能を制御します。この機能はデフォルトで無効です。無効の場合、EMQXは`?`をトピックフィルターの一部として扱います。
- **組み込みの可観測性**：フィルター条件の不一致は、理由`subscription_filter`の`delivery.dropped`イベントとして報告され、`delivery.dropped.filter`メトリクスで集計されます。

詳細は[サブスクリプションフィルターのドキュメント](../develop/subscription-filter/subscription-filter-concept.md)をご参照ください。

### MQTT Streams

MQTT Streamsは、EMQXに永続的でリプレイ可能なストリーミングモデルを導入し、MQTTのリアルタイムなパブリッシュ／サブスクライブのパラダイムを拡張して、耐久性のあるメッセージストレージとコンシューマー制御のリプレイ機能を実現します。

従来のMQTT配信は一時的でサブスクライバーの可用性に依存しますが、MQTT Streamsはトピックフィルターにマッチするメッセージを継続的にキャプチャし、名前付きの永続ストリームに保存します。各ストリームは固有の名前で識別され、トピックフィルターとは独立して管理されます。

コンシューマーは`$stream/<name>`または`$stream/<name>/<topic_filter>`形式でサブスクライブします。リプレイの開始位置はMQTT 5のサブスクリプションプロパティ`stream-offset`で指定でき、クライアントは特定のタイムスタンプや`earliest`、`latest`など任意の位置から過去のメッセージをリプレイ可能です。

これにより、外部のストリーミングシステムを必要とせずに、EMQXがネイティブに過去メッセージのリプレイ、イベントトレース、保存メッセージに基づく状態復旧をサポートします。

#### 機能のハイライト

- **耐久的なメッセージストリーム**：MQTTメッセージを明示的に名前付けされたストリームに永続化し、保持ポリシーを設定可能。
- **オフセットベースのリプレイ**：`stream-offset`サブスクリプションプロパティでリプレイ位置をコンシューマーが制御。
- **通常ストリームと最終値ストリーム**：フルイベントストリームと、最終値セマンティクス有効時にはキーごとに最新メッセージのみを保持する圧縮ストリームをサポート。
- **キー単位の順序保証**：同じストリームキーを持つメッセージは厳密にパブリッシュ順に配信。
- **MQTTネイティブ設計**：既存のMQTTパブリッシャーやクライアントの変更は不要。

MQTT Streamsにより、EMQXはリアルタイムメッセージングとストリーム処理の両方に適し、アーキテクチャの複雑さを軽減し、新たなIoTやイベント駆動型アプリケーションの実現を可能にします。

詳細は[MQTT Streamsドキュメント](../develop/mqtt-stream/mqtt-stream-concept.md)をご参照ください。

### Message Queue

Message Queueは、EMQX内で信頼性の高いリアルタイムMQTTパブリッシュ／サブスクライブと非同期メッセージキューイングを統合し、外部キューイングサービスを不要にします。

従来のMQTTはサブスクライバーの可用性に依存しますが、Message Queueはサーバー側でメッセージをバッファリングし、パブリッシャーとサブスクライバーを切り離します。設定されたトピックフィルターにマッチするメッセージは名前付きキューに永続的に保存され、`$queue/<name>`または`$queue/<name>/<topic_filter>`形式で後から消費可能です。

各キューはトピックフィルターではなく固有の名前で明示的に識別されるため、フィルタリングルールとは独立して管理、監視、アクセスが可能です。

> Message Queueが有効な場合、`$queue/`プレフィックスはMessage Queueのサブスクリプション用に予約され、共有サブスクリプションには使用できなくなります。

![message_queue_routing_overview](./assets/message_queue_routing_overview.png)

この機能により、MQTTはリアルタイムと遅延処理の両方を扱えるようになり、KafkaやRabbitMQのような外部キューイングシステムを不要にしてIoTシステムのアーキテクチャを簡素化します。メッセージの耐久性、信頼性の高い配信、オフラインバッファリングが重要なシナリオに最適です。

#### 機能のハイライト
- **名前付き永続キュー**：明示的に名前付けされたキューにメッセージを保存し、動作を設定可能。
- **デリバリーの切り離し**：サーバー側バッファリングによりパブリッシャーとサブスクライバーを完全に切り離し。
- **オフライン保存**：サブスクライバーが切断されていてもメッセージを保持。
- **最終値保持**：キー（例：デバイスID）ごとに最新メッセージのみを保持するオプション。センサーの高速変化データに最適。
- **柔軟なディスパッチ戦略**：ランダム、ラウンドロビン、最小インフライトサブスクライバーから選択可能で効率的な配信を実現。
- **配信保証**：永続化ストレージとQoS 1配信をサポートし、データ損失を防止。

詳細は[Message Queueドキュメント](../develop/message-queue/message-queue-concept.md)をご覧ください。

### ネームスペース付きロールによるマルチテナンシー

EMQX 6.0.0では、[マルチテナンシー](../guides/multi-tenancy/namespace-overview.md)と大規模IoT展開におけるアクセス制御を強化するためにネームスペース付きロールを導入しました。この機能により、ユーザーは特定のネームスペースに割り当てられ、ルール、コネクター、アクションなどのリソースを他のテナントに影響を与えずに管理できます。

ネームスペース付きロールは、管理者や閲覧者などの細かな権限をサポートし、ダッシュボード、API、CLIから管理可能です。これによりチームや部署、顧客間での責任分担を容易にし、安全な分離を実現します。

#### 機能のハイライト
- **安全な分離**：ユーザーは割り当てられたネームスペース内のリソースのみアクセス・管理可能（例：`ns:team_a::administrator`）。
- **細かなアクセス制御**：ネームスペースユーザーはネームスペース固有リソースにフルアクセス可能だが、クラスター全体の設定はグローバル管理者権限がない限り読み取り専用。
- **運用の簡素化**：ユーザー作成時にロールを簡単に作成・割り当て可能。
- **企業向けスケーラビリティ**：マルチテナントMQTTサービス提供や内部事業部門の分離管理に最適。

#### 追加の改善点
- **観測性の向上**：ダッシュボードの表示はネームスペースごとにフィルタリングされ、集中管理が容易に。
- **セッショントラッキングの最適化**：ネームスペース別セッション数は1,000未満ならオンデマンド更新、そうでなければ5秒ごとに更新し、パフォーマンスと精度を向上。

詳細な手順は[ネームスペース付きロールのユーザー作成](../guides/dashboard/system.md#create-a-user-with-a-namespaced-role)をご参照ください。

### 最適化された耐久ストレージ

EMQX 6.0.0では耐久ストレージの性能とスケーラビリティを大幅に改善しました。セッションデータを他のブローカーメタデータから分離することで、RAM消費を削減し、ストレージ効率を向上。ノードあたりの接続数を増やせるようになりました。

#### 最適化されたRocksDBパラメータ

新しい設定オプションによりメモリと性能を細かく制御可能です：

- `durable_storage.messages.rocksdb.write_buffer_size`：シャードごとのメムテーブルサイズを制御。
- `durable_storage.messages.rocksdb.cache_size`：シャードごとのブロックキャッシュサイズを設定。
- `durable_storage.messages.rocksdb.max_open_files`：シャードごとのファイルディスクリプタ数を制限。
- `durable_storage.messages.layout.wildcard_thresholds`：ストレージレイアウトにおけるワイルドカード処理を最適化。

#### 追加の改善点

- **効率的なシリアライズ**：デフォルトのシリアライズ形式をASN.1に変更し、ストレージサイズ削減と処理速度向上を実現。
- **高速アクセスと低オーバーヘッド**：改善されたストレージレイアウトによりメッセージ取得が高速化し、ディスクとメモリのオーバーヘッドを低減。

これらの改善により、EMQXは大規模かつ永続的なMQTTワークロードを安定した性能で処理可能になりました。

### データ統合のサポート拡充

EMQX 6.0.0はデータ統合機能をさらに強化し、MQTTデータを最新のクラウドやデータベースエコシステムとシームレスに連携し、リアルタイム分析、処理、保存を可能にします。

#### 新規統合

EMQX 6.0.0で新たに追加された統合：

- **[Google BigQuery](../develop/data-integration/bigquery.md)**：大規模データウェアハウスと高度なクエリのためにMQTTデータをBigQueryと連携し、膨大なIoTデータセットから洞察を得る。
- **[AWS AlloyDB](../develop/data-integration/alloydb.md)**、**[CockroachDB](../develop/data-integration/cockroachdb.md)**、**[AWS Redshift](../develop/data-integration/redshift.md)**：高性能データベースへのMQTTデータストリーミングを実現し、リアルタイム分析とスケーラブルな保存に最適。エンタープライズグレードのIoT分析に適合。

#### 既存統合の強化

新規統合に加え、EMQX 6.0.0は既存統合の性能、使いやすさ、クラウドネイティブ対応を向上：

- **Snowflake Snowpipe Streaming**：Snowflakeのプレビュー機能であるSnowpipe Streamingによる低レイテンシデータ取り込みをサポート（AWSホストアカウント向け）。
- **RocketMQアクション**：`key`および`tag`テンプレートのサポート追加と、柔軟なメッセージルーティングとメタデータ付加のための`key_dispatch`戦略を追加。
- **AWS S3およびAWS S3 Tablesコネクター**：`access_key_id`と`secret_access_key`がオプション化され、AWSホスト環境ではEC2インスタンスメタデータサービスv2 APIから自動取得可能に。
- **RabbitMQシンク**：ヘッダーおよびプロパティテンプレートのカスタマイズが可能になり、RabbitMQ内でのメッセージルーティングと互換性を強化。

### その他の強化

#### 高度なLLMベースのMQTTデータ処理

EMQX 6.0.0は、OpenAIやAnthropic Claudeに加え、[Google Geminiモデル](../develop/flow-designer/gemini-node-quick-start.md)のサポートを追加し、LLMベースのデータ処理を強化しました。

#### LDAPサポートの強化

LDAP認可はJSON形式の拡張ACLルールをサポートし、LDAP認証はLDAPから直接ACLルールを取得し、クライアント側でキャッシュ可能になりました。

#### トレース機能の改善

最大トレース数（`trace.max_traces`）とトレースファイルサイズ（`trace.max_file_size`）の設定が可能に。`max_file_size`に達するとトレースログは停止せず新しいファイルにローテーションされます。

#### クラスター管理

新しい`cluster.description`設定オプションにより、EMQXダッシュボードでカスタムクラスター説明を設定・表示可能になりました。ダッシュボードでの設定方法は[ダッシュボード -> 管理 -> クラスター設定](../guides/dashboard/cluster_settings.md#cluster)をご覧ください。

### その他の機能

上記のハイライトに加え、最近のEMQXアップデートには多くの新機能と改善が含まれています。完全な一覧は[リリースノート](../release-notes/changes-ee-v6.md)をご参照ください。

### 破壊的変更

非推奨事項や破壊的変更の詳細については、[EMQX 5.xとEMQX 6.0の互換性のない変更](../../en_US/release-notes/breaking-changes-6.0.0.md)をご覧ください。

## EMQX 5.xシリーズ

EMQX 5.xの機能および更新の完全な一覧については、[EMQX 5.10ドキュメント – 新機能](https://docs.emqx.com/en/emqx/v5.10/getting-started/new-features.html)をご参照ください。
