

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# coreMQTT ライブラリ
<a name="coremqtt"></a>

**注記**  <a name="out-of-date-message"></a>
このページのコンテンツは最新ではない可能性があります。最新の更新については、[FreeRTOS.org ライブラリのページ](https://www.freertos.org/Documentation/03-Libraries/01-Library-overview/01-All-libraries)を参照してください。

## 序章
<a name="coremqtt-introduction"></a>

coreMQTT ライブラリは、[MQTT](https://en.wikipedia.org/wiki/MQTT) (Message Queue Telemetry Transport) 標準のクライアント実装です。MQTT 標準は軽量な公開/サブスクライブ (または [PubSub](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern)) メッセージングプロトコルを提供します。これは TCP/IP 上で動作し、マシン間 (M2M) および IoT ユースケースでよく使用されます。

coreMQTT ライブラリは、[MQTT 3.1.1](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html) プロトコル標準に準拠しています。このライブラリは、低メモリフットプリントに最適化されています。このライブラリの設計では、QoS 0 MQTT PUBLISH メッセージのみを使用するリソース制約のあるプラットフォームから、QoS 2 MQTT PUBLISH over TLS (Transport Layer Security) 接続を使用するリソース豊富なプラットフォームまで、さまざまなユースケースを取り入れています。ライブラリには組み合わせ可能な関数メニューが用意されており、特定のユースケースのニーズに正確に適合するように選択して組み合わせることができます。

ライブラリは **C** 言語で記述されており、[ISO C90](https://en.wikipedia.org/wiki/ANSI_C#C90) と [MISRA C:2012](https://misra.org.uk/product/misra-c2012-third-edition-first-revision/) に準拠するように設計されています。この MQTT ライブラリは、以下を除くライブラリには依存しません。
+ 標準 C ライブラリ
+ お客様が実装したネットワークトランスポートインターフェイス
+ (オプション) ユーザーが実装したプラットフォーム時間関数

ライブラリは、単純な送受信トランスポートインターフェイス仕様を提供することにより、基盤となるネットワークドライバーから疎結合化されます。アプリケーションライターは、既存のトランスポートインターフェイスを選択したり、アプリケーションに応じて独自のトランスポートインターフェイスを実装したりできます。

ライブラリは、MQTT ブローカーへの接続、トピックへのサブスクライブ/サブスクライブ解除、トピックへのメッセージの公開、受信メッセージの受信を行うための高レベル API を提供します。この API は、上記のトランスポートインターフェイスをパラメーターとして受け取り、それを使用して MQTT ブローカとの間でメッセージを送受信します。

ライブラリは、低レベルのシリアライザ/デシリアライザ API も公開しています。この API を使用すると、他のオーバーヘッドなしで、必要なサブセットの MQTT 機能のみで構成されるシンプルな IoT アプリケーションを構築できます。シリアライザ/デシリアライザ API は、ソケットなどの利用可能なトランスポートレイヤー API と組み合わせて使用して、ブローカとの間でメッセージを送受信できます。

IoT アプリケーションで MQTT 接続を使用する場合は、TLS プロトコルを使用するインターフェイスなど、セキュアなトランスポートインターフェイスを使用することをお勧めします。

この MQTT ライブラリには、スレッディングや同期など、プラットフォームの依存関係はありません。このライブラリには、安全にメモリを使用し、ヒープ割り当てがないことを示す[プルーフ](https://www.cprover.org/cbmc/)があります。そのため、IoT マイクロコントローラーに適しています。また、他のプラットフォームに完全に移植することもできます。無償で使用でき、[MIT オープンソースライセンス](https://freertos.org/a00114.html)に基づいて配布されます。


****  
<a name="coreMQTT-memory-estimate"></a>
<table>
<thead>
  <tr><th colspan="3">coreMQTT のコードサイズ (ARM Cortex-M 向けの GCC で生成された例)</th></tr>
  <tr><th>システム</th><th>-O1 最適化を使用</th><th>-Os 最適化を使用</th></tr>
</thead>
<tbody>
  <tr><td>core\_mqtt.c</td><td>4.0K</td><td>3.4K</td></tr>
  <tr><td>core\_mqtt\_state.c</td><td>1.7 K</td><td>1.3K</td></tr>
  <tr><td>core\_mqtt\_serializer.c</td><td>2.8K</td><td>2.2 K</td></tr>
  <tr><td>合計 (概算)</td><td>8.5K</td><td>6.9 K</td></tr>
</tbody>
</table>
