Web of Things(WoT)アーキテクチャ 1.1

W3C勧告

この文書の詳細
このバージョン:
https://www.w3.org/TR/2023/REC-wot-architecture11-20231205/
最新公開バージョン:
https://www.w3.org/TR/wot-architecture11/
最新編集者草案:
https://w3c.github.io/wot-architecture/
履歴:
https://www.w3.org/standards/history/wot-architecture11/
コミット 履歴
実装報告:
https://w3c.github.io/wot-architecture/testing/report11.html
編集者:
Michael LagallyOracle Corp.
Ryuichi MatsukuraFujitsu Ltd.
Michael McCoolIntel Corp.
Kunihiko ToumuraHitachi, Ltd.
以前の編集者:
Kazuo Kajimoto(当時 Panasonic Corp.)
Toru KawaguchiPanasonic Corp.
Matthias KovatschHuawei
フィードバック:
GitHub w3c/wot-architectureプル リクエスト 新しい課題未解決の 課題
public-wot-wg@w3.org 宛に、件名行を [wot-architecture11] … メッセージのトピック … として送信してください(アーカイブ
正誤表:
正誤表が あります
以前の勧告
https://www.w3.org/TR/2020/REC-wot-architecture-20200409/
貢献者
GitHubリポジトリ内
リポジトリ
GitHubで 公開しています
バグを 報告

翻訳も参照してください。


要約

W3C Web of Things(WoT)は、IoTプラットフォーム およびアプリケーション領域を横断する相互運用性を可能にします。WoTの目標は、既存の IoT標準およびソリューションを維持し、 補完することです。 W3C WoT アーキテクチャは、存在するものを記述するように設計されており、必要な場合にのみ 新しい仕組みを規定します。

このWoTアーキテクチャ仕様は、 W3C Web of Thingsの抽象アーキテクチャを記述します。この 抽象アーキテクチャは、複数のアプリケーション領域のユースケースから 導出された要件に基づいています。 いくつかのモジュール式の構成要素が特定され、その詳細な 仕様は他の文書で示されています。この文書は、 これらの構成要素がどのように関連し、連携して機能するかを 記述します。WoT抽象アーキテクチャは、 さまざまな具体的な配備シナリオに対応付けることができる基本的な 概念的枠組みを定義し、その例もいくつか 示します。ただし、この仕様で記述される抽象アーキテクチャ 自体は、具体的な仕組みを定義したり、 具体的な実装を規定したりするものではありません。

この文書のステータス

この節は、この文書の公開時点における ステータスを説明します。現在のW3C 公開物の一覧および この技術報告書の最新改訂版は、 https://www.w3.org/TR/ にある W3C技術報告書 索引で確認できます。

この文書は抽象アーキテクチャを記述します。ただし、 W3C Web of Things アーキテクチャに従う具体的な実装の集合を記述する 実装 報告があります。また、各種WoT構成要素に関する 他の実装報告も参照しています。

この仕様の将来の更新では、 新機能が組み込まれる可能性があります。

この文書は、Web of Things作業 グループにより、勧告 トラックを用いて勧告として公開されました。

W3Cは、 Webの標準としてこの仕様を広く配備することを 推奨します。

W3C 勧告とは、広範な合意形成の後に W3Cおよびその会員によって承認され、 実装に対する ロイヤリティフリーライセンスへの作業グループメンバーからの コミットメントを有する仕様です。

この文書は、 W3C 特許ポリシーの下で運営されるグループによって作成されました。 W3Cは、 グループの成果物に関連して行われた すべての 特許開示の公開リストを維持しています。このページには、 特許を開示するための手順も含まれています。 その個人が必須 クレームを含むと考える特許について実際の知識を有する個人は、 W3C 特許ポリシー第6節に従って 情報を開示しなければなりません。

この文書は、2023年11月03日版 W3Cプロセス 文書に準拠します。

1. はじめに

この節は非規範的です。

Web of Things(WoT)の目標は、 Internet of Things(IoT)の相互運用性と使いやすさを 向上させることです。長年にわたる多数の関係者を含む 協力を通じて、これらの課題への対応に役立つ いくつかの構成要素が特定されました。

30件を超えるWoTユースケースの集合が、 複数の産業の関係者から、さまざまなアプリケーション 領域について提供されました。これらは収集され、 WoT Use Cases and Requirements https://www.w3.org/TR/wot-usecases/ 文書で公開されました。

ユースケースの集合は、次の2つの カテゴリーに分類されます。

これらのユースケースと要件は、 W3C WoT仕様 ファミリーの作成とさらなる進化を推進します。

WoTアーキテクチャ仕様は、 W3C WoT 標準化の範囲に焦点を当てています。この範囲は、 これらの構成要素、およびそれらがどのように 関連するかを定義する抽象アーキテクチャに 分解できます。

アーキテクチャ文書は複数の目的を果たします。

構成要素は、別個の仕様で定義され、詳細に 記述されています。この仕様は、抽象 アーキテクチャならびにその用語および概念的枠組みを 定義することに加えて、WoT構成要素への導入としても 機能し、それらの相互動作を説明します。

この仕様はまた、WoTシステムの配備に関する非規範的な アーキテクチャ上の側面および条件も扱います。これらの ガイドラインは、配備シナリオの例の文脈で記述されますが、 この仕様は特定の具体的な実装を要求するものではありません。

この仕様は、W3C WoT 仕様の包括的な文書として機能し、 W3C Web of Thingsの 用語や基礎となる抽象アーキテクチャなどの基本を 定義します。要約すると、この仕様の目的は次を提供することです。

追加の要件、ユースケース、概念的機能、および 新しい構成要素は、将来の版の WoT Use Cases and Requirement https://www.w3.org/TR/wot-usecases/ 文書に収集されます。

2. 適合性

非規範的と記された節と同様に、この仕様におけるすべての 作成ガイドライン、図、例、および注記は非規範的です。 この仕様におけるその他すべては規範的です。

この文書におけるキーワードMAYMUSTMUST NOTSHOULD、およびSHOULD NOTは、ここに示すようにすべて大文字で現れる場合に限り、 BCP 14 [RFC2119] [RFC8174]に 記述されているように解釈されるものとします。

3. 用語

この節は非規範的です。

この仕様は、ここで定義される次の用語を使用します。 WoT接頭辞は、Web of Thingsの概念のために特に (再)定義される用語の曖昧さを避けるために使用されます。

定義が他のWoT文書で使用される用語と競合する場合は、 WoT Architectureの定義が優先されます。

Action
Thingの機能を呼び出すことを可能にする Interaction Affordanceです。この機能は状態を操作する (例: ランプをオンまたはオフに切り替える)か、Thing上の プロセスをトリガーします(例: 時間をかけてランプを暗くする)。
Anonymous TD
ユーザー定義の識別子(id属性)を持たない Thing Descriptionです。
Connected Device
Deviceの同義語です。
Binding Templates
Thing Descriptionを特定のプロトコル、データペイロード 形式、またはその両方を特定の方法で組み合わせるIoTプラットフォームで 使用できるようにする、再利用可能な設計図の集合です。 これは、追加の記述語彙、Thing Models、および ThingsとConsumersの実装者の双方を導くことを目的とした 例によって行われます。
Consumed Thing
ローカルアプリケーションによって使用されるリモートThingを 表すソフトウェア抽象です。この抽象は、ネイティブWoT Runtimeに よって作成される場合も、WoT Scripting APIを通じてオブジェクトとして インスタンス化される場合もあります。
Content Type
メッセージ本体の形式を示す識別子です。media typeおよび MIME typeとしても知られています [RFC2046]。
Consuming a Thing
TD文書を解析および処理し、それからローカル実行時環境における アプリケーションのインターフェースとしてConsumed Thingソフトウェア抽象を 作成することです。
Consumer
WoT Thing Descriptions(そのJSONベースの表現形式を含む)を 処理し、Thingsと相互作用できるエンティティです(すなわち、 Thingsをconsumeします)。
Data Schema
Data schemaは、インタラクション中にThingsConsumersの間で渡される 情報モデル、関連するペイロード構造、および対応するデータ項目を 記述します。
Device
Deviceは、ネットワークインターフェースを持つ物理エンティティです。 DevicesはThing Descriptionによって記述でき、 Thingの一種です。 Connected Deviceの同義語です。 Serviceと比較してください。
Digital Twin
デジタルツインは、クラウドまたはエッジノード上に存在する Virtual Thingの一種です。 Digital Twinsは、継続的にオンラインでない可能性がある実世界の デバイスを表し、それらにネットワークインターフェースを提供するために 使用される場合があります(Shadowsも参照)。 また、実デバイスに配備される前に新しいアプリケーションやサービスの シミュレーションを実行できる場合があり、過去の状態または振る舞いの 履歴を維持できる場合があり、将来の状態または振る舞いを予測できる 場合があります。Digital Twinsは通常、単純な Shadowsより多くの機能を持ちます。
Directory
他のService を記述するデータまたはメタデータの集合を維持する Services またはThingsです。 例として、 WoT Thing Description Directoryが挙げられます。
Discovery
ネットワーク上で、ローカルまたはリモートに WoT Thing Descriptionsを配布しアクセスするためにWoTが定義する メカニズムです。
Discoverer
WoT Discoveryプロセスのクライアントとして動作し、 Thing Descriptionを発見および取得する エンティティです。たとえば、 Thing Description Directory探索サービスを紹介されて検索すること、 またはThing上のwell-knownエンドポイントから Thing Description を直接取得することによります。
Domain-specific Vocabulary
WoT Thing Descriptionで使用できるが、 W3C WoTによって定義されていない Linked Data語彙です。
Edge Device
企業またはサービスプロバイダーのコアネットワークへの 入口点を提供するデバイスです。例として、ハブ、 ゲートウェイ、ルーター、スイッチ、マルチプレクサー、 およびその他さまざまなアクセスデバイスがあります。
Enriched TD
記録管理およびDiscoveryのための追加属性が埋め込まれた Thing Descriptionです。
Event
イベントソースを記述するInteraction Affordanceです。 これはイベントデータをConsumersへ非同期にプッシュします (例: 過熱警告)。
Exploration
1つ以上のThing Descriptionsの形式で詳細なメタデータへの アクセスを提供するDiscoveryメカニズムです。Explorationメカニズムは 一般にセキュリティメカニズムによって保護され、許可されたユーザーだけが アクセスできます。
Exposed Thing
リモートConsumersがネットワーク越しにアクセスできるローカルにホストされた Thingを表すソフトウェア抽象です。この抽象は、ネイティブWoT Runtimeによって作成される場合も、WoT Scripting APIを通じて オブジェクトとしてインスタンス化される場合もあります。
Exposing a Thing
Thingの状態を管理し、振る舞いの実装とのインターフェースを 提供するために、ローカル実行時環境内にExposed Thing ソフトウェア抽象を作成することです。
Hypermedia Control
ハイパーメディアにおけるProtocol Bindingの直列化です。 すなわち、ナビゲーションのためのWebリンク [RFC8288]、または 他の操作を実行するためのWebフォームのいずれかです。 フォームは、Consumerによって補完され送信される、Thingが提供する リクエストテンプレートと見ることができます。
Interaction Affordance
Thingのメタデータであり、Consumersに可能な選択肢を示し、 記述することで、ConsumersがThingとどのように相互作用できるかを 示唆します。潜在的なアフォーダンスには多くの種類がありますが、 W3C WoTは Properties、Actions、Eventsという3種類のInteraction Affordancesを 定義します。4番目のInteraction Affordanceはナビゲーションであり、 これはリンクを通じてWebですでに利用可能です。
Interaction Model
アプリケーションの意図から具体的なプロトコル操作への対応付けを 形式化し、範囲を狭める中間抽象です。 W3C WoTでは、 定義されたInteraction Affordancesの集合がInteraction Modelを構成します。
Intermediary
ConsumersとThingsの間に存在し、Thingsをプロキシ、 拡張、または合成し、元のThingではなくIntermediary上の WoT Interfaceを指すWoT Thing Descriptionを再公開できる エンティティです。Consumersにとって、IntermediaryはRESTの Layered System制約に従い、Thingと区別できない場合があります。
Introduction
結果としてExplorationメカニズムを参照するURLを返す、 「最初の接触」のDiscoveryメカニズムです。Introductionメカニズム 自体はメタデータを直接提供すべきではなく、一般にオープンであるように 設計されています。
IoT Platform
OCF、oneM2M、Mozilla Project Thingsなど、 アプリケーション向けAPI、データモデル、およびプロトコルまたは プロトコル設定について独自の仕様を持つ特定のIoTエコシステムです。
Metadata
エンティティの抽象的な特性の記述を提供するデータです。 たとえば、Thing DescriptionThingのMetadataです。
Personally Identifiable Information (PII)
その情報が関係する自然人を識別するために使用できる情報、 または自然人に直接または間接的に結び付けられている、もしくは 結び付けられる可能性のあるあらゆる情報です。 [ISO-IEC-29100]と 同じ定義を使用します。
Orchestration
Thingsの集合の振る舞いを自動化することです。 Orchestrationは、個々のThingsを規則またはサービスと組み合わせて、 新しいサービスまたは仮想Thingにします。
Partial TD
Partial TDは、TD 情報モデルと同じ階層構造に従うオブジェクトですが、 すべての必須要素を含む必要はありません。

注: Partial TDの使用例は WoT Scripting APIにあり、 そこではExposed Thingsの作成の入力として使用されます。

Privacy
個人に関するデータの不当または違法な収集および使用に起因する場合に、 個人の私生活または私的な事柄への侵害から自由であることです。 [ISO-IEC-2382]と 同じ定義を使用します。 Personally Identifiable InformationおよびSecurity、ならびに [ISO-IEC-29100]にある その他の関連定義も参照してください。
Private Security Data
Private Security Dataは、Thingの Security Configurationのうち、秘密に保たれ、他のデバイスや ユーザーと共有されない構成要素です。例としてPKIシステムの 秘密鍵が挙げられます。理想的には、このようなデータは アプリケーションからアクセスできない別個のメモリに格納され、 署名など、秘密情報をそれを使用するアプリケーションに対してさえ 明らかにしない抽象操作を介してのみ使用されます。
Producer
特定のThingについてWoT Thing Descriptionsを作成できる エンティティです。
Profile
主張の集合を提供する技術仕様です。その主張に適合する 任意のConsumerは、 同じくそれらの主張に適合する任意の Thingと、 すぐに相互運用可能です。
Property
Thingの状態を公開するInteraction Affordanceです。 この状態は取得(read)でき、任意で更新(write)できます。 Thingsは、状態変更についてConsumersに通知することで、 Propertiesをobservableにすることも選択できます。
Protocol Binding
Interaction Affordanceから特定のプロトコルの具体的な メッセージへの対応付けです。これにより、 ConsumersInteraction Affordanceを有効化する方法を知らせます。 W3C WoTは Protocol Bindingsをハイパーメディア制御として 直列化します。
Public Security Metadata
Public Security Metadataは、Thingの Security Configurationのうち、Thingにアクセスするために必要な セキュリティメカニズムおよびアクセス権を記述する構成要素です。 これは秘密情報や具体的なデータ(公開鍵を含む)を一切含まず、 それ自体でThingへのアクセスを提供するものではありません。 代わりに、許可されたユーザーがアクセスを取得できるメカニズムを、 そのユーザーがどのように自身を認証しなければならないかを含めて 記述します。
Registrant
Thing Description DirectoryThing Description を登録するエンティティです。このエンティティは、登録された Thing Descriptionが 記述するThing である場合も、そうでない場合もあります。
Security
情報の機密性、完全性、および可用性を保持することです。 真正性、責任追跡性、否認防止、および信頼性などの性質も 関与する場合があります。この定義は、 [ISO-IEC-27000]における Information Securityの定義から適応したものです。 同文書には、言及したより具体的な各性質の追加定義も 含まれています。その他の関連定義については、この文書を 参照してください。さらに、これらの性質は通常運用時と、 システムが攻撃を受けている時の両方で維持されることが 望ましいことを付記します。
Security Configuration
Public Security Metadata、Private Security Data、および Thingのセキュリティメカニズムを運用上設定するために必要な その他の設定情報(公開鍵など)の組み合わせです。
Service
Serviceは、ネットワークインターフェースを持つソフトウェア エンティティです。ServicesはThing Descriptionによって 記述でき、Thingの一種です。 Virtual Thingも参照してください。 Deviceと比較してください。
Servient
WoT構成要素を実装するソフトウェアスタックです。 ServientはThingsをホストして公開すること、または ThingsをconsumeするConsumersをホストすること、あるいはその両方ができます。 Servientsは、異なるIoTプラットフォームとの相互作用を可能にするために、 複数のProtocol Bindingsをサポートできます。
Shadow
Shadowは、状態のコピーを維持し、別の Thingとの相互作用を仲介する Virtual Thingです。 Shadowは、それが表すThingの状態との結果整合性を 達成することを目的とします。Shadowが単に状態をミラーリングする以上の 機能を持つ場合は、Digital Twinと呼ぶ方が 適切な場合があります。
Subprotocol
相互作用を成功させるために既知でなければならない、 トランスポートプロトコルへの拡張メカニズムです。 例としてHTTPのロングポーリングがあります。
System
複数の相互作用する構成要素から成るエンティティです。
TD
WoT Thing Descriptionの略です。
TDD
WoT Thing Description Directoryの略です。
TD Vocabulary
WoT Binding Templatesの通信メタデータを含め、 WoT Thing DescriptionにおけるThingsのメタデータにタグ付けするために W3C WoTによって管理される Linked Data語彙です。
TD Context Extension
JSON-LD[JSON-LD11]で指定される @contextを使用して、追加の Vocabulary TermsThing Descriptionsを 拡張するためのメカニズムです。これは、セマンティック注釈および Protocol Bindings、Security Schemes、Data Schemasなどの 中核メカニズムへの拡張の基礎です。
TD Server
Thing Description Serverの略です。
Thingまたは Web Thing
物理エンティティまたは仮想エンティティの抽象です。 そのメタデータおよびインターフェースはWoT Thing Descriptionによって 記述されます。一方で、仮想エンティティは1つ以上のThingsの 合成です。
Thing Description Directory
TDsのためのディレクトリーサービスであり、TDsを登録し、 (JSONPathまたはSPARQLクエリを使用するなどして)検索するための Webインターフェースを提供します。推奨APIおよび機能集合は [WOT-DISCOVERY]で 定義されており、 WoT Discovery プロセスの任意の部分として使用されます。
TD Fragment
TD Fragmentは、TDのデータモデルの部分構造です。 これは、Thing Description仕様の第5章で定義されるTD情報モデルの一部に対して 構文的に検証可能な、有効なオブジェクト構造ですが、 完全な検証を可能にする一部の文脈を省略する場合があります。
Thing Description Server
Thing Description Serverは、URLによってアドレス指定される Webリソースであり、アクセスされたときにThing Descriptionを 提供できます。その要件は[WOT-DISCOVERY]で 定義されており、 WoT Discovery プロセスの任意の部分として使用されます。
Thing Model
Thing Modelは、 同じ能力を持つThingsのクラスを記述するものです。 それは、PropertiesActions、およびEventsと、 Thingsのグループ全体で共有される 共通メタデータを記述します。Thing Descriptionと比較すると、 Thing ModelはThingインスタンスを識別したり相互作用したりするための 十分な情報を含みません。
Transport Protocol
アプリケーション固有の要件や、オプションまたはサブプロトコル メカニズムに対する制約を持たない、基礎となる標準化された アプリケーション層プロトコルです。例としてHTTP、CoAP、 MQTTがあります。
Trusted Environment
共通の保護されたネットワーク上で、互いの同一性に関する主張を 証明なしに真正であると仮定し、相互に比較的制限のない アクセスを許可するデバイスの集合です。
Virtual Thing
1つ以上の他のThingsを表し、その機能を拡張し、 それらに改良されたインターフェースを提供し、またはそれらの代わりを 務めるService です。 Virtual ThingはしばしばIntermediaryとして動作します。 例としてShadows およびDigital Twinsがあります。
Vocabulary
名前空間IRIによって識別される Vocabulary Termsの集合です。
TermおよびVocabulary Term
文字列です。TermVocabularyの一部である場合、 すなわち名前空間IRI[RFC3987]が 接頭辞として付与されている場合、それは Vocabulary Termと呼ばれます。 読みやすさのため、この文書に現れる Vocabulary Termsは、 常に完全なIRIではなくコンパクトな形式で記述されます。
WoT Interface
WoT Thing Descriptionによって記述されるThingの ネットワーク向けインターフェースです。
WoT Profile
Profileの同義語です。
WoT Runtime
アプリケーションの実行環境を維持し、Thingsを公開またはconsumeし、 WoT Thing Descriptionsを処理し、Security Configurationsを維持し、 Protocol Binding実装とインターフェースできる実行時システムです。 WoT Runtimeは、カスタムAPIを持つ場合も、任意の WoT Scripting APIを使用する場合もあります。
WoT Scripting API
WoT Runtimeで実行される振る舞いやアプリケーションの実装を容易にするために、 Servientによって提供されるアプリケーション向けプログラミング インターフェースです。これはWebブラウザーAPIに相当します。 WoT Scripting APIは、W3C WoTにおける 任意の構成要素です。
WoT Servient
Servientの同義語です。
WoT Thing Descriptionまたは Thing Description
Thingを記述する構造化データです。WoT Thing Descriptionは、一般メタデータ、領域固有メタデータ、 Interaction Affordances(サポートされるProtocol Bindingsを含む)、 および関連するThingsへのリンクで構成されます。 WoT Thing Description形式は、 W3C WoTの中心的な構成要素です。

3.1 デバイスカテゴリー

WoT Abstract Architectureに適合するWoTの配備では、 さまざまな種類のデバイスが見られます。それらは(フットプリントと 能力の順に並べると)小さな組み込みnodeデバイスから、 gatewaysまたはhubs、強力な edgeデバイスおよびcloudサーバーまで 及びます。これらのデバイス間の相互運用性は、中核となる 機能および能力の集合が、それらのすべてで 利用可能であることを意味します。

次のデバイスカテゴリーは、これらのクラスの典型的な代表例の フットプリントおよび特性を記述します。これは、これらの デバイスクラスに対して可能な機能およびユースケースを 特定するために使用されます。

これらのカテゴリーは、制約付きデバイスについてIETF [RFC7228]が 定義したクラスと整合しています。ただし、クラスはより大きな デバイスにまで拡張され、RAMおよびFlash/ROMの典型的なサイズの 境界が提供されています。メモリおよびストレージサイズは、 性能よりも定量化しやすく、またより制約となりやすいため、 これがこの分類の基礎となります。これは厳密な分類では ありません。カテゴリーは重複する場合があり、すべてのメモリが ユーザーアプリケーションで利用できるとは限りません。

カテゴリー データサイズ(RAM) コードサイズ(Flash、ROM、...) 典型的な代表例 備考、典型的なアプリケーションシナリオ
Class-0, C0 << 10 KiB << 100 KiB 小さなフットプリントのマイクロコントローラー 安全な通信を持たないセンサーノード
Class-1, C1 ~ 10 KiB ~ 100 KiB マイクロコントローラー TLS、DTLSなどの安全な通信プロトコルを通常サポートする センサー
Class-2, C2 ~ 64 KiB ~ 256 KiB 接続された制限付きデバイス M2M通信ノード、スマートメーター、センサーノード、 その他の組み込み機器、家電、ローエンドTVセットトップボックス、 販売時点情報管理端末などの小型組み込みデバイスが例です。
Class-3, C3 ~ 64-256 KiB ~ 256 KiB - several MBs ISPゲートウェイ 小型の家庭用および産業用ゲートウェイ
Class-4, C4 ~ 256 KiB - several MB ~ 1 MB - several MB ゲートウェイ/ハブ 大型の家庭用および産業用ゲートウェイ
Class-5, C5 ~ 1 - 8 GB ~ 1 - 16 GB エッジ 小型エッジサーバー
Class-6, C6 ~ several GB ~ several GB エッジ 大型エッジサーバー
Class-7, C7 ~ several GB ~ several GB クラウド 複数の計算ノードを持つクラウドシステム
: カテゴリーの 境界

カテゴリーの境界は柔軟な境界であり、 カテゴリーは排他的ではありません。すなわち、複数の カテゴリーのデバイスによって実装できるアプリケーション シナリオがあります。安全な通信については、TLS/HTTP、 DTLS/CoAP、および同様の安全なプロトコルをサポートする デバイスを考慮します。

4. アプリケーション領域

この節は非規範的です。

この節では、 W3C WoTが対象とし、 7. WoT構成要素で論じる 抽象アーキテクチャを導出するために使用される アプリケーション領域を提示します。

これらのアプリケーション領域は、[WOT-USE-CASES-REQUIREMENTS]で 記述されるユースケースに基づいています。

Web of Thingsアーキテクチャは、ユースケースおよび アプリケーション領域にいかなる制限も課しません。 抽象アーキテクチャが満たすべき共通パターンを収集するために、 さまざまなアプリケーション領域が検討されています。

次の節は網羅的なものではありません。むしろ、 接続されたThingsが追加の利益を提供したり、 新しいシナリオを可能にしたりできる例示として機能します。

4.1 コンシューマー

コンシューマー領域には、接続されることで 便益を受ける複数の資産があります。照明やエアコンは、 部屋の在室状況に基づいてオフにできます。窓のブラインドは、 天候条件および在室に基づいて自動的に閉じることができます。 エネルギーおよびその他の資源消費は、使用パターンと 予測に基づいて最適化できます。

この節のコンシューマーシナリオでは、スマートホームの ユースケースを記述します。

1は、 スマートホームの例を示します。この場合、ゲートウェイは KNX、ECHONET、ZigBee、DECT ULE、Wi-SUNなどの 対応するローカル通信プロトコルを通じて、センサー、 カメラ、家電製品などのエッジデバイスに接続されます。 1つの住宅内に複数のゲートウェイが存在でき、各ゲートウェイは 複数のローカルプロトコルをサポートできます。

ゲートウェイはインターネットを通じてクラウドに 接続できます。一方、一部の家電製品はクラウドに 直接接続できます。クラウドで実行されるサービスは、 エッジデバイスからデータを収集して分析し、その後、 エッジデバイスおよびその他のUXデバイスを通じて ユーザーに価値を提供します。

スマートホームのユースケース
1 スマートホーム

スマートホームは、リモートアクセスと制御、音声制御、 ホームオートメーションなどのコンシューマー向け便益を提供します。 スマートホームはまた、デバイス製造者がデバイスを遠隔で 監視および保守することを可能にします。スマートホームは、 エネルギー管理やセキュリティ監視などの付加価値サービスを 実現できます。

4.2 産業

この節の産業ユースケースは、さまざまな業界の 垂直領域に適用できます。
アプリケーションシナリオに重複がある性質上、 異なる垂直領域には類似したユースケースがあります。

4.2.1 例: スマートファクトリー

2は、 スマートファクトリーの例を示します。この場合、フィールドレベル、 セル、およびラインコントローラーは、PROFINET、Modbus、 OPC UA TSN、EtherCAT、CANなどの産業用通信プロトコルに 基づいて、さまざまな工場設備を自動化します。 産業用エッジデバイスは、さまざまなコントローラーから 選択されたデータを収集し、それをクラウドバックエンド サービスで利用可能にします。たとえば、ダッシュボードによる リモート監視のため、または予防保全のために分析します。

スマートファクトリーのユースケース
2 スマートファクトリー

スマートファクトリーでは、接続された製造設備だけでなく、 製造された製品の高度な監視が必要です。機械故障の予測や 異常の早期発見により、費用のかかる停止時間や保守作業を 防止できるという利点があります。

さらに、接続された製造設備と生産施設の環境を監視し、 有毒ガス、過度の騒音または熱の存在を検出することで、 作業者の安全性を高め、事件または事故のリスクを低減します。

生産設備のリアルタイム監視およびKPI計算は、 生産性の問題を検出し、サプライチェーンを最適化するのに 役立ちます。

4.3 輸送と物流

車両、燃料費、保守ニーズ、および割り当てを監視することで、 車両 fleet の完全な活用を最適化できます。

輸送品の一貫した品質および状態を確保するために、 出荷品を輸送中に追跡できます。これは特に、倉庫から 冷蔵トラック、配送までのコールドチェーンの完全性を 確認するのに有用です。

倉庫およびヤードにおける在庫の集中監視および管理は、 在庫切れや過剰在庫の状況を防ぐことができます。

4.4 公益事業

住宅用およびC&I(商業・産業)メーターの自動読み取りと 請求は、資源消費および潜在的なボトルネックに関する 継続的な洞察を提供します。

分散型再生可能エネルギー発電設備の状態と出力を 監視することで、分散型エネルギー資源の最適化が 可能になります。

配電設備の監視およびリモート制御は、配電プロセスの 自動化に役立ちます。

発電および配電インフラの継続的な監視は、 現場の公益事業作業員の安全性を向上させます。

4.5 石油・ ガス

海上プラットフォームの監視、漏えい検出、 パイプラインの予測、ならびにタンクおよび貯留槽内の レベルの監視と制御は、労働力および環境の双方に対する 産業安全の向上に役立ちます。

さまざまな貯蔵タンクおよび配送パイプ/トラックを通じた 分散在庫の自動計算により、計画および資源最適化が 改善されます。

4.6 保険

接続された構造物、 fleet 車両などの高価値資産の 予防的資産監視は、予測および事故の早期検出により、 深刻な損害と高額な費用のリスクを軽減します。

使用量の追跡およびカスタマイズされた保険契約により、 使用量ベースの保険を提供できます。

予測型天候監視と、 fleet 車両を屋根付きガレージへ 再ルーティングすることにより、ひょう被害や倒木被害による 損失を抑制できます。

4.7 エンジニアリングと 建設

産業安全のための監視は、安全上の危険のリスクを低減します。 建設現場の資産監視は、損傷および損失を防ぐことができます。

4.8 農業

土壌状態の監視、灌水と施肥のための最適な計画の作成、 および農産物の状態監視は、農産物の品質と生産量を 最適化します。

4.9 ヘルスケア

臨床試験データの収集および分析は、新しい領域への 洞察を得るのに役立ちます。

リモート患者監視は、高齢者や退院後の患者における、 検出されない重大な状況のリスクを軽減します。

4.10 環境監視

環境監視は通常、多数の分散センサーに依存します。 それらは測定データを共通のゲートウェイ、エッジデバイス、 およびクラウドサービスへ送信します。

大気汚染、水質汚染、および微細粉じん、オゾン、 揮発性有機化合物、放射能、温度、湿度などの その他の環境リスク要因を監視し、重大な環境条件を 検出することで、回復不能な健康被害または環境被害を 防止できます。

4.11 スマート シティ

橋、ダム、堤防、運河の材料状態、劣化、振動を 監視することで、保守修繕作業を発見し、重大な損害を 防止します。高速道路を監視し、適切な標識を提供することで、 最適化された交通の流れを確保します。

スマートパーキングは、駐車スペースの使用状況と 空き状況を最適化および追跡し、請求/予約を自動化します。

在室検知、天候予測などに基づく街灯のスマート制御は、 コストを削減します。

ごみ容器を監視することで、廃棄物管理および ごみ収集経路を最適化できます。

4.12 スマート ビルディング

建物全体のエネルギー使用量を監視することで、 資源消費を最適化し、無駄を削減できます。

HVAC、エレベーターなど、建物内の設備を監視し、 問題を早期に修正することで、居住者の満足度を 向上させます。

4.13 コネクテッドカー

運用状態の監視およびサービスニーズの予測は、 保守ニーズとコストを最適化します。重大な道路および 交通状況に関する早期警告システムの通知により、 運転者の安全性が向上します。

4.13.1 コネクテッドカーの例

3は、 コネクテッドカーの例を示します。この場合、ゲートウェイは CANを通じて車両部品に接続し、独自インターフェースを通じて 車載ナビゲーションシステムに接続します。クラウドで実行される サービスは、車両部品からプッシュされたデータを収集し、 複数の車両からのデータを分析して交通パターンを判定します。 ゲートウェイはまた、この場合、交通データを取得して 車載ナビゲーションシステムを通じて運転者に表示するために、 クラウドサービスをconsumeできます。

コネクテッドカーのユースケース
3 コネクテッドカー

5. 共通の配備パターン

この節は非規範的です。

この節では、デバイス/Thingsがコントローラー、他のデバイス、 エージェント、およびサーバーとどのように相互作用するかを示す 共通の配備パターンを紹介します。この節では、 トランスポートプロトコルの開始者としてclient roleという用語を、 トランスポートプロトコルの受動的な構成要素として server roleという用語を使用します。これは、任意の システム構成要素に特定のロールを規定することを意味しません。 デバイスはclientおよびserverロールを同時に 持つことができます。

この二重ロールの一例は、クラウドサービスに自身を登録し、 センサー読み取り値をクラウドへ定期的に送信するセンサーです。 応答メッセージでは、クラウドがセンサーのメッセージの送信レートを 調整したり、将来のメッセージで送信される特定のセンサー属性を 選択したりできます。センサーは自身をクラウドに登録し、 接続を開始するため、「client」ロールにあります。しかし、 応答メッセージで送信される要求にも反応するため、 「server」ロールも果たします。

次の節では、複雑さが増していくロール、タスク、 およびユースケースパターンを示します。これらは網羅的ではなく、 この仕様の後続の節で定義されるWoTアーキテクチャおよび 構成要素の動機付けとして提示されます。

この節ではまた、Trusted Environmentの概念も使用します。これは、相互に比較的 制限のないアクセスを許可するデバイスの集合です。これは一般的な アプローチですが、いくつかのリスクを伴います。これらのリスクは、 それらの緩和策とともに、 10.4 Trusted Environmentのリスクの節で論じます。

5.1 テレメトリ

テレメトリとは、リモートデバイスの監視であり、 測定値およびその他のデータがConsumerへ自動的に送信され、 処理されることを意味します。データは、無線および有線の さまざまな通信チャネルを介して転送できます。例として、 GSMネットワーク、Bluetooth、WiFi、Ethernet、および その他の有線標準があります。

リモート計測デバイスには、1つまたは複数のセンサーが 含まれ、場合によってはアクチュエーターも含まれます。 多くの場合、センサーデータは定期的に、状態変化時に、 またはConsumerからの 要求への応答として送信されます。

リモート計測デバイスは、しばしばリソースが非常に限られた 小型組み込みシステム、すなわちClass-2以下です。 バッテリー駆動である場合があり、スリープモードなどの さまざまな手段により消費電力を最小化する必要があります。 これらのデバイスはほとんどの時間スリープし、エネルギーを 節約するためにデータを送信しません。特定のイベント (例: スイッチが切り替えられたとき)でのみ起動します。 デバイス状態が変化すると、イベントがconsumerへ送信されます。 その後、デバイスは再びスリープモードに移行します。

典型的なユーザーシナリオは、さまざまな資産の監視です。 例として、スマートシティ、工場、 fleet、環境監視、 健康監視があります。配備によっては、地理的に分散した 多数の資産の監視が必要な場合があり、スマートホームのように 少数のデバイスだけを含む場合もあります。共通パターンは、 単一のConsumerと複数のデバイス (Things)の 一対多の関係です。

5.2 デバイスコントローラー

共通の配備パターンは、4に示すように、 ユーザー操作のリモートコントローラーによって制御される ローカルデバイスです。

リモートコントローラーは、ローカルホームネットワークを通じて 電子機器に直接アクセスできます。この場合、リモートコントローラーは ブラウザーまたはネイティブアプリケーションとして実装できます。

このパターンでは、電子機器のような少なくとも1つのデバイスが serverロールを持ち、他のデバイスからの要求を受け入れて 応答でき、ときには機械的な動作を開始します。リモート コントローラーのような他のデバイスはclientロールを持ち、 センサー値を読み取る、またはデバイスをオンにするなどの要求を 含むメッセージを送信できます。さらに、デバイスの現在状態や イベント通知を発行するために、デバイスはserverロールを持つ 別のデバイスへメッセージを送信できるclientロールを持つ場合があります。

スマートホームデバイスのユースケース
4 デバイス制御

5.3 Thing-to-Thing

5は、 直接的なThing-to-Thingインタラクションの例を示します。 シナリオは次のとおりです。センサーが部屋の状態変化、 たとえば温度が閾値を超えたことを検出し、「turn on」のような 制御メッセージを電子機器に発行します。センサーユニットは、 他のデバイスにいくつかのトリガーメッセージを発行できます。

この場合、serverロールを持つ2つのデバイスが接続されるとき、 少なくとも一方のデバイスは、作動または通知のために他方へ メッセージを発行するclientロールも持たなければなりません。

スマートホームt2t配備シナリオ
5 制御エージェント

5.4 リモートアクセス

この配備シナリオには、6に示すように、 モバイルリモートコントローラー(例: スマートフォン上)が含まれます。 リモートコントローラーは、セルラーネットワークと、Wi-Fiや Bluetoothなどのプロトコルを使用するホームネットワークとの間など、 異なるネットワーク接続およびプロトコルを切り替えることができます。 コントローラーがホームネットワーク内にある場合、それは信頼された デバイスであり、追加のセキュリティまたはアクセス制御は 必要ありません。信頼されたネットワークの外部にある場合、 信頼関係を確保するために追加のアクセス制御および セキュリティメカニズムを適用しなければなりません。 このシナリオでは、異なるネットワークアクセスポイントまたは セルラー基地局間の切り替えにより、ネットワーク接続性が 変化する場合があることに注意してください。

このパターンでは、リモートコントローラーと電子機器は、 4の関連シナリオと同様に、 clientおよびserverロールを持ちます。

複数のネットワークインターフェースを持つスマートホーム
6 複数のネットワークインターフェース

5.5 スマートホームゲートウェイ

7は、 スマートホームゲートウェイの配備シナリオを示します。 ゲートウェイはホームネットワークとインターネットの間に配置されます。 それは住宅内の電子機器を管理し、前のシナリオにおける スマートフォンなどから、インターネット越しにリモートコントローラーからの コマンドを受信できます。また、デバイスの仮想表現でもあります。 スマートホームゲートウェイは通常、プロキシおよびファイアウォール 機能を提供します。

このパターンでは、ホームゲートウェイはclientとserverの 両方のロールを持ちます。リモートコントローラーが電子機器を 作動させるとき、ゲートウェイはclientロールで電子機器に 接続し、serverロールでリモートコントローラーに接続できます。 電子機器がリモートコントローラーへメッセージを発行するとき、 ゲートウェイは電子機器に対してserverロールとして動作し、 リモートコントローラーに対してclientロールとして動作します。

スマートホームゲートウェイのユースケース
7 スマートホームゲートウェイ

5.6 エッジデバイス

Edge DeviceまたはEdge Gatewayは、 スマートホームゲートウェイに類似しています。この用語は、 エッジゲートウェイによって実行される追加のタスクを示すために 使用します。8のホームゲートウェイが主に公共ネットワークと 信頼されたネットワークの間を単に橋渡しするのに対し、 エッジデバイスはローカル計算能力を持ち、通常は異なる プロトコル間を橋渡しします。エッジデバイスは通常、 産業用ソリューションで使用され、接続されたデバイスおよび センサーから提供されるデータの前処理、フィルタリング、 および集約を提供できます。

エッジデバイスのユースケース
8 エッジデバイス

5.7 デジタルツイン

Digital Twinは仮想表現、すなわちクラウドサーバー またはエッジデバイス上に存在するデバイスまたはデバイス群の モデルです。これは、継続的にオンラインでない可能性がある 実世界のデバイスを表すため、または新しいアプリケーションや サービスを実デバイスへ配備する前にシミュレーションを 実行するために使用できます。

デジタルツインのユースケース
9 デジタルツイン

デジタルツインは単一のデバイスをモデル化できるほか、 複数のデバイスを結合されたデバイスの仮想表現に 集約することもできます。

複数デバイスのデジタルツインのユースケース
10 複数デバイス向け デジタルツイン

デジタルツインは、デバイスがすでにクラウドに接続されているか、 あるいはクラウドに接続されたゲートウェイに接続されているかに 応じて、さまざまな方法で実現できます。

5.7.1 クラウド接続デバイス

11は、電子機器がクラウドに 直接接続される例を示します。クラウドは家電機器をミラーリングし、 デジタルツインとして動作して、リモートコントローラー (例: スマートフォン)からコマンドを受信できます。 認可されたコントローラーは、デジタルツインがグローバルに 到達可能であるため、どこにでも配置できます。

スマートホームクラウドユースケース1
11 クラウド接続デバイス向け 家電ツイン

5.7.2 オーケストレーション

デバイスおよび操作フローのオーケストレーションは、 デバイスを単純に単独で使用することを超える能力を提供します。 オーケストレーションされたデバイスの集合は、単一の操作で 複数のデバイスの状態に影響を与える結合操作を提供できます。

これらの操作は、個別の操作を結合された操作フローへ 組み合わせます。そのフローには、いくつかの代替経路があり、 それらは何らかのデバイス状態またはプロパティ値に基づいて 選択されます。

オーケストレーションされたデバイスは、さまざまな トポロジーで配備でき、異なるネットワークを介して 接続できます。これらのデバイスから構築されるシステムは、 個々のデバイスの能力を組み合わせ、それを超える能力を 提供できます。

典型的なオーケストレーションの例はスマートホームです。 そこでは、さまざまなセンサー(温度、在室、湿度、照明、 空気質、ドアセンサー)が相互動作し、入室または退室、 朝/夕方のルーチン、在室に基づく照明および温度調整など、 さまざまな状況のための操作フローを提供します。

5.7.3 レガシーデバイス

12は、レガシー電子機器がクラウドに 直接接続されていない例を示します。ここでは、接続を中継する ゲートウェイが必要です。ゲートウェイは次のように動作します。

  • 物理的および論理的な観点で、多様なレガシー通信 プロトコルの統合者
  • インターネットに対するファイアウォール
  • 実画像および/または音声を置換し、データをローカルに ログ記録するプライバシーフィルター
  • ネットワーク接続が中断された場合のローカルエージェント
  • 火災警報および同様のイベントが発生したときに ローカルで実行される緊急サービス

クラウドは、接続されたすべての家電機器を含むゲートウェイを ミラーリングし、ゲートウェイと連携してそれらをクラウド内で 管理するデジタルツインとして動作します。さらにクラウドは、 任意の場所に配置できるリモートコントローラー (例: スマートフォン)からコマンドを受信できます。

スマートホームクラウドユースケース2
12 レガシーデバイス向け デジタルツイン

5.8 マルチクラウド

典型的なIoT配備は、複数(数千)のデバイスで構成されます。 標準化されたメカニズムがない場合、特定のクラウド向けの ファームウェア更新管理には多大な労力が必要となり、 より広範なIoT採用を妨げます。

デバイスおよびデバイスタイプを記述するための標準化された メカニズムの主な利点は、デバイスソフトウェア/ファームウェア レベルでカスタマイズを行う必要、すなわちクラウド固有のコードを デバイスにインストールする必要なしに、デバイスを異なる クラウド環境へ配備できる能力です。これは、複数のIoTクラウド環境で デバイスをオンボーディングし使用できるような方法でデバイスを 記述するのに十分な柔軟性を、そのソリューションが持つことを 意味します。

これにより、既存の配備における新しいデバイスの容易な使用や、 既存デバイスのあるクラウドから別のクラウドへの移行が可能になるため、 Web of Thingsデバイスの採用が促進されます。

5.9 仮想Things

Virtual Thingは、1つ以上の他のThingsの プレースホルダーとして動作し、そのconsumersにインターフェースを 提供するServiceです。

単純な場合、それはインターフェース抽象であり、 デバイスに対する共通インターフェースを定義します。 そこでは、consumerを変更することなく、あるデバイスモデルを 別のものに置き換えることが可能です。

より複雑なシナリオでは、Virtual Thingは複数の デバイスに対する単一のインターフェースを提供し、 そのConsumersにより高いレベルの 操作を提供します。個々のデバイスは置き換えることができ、 新しい操作はソフトウェアアップグレードを通じて提供できます。

Virtual ThingはしばしばIntermediaryとして動作します。 例としてShadows およびDigital Twinsがあります。

5.10 領域横断コラボレーション

13は、領域横断コラボレーションの例を 示します。この場合、各システムは、スマートファクトリーと スマートシティ、スマートシティとスマートホームのように、 他の領域の他のシステムを含みます。この種類のシステムは、 [IEC-FOTF]に 示されるように、「共生」エコシステムと呼ばれます。 コラボレーションモデルには、直接コラボレーションと 間接コラボレーションの2つがあります。直接コラボレーション モデルでは、システムはピアツーピア方式で互いに直接 情報を交換します。間接コラボレーションでは、システムは 何らかのコラボレーションプラットフォームを介して情報を 交換します。このコラボレーションを維持し継続するために、 各システムは自身の能力およびインターフェースのメタデータを 提供し、他のシステムに適応します。

領域横断の直接ユースケース 領域横断の間接ユースケース
13 領域横断コラボレーション

5.11 システム統合

前節では、さまざまなアーキテクチャパターンを記述しました。 これらのパターンでは、レガシーデバイスを含むデバイス、 コントローラー、ゲートウェイ、クラウドサーバーなどの 一部の機能エンティティは、建物内、建物外、データセンターなどの 物理的な場所に配置されます。 14は、 これらのエンティティの組み合わせおよび通信経路を示す 概要です。

トランスポートプロトコル層では、各エンティティが通信に 適したロールを任意に選択します。たとえば、デバイスが 不特定多数のアプリケーションにサービスを提供する場合、 そのデバイスはserverとして動作することがあります。一方、 デバイスのネットワーク接続性が限られている、または断続的である場合、 ネットワークが利用可能なときにclientとして動作し、 アプリケーションへ能動的にメッセージを送信することがあります。 これにかかわらず、アプリケーション層では、アプリケーションは デバイスが相互作用のための抽象インターフェースを提供していると見なし、 それらの抽象インターフェースを使用してデバイスと相互作用できます。

システム統合
14 システム統合

6. 抽象WoTシステム アーキテクチャ

この節は規範的です。

[WOT-USE-CASES-REQUIREMENTS]で 収集された要件およびユースケースに対応するため、 Web of Things(WoT)は、いわゆる Consumersによって使用できる Web Things――通常は単に Thingsと呼ばれるもの――の 概念の上に構築されます。Consumersは、 Thingと 直接相互作用することも、間接通信のために intermediariesを使用することも できます。

これらの概念は、4. アプリケーション 領域の各種アプリケーション領域に適用できます。

この節では、 W3C Web of Things アーキテクチャ全体を定義するための背景および規範的な 表明を提供します。

Web of Thingsは異なる領域の関係者を対象とするため、 Web技術の特定の側面、特にハイパーメディアの概念について より詳しく説明します。

6.1 基本概念

この節では、Web of Thingsの基本概念を紹介します。 Thing抽象を導入します。これは Thing Descriptionsおよび Thing Modelsによって記述され、その後 Consumersが 使用できます。

Thingは、 物理または仮想エンティティ(例: デバイスや部屋)の抽象であり、 標準化されたメタデータによって記述されます。 Consumerは、 そのThingと通信するために、 Thingの標準化された メタデータを読み取り、解釈できるエンティティです。

WoT Thing Description(TD)は、標準化された機械可読の メタデータ表現形式です。これにより、Consumersは、 Thingの能力を(セマンティック注釈を通じて) 発見および解釈し、Thingと相互作用する際に 異なる実装(例: 異なるプロトコルやデータ構造)へ適応できます。 これにより、異なるIoT platforms、 すなわち異なるエコシステムおよび標準を横断した 相互運用性が可能になります。WoT Thing Model(TM)も同様に、 共通の能力を持つ製品ラインのデバイスなど、 Thingsクラスを記述するための、標準化された機械可読の メタデータ表現形式です。

consumer thing
15 Consumer-Thingインタラクション

Thingは、 仮想エンティティの抽象であることもできます。 仮想エンティティは、1つ以上のThingsの合成です (例: 複数のセンサーおよびアクチュエーターから成る部屋)。 合成の1つの選択肢は、仮想エンティティの能力の組み合わせを 含む、単一の統合されたWoT Thing Descriptionを提供することです。合成がかなり複雑な場合、 そのTDは、合成内の階層的な サブThingsへリンクすることがあります。主要な TDは入口点として機能し、 一般メタデータと、場合によっては包括的な能力のみを 含みます。これにより、より複雑なThingsの特定の側面を グループ化できます。

6.1.1 メタデータ

WoTアーキテクチャは、Thingsの 特定のインスタンスと、Thingsクラスの両方を記述するメタデータ形式を提供します。 インスタンスのメタデータ形式は Thing Descriptionと呼ばれ、 クラスのものはThing Modelと呼ばれます。

6.1.1.1 Thing Descriptions

Thing インスタンスは、標準化されたメタデータによって記述されます。 W3C WoTでは、 Thingインスタンスの記述メタデータは、 WoT Thing Description(TD)[WOT-THING-DESCRIPTION]として 利用可能でMUSTあります。 基礎となる情報モデルはグラフベースであり、その直列化は JSON-LD 1.1 [JSON-LD11]と 互換性があるため、この形式は従来のJSONライブラリまたは JSON-LDプロセッサーのいずれでも処理できます。 TDの処理にJSON-LDプロセッサーを使用すると、 RDFトリプルへの変換、セマンティック推論、 オントロジー用語に基づいて与えられたタスクの実行を含む セマンティック処理がさらに可能になり、 Consumersがより自律的に 振る舞えるようになります。TDは インスタンス固有(すなわち、Thingsの型ではなく個別のThingを 記述するもの)であり、Thingの既定の外部的・テキスト的 (Web)表現です。 Thingには、HTMLベースの ユーザーインターフェース、物理エンティティの単なる画像、 あるいは閉じたシステムにおける非Web表現など、 他の表現が存在してMAYいます。 ただし、 Thingと見なされるためには、 少なくとも1つのTD表現が利用可能で MUSTあります。

6.1.1.2 Thing Models

Thing Modelは、 たとえば製品ライン内の多数のデバイスのような、 Thingsの集合で利用可能な 共通能力を記述するために使用できます。この場合、 Thing Modelは 製品ライン内のすべてのデバイスの共通能力を定義しますが、 特定のデバイスに固有の情報は省略します。

Thing Modelは、 インスタンスの完全な情報が利用できない場合、または不要な場合にも 使用できます。たとえば、一部のIoTエコシステムでは 通信を暗黙的に別個に処理します。そのような場合、 通信メタデータを伴う完全に詳細な Thing Descriptionは 不要です。通信メタデータは、新しいエンティティが まだ配備されていないために(例: IPアドレスがまだ不明)、 Thingライフサイクル段階の開始時点では利用できない場合も あります。

Thing Modelは、 そのような種類のシナリオに対応するために Thingの基本的な 情報モデルを定義するために使用されます。 Thing Modelは、 [WOT-THING-DESCRIPTION]の 「TD Information Model」および「Representation Format」の節で 定義されるように、制約が少ない Thing Descriptionsのテンプレートと見なすことができます。 通常、Thing Modelの例には、 IPアドレスのようなプロトコル固有データなど、 インスタンス固有の情報は含まれません。ただし、たとえば 具体的なURLを持つ代わりに、Thing Modelでは URLテンプレートの使用が可能です。

Thing Model
16 Thing Modelと Thing Descriptionとの関係

Thing Modelは、次を可能にします。

  • たとえばクラウドサービスによる、複数の Thingモデルの オンボーディングおよび管理。
  • まだ開発されていないデバイス/Thingsのシミュレーション。
  • 共通のThing modelを共有する、異なる製造者のデバイスを横断した 共通アプリケーションの開発。
  • 複数のモデルを1つのThingへ 組み合わせること。
  • 具体的なThingの実装支援。

Thing Modelは、 ThingPropertiesActions、および Eventsとのインターフェースおよび 可能なインタラクションの論理的記述ですが、 具体的なプロトコル使用(例: IPアドレス)や、 シリアル番号およびGPS位置のような Thingインスタンス固有の情報は 含みません。ただし、Thing Modelsは、たとえばセキュリティスキームが そのモデルが記述するインスタンスのクラス全体に適用される場合、 それらを含めることを可能にします。これらは、(トークンサーバーのような) URLを持つ場合があり、それらは省略または(テンプレートで) パラメーター化する必要がある場合もありますが、多くの場合、 それらが与えられることもあります。

Thing Modelは、 Thing Descriptionと同じJSONベース形式で直列化でき、 JSON-LD処理も可能です。なお、 Thing Modelは、 Thing Description インスタンスと同じ方法では検証できません。 なぜなら、Thing Descriptionのすべての必須用語が Thing Modelに必要とは されていないためです。必須用語が欠落しています。

リンクは、things間、thingsとthing models間、および thing models間の関係を表すことができます。リンクは 階層的なThingsだけに適用されるのではなく、 Thingsと他のリソース一般との関係にも適用されます。 リンク関係型は、たとえばスイッチが照明を制御することや、 部屋がモーションセンサーによって監視されることなど、 Thingsがどのように関係するかを表します。 Thingに関連する他のリソースには、 ドキュメントマニュアル、予備部品のカタログ、CADファイル、 グラフィカルUI、またはWeb上のその他の文書が含まれます。 全体として、Things間のWebリンクにより、Web of Thingsは 人間と機械の双方にとってナビゲート可能になります。これは、 Thing Description Directoriesを提供し、通常はTD表現を キャッシュすることでThingsのカタログを 管理することにより、さらに促進できます。

要約すると、WoT Thing DescriptionsおよびWoT Thing Modelsは、 Web of Thingsを形成するために、他のThingsWoT Thing Models、およびWeb上の他のリソースへリンクして MAYいます。

linked things
17 リンクされたThings

Thingsは、 ネットワーク向けインターフェース、すなわち ThingWoT Interfaceを 通じたインタラクションを実現するため、ソフトウェアスタックを持つ ネットワーク化されたシステム構成要素上でホストされて MUSTいます。この一例は、 センサーおよびアクチュエーターを備えた組み込みデバイス上で HTTPサーバーが実行され、 Thing 抽象の背後にある物理エンティティと接続することです。 ただし、W3C WoTは、Thingsがどこでホストされるかを 義務付けません。IoTデバイス上で直接ホストされる場合も、 ゲートウェイなどのEdge device上でホストされる場合も、 クラウド上でホストされる場合もあります。

典型的な配備上の課題は、通常はIPv4の ネットワークアドレス変換(NAT)またはファイアウォールデバイスのために、 ローカルネットワークがインターネットから到達できない シナリオです。この状況を改善するため、 W3C WoTは、 ThingsConsumersの間に Intermediariesを置くことを 可能にします。

6.1.3 Intermediaries

IntermediariesThingsのプロキシとして動作できます。 ここで、Intermediaryは元の Thingと 類似したWoT Thing Descriptionを持ちますが、それは Intermediaryによって提供される WoT Interfaceを指します。Intermediariesは、 既存のThingsに追加能力を付加したり、 利用可能な複数のThingsから 新しいThingを合成したりして、 Virtual Thingを形成することもできます。 Consumersにとって、 Intermediariesは、 WoT Thing Descriptionsを持ち、WoT Interfaceを提供するため、 単に別の種類のThingです。Web [REST]のような 階層型システムアーキテクチャでは、物理デバイスを直接表す Thingsと区別できない場合があります。

intermediary
18 Intermediary

制限されたローカルネットワークに対する別の改善策は、 ローカルネットワーク内のThingから、公開到達可能な Consumerへ 接続を確立するプロトコルに、WoT Interfaceをバインドすることです。

W3C WoTの概念は、 IoTアプリケーションに関連するすべてのレベル、すなわち デバイスレベル、エッジレベル、およびクラウドレベルに適用できます。 これにより、異なるレベルを横断する共通のインターフェースおよび APIが促進され、Thing-to-Thing、Thing-to-Gateway、 Thing-to-Cloud、Gateway-to-Cloud、さらにはクラウド連合、 すなわちIoTアプリケーションのために2つ以上のサービスプロバイダーの クラウドコンピューティング環境を相互接続することなど、 さまざまな統合パターンが可能になります。 19は、上で導入したWoT概念をどのように 適用および組み合わせて、WoT Use Cases and Requirements文書 [WOT-USE-CASES-REQUIREMENTS]で 記述されるユースケースに対応できるかの概要を示します。

architecture overview
19 W3C WoTの抽象アーキテクチャ

6.2 アフォーダンス

W3C WoTの中心的側面は、 機械可読メタデータ(すなわち WoT Thing Descriptions)の提供です。理想的には、 このようなメタデータは自己記述的であるため、 Consumersは、 Thingがどのような能力を提供するか (what)、および提供される能力をどのように使用するか (how)を識別できます。この自己記述性の鍵は、 アフォーダンスの概念にあります。

アフォーダンスという用語は生態心理学に由来しますが、 Donald Normanによる定義に基づき、ヒューマンコンピューター インタラクション [HCI]の分野で 採用されました。「'Affordance' refers to the perceived and actual properties of the thing, primarily those fundamental properties that determine just how the thing could possibly be used.」 [NORMAN]

この例として、取っ手の付いたドアがあります。ドアの取っ手は アフォーダンスであり、そのドアを開けられることを示唆します。 人間にとって、ドアの取っ手は通常、ドアをどのように 開けられるかも示唆します。アメリカ式のノブは回すことを示唆し、 ヨーロッパ式のレバーハンドルは押し下げることを示唆します。

RESTアーキテクチャスタイル [REST]の 中核的基盤の1つであるハイパーメディア原則は、 Web上で利用可能なあらゆる情報の断片が他の情報の断片に リンクされることを要求します。これにより、情報の消費者は Webをどのようにナビゲートし、Webアプリケーションを制御するかに 関する明示的な知識を得ます。ここで、情報と制御 (ハイパーリンクの形式で提供される)の同時提示は、 WebクライアントにWebアプリケーションを駆動する手段を affordsするメカニズムです。この文脈では、 アフォーダンスは、Webクライアントにリンク先リソースへ どのようにナビゲートし、場合によってはどのように作用するかを 示唆するハイパーリンクの記述(例: リンク関係型および リンクターゲット属性による)です。したがって、リンクは ナビゲーションアフォーダンスを提供します。

このハイパーメディア原則から導かれ、Web of Thingsは Interaction Affordancesを、Consumersに可能な選択肢を 示して記述し、それによって ConsumersThingと どのように相互作用できるかを示唆するThingのメタデータとして 定義します。一般的なInteraction Affordanceはナビゲーションであり、リンクをたどることで 有効化され、ConsumersがWeb of Thingsを 閲覧できるようにします。6.5 インタラクションモデルは、 W3C WoT向けに さらに3種類のInteraction Affordances、すなわち PropertiesActions、および Eventsを定義します。

全体として、このW3C WoTの定義は、 物理的なThingsを作成するHCIおよびインタラクションデザイナー、 ならびにWebサービス一般に取り組むRESTおよびマイクロサービス コミュニティと整合しています。

6.3 Web Thing

Web Thingには、関心対象となる4つのアーキテクチャ的側面があります。 それは、behaviorInteraction Affordancessecurity configuration、およびProtocol Bindingsであり、20に示されています。 Thingの behavior側面には、自律的な振る舞いと Interaction Affordancesのハンドラーの両方が含まれます。 Interaction Affordancesは、Consumersが 抽象操作を通じてThingと どのように相互作用できるかのモデルを提供しますが、 特定のネットワークプロトコルまたはデータエンコーディングには 言及しません。protocol bindingは、 各Interaction Affordanceを特定のプロトコルの具体的なメッセージへ 対応付けるために必要な追加の詳細を加えます。一般に、 単一のThing内であっても、 異なる具体的プロトコルが、Interaction Affordancesの異なるサブセットをサポートするために 使用される場合があります。Thingの security configuration側面は、 Interaction Affordancesへのアクセスを制御するために使用される メカニズム、および関連するPublic Security MetadataPrivate Security Dataの管理を表します。

web thing
20 Thingのアーキテクチャ的側面

6.4 ライフサイクル

WoTアーキテクチャ原則を適用する配備では、 異なるエンティティが互いに相互作用し、相互に情報を交換します。 WoT配備の要素は、devicesintermediariesconsumers、 およびdirectoriesです。各要素は独自の(内在的な) Thing ライフサイクルを持ちます。これらの要素はシステムを構築し、 システム全体はSystem lifecycleを持ちます。 すなわち、システムは複数の状態を持ち、運用可能になるために いくつかの状態を遷移します。これは、デバイスが運用可能になるために 自身のライフサイクルを経ること、および使用可能になる前に デバイスが他者に知られていなければならないことを意味します。

以下の節では、System lifecycleThing lifecycleを記述します。これらには、 配備内のThingsの異なる状態および段階を説明するための サンプルフローが含まれます。この節の目的の1つは、 用語を明確にし、共通ライフサイクルモデルの概念が Web Thingsの実装者によって考慮されることを確実にすることです。

これらの図の左側にいるアクターは、デバイス所有者または 製造者として理解できます。右側のアクターは、 アプリケーションでデバイスを使用するエンドユーザーです。

6.4.1 単純なシステムライフサイクル

次のシーケンス図は、直接通信する2つのデバイスで構成される システムのフロー例を示します。

このシナリオでデバイスを使用できるようにする前に、 そのデバイスはブートストラップされ、consumerへオンボードされる 必要があります。オンボーディング操作では、consumerとデバイスが 互いを知るようになります。これは、Discoveryプロセスによって 行われる場合も、consumerがデバイスに登録される、またはその逆の 登録操作によって行われる場合もあります。

有効化ステップ(プロビジョニング、設定など複数の操作から 成る場合があります)の後、 deviceconsumerは通常運用モードになります。 このシナリオでデバイスが不要になった場合、 それはconsumerからオフボードされます。この操作の後、 それは廃止され、破棄されることがあります。

単純なシステムライフサイクル
21 単純な システムライフサイクル

6.4.2 登録を伴うシステムライフサイクル

次のシーケンス図は、device、consumer、directoryという 3つのエンティティを含むシステムのフロー例を示します。

このフローは前節のフローと非常に似ていますが、 それに加えて、デバイスのカタログを維持する directoryエンティティを含みます。WoTでは、 このカタログはthing descriptionsの集合です。 前のシナリオと同様にデバイスがブートストラップされた後、 directoryに登録されます。

directoryは、左側のアクターとconsumer側のアクターとの間で 情報ブローカーとして機能します。これにより、デバイス所有者は consumerから切り離され、discoveryはconsumersに対する発見を 可能にする仲介者として動作します。

単純なシステムライフサイクル
22 登録を伴う システムライフサイクル

6.4.3 Thingライフサイクル

デバイスのブートストラップおよびプロビジョニングは、 すべてのIoTプロトコルスイートでデバイスをセットアップするうえで 重要な部分です。

WoTでデバイスをプロビジョニングする主なシナリオは次のとおりです。

  • デバイスが特定の配備で既にプロビジョニングされ運用中である。 それをWoTで動作させる。
  • デバイスが特定の配備で既にプロビジョニングされ運用中である。 管理目的のために、デバイスライフサイクル段階を Thing Description記述する。
  • WoTで運用可能になるために、デバイスをWoTで直接 ブートストラップおよびプロビジョニングする。

IoTプロトコルスイートでは、さまざまなプロビジョニング方式が 使用されています。この節の文章は、 提案および、OCF、OneM2M、Lightweight OneM2M、 Thing to Thing Research Group(T2TRG)、OPC-UA/Animaなどの さまざまなプロビジョニング方式を 比較する研究に基づいています。

この節で提示するプロビジョニングモデルは、 T2TRGプロビジョニングモデルに類似しています。

さまざまなIoTプロトコルスイートに共通する、デバイスの ブートストラップおよびプロビジョニングの要素は次のとおりです。

  • 信頼の連鎖を確立する。例: セキュアストレージ、 鍵、証明書。これには、製造者証明書、 帯域外鍵プロビジョニング、プロビジョニングサーバーへの接続など、 さまざまなソリューションが関与する場合があります。
  • プロビジョニングツールまたはサービスを使用して、 デバイス所有権を確立する。たとえば、デバイスは ネットワークエンティティ、ネットワークサービス、 サービスプロバイダー、またはエンドユーザーによって 所有される場合があります。
  • テナントまたはさまざまなレベルのユーザー向けの アクセス制御リストをデバイスにプロビジョニングする。
  • デバイスが使用するサービスへのアクセスを デバイスにプロビジョニングする。
  • 使用されるサービスおよび公開されるサービスを デバイスに設定する。
  • デバイス内のWoT runtimeをプロビジョニングおよび設定する。
  • 設定またはプロビジョニングデータを更新する。
  • ユーザー、アプリケーション、サービス、または プロビジョニングを廃止する。
  • デバイスをプロビジョニング前の初期状態へ戻す (例: 工場出荷時リセット)。
  • デバイスを廃止し、不可逆的に破棄する。

これらのプロビジョニングフローを考慮すると、一般に デバイスは次のいずれかの状態にあります。

  • Manufactured: デバイスには ソフトウェアイメージが書き込まれています。特定のプロトコルスイートに 認証されている場合、特定のブートストラップ手順など、 限定された操作のみを行うことが許可されている、または可能である 場合があります。
  • Bootstrapped: デバイスは アイデンティティおよび所有権が確立され、設定、サービス プロビジョニングなどの次のプロビジョニングステップに進む準備が できています。この状態は、さまざまなプロトコルスイートで 異なる名前を持ちます。たとえばOCFでは onboarded、T2TRG、OPC-UA、Anima、LwM2Mでは bootstrapped、OneM2Mでは initial provisioningなどと呼ばれます。
  • Operational: デバイスは プロビジョニングおよび設定され、通常モードで動作しています。 この状態を離れることなく、一部の設定が可能です。 これには、アプリケーションのインストールおよびアンインストール、 設定の再構成などが含まれる場合があります。なお、 デバイスは自身のネイティブプロトコルスイートで運用中であり WoTゲートウェイによって管理される場合も、WoT向け (これはデバイス上のアプリケーションである場合があります)に 運用中である場合も、WoT向けに運用中でありWoT向けに 直接プロビジョニングされている場合もあります。
  • Maintenance: デバイスの運用状態は、 ソフトウェアおよび/または設定の更新のために中断されます。
  • Destroyed: デバイスからすべての データおよびソフトウェアが消去されています。ハードウェアkill機能が 有効化される場合があります。デバイスは物理的に破壊され、 二度と使用されない場合があります。この状態はデバイス管理目的に 関連します。OneM2M、LwM2M、OCF、T2TRGには存在せず、 OPC-UAおよびAnimaではEnd-of-lifeと呼ばれます。
デバイスライフサイクル
23 デバイス ライフサイクル

ライフサイクル状態間の典型的な遷移は次のとおりです。

  • Bootstrapping(またはonboarding): デバイスにはアイデンティティがプロビジョニングされ、 信頼の連鎖が確立されます。例: セキュアストレージ、 鍵、証明書。これには、製造者証明書、 帯域外鍵プロビジョニング、プロビジョニングサーバーへの接続 (かなり一般的なシナリオ)など、さまざまなソリューションが 関与する場合があります。WoTへ直接プロビジョニングする場合、 この段階でデバイスをThing Description Directoryへ登録する場合があります。 このプロセス中またはその後、一部のプロトコルスイートでは、 異なる動作モードでの再起動が必要になる場合もあります。
  • Provisioning、configuration、 commissioning: デバイスは、運用に必要な すべてのリソース(サービス、アプリケーション、アクセス制御、 データベースなど)でプロビジョニングされ、これらのリソースは 運用向けに設定されます。また、デバイスは特定の環境で commissioningされる場合があります。これには、たとえば Thing Description DirectoryDiscoveryサービスなどの サーバーとの通信が関与する場合があります。
  • Settings: デバイスは Operational状態に留まりますが、システム、 サービス、またはアプリケーション設定を更新する場合があります。 場合によっては、アプリケーションのインストールおよび削除を 含む場合があります。
  • Update: デバイスは、 プロビジョニング時と同様の更新を受けるため、 Maintenance状態で通常運用を停止します。 これには、新しいソフトウェアのインストール、リソースおよび その設定の削除、インストール、更新が含まれる場合があります。 再commissioningを含む場合もあります。 Operational状態への復帰は、更新されたリソースで 運用を再開することで達成される場合も、サービスの再起動や デバイスの再起動が必要な場合もあります。
  • Re-bootstrapping: デバイスの アイデンティティ、所有者、および関連リソースは、 Bootstrappingプロセスで説明されるように 変更される場合があります。
  • Factory Reset: デバイスは 工場出荷時の既定状態へ戻されます。
  • Destroy: デバイスはすべての データおよびソフトウェアから消去され、物理的に破壊される 場合があります。

6.5 インタラクションモデル

もともとWebリソースは、通常、Webクライアントが単純に 取得できるWorld Wide Web上の文書を表していました。 Webサービスの導入により、リソースはあらゆる種類の振る舞いを 実装できる、より汎用的なインタラクションエンティティに なりました。この非常に高い抽象化レベルにより、 多様なインタラクションの可能性のため、アプリケーションと リソースとの疎結合を提供することが困難になります。その結果、 執筆時点では、典型的なAPI記述は、アプリケーションの意図から リソースアドレス、メソッド、リクエストペイロード構造、 レスポンスペイロード構造、および期待されるエラーへの 静的な対応付けで構成されています。これは、Webクライアントと Webサービスとの間に密結合を課します。

W3C WoTの Interaction Modelは、 アプリケーションの意図から具体的なプロトコル操作への 対応付けを形式化し、 Interaction Affordancesをどのようにモデル化できるかの可能性も 狭める中間抽象を導入します。

ナビゲーションアフォーダンス(すなわちWebリンク)に加えて、 Thingsは、 この仕様で定義される他の3種類の Interaction Affordances、すなわち PropertiesActions、および Eventsを提供して MAYいます。この細いくびれにより、 ConsumersThingsを 切り離すことができる一方、これら4種類の Interaction Affordancesは、IoTデバイスおよびサービスに見られる ほぼすべてのインタラクション種類をモデル化できます。

6.5.1 Properties

Propertyは、 Thingの状態を公開する Interaction Affordanceです。Propertyによって公開される状態は、 取得可能(readable)です。任意で、Propertyによって公開される状態は 更新可能(writable)である場合があります。 Thingsは、変更後に新しい状態を プッシュすることで、Propertiesをobservableにすることを選択できます (cf. Observing Resources [RFC7641])。 読み取り専用状態の場合、Actionを使用して状態を更新できます。

使用されるProtocol Bindingによって データ形式が(例: media typeを通じて)完全に指定されていない場合、 Propertiesは公開された状態に対して1つの data schemaを含んでMAYいます。

Propertiesの例としては、センサー値(read-only)、 状態を持つアクチュエーター(read-write)、設定パラメーター (read-write)、Thingのステータス(read-onlyまたはread-write)、 計算結果(read-only)などがあります。

6.5.2 Actions

Actionは、 Thingの 機能を呼び出すことを可能にする Interaction Affordanceです。 Actionは、 直接公開されていない状態を操作する(cf. Properties)、 複数のPropertiesを一度に操作する、または内部ロジック (例: トグル)に基づいてPropertiesを操作して MAYいます。 Actionの呼び出しは、 時間の経過とともに状態(アクチュエーターを通じた物理状態を含む)を 操作するThing上のプロセスをトリガーして MAYいます。

使用されるProtocol Bindingによって データ形式が(例: media typeを通じて)完全に指定されていない場合、 Actionsは入力パラメーターおよび出力結果の data schemasを含んでMAYいます。

Actionsの例としては、複数のPropertiesを同時に設定すること、 照明の明るさをフェードさせる(調光)など時間をかけて Propertiesを変更すること、専有の制御ループアルゴリズムのように 開示されるべきでないプロセスによる変更、または文書の印刷のような 長時間継続するプロセスの呼び出しなどがあります。

6.5.3 Events

Eventは、 Thingから Consumerへ 非同期にデータをプッシュするイベントソースを記述する Interaction Affordanceです。ここでは状態ではなく、状態遷移 (すなわちイベント)が伝達されます。 Eventsは、 Propertiesとして公開されていない条件によって トリガーされてMAYいます。

使用されるProtocol Bindingによって データが(例: media typeを通じて)完全に指定されていない場合、 Eventsはイベントデータおよびサブスクリプション制御メッセージ (例: Webhookで購読するためのコールバックURI)に対する data schemasを 含んでMAYいます。

Eventsの例には、 アラームのような離散イベント、または定期的に送信される 時系列のサンプルがあります。

6.6 ハイパーメディア制御

Web上では、アフォーダンスは情報と制御の同時提示であり、 それにより情報がユーザーに選択肢を与えるアフォーダンスになります。 人間にとって、その情報は通常、ハイパーリンクを記述または装飾する テキストや画像です。制御はWebリンクであり、少なくともターゲット リソースのURIを含みます。これはWebブラウザーによって 参照解決できます(すなわち、リンクをたどることができます)。 しかし、Webリンクが関係型およびターゲット属性の集合によって さらに記述されている場合、機械も意味のある方法でリンクを たどることができます。hypermedia controlは、アフォーダンスをどのように有効化するかの 機械可読な記述です。Hypermedia controlsは通常、Webサーバーから発生し、Webクライアントが サーバーと相互作用している間にインバンドで発見されます。 このようにして、Webサーバーは現在の状態や認可などの他の要因を 考慮に入れながら、Webアプリケーションを通じてクライアントを 動的に駆動できます。これは、クライアントに事前インストールまたは ハードコードされる必要があるアウトオブバンドのインターフェース記述 (例: RPC、WS-* Webサービス、固定URI-メソッド-レスポンス定義を持つ HTTPサービス)とは対照的です。

W3C WoTは、 2種類のhypermedia controlsを 利用します。すなわち、Webをナビゲートするための確立された制御である Web links [RFC8288]と、 あらゆる種類の操作を可能にする、より強力な制御である Web formsです。リンクは、CoRE Link Format [RFC6690]、 OMA LWM2M [LWM2M]、 およびOCF [OCF]など、 他のIoT標準およびIoT platformsで すでに使用されています。Formは、 W3C WoTのほかに、 IETFによって定義されたConstrained RESTful Application Language (CoRAL) [CoRAL]でも 導入されている新しい概念です。

6.6.2 フォーム

Formsは、Consumers(または広い意味での Webクライアント)が、URIの参照解決を超える操作 (例: Thingの状態を操作すること)を実行できるようにします。 Consumersは、 フォームをfilling outし、送信先ターゲットへ submittingすることでこれを行います。これには通常、 リンクが提供できるよりも、(リクエスト)メッセージの内容に関する より詳細な情報(例: メソッド、ヘッダーフィールド、その他の プロトコルオプション)が必要です。Formsは、提供者が自身の インターフェースおよび状態に従って情報の一部を事前入力し、 一部をConsumers (または一般のWebクライアント)が入力するよう空白にした リクエストテンプレートと見ることができます。

W3C WoTは、 formsを新しいhypermedia controlとして 定義します。CoRALにおける定義は事実上同一であり、 したがって互換性があることに注意してください [CoRAL]。 CoRALでは、formは次で構成されます。

  • フォームコンテキスト、
  • 操作型、
  • 送信先ターゲット、
  • リクエストメソッド、および
  • 任意でフォームフィールド。

formは、「form contextに対して operation type操作を実行するには、 submission targetrequest method リクエストを発行する」という文として見ることができます。 ここで任意のフォームフィールドは、必要なリクエストを さらに記述する場合があります。

Form contextsおよびsubmission targetsは、どちらも Internationalized Resource Identifiers(IRIs) [RFC3987]で MUSTあります。 ただし、多くのプロトコル(HTTPなど)はIRIをサポートしないため、 一般的な場合、それらはURI [RFC3986]でも あります。

Form contextおよびsubmission targetは、 同じリソースまたは異なるリソースを指して MAYいます。ここでsubmission targetリソースは contextに対する操作を実装します。

操作型は操作のセマンティクスを識別します。 操作型はリンク関係型と同様に示されます。

リクエストメソッドは、 submission target URIスキームによって識別されるプロトコルの 標準集合のうち1つのメソッドを識別して MUSTいます。

フォームフィールドは任意であり、 指定された操作に対して期待されるリクエストメッセージを さらに指定してMAYいます。 これはペイロードに限定されず、プロトコルヘッダーにも影響する 場合があることに注意してください。 フォームフィールドは、 URIスキームで指定されるsubmission targetに使用されるプロトコルに 依存してMAYいます。 例としては、HTTPヘッダーフィールド、CoAPオプション、 リクエストペイロードのための、パラメーターを含む プロトコル非依存のmedia type [RFC2046] (すなわち完全なcontent type)、または期待されるレスポンスに 関する情報があります。

この仕様時点では、well-known操作型は WoT Interaction Modelから 得られる固定集合です。他の仕様は、それぞれの文書形式または form直列化に有効な、さらに別のwell-known操作型を定義する 場合があります。この仕様の将来版または別の仕様は、 拡張およびWoT仕様を超えて適用される可能性のある より汎用的なWeb formモデルを可能にするため、 将来IANAレジストリを設定する場合があります。

6.7 プロトコルバインディング

Protocol Bindingは、 Interaction Affordanceから、HTTP [RFC7231]、 CoAP [RFC7252]、 またはMQTT [MQTT]のような 特定のプロトコルの具体的なメッセージへの対応付けです。 これは、ネットワーク向けインターフェースを通じて Interaction Affordanceどのように有効化するかを Consumerに知らせます。 Protocol Bindingsは、 相互運用性をサポートするため、REST [REST]の Uniform Interface制約に従います。したがって、すべての通信 プロトコルがW3C WoT向けに Protocol Bindingsを 実装する資格を持つわけではありません。要件は以下の表明に 示されています。

6.2 アフォーダンスで示したドアの例では、 Protocol Bindingは、 ノブかレバーかというレベルのドアの取っ手に対応し、 ドアをどのように開けられるかを示唆します。

6.7.1 ハイパーメディア駆動

Interaction Affordancesは、 1つ以上のProtocol Bindingsを含んで MUSTいます。 Protocol Bindingsは、 Interaction Affordanceをどのように有効化するかについて自己記述的で あるために、ハイパーメディア制御として 直列化されてMUSTいます。 hypermedia controlsの権威は、Thing自身である場合があります。 その場合、実行時に(現在の状態に基づき、IPアドレスなどの ネットワークパラメーターを含めて)TD文書を生成するか、 現在のネットワークパラメーターのみを挿入してメモリから 提供します。権威は、ネットワークパラメーターおよび内部構造 (例: ソフトウェアスタック)を含む Thingについて 完全かつ最新の知識を持つ外部エンティティである場合もあります。 これにより、ThingsConsumersの間の 疎結合が可能となり、独立したライフサイクルおよび進化が 可能になります。 hypermedia controlsは、 freshnessを判定するためのキャッシュメタデータが利用可能な場合、 Thingの外部に キャッシュされ、オフライン処理に使用されて MAYいます。

6.7.2 URI

ハイパーメディア制御は、リンクおよび送信先ターゲットを 識別するためにURI [RFC3986]に 依存します。これにより、URIスキーム(「:」までの最初の構成要素)は、 ThingとのInteraction Affordanceに使用される通信プロトコルを識別します。 W3C WoTは、 これらのプロトコルをtransport protocolsと呼びます。

6.8 メディアタイプ

Interaction Affordancesを有効化するときに交換される すべてのデータ(別名content)は、Protocol Binding内で media type [RFC2046]に よって識別されてMUSTいます。 メディアタイプは表現形式を識別するラベルです。たとえば、 JSON [RFC8259]には application/json、CBOR [RFC7049]には application/cborがあります。これらはIANAによって 管理されます。

一部のメディアタイプでは、使用される表現形式を完全に指定するために 追加のパラメーターが必要になる場合があります。例として text/plain; charset=utf-8application/ld+json; profile="http://www.w3.org/ns/json-ld#compacted"があります。 これは、特にThingsへ送信されるデータを 記述する際に考慮する必要があります。 content coding [RFC7231]のように、 データに対する標準化された変換が存在する場合もあります。 Protocol Bindingsは、 media type単独よりもさらに詳細に表現形式を指定する 追加情報を持ってMAYいます。

多くのメディアタイプは、その要素に対する追加のセマンティクスを 提供しない汎用の直列化形式(例: XML、JSON、CBOR)だけを 識別することに注意してください。 したがって、 構造化データ型のInteraction Affordanceは、交換されるデータに より詳細な構文メタデータを提供するため、 data schemaと 関連付けられるSHOULDです。 詳細は、WoT Thing Description仕様 [WOT-THING-DESCRIPTION]で さらに記述されます。

6.9 国際化

Web of Thingsは相互運用可能な国際化をサポートし、 ユーザーインターフェースなどのための多言語データを扱えるようにします。 多言語Web of Things実装の設計および実装は、 Thing Description [WOT-THING-DESCRIPTION] 仕様によって導かれます。これは、[JSON-LD]および [BCP47]などの 確立された標準に基づいて、異なる言語の人間可読テキストを どのように適用できるかを記述します。

6.10 WoTシステムコンポーネントと その相互接続性

6.1 基本 概念では、ThingsConsumers、および Intermediariesなどの抽象WoT アーキテクチャコンポーネントの観点からWoTアーキテクチャを 記述しました。これらのコンポーネントが、WoTアーキテクチャで 特定のロールを担うためのソフトウェアスタックとして実装される場合、 そのようなソフトウェアスタックは Servientsと呼ばれます。 WoTアーキテクチャに基づくシステムには Servientsが含まれ、 それらはシステムの目標を達成するために互いに通信します。

この節では、システム構成図を用いて、 Servientsが WoTアーキテクチャに基づくシステムを構築するために どのように連携するかを示します。

Thingは、 Servientによって実装できます。 Thingにおいて、 Servient ソフトウェアスタックは、Exposed Thingと呼ばれる Thingの表現を含み、 そのWoT InterfaceThingConsumersが利用可能にします。 このExposed Thingは、 thingの振る舞いを実装するために、Servient上の 他のソフトウェアコンポーネント(例: アプリケーション)によって 使用される場合があります。

servient as a thing
24 Thingとしての Servient

一方、Consumersは常に Servientsによって実装されます。 なぜなら、TD内に含まれる Protocol Binding情報を通じて 設定できるプロトコルスタックを持ち、 Thing Description(TD) 形式を処理できなければならないためです。

Consumerにおいて、 Servient ソフトウェアスタックは、Consumed Thingと呼ばれる Thingの表現を提供し、 Thingsと相互作用するために TDを処理する必要がある、Servient上で 実行されるアプリケーションにそれを利用可能にします。

servient as a consumer
25 Consumerとしての Servient

Servientソフトウェアスタック内の Consumed Thingインスタンスは、 プロトコルレベルの複雑さをアプリケーションから分離する役割を 果たします。これはアプリケーションに代わって Exposed Thingsと通信します。

同様に、Intermediaryは、Servientによって実装される、さらに別の WoTアーキテクチャコンポーネントです。IntermediaryThingと そのConsumersの間に配置され、 Consumer(Thingに対して)と Thing( Consumersに対して)の両方のロールを果たします。 Intermediaryでは、Servientソフトウェアスタックが、 ConsumerConsumed Thing) とThingExposed Thing)の両方の表現を含みます。

servient as an intermediary
26 IntermediaryとしてのServient

6.10.1 直接通信

27は、 ThingConsumerとの直接通信を示します。 このThingは、Thing Descriptionsを 通じてInteraction Affordancesを公開し、Consumerは Interaction Affordancesによって Thingを 使用します。直接通信は、双方の Servientsが同じ ネットワークプロトコルを使用し、相互にアクセス可能な場合に 適用されます。

high-level architecture of consumer and thing
27 ConsumerとThingの 高レベルアーキテクチャ

Exposed Thingは、 Thing抽象のソフトウェア表現であり、 Thingによって提供される Interaction AffordancesWoT Interfaceを提供します。

Consumed Thingは、 Consumerによってconsumeされる リモートThingのソフトウェア表現であり、 アプリケーションのためにリモート Thingへのインターフェースとして 機能します。Consumerは、 TD文書を解析および処理することにより、 Consumed Thingインスタンスを 生成できます。ConsumerThingとの インタラクションは、Consumed ThingExposed Thingが、 それらの間の直接ネットワーク接続を介してメッセージを交換することで 実行されます。

6.10.2 間接通信

28では、 ConsumerThingIntermediaryを介して 互いに接続します。Servientsが異なる プロトコルを使用する場合、または認証を必要としアクセス制御 (例: ファイアウォール)を提供する異なるネットワーク上にある場合、 Intermediaryが 必要です。

high-level architecture with intermediary
28 Intermediaryを伴う 高レベルアーキテクチャ

Intermediaryは、 Exposed ThingConsumed Thingの機能を 組み合わせます。Intermediariesの機能には、 ConsumerThingとの間で Interaction Affordanceのメッセージを中継すること、 応答を高速化するために任意で Thingの データをキャッシュすること、および Intermediaryによって Thingの機能が拡張される場合に 通信を変換することが含まれます。 Intermediaryでは、 Consumed Thingが、 ThingExposed Thingの プロキシオブジェクトを作成し、 Consumerは、自身の Consumed Thingを通じて プロキシオブジェクト(すなわち IntermediaryExposed Thing)に アクセスできます。

ConsumerIntermediaryは、 IntermediaryThingとは 異なるプロトコルで通信できます。たとえば、 Intermediaryは、 CoAPを使用するThingと、 HTTPを使用するConsumerの アプリケーションとの間のブリッジを提供できます。

IntermediaryThingsとの間で 複数の異なるプロトコルが使用されている場合でも、 Consumerは、 Intermediaryを通じて 単一のプロトコルを使用し、それらの Thingsと 間接的に通信できます。認証についても同じことが当てはまります。 ConsumerConsumed Thingは、 単一のセキュリティメカニズムを使用して IntermediaryExposed Thingsとだけ 認証すればよい一方で、Intermediaryは、 異なるThingsと認証するために 複数のセキュリティメカニズムを必要とする場合があります。

通常、Intermediaryは、 元のThingThing Descriptionに 基づいて、そのプロキシオブジェクト用の Thing Descriptionを 生成します。ユースケースの要件に応じて、プロキシオブジェクトの TDは元のThingのTDと同じ識別子を 使用する場合も、新しい識別子が割り当てられる場合もあります。 必要であれば、 Intermediaryによって 生成されたTDは、他の通信プロトコルのインターフェースを 含んでMAYいます。

7. WoT構成要素

この節は非規範的です。

Web of Things(WoT)の構成要素は、抽象WoT アーキテクチャに適合するシステムの実装を可能にします。 これらの構成要素の詳細は別個の仕様で定義されています。 この節では概要と要約を提供します。

WoT構成要素は、6.3 Web Thingで 論じられ、20に示される Thingの各アーキテクチャ的側面を サポートします。個々の構成要素は、抽象的な Thingの文脈において、 29に示されています。これは抽象的な見方であり、 特定の実装を表すものではありません。むしろ、 構成要素とThingの主要な アーキテクチャ的側面との関係を示すものです。この図では、 WoT構成要素が黒い輪郭で強調されています。 WoT Thing Descriptionは、Thingとその ネットワークインターフェースを記述するメタデータを提供する 重要な構成要素です。横断的な関心事であるセキュリティは、 公開コンポーネントと保護された私的コンポーネントに分離されます。 WoT Scripting APIは任意であり、Binding Templatesは 情報提供的です。WoT Discovery構成要素は、 Thing Descriptionsを配布するためのメカニズムを定義します。 ThingThing Descriptionsを 直接提供でき、または Thing Description Directoryサービスによって提供されることもあります。

WoT構成要素
29 WoT構成要素とThingの アーキテクチャ的側面との関係。

以下の節では、各WoT構成要素について追加情報を提供します。 すなわち、WoT Thing DescriptionWoT Discoveryメカニズム、 WoT Binding Templates、および WoT Scripting APIです。 セキュリティは横断的な関心事ですが、追加の構成要素と 見なすことができます。

7.1 WoT Thing Description

WoT Thing Description(TD)仕様 [WOT-THING-DESCRIPTION]は、 セマンティック語彙に基づく情報モデルと、 JSONに基づく直列化表現を定義します。 TDsは、 人間可読かつ機械可読な方法で、 Thingsの豊富なメタデータを 提供します。TDsの 情報モデルと表現形式はいずれもLinked Data [LINKED-DATA]と整合しているため、 実装は生のJSON処理に加えて、JSON-LD [JSON-LD11]およびグラフデータベースを 利用し、メタデータの強力なセマンティック処理を可能にすることを 選択できます。

Thing Descriptionは、 名前、ID、説明などの一般メタデータを用いて Thingインスタンスを記述し、 関連するThingsまたは 他の文書へのリンクを通じて関係メタデータも提供できます。 TDsにはまた、 6.5 インタラクション モデルで定義されるインタラクションモデルに基づく Interaction Affordanceメタデータ、 Public Security Metadata、およびProtocol Bindingsを定義する通信メタデータが含まれます。 TDは、 Thingsindex.htmlと 見なすことができます。なぜなら、Thingによって提供される サービスおよび関連リソースを知るための入口点を提供し、 そのいずれもhypermedia controlsを用いて記述されるためです。

セマンティックな相互運用性のために、 TDsは、明示的な拡張点が提供されている domain-specific vocabularyを利用できます。ただし、特定の domain-specific vocabularyの開発は、現在のところ W3C WoT標準化活動の 範囲外です。

潜在的に有用な外部IoT語彙の3つの例は、 SAREF [SAREF]、 Schema Extensions for IoT [IOT-SCHEMA-ORG]、および W3C Semantic Sensor Network ontology [VOCAB-SSN]です。 TDsにおけるそのような外部語彙の使用は任意です。 将来、追加のdomain-specific vocabulariesが開発され、 TDsで使用される可能性があります。

全体として、WoT Thing Description構成要素は、2つの方法で相互運用性を促進します。 第一に、TDsは Web of Thingsにおける機械間通信を可能にします。 第二に、TDsは、 IoTデバイスにアクセスし、そのデータを利用できるアプリケーションを 作成するために必要なすべての詳細を、開発者が文書化し取得するための 共通で統一された形式として機能できます。

TDsは、他のシステムおよびデバイスにとって有用であるために、 知られているか、アクセス可能でなければなりません。 以下でより詳しく記述するWoT Discovery構成要素は、自己記述デバイスの場合にも、 別個のサービスがTDを提供するほうが適している状況 (ブラウンフィールドデバイス、制約付きデバイス、特殊な プロトコルを持つデバイス、スリープ中のデバイスなど)の場合にも、 これを実現するためのメカニズムを定義します。

7.2 Thing Model

Thing Modelは、 Thing Description インスタンスのためのテンプレートベースのモデルを定義します。 Thing Modelには インスタンス固有の情報はなく、通信およびセキュリティに基づく情報も 部分的なものだけです。この種の情報は、 Thing Descriptionのインスタンス化の作成によって補われます。

Thing Modelは主に PropertiesActions、および Eventsと、 すべてのインスタンス化された Thing Descriptionsで利用可能になる共通メタデータを記述します。 このパラダイムは、オブジェクト指向プログラミングでオブジェクト (~Thing Descriptions)を作成するための抽象クラスまたは インターフェース定義(~Thing Model)と比較できます。そのような Thing Modelsは、 たとえばIoTデバイスの大量生産、クラウドサービスにおける オンボーディングシナリオ、またはまだ開発されていない Devicesの シミュレーションに関連します。

7.3 プロファイル

現在、WoT Profile仕様は 作業草案としてのみ公開されています。

WoT Profile仕様 [WOT-PROFILE]は、 thingsおよびデバイス間ですぐに使える相互運用性を 可能にするProfilesを定義します。すぐに使える相互運用性とは、 深いレベルでの適応なしに、デバイスをさまざまな アプリケーションシナリオへ統合できることを意味します。 通常、特定のシナリオでデバイスを使用するために必要なのは、 ネットワークキーやIPアドレスの入力など、ごく小さな設定操作だけです。 これらの操作は、特別な訓練を受けていない誰でも実行できます。

7.3.1 プロファイリング方法論

profileは、WoT Thing Description仕様に適用される追加のセマンティック保証を 提供する制約と規則の集合です。これらの制約は、 WoT Thing Descriptionのさまざまな側面に追加規則を定義することによって、 有効なWoT Thing Descriptionsのサブセットを定義します。

制約対象 根拠
Thing Descriptionクラスの語彙 保証されたメタデータフィールドの集合 特定の語彙用語を必須にし、他を削除する
クラス関係 曖昧さのない構造 制限されたカーディナリティ。例: インタラクションアフォーダンスごとに 操作ごと1つのformのみ。
語彙用語の値 処理の簡素化 文字列あたりの文字数を制限する。仕様が文字列または 文字列配列を許可する場合でも、常に配列を使用する。
データスキーマ 処理の簡素化 任意の入れ子オブジェクトや配列の配列を禁止する。
セキュリティ 実装作業の削減 制限されたセキュリティメカニズムの集合のみ。
プロトコルバインディング 保証されたプロトコルセマンティクス 制限されたプロトコルおよびプロトコル機能。 例: http verbs(GET/PUT)からoperation verbsへの事前定義された対応付け、 他のプロトコルに対する同様の制約。

これらの制約と規則は、次の2つのカテゴリーに分類されます。

  • データモデルに対する制約。
  • プロトコルバインディングに対する制約。

これら2つのカテゴリーは互いに直交しています。すなわち、 profileに適合する情報モデルは、異なるプロトコルへ 対応付けることができます。各プロトコルのプロトコルバインディングは、 追加の(プロトコル固有の)制約を含む場合があります。

profileは排他的ではありません。すなわち、thingは複数の profilesに適合できます。Profilesは互いの上に構築したり、 重なり合ったりでき、拡張profileはベースラインprofileの上に 構築できます。

WoT Profiles
30 Profileアーキテクチャ

7.4 WoT Discovery

WoT Discovery仕様 [WOT-DISCOVERY]は、 ネットワーク上でWoT Thing Descriptionsを配布しアクセスするためのメカニズムを定義します。 これらのメカニズムは、Thingsおよびサービスへの アクセスを簡素化し、それらの統合をサポートすることを目的とします。 WoT Discoveryメカニズムは ローカルエリアネットワークの境界に限定されず、リモートDiscoveryも サポートできます。また、既存の検索およびDiscovery標準の 拡張として機能するようにも設計されています。

WoT Discovery構成要素の 主要な設計要件の1つは、WoTデータおよびメタデータの consumersとprovidersの双方のセキュリティおよびプライバシーを 保護することです。特に、WoT Discoveryメカニズムは、 WoT Thing Descriptionsへのアクセスを保護および制御するだけでなく、 そのようなデータおよびメタデータに関するクエリを保護し、 直接的または推論可能なメタデータの偶発的な配布を避けるように 設計されています。

強力なプライバシーおよびセキュリティを提供しつつ、 既存のDiscovery技術に対応するため、 WoT Discoveryは 2段階プロセスを使用します。第1段階では、複数の 初期接触メカニズムのうち1つを使用して、 "introduction"が 行われます。第2段階は"exploration"と呼ばれ、 実際のTDsが 利用可能になりますが、適切な認証および認可の後に限られます。

単一TDの配布と複数TDのためのディレクトリーサービスの双方を サポートする、2つのexplorationメカニズムが提供されます。

これらのメカニズムの使用は推奨されますが、必須ではありません。

7.4.1 Introductionメカニズム

Introduction メカニズムは、強力なセキュリティまたはプライバシー保証を 提供することを意図していません。そのため、比較的弱い セキュリティを持つさまざまな既存のDiscoveryメカニズムを、 次の要件を満たす限り使用できます。

  • WoT Discoveryに使用される 任意のintroduction メカニズムは、メタデータを提供してはならず、代わりに単に、 ユーザーが認証可能で適切な認可(アクセス権)を持つ場合に限り メタデータへアクセスできる、1つ以上の不透明なURLを 結果として返すべきです。
  • Introduction URLは、 人間可読なデバイス型または名前など、いかなるメタデータも それ自体に含んではなりません。ランダムに生成されたURLが 推奨されます。

7.4.2 Explorationメカニズム

適切な認証および認可プロセス(Webサービスを保護する既存の メカニズムおよび既存のプロトコルセキュリティ交渉メカニズムに 基づく)の後、WoT Discoveryは、 メタデータへの実際のアクセスを提供する、第2段階の "exploration"メカニズムの 集合を定義します。

最初で最も単純なexplorationメカニズムは、 デバイス自身から直接TDを取得する方法を定義します。 これはアドホックなピアツーピアDiscoveryをサポートします。 ただし、多くの状況(TDsの大規模な集合の管理を含むが これに限定されない)では、代替の exploration メカニズムである WoT Thing Description DirectoryTDD)サービスのほうが 適切です。

TDDは、 WoTメタデータを探索および取得するための高度な (ただし保護された)クエリメカニズムを提供します。 TDDsはまた、認可されたconsumersへ TD更新を安全に配布するための 変更通知メカニズムを提供します。任意の WoT Discovery "exploration"実装は、適切なベストプラクティスに基づく 認証および認可の後にのみ、メタデータおよび TDsを 提供しなければなりません。異なる状況における認証および認可のための 適切なベストプラクティスのセキュリティメカニズムは、 [WOT-SECURITY]で 論じられています。アクセス制御および鍵を管理するための 適切なメカニズムも、 [SOLID]で論じられています。

TDDsは 単なる便利機能ではなく、いくつかのWoTユースケースでは 不可欠です。Thingが リソース制約(例: 限られたメモリ容量、限られた電力)を持つ場合 (c.f. デバイスカテゴリー)、 仲介者による変換を必要とする特殊なプロトコルを使用する場合 (この場合、TDDが 提供するTDは、 仲介者がサポートする変換済みのネットワークインターフェースを 記述することになります)、または既存デバイス (しばしば"brownfield"デバイスと呼ばれる)を Web of Thingsの一部として使用する必要があるが、 デバイス自体をTDを自己ホストするよう容易に変更できない場合には、 TDDを使用することが適切です。

TDsは、 デバイス自身または外部エージェントによって TDDに 登録できます。ブラウンフィールドデバイスの場合、通常は 外部エージェントの使用が必要になります。

[WOT-DISCOVERY]で 定義されるDiscoveryメカニズムは 必須ではありませんが、上記の要件を満たすように設計されており、 その使用は相互運用性と使いやすさを高めます。

7.5 WoT Binding Templates

IoTでは、デバイスへアクセスするためにさまざまなプロトコルが 使用されます。なぜなら、すべての文脈に適した単一の プロトコルは存在しないためです。したがって、Web of Thingsにとって 中心的な課題は、多種多様な IoT platforms (例: OMA LWM2M、OPC UA、oneM2M)や、特定の標準に 従わないものの適切なネットワークプロトコル上で適格な インターフェースを提供するデバイスとのインタラクションを 可能にすることです。WoTは、いくつかの制約を満たさなければならない Protocol Bindingsを 通じて、この多様性に取り組んでいます(6.7 プロトコルバインディングを参照)。

Binding Templatesは、 アプリケーションクライアント(Consumer)が Thing Descriptionを使用して、プロトコル(例: HTTP、MQTT、 Modbusなど)、ペイロード形式(binary、JSON、CBOR、EXIなど)、 およびIoTプラットフォーム文脈(例: ECHONET、OPC UA)での それらの使用に関する具体的なメタデータを抽出できるという側面に 対応します。そのメタデータは、ネットワーク実装インターフェースへ 渡すことができ、Thingとのインタラクションを 確立し、ペイロードメッセージを直列化/逆直列化できます。 その文脈で、Binding Templatesには、Protocol bindings、Payload format bindings、Platform bindingsの3種類のbindingsが含まれます。

非規範的なWoT Binding Templates仕様 [WOT-BINDING-TEMPLATES]は、 異なるtransport protocolscontent typesを使用する、または特定の transport protocolscontent typesの組み合わせを使用する異なる IoT platformsまたは標準 (例: OCF、oneM2M、OMA LWM2M、OPC UA)である Thingsと どのように相互作用するかについて指針を与える設計図の集合を 提供します。特定のIoTデバイスまたはプラットフォームを 記述するとき、対応するBinding Templateを 使用して、そのプラットフォームをサポートするために Thing Descriptionで 提供すべき通信メタデータを調べることができます。

binding templates
31 Binding TemplatesからProtocol Bindingsへ

31は、Binding Templatesが どのように使用されるかを示します。プロトコル、メディアタイプ、 またはプラットフォームバインディングに基づいて、 TDが 作成されます。TDを 処理するConsumerは、 対応するプロトコルスタック、メディアタイプエンコーダー/デコーダー、 またはプラットフォームスタックを含め、 メッセージの直列化形式やヘッダーオプションなど、 TDで与えられる情報に従って スタック(またはそのメッセージ)を設定することにより、 TD内に存在する必要な Binding Templateを実装します。

Binding Templatesは 3つの次元にまたがります。

7.6 WoT Scripting API

WoT Scripting APIは、WebブラウザーAPIに類似した ECMAScriptベースのAPI [ECMAScript]を 提供することでIoTアプリケーション開発を容易にする、 W3C WoTの任意の 「便利」構成要素です。スクリプト実行時システムを WoT Runtimeへ統合することにより、 WoT Scripting APIは、ThingsConsumers、および Intermediariesの 振る舞いを定義する移植可能なアプリケーションスクリプトの使用を 可能にします。

従来、IoTデバイスロジックはファームウェアで実装されており、 比較的複雑な更新プロセスを含む、組み込み開発と同様の 生産性上の制約を生じます。これに対し、 WoT Scripting APIは、 IoTアプリケーション向け実行時システムで実行される 再利用可能なスクリプトによって、デバイスロジックの実装を 可能にします。これはWebブラウザーのそれに類似しており、 生産性を向上させ、統合コストを削減することを目的とします。 さらに、標準化されたAPIはアプリケーションモジュールの移植性を 可能にします。たとえば、計算集約的なロジックをデバイスから ローカルゲートウェイへ移動したり、時間クリティカルなロジックを クラウドからゲートウェイまたはエッジノードへ移動したりできます。

非規範的なWoT Scripting API 仕様 [WOT-SCRIPTING-API]は、 スクリプトがWoT Thing Descriptionsを発見、consume、および公開できるようにする プログラミングインターフェースの構造とアルゴリズムを定義します。 WoT Scripting APIの実行時システムは、他の Thingsとその Interaction AffordancesPropertiesActions、および Events)への インターフェースとして動作するローカルオブジェクトを インスタンス化します。また、スクリプトが Thingsを公開すること、 すなわちInteraction Affordancesを定義および実装し、 Thing Descriptionを公開することも可能にします。

7.7 WoTセキュリティおよびプライバシー ガイドライン

セキュリティは横断的な関心事であり、システム設計の すべての側面で考慮されるべきです。WoTアーキテクチャでは、 セキュリティは、TDsにおける Public Security Metadataのサポートや、 WoT Scripting APIの設計における関心の分離など、特定の明示的な機能により サポートされます。各構成要素の仕様には、その構成要素に特有の セキュリティおよびプライバシーに関する考慮事項の議論も 含まれます。別の非規範的仕様である WoT Security and Privacy Guidelines [WOT-SECURITY]は、 追加の横断的なセキュリティおよびプライバシー指針を提供します。

8. 抽象Servientアーキテクチャ

この節は非規範的です。

6.10 WoTシステムコンポーネント とその相互接続性で定義されるように、Servientは、前節で提示した WoT構成要素を実装するソフトウェアスタックです。 Servientsは、 Thingsを ホストして公開したり、Thingsを consumeしたりできます(すなわち、Consumersをホストします)。 Protocol Bindingによっては、 Servientsは serverロールとclientロールの両方で動作できるため、この混成語の名前が 使われています。

前節では、WoT構成要素が概念的に互いにどのように関連し、 抽象WoTアーキテクチャ(6. 抽象WoTシステムアーキテクチャを参照)に どのように対応するかを記述しました。これらの概念を 実装する際には、特定の技術的側面を考慮した、より詳細な見方が 必要です。この節では、Servient実装の詳細な アーキテクチャを記述します。

32は、任意の WoT Scripting API 構成要素を使用するServient実装を示します。 ここでは、WoT RuntimeはScripting Runtimeシステムでもあり、WoT固有の側面を管理することに加えて、 アプリケーションスクリプトも解釈して実行します。 Servientsで、 WoT Scripting APIをサポートするものは、通常、強力なデバイス、 エッジノード、またはクラウド上で実行されます(c.f. デバイス カテゴリー)。WoTアーキテクチャは、 WoT Runtimeの アプリケーション向けAPIをJavaScript/ECMAScriptに限定しません。 他の実行時システムもServientの実装に使用できます。

8.8.1 ネイティブWoT APIの節では、 WoT Scripting API 構成要素を使用しない代替の Servient 実装を提示します。 WoT Runtimeは、 そのアプリケーション向けAPIに任意のプログラミング言語を 使用できます。通常、それはServientソフトウェアスタックの ネイティブ言語です。たとえば組み込み ServientsではC/C++、クラウドベースの Servientsでは Javaなどです。また、アプリケーションスクリプトの利点と 低いリソース消費を組み合わせるために、Luaのような代替スクリプト言語で ある場合もあります。

アーキテクチャ実装
32 WoT Scripting APIを使用した Servientの実装

32に示される各モジュールのロールと機能は、 以下の節で説明します。

8.1 振る舞いの実装

behaviorは、Thingの全体的なアプリケーション ロジックを定義し、いくつかの側面を持ちます。

それには、Things自律的振る舞い (例: センサーのサンプリングやアクチュエーターの制御ループ)、 Interaction Affordanceshandlers(すなわち、アフォーダンスが 有効化されたときに取られる具体的なアクション)、 Consumerの振る舞い(例: Thingの制御や マッシュアップの実現)、およびIntermediaryの振る舞い (例: 単にThingをプロキシすることや 仮想エンティティを合成すること)が含まれます。 Servient内の 振る舞いの実装は、このコンポーネント上にどの ThingsConsumers、および Intermediariesが ホストされるかを定義します。

32は、任意の WoT Scripting API 構成要素を実装するServientsを描いています。そこでは、 JavaScript [ECMAScript]で書かれた 移植可能なアプリケーションスクリプトが振る舞いを定義します。 それらは、WoT Runtimeの一部である scripting runtimeシステムによって実行されます( WoT Scripting APIまたは その他のscriptベースAPIを提供する場合)。 それらは、共通のWoT Scripting API 定義に対して書かれているため移植可能であり、この構成要素を備えた 任意のServientで 実行できます。これにより、たとえばネットワーク要件を満たすために Consumerを クラウドからエッジノードへ移動したり、増大するリソース需要を満たすために Intermediaryをクラウドへ 移動したりするなど、アプリケーションロジックをシステムコンポーネント間で 移すことが可能になります。移植可能なアプリケーションにより、 Servientの配備後に追加の振る舞いを「インストール」できます。

原則として、Thingの振る舞いを定義するためには、 Interaction AffordancesWoT Interfaceを通じて 外部に提示される限り、任意のプログラミング言語およびAPIを 使用できます。アプリケーション向けAPIとプロトコルスタックの間の 適応は、WoT Runtimeによって処理されます。 WoT Scripting API 構成要素を使用しない振る舞いの実装については、 8.8.1 ネイティブWoT APIを参照してください。

8.2 WoT Runtime

技術的には、Thing抽象とその Interaction Modelは、 実行時システムで実装されます。この WoT Runtimeは、 振る舞い実装のための実行環境を維持し、 Thingsを公開および/または consumeできるため、WoT Thing Descriptionsを取得、処理、直列化、および提供できなければなりません。

すべてのWoT Runtimeは、振る舞い実装のためのアプリケーション向け インターフェース(すなわちAPI)を持ちます。 32に示される任意の WoT Scripting API構成要素は、Thing抽象に従い、 アプリケーションスクリプトを通じて実行時に振る舞い実装を 配備できる、そのようなアプリケーション向けインターフェースを 定義します。代替APIについては、8.8.1 ネイティブ WoT APIを参照してください。これはコンパイル時にのみ 利用可能である場合もあります。一般に、アプリケーションロジックは、 アプリケーションコードからWoT Runtimeの 管理側面、特にPrivate Security Dataへの不正アクセスを防止する、サンドボックス化された 実行環境で実行されるべきです。マルチテナント Servientsでは、異なるテナントが 認可なしに互いのデータへアクセスすることも防止されるべきです。

WoT Runtimeは、Things、 より正確にはそのソフトウェア抽象および記述のライフサイクルを 管理するために、特定の操作を提供する必要があります。 ライフサイクル管理(LCM)システムは、それらのライフサイクル操作を Servient内に カプセル化し、内部インターフェースを使用してライフサイクル管理を 実現する場合があります。そのような操作の詳細は、実装ごとに 異なります。WoT Scripting APIは LCM機能を含むため、そのようなシステムの1つの実装例を表します。

WoT Runtimeは、振る舞い実装を Protocol Bindingsの 詳細から切り離すため、Servientのプロトコルスタック実装と インターフェースしなければなりません。 WoT Runtimeは通常、たとえば接続されたセンサーや アクチュエーターなどのローカルハードウェアへアクセスするため、または ストレージなどのシステムサービスへアクセスするために、基盤となる システムともインターフェースします。どちらのインターフェースも 実装固有ですが、WoT Runtimeは、自身が実装する Thing 抽象への必要な適応を提供しなければなりません。

8.3 WoT Scripting API

WoT Scripting API 構成要素は、WoT Thing Description仕様 [WOT-THING-DESCRIPTION]に 密接に従うECMAScript APIを定義します。 これは、振る舞い実装とスクリプトベースの WoT Runtimeとの間の インターフェースを定義します。他のより単純なAPIも、 たとえばWebブラウザーAPI向けのjQueryと同様に、その上に 実装される場合があります。

詳細については、[WOT-SCRIPTING-API]を 参照してください。

8.4 Exposed ThingおよびConsumed Thing抽象

WoT Runtimeは、ThingsTDsに 基づいて、ソフトウェア表現をインスタンス化します。これらの ソフトウェア表現は、振る舞い実装へ向けたインターフェースを 提供します。

Exposed Thing抽象は、 ローカルにホストされ、Servientのプロトコルスタック実装を 通じて外部からアクセス可能なThingを表します。 振る舞い実装は、メタデータおよび Interaction Affordancesを定義し、その自律的振る舞いを提供することで、 Exposed Thingsを 完全に制御できます。

Consumed Thing 抽象は、通信プロトコルを使用してアクセスする必要がある、 Consumers向けの リモートにホストされたThingを表します。 Consumed Thingsは プロキシオブジェクトまたはスタブです。振る舞い実装は、 対応するTDに記述されているように、 それらのメタデータを読み取り、 Interaction Affordancesを有効化することに制限されます。 Consumed Thingsは、 ローカルハードウェアや独自またはレガシー通信プロトコルの背後にある デバイスなどのシステム機能を表すこともできます。この場合、 WoT Runtimeは、システムAPIと Consumed Thingとの間の 必要な適応を提供しなければなりません。さらに、対応する TDsを提供し、それらを振る舞い実装に 利用可能にしなければなりません。たとえば、 アプリケーション向けAPI(例: WoT Scripting API [WOT-SCRIPTING-API]で 定義されるdiscover()メソッド)を通じて、 WoT Runtimeが 提供する任意のdiscoveryメカニズムを拡張することによって行います。

WoT Scripting APIを 使用する場合、Exposed Thingおよび Consumed Thingは JavaScriptオブジェクトであり、アプリケーションスクリプトによって 作成、操作、および破棄できます。ただし、たとえばマルチテナント Servientsでは、セキュリティメカニズムを 通じてアクセスが制限される場合があります。

8.5 Private Security Data

Thingと相互作用するための秘密鍵などのPrivate security dataも、 概念的にはWoT Runtimeによって管理されますが、意図的にアプリケーションから 直接アクセス可能にはされません。実際、最も安全なハードウェア実装では、 そのようなPrivate Security Dataは、別個の隔離されたメモリ(例: セキュア処理要素または TPM上)に格納され、攻撃面を制限し、このデータの外部開示を 防止する抽象操作の集合(場合によっては隔離されたプロセッサおよび ソフトウェアスタックによって実装される)だけが提供されます。 Private Security Dataは、インタラクションの認可、完全性および機密性の保護のために、 Protocol Bindingによって 透過的に使用されます。

8.6 プロトコルスタック 実装

Servientのプロトコルスタックは、 Exposed ThingsWoT Interfaceを実装し、 Consumersによって、 リモートThingsWoT Interfaceへ(Consumed Thingsを介して)アクセスするために使用されます。 それはネットワーク越しに相互作用するための具体的なプロトコルメッセージを 生成します。Servientsは複数のプロトコルを 実装できるため、異なるIoT Platformsとの インタラクションを可能にするために、複数の Protocol Bindingsを サポートできます。

多くの場合、標準プロトコルが使用される場合は、 汎用プロトコルスタックを使用してプラットフォーム固有のメッセージを 生成できます(例: HTTP(S)方言用、CoAP(S)方言用、MQTT ソリューション用など)。この場合、 Thing Descriptionからの通信メタデータを使用して、 適切なスタックを選択および設定します(例: 適切なヘッダーフィールドを 持つHTTP、または適切なオプションを持つCoAP)。media type [RFC2046]で 識別される期待されるペイロード表現形式(JSON、CBOR、XMLなど)の パーサーおよびシリアライザーも、これらの汎用プロトコルスタック間で 共有できます。

詳細については、[WOT-BINDING-TEMPLATES]を 参照してください。

8.7 System API

WoT Runtimeの実装は、 ローカルハードウェアまたはシステムサービスを、まるで通信プロトコル越しに アクセス可能であるかのように、Thing抽象を通じて 振る舞い実装へ提供する場合があります。この場合、 WoT Runtimeは、 振る舞い実装が、プロトコルスタックではなくシステムと内部的に インターフェースするConsumed Thingsを インスタンス化できるようにするべきです。これは、ローカルの WoT Runtimeでのみ 利用可能なそのようなシステムThingsを、アプリケーション向け WoT Runtime APIによって提供される discoveryメカニズムの結果に列挙することで行えます。

デバイスはServientの 物理的外部にある場合もありますが、独自プロトコル、または WoT Interfaceとして 適格でないプロトコル(6.7 プロトコルバインディングを参照) を介して接続されている場合があります。この場合、 WoT Runtimeは、そのようなプロトコル(例: ECHONET Lite、BACnet、 X10、I2C、SPIなど)を持つレガシーデバイスへ独自APIを通じて アクセスする場合がありますが、同様に、それらを Thing抽象を介して 振る舞い実装へ公開することを選択できます。 その場合、Servientは レガシーデバイスへのゲートウェイとして動作できます。 これは、レガシーデバイスを WoT Thing Descriptionを使用して直接記述できない場合にのみ 行うべきです。

振る舞い実装は、独自APIまたは他の手段を通じて、 ローカルハードウェアまたはシステムサービス(例: ストレージ)へ アクセスする場合もあります。ただし、これは移植性を妨げるため、 W3C WoT標準化の 範囲外です。

8.8 代替ServientおよびWoT 実装

WoT Scripting API 構成要素は任意です。代替の Servient実装も可能であり、 そこではWoT Runtimeが、 任意のプログラミング言語で書かれる可能性のあるアプリケーションロジックに 代替APIを提供します。

さらに、W3C WoTを 意識しないデバイスまたはサービスでも、それらに対して整形式の WoT Thing Descriptionを提供できる場合には、consumeできます。 この場合、TDは、ブラックボックス 実装を持つThingWoT Interfaceを 記述します。

8.8.1 ネイティブWoT API

開発者がWoT Scripting APIを 使用せずにServientを実装することを 選ぶ理由はさまざまです。これは、メモリまたは計算リソースが 不十分で、必要なソフトウェアスタックやフル機能のスクリプトエンジンを 使用できないためである場合があります。あるいは、そのユースケース (たとえば独自通信プロトコル)をサポートするために、特定の プログラミング環境または言語を通じてのみ利用可能な特定の機能や ライブラリを使用しなければならない場合があります。

この場合、WoT Runtimeは引き続き 使用できますが、WoT Scripting APIの代わりに、 代替のアプリケーション向けインターフェースを使用して、 同等の抽象および機能を公開します。後者を除き、 8. 抽象Servientアーキテクチャにおける すべてのブロック記述は、 33にも有効です。

ネイティブ実装
33 ネイティブ WoT APIを使用したServientの実装

8.8.2 既存デバイス向け Thing Description

既存のIoTデバイスまたはサービスを W3C Web of Thingsへ統合し、 これらのデバイスまたはサービスのための Thing Descriptionを 作成することで、それらをThingsとして 使用することも可能です。そのようなTDは手作業で作成することも、 ツールまたはサービスを介して作成することもできます。たとえば、 別のエコシステム依存の機械可読形式で提供されるメタデータの 自動変換を提供するサービスによってTDを生成できます。 ただし、これは対象デバイスが Protocol Bindingを 使用して記述できるプロトコルを使用している場合にのみ可能です。 その要件は6.7 プロトコルバインディングに示されています。 これまでの議論の多くは、Thingが自身の Thing Descriptionを 提供することも含意しています。これは有用なパターンですが、 必須ではありません。特に、既存デバイスを変更して自身の Thing Descriptionを 直接提供できるようにすることが不可能な場合があります。 この場合、Thing Descriptionは、 directoryなどのサービス、または他の外部の別個の配布メカニズムを 使用して、別途提供される必要があります。

既存実装
34 既存IoTデバイスの W3C WoTへの統合

9. WoT配備の例

この節は非規範的です。

この節では、 ThingおよびConsumerロールを実装する デバイスおよびサービスが、さまざまな具体的なトポロジーおよび 配備シナリオで接続されるとき、Web of Things(WoT)抽象アーキテクチャをどのようにインスタンス化できるかの さまざまな例を提供します。これらのトポロジーおよびシナリオは 規範的ではありませんが、WoT抽象アーキテクチャによって可能になり、 サポートされます。

特定のトポロジーを論じる前に、まず Thingsおよび Consumersが WoTネットワーク内で果たせるロールと、 Exposed Thingおよび Consumed Thingソフトウェア 抽象との関係を確認します。 Exposed ThingおよびConsumed Thingは、 それぞれThingsおよび Consumersのロールにある Servientsの 振る舞い実装で内部的に利用できます。

9.1 ThingとConsumerのロール

Thingの ロールにあるServientは、 Thing Description (TD)に基づいてExposed Thingを作成します。 TDsは公開され、ConsumersまたはIntermediariesのロールにある 他のServientsに 利用可能にされます。TDsはさまざまな方法で公開できます。TDは Thing Description Directoryサービスなどの管理システムに 登録される場合もあれば、ThingがTD要求を受けたときに 要求者へTDを提供する場合もあります。特定のアプリケーション シナリオでは、TDをThingに静的に関連付けることさえ 可能です。

Consumerのロールにある Servientは、 discoveryメカニズムを使用してThingの TDを取得し、取得したTDに基づいてConsumed Thingを 作成します。具体的なdiscoveryメカニズムは個々の配備シナリオに 依存します。Thing Description Directoryなどの管理システム、discoveryプロトコル、 静的割り当てなどによって提供される場合があります。他の箇所で 論じられているように、可能な限り [WOT-DISCOVERY]で 定義されるDiscoveryメカニズムを使用することが 推奨されます。

ただし、識別可能な個人に関連付けられたデバイスを記述するTDsは、 プライバシー上機微な情報を推論するために使用される可能性がある点に 注意すべきです。そのため、そのようなTDsの配布に対する制約は、 具体的なTD discoveryメカニズムに組み込まれなければなりません。 可能であれば、特定のユースケースに厳密に必要でない場合には IDや人間可読情報を除去するなど、TDで公開される情報を制限する 措置も取る必要がある場合があります。プライバシー問題は 11. プライバシーに 関する考慮事項で高いレベルで論じられており、より詳細な議論は [WOT-THING-DESCRIPTION] 仕様で示され、[WOT-DISCOVERY] 仕様で対処されています。

接続されたセンサーやアクチュエーターとの相互作用など、 デバイスの内部システム機能も、任意で Consumed Thing 抽象として表現できます。

Consumed Thingによって サポートされる機能は、プログラミング言語インターフェースを通じて Consumerの振る舞い実装へ 提供されます。WoT Scripting APIでは、 Consumed Thingsは オブジェクトによって表現されます。 Thing内で実行される振る舞い実装 (すなわちアプリケーションロジック)は、 Exposed Thingが 提供するプログラミング言語インターフェースを使用して、 Interaction Affordancesを通じて Consumersと関わることができます。

Thingは、 必ずしも物理デバイスを表すわけではありません。 Thingsは、デバイスの集合や、 ゲートウェイまたはクラウド内で実行される仮想サービスを 表すこともできます。同様に、Consumerは、 ゲートウェイまたはクラウド上で実行されるアプリケーションまたはサービスを 表す場合があります。Consumersは エッジデバイス上に実装することもできます。 Intermediariesでは、単一の Servientが、 単一のWoT Runtimeを共有しながら、 ThingConsumerの両方のロールを 同時に果たします。

9.2 WoTシステムのトポロジーと 配備シナリオ

この節では、WoTシステムのさまざまなトポロジーおよび 配備シナリオについて論じます。これらは例示的なパターンに すぎず、他の相互接続トポロジーも可能です。ここで記述される トポロジーは、Web of Things Use Cases and Requirements [WOT-USE-CASES-REQUIREMENTS]から 導出されたものです。

9.2.1 同一ネットワーク上の ConsumerとThing

35に示される最も単純な 相互接続トポロジーでは、ConsumerThingは同一ネットワーク上にあり、 仲介者なしで互いに直接通信できます。このトポロジーが生じる ユースケースの1つは、Consumerがゲートウェイ上で 実行されるオーケストレーションサービスまたはその他のIoTアプリケーションであり、 Thingがセンサーまたはアクチュエーターに 接続するデバイスである場合です。ただし、client/server関係は 容易に逆転できます。clientは、Consumerロールにあるデバイスで、 ゲートウェイまたはクラウド上でThingとして実行されるサービスに アクセスする場合もあります。

同一ネットワーク上のconsumerとthing
35 同一ネットワーク上のConsumer とThing

Thingがクラウド内にあり、 Consumerがローカルネットワーク上に ある場合(Smart Homeユースケースの例については 1を参照)、実際のネットワークトポロジーは より複雑になることがあり、たとえばNAT越えを必要とし、 特定の形式のdiscoveryを許可しない場合があります。 そのような場合、後で論じるより複雑なトポロジーの1つが より適切である可能性があります。

9.2.2 仲介者を介して接続された ConsumerとThing

Intermediaryは、 ネットワーク上でThingConsumerの両方のロールを果たし、 そのWoT Runtime内で Exposed Thingおよび Consumed Thingソフトウェア 抽象の両方をサポートします。 Intermediariesは、 デバイスとネットワーク間のプロキシ、または Digital Twinsのために 使用できます。

9.2.2.1 プロキシとして動作する Intermediary

Intermediaryの 単純な応用の1つは、Thingのプロキシです。 Intermediaryが プロキシとして動作するとき、それは2つの別個のネットワークまたは プロトコルとのインターフェースを持ちます。これには、 TLSエンドポイントの提供など、追加のセキュリティメカニズムの 実装が関与する場合があります。一般にプロキシは インタラクションの集合を変更しないため、 Intermediaryによって公開されるTDは、 consumeされたTDと同じインタラクションを持ちますが、 接続メタデータは変更されます。

このプロキシパターンを実装するために、 IntermediaryThingのTDを取得し、 Consumed Thingを作成します。それは、同じ Interaction Affordancesを持つソフトウェア実装として、 Thingのプロキシオブジェクトを 作成します。その後、新しい識別子と、場合によっては新しい 通信メタデータ(Protocol Bindings)および/または新しい Public Security Metadataを持つプロキシオブジェクト用のTDを作成します。 最後に、このTDに基づいてExposed Thingが 作成され、Intermediaryは 適切な公開メカニズムを介して、他の Consumersまたは Intermediariesに TDを通知します。

プロキシとして動作するintermediaryを介して接続されたconsumerとthing
36 プロキシとして動作する Intermediaryを介して接続されたConsumerとThing
9.2.2.2 Digital Twinとして 動作するIntermediary

より複雑なIntermediariesは、 Digital Twinsとして 知られる場合があります。Digital Twinは プロトコルを変更したりネットワーク間で変換したりする場合もあれば、 しない場合もありますが、状態キャッシュ、遅延更新、さらには 対象デバイスの振る舞いの予測シミュレーションなど、追加の サービスを提供します。たとえば、IoTデバイスの電力が限られている場合、 比較的低い頻度で起動し、Digital Twinと 同期してから、直ちに再びスリープすることを選択する場合があります。 この場合、通常、Digital Twinsは より電力制約の少ないデバイス(クラウド内またはゲートウェイ上など) で実行され(c.f. デバイス カテゴリー)、制約付きデバイスの代わりに インタラクションへ応答できます。プロパティの現在状態への要求も、 Digital Twinsが キャッシュされた状態を使用して満たすことができます。対象IoTデバイスが スリープしているときに到着した要求はキューに入れられ、 起動時に送信される場合があります。このパターンを実装するために、 Intermediary、 すなわちDigital Twinは、 デバイスが起きている時を知る必要があります。 Thingとしてのデバイス実装は、 そのための通知メカニズムを含める必要がある場合があります。 これは別個のConsumer/Thingペアを 使用するか、またはこの目的のために Event インタラクションを使用して実装できます。

9.2.3 クラウドサービスから制御される ローカルネットワーク内のデバイス

Smart Homeユースケースでは、ホームネットワークに接続された デバイス(センサーおよび家電製品)は、しばしばクラウドサービスによって 監視され、場合によっては制御もされます。通常、デバイスが 接続されるホームネットワークとクラウドの間にはNATデバイスがあります。 NATデバイスはIPアドレスを変換し、多くの場合、接続を選択的に ブロックするファイアウォールサービスも提供します。ローカルデバイスと クラウドサービスは、通信がゲートウェイを正常に通過できる場合にのみ 互いに通信できます。

ITU-T勧告Y.4409/Y.2070 [Y.4409-Y.2070] で採用されている典型的な構造は、 37に示されています。この構造では、 ローカルとリモートの両方に Intermediaryがあります。ローカル Intermediaryは、複数の Thingからの Interaction Affordancesを、共通プロトコルへ対応付け可能な (1つまたは複数の)Exposed Thingsへ 集約します(たとえばHTTPでは、すべてのインタラクションを 共通のベースサーバーと単一ポートを使用する単一URL名前空間へ 対応付けます)。これにより、ローカル Intermediaryが NATデバイスを通過できる収束プロトコルを使用し、このサービスを インターネットへ公開する何らかの手段(STUN、TURN、dynamic DNSなど)を 持っていると仮定すれば、リモート Intermediaryは、 NATデバイスの背後にあるすべての Thingsへ簡単にアクセスできます。 さらに、ローカルIntermediaryは Thingプロキシとして機能できるため、接続された Thingsが それぞれ異なるプロトコル(HTTP、MQTT、CoAPなど)および/または 異なるエコシステム慣習の集合を使用している場合でも、 Exposed Thingは それらを単一のプロトコルへ収束させることができるため、 ConsumersThingsが使用するさまざまな プロトコルを意識する必要がありません。

37では、NAT境界の背後に存在する サービスを集約し、追加のプロトコル変換またはセキュリティサービスを 提供する場合があるリモート Intermediaryに、2つのclientが 接続されています。特に、ローカル Intermediaryは 容量が限られたネットワーク上にある場合があり、そのサービスを すべてのユーザーへ直接利用可能にすることは現実的でない場合があります。 この場合、ローカルIntermediaryへの アクセスは、リモートIntermediaryのみ提供されます。その後、リモート Intermediaryは、 より一般的なアクセス制御メカニズムを実装し、過剰なトラフィックから consumerを保護するためにキャッシュまたはスロットリングも 実行する場合があります。これらのconsumersはまた、開かれた インターネットに適した単一のプロトコル(例: HTTPS)を使用して Intermediaryと通信するため、 clientの開発がはるかに単純になります。

このトポロジーでは、consumersとthingsの間にNATおよび ファイアウォール機能がありますが、ローカルおよびリモートの Intermediariesが協調して、 すべての通信をファイアウォール越しにトンネルするため、 consumersとthingsはファイアウォールについて何も知る必要が ありません。ペアのIntermediariesは、 アクセス制御およびトラフィック管理を提供することで、 ホームデバイスも保護します。

クラウドアプリケーション
37 ペアのIntermediariesを介してThingsとして 実装されたローカルデバイスに接続されるConsumersとして 実装されたクラウドアプリケーション

より困難な場合、NATおよびファイアウォール越えは図示されたとおりに 機能しない可能性があります。特に、ISPが公開到達可能なアドレスを サポートしていない場合、またはSTUN/TURNおよび/またはdynamic DNSが サポートされていない、もしくは利用できない場合があります。この場合、 Intermediariesは、 それらの間でclient/serverロールを代替的に反転して初期接続を 確立し(ローカルIntermediaryが まずクラウド内のリモートIntermediaryへ接続する)、 その後、ペアのIntermediariesは、 たとえばSecure WebSocket(TLSを使用して接続を保護する)を 使用してトンネルを確立する場合があります。その後、そのトンネルを 使用して、カスタムプロトコルを用いて Intermediaries間の すべての通信をエンコードできます。この場合でも、初期接続は 標準ポートを使用したHTTPS上で行うことができ、ローカル Intermediaryから リモートIntermediaryへの接続は、 通常のブラウザー/Webサーバーのインタラクションと同一です。 これはほとんどのホームファイアウォールを通過できるはずであり、 接続は外向きであるため、ネットワークアドレス変換は問題を 引き起こしません。ただし、カスタムトンネリングプロトコルが 必要であっても、リモート Intermediaryは このカスタムプロトコルを標準の外部プロトコルへ変換し直すことが できます。接続されたConsumersおよび Thingsは、それについて 知る必要がありません。また、この例を、NAT境界のどちら側にも Thingsおよび Consumersが接続できる ユースケースへ拡張することも可能です。ただし、そのためには2つの Intermediaries間に 双方向トンネルを確立することも必要です。

9.2.4 Thing Description Directoryを用いた Discovery

ローカルデバイス(および場合によってはサービス)がクラウド上の サービスによって監視または制御できるようになると、その上に さまざまな追加サービスを構築できます。たとえば、クラウド アプリケーションは、収集データの分析に基づいてデバイスの 動作条件を変更できます。

しかし、リモートIntermediaryがclientアプリケーションを 提供するクラウドプラットフォームの一部である場合、clientsは、 たとえば接続されたデバイスのdirectoryへアクセスすることで、 デバイス情報を見つけられる必要があります。下の図では簡単のため、 すべてのローカルデバイスがThingsとして実装され、 すべてのクラウドアプリケーションがConsumersとして実装されていると 仮定しています。Thingsとして実装された ローカルデバイスのメタデータをクラウドアプリケーションへ 利用可能にするために、そのメタデータを Thing Description Directoryサービスに登録できます。このメタデータは 具体的には、リモートIntermediaryによって 提供されるPublic Security Metadataおよび通信メタデータ(Protocol Bindings)を反映するよう変更された、ローカルデバイスの TDsです。その後、clientアプリケーションは Thing Description Directoryへ問い合わせることで、その機能を 達成するためにローカルデバイスと通信するのに必要なメタデータを 取得できます。

クラウドdirectory
38 Thing Description Directoryを持つ クラウドサービス

図には示されていない、より複雑な状況では、 Thingsとして動作する クラウドサービスも存在する場合があります。これらも Thing Description Directoryに自身を登録できます。 Thing Description DirectoryはWebサービスであるため、NATまたは ファイアウォールデバイスを通じてローカルデバイスから見えるべきであり、 そのインターフェースには独自のTDさえ提供できます。 Consumersとして動作するローカルデバイスは、 その後、Thing Description Directoryを介してクラウド内の Thingsを発見し、 Thingsへ直接接続するか、 たとえばプロトコル変換が必要な場合には、ローカル Intermediaryを介して接続できます。

9.2.5 複数領域にまたがる サービス間接続

それぞれ異なるIoTプラットフォームに基づく複数のクラウド エコシステムは、より大きなシステム・オブ・システムの エコシステムを形成するために連携できます。前に論じた クラウドアプリケーションエコシステムの構造を基に、下の図は 2つのエコシステムが互いに接続され、システム・オブ・システムを 形成する様子を示します。あるエコシステム内のclient (すなわち、下のConsumer A)が、 別のエコシステム内のserver(すなわち、下の Thing B)を 使用する必要がある場合を考えます。このエコシステム横断の アプリケーション・デバイス統合を実現するメカニズムは複数あります。 以下では、これをどのように達成できるかを示すため、図を用いて 2つのメカニズムを説明します。

9.2.5.1 Thing Description Directory 同期を通じた接続

39では、2つの Thing Description Directoryインスタンスが情報を同期し、 それによりConsumer Aは Thing Description Directory Aを通じて Thing Bの情報を 取得できるようになります。前節で述べたように、リモート Intermediary Bは Thing Bの shadow実装を維持します。このshadowデバイスのTDを取得することで、 Consumer Aは リモートIntermediary Bを通じて Thing Bを使用できます。

service sync directory
39 Thing Description Directory同期を通じた複数クラウド接続
9.2.5.2 プロキシ 同期を通じた接続

40では、2つのリモート Intermediariesが デバイス情報を同期します。リモート Intermediary Bで Thing Bのshadowが 作成されると、そのshadowのTDは同時にリモート Intermediary Aへ同期されます。 リモートIntermediary Aは次に Thing Bの自身のshadowを作成し、 そのTDをThing Description Directory Aへ登録します。このメカニズムでは、 Thing Description Directoryサービス間の同期は不要です。

service sync intermediary
40 Intermediary 同期を通じた複数クラウド接続

10. セキュリティに関する考慮事項

セキュリティは、すべてのWoT構成要素および WoT実装において考慮する必要がある横断的な問題です。 この章では、具体的なWoT実装のセキュリティを保つために役立つ、 いくつかの一般的な問題およびガイドラインを要約します。 ただし、これらは一般的なガイドラインにすぎず、この文書で 記述されるような抽象アーキテクチャ自体がセキュリティを 保証することはできません。代わりに、具体的な実装の詳細を 考慮する必要があります。セキュリティ(およびプライバシー)問題の より詳細で完全な分析については、WoT Security and Privacy Guidelines文書 [WOT-SECURITY]を参照してください。

全体として、WoTの目標は、セキュリティを含め、IoTデバイスおよび サービスの既存のアクセスメカニズムと性質を記述することです。 一般に、W3C WoTは、 実装すべき内容を規定するのではなく、存在するものを記述するように 設計されています。既存システムの記述は、そのシステムの セキュリティ上の振る舞いが理想的でない場合でも、そのシステムを 正確に記述すべきです。システムのセキュリティ脆弱性を明確に 理解することは、セキュリティ緩和策を支援します。ただしもちろん、 そのようなデータを悪意を持って悪用する可能性のある者に 配布する必要はありません。

しかし、とりわけ新しいシステムについては、WoTアーキテクチャは ベストプラクティスの使用を可能にするべきです。 一般に、WoTセキュリティアーキテクチャは、それが接続する IoTプロトコルおよびシステムの目標とメカニズムをサポート しなければなりません。これらのシステムはセキュリティ要件および リスク許容度が異なるため、セキュリティメカニズムもこれらの要因に 基づいて異なります。

IoTデバイスは自律的に動作する必要があり、多くの場合、 安全上重要なシステムを制御する可能性があるため、IoT領域では セキュリティが特に重要です。IoTデバイスは、ITシステムとは 異なる、場合によってはより高いリスクにさらされます。 また、IoTシステムが他のコンピューターシステムへの攻撃を 開始するために使用されないように保護することも重要です。

一般に、セキュリティは保証できません。WoTが安全でないシステムを 安全なものに変えることはできません。しかし、WoTアーキテクチャは 害を与えない必要があります。すなわち、それが記述しサポートする システムと少なくとも同程度にセキュリティをサポートすべきです。

10.1 WoT Thing Description のリスク

WoT Thing Description(TD)に含まれるメタデータは、潜在的に機微なものです。 ベストプラクティスとして、TDsは、適切な完全性保護メカニズムおよび アクセス制御ポリシーとともに使用され、認可されたユーザーにのみ 提供することを目標とするべきです。

これらの点に関する追加の詳細および議論については、 WoT Thing Description仕様のプライバシーに関する考慮事項の節を 参照してください。

10.1.1 Thing DescriptionのPrivate Security Dataリスク

TDsはPublic Security Metadataのみを運ぶように設計されています。TD仕様で定義される 組み込みのTDセキュリティスキームは、 Private Security Dataのエンコードを意図的にサポートしていません。 しかし、人間可読な説明などの他のフィールドがこの情報を エンコードするために誤用されるリスク、またはそのような情報を エンコードする新しいセキュリティスキームが拡張メカニズムを 介して定義され配備されるリスクがあります。

緩和策:
Public Security MetadataPrivate Security Dataは厳密に分離される SHOULDです。 認証および認可は、 別個に管理されるPrivate Security Dataに基づいて確立される SHOULDです。 TDsのProducersは、 TDsPrivate Security Dataが含まれないことを保証し MUSTます。

10.1.2 Thing Descriptionの 通信メタデータリスク

セキュリティメカニズムをベストプラクティスに従って 設定していない場合、IoTデバイスとの通信は傍受または 侵害されるリスクが高くなります。

緩和策:
WoTとともに使用されるIoT Platformについて、 そのIoT Platformの ベストプラクティスに従って、通信セキュリティメタデータを 設定してください。 可能な限り、 TD作成者はWoT Binding Templatesで提供される精査済みの通信メタデータを 使用するSHOULDです。 WoT Binding Templatesで扱われていないIoT Platformのために TDsを生成する場合、TD作成者は、その IoT Platformの すべてのセキュリティ要件が満たされることを保証する SHOULDです。

10.2 WoT Scripting APIのリスク

WoT Runtime実装およびWoT Scripting APIは、システムへの悪意あるアクセスを防止し、 マルチテナントServientsにおいて スクリプトを隔離するためのメカニズムを持つべきです。より具体的には、 WoT Runtime実装は、WoT Scripting APIとともに使用される場合、次のセキュリティおよび プライバシーリスクを考慮し、推奨される緩和策を実装すべきです。

一般に、これらのリスクおよび緩和策は、 WoT Scripting APIだけでなく、 WoTシステム向けのプログラム可能な振る舞いをサポートする あらゆるシステムにも適用されるべきです。

10.2.1 クロススクリプト セキュリティリスク

基本的なWoTセットアップでは、 WoT Runtime内で実行されるすべてのスクリプトは信頼され、 製造者によって配布されるものと見なされるため、スクリプト インスタンスを互いに隔離する強い必要はありません。 しかし、デバイスの能力、配備ユースケースシナリオ、および リスクレベルによっては、そうすることが望ましい場合があります。 たとえば、あるスクリプトが機微なデータを扱い、十分に監査されている 場合、同じシステム内の他のスクリプトが実行時に侵害された場合の データ漏えいリスクを最小化するため、そのスクリプトを他の スクリプトインスタンスから分離することが望ましい場合があります。 もう1つの例は、単一のWoTデバイス上で異なるテナントが 相互に共存することです。この場合、各WoT runtimeインスタンスは 異なるテナントをホストすることになり、テナントが認可なしに 互いのデータへアクセスすることを防止することが一般に必要に なります。

緩和策:
WoT Runtimeは、 スクリプトが機微なデータを扱う場合、スクリプト インスタンスおよびそのデータを互いに隔離する SHOULDです。 同様に、 WoTデバイスに複数のテナントが存在する場合、 WoT Runtime 実装は、WoT Runtimeインスタンス およびそのデータを互いに隔離する SHOULDです。 実際には、 スクリプトおよびruntimeインスタンスを互いに隔離することは、 すべてのインスタンスを、環境の残りの部分へのアクセスを 制御する「sandboxed」環境で実行することによって実現できます。 詳細については、WoT Security and Privacy Guidelines仕様 [WOT-SECURITY]の WoT Servient Single-Tenantおよび WoT Servient Multi-Tenantの節を参照してください。

10.2.2 物理デバイスへの直接 アクセスリスク

スクリプトが侵害されたり誤動作したりした場合、 スクリプトが直接公開されたネイティブデバイスインターフェースを 使用できると、基盤となる物理デバイス(および潜在的には 周囲環境)が損傷を受ける可能性があります。そのような インターフェースが入力に対する安全性チェックを欠いている場合、 基盤となる物理デバイス(または環境)を安全でない状態に する可能性があります。

緩和策:

スクリプトが侵害された場合に物理WoTデバイスへの損害を 低減するためには、その機能に基づいて特定のスクリプトに 公開またはアクセス可能にされるインターフェースの数を 最小化することが重要です。WoT Runtimeは、 低レベルのデバイスハードウェアインターフェースを スクリプト開発者へ直接公開する SHOULD NOTです。

ハードウェア抽象化層は、追加の保護レベルを提供できます。 ハードウェア抽象化層は、アプリケーションとハードウェアの 相互作用を仲介するソフトウェアコンポーネントであり、 単純なソフトウェアライブラリである場合もありますが、 より高度な実装は、システムコールを通じてアクセス可能な ドライバーとして、またはハイパーバイザーによってサポートされる 形で実装される場合があります。ハードウェア抽象化層の より高度な版は、アプリケーションがそれらを迂回することを 防止できます。WoT Runtime実装は、 低レベルのデバイスハードウェアインターフェースへアクセスするための ハードウェア抽象化層を提供する SHOULDです。 ハードウェア 抽象化層は、デバイス(または環境)を安全でない状態にする可能性がある コマンドの実行を拒否すべきです。そのような「software interlocks」は、 システムが安全でない状態へ入ることを防止する唯一のメカニズムで あってはなりません。理想的には、ソフトウェアおよびハードウェア interlocksの両方を含む、複数の層化された安全制御を 使用すべきです。

10.3 WoT Runtimeのリスク

10.3.1 プロビジョニングおよび更新の セキュリティリスク

WoT Runtime実装が、製造後の自身、スクリプト、または関連データ (セキュリティ資格情報を含む)のプロビジョニングまたは更新を サポートする場合、それは主要な攻撃ベクトルになり得ます。 攻撃者は、更新またはプロビジョニングプロセス中に上記で 記述された要素のいずれかを変更しようとしたり、攻撃者の コードおよびデータを直接プロビジョニングしたりできます。

緩和策:
スクリプト、 WoT Runtime 自体、または関連データの製造後プロビジョニングまたは更新は、 安全な方法で行われる SHOULDです。 安全な更新および製造後プロビジョニングに関する推奨事項の集合は、 WoT Security and Privacy Guidelines 仕様 [WOT-SECURITY]に あります。

10.3.2 セキュリティ資格情報の 保存リスク

通常、WoT Runtimeは、 WoTデバイスがネットワーク内で動作するためにプロビジョニングされた セキュリティ資格情報を保存する必要があります。攻撃者がこれらの 資格情報の機密性または完全性を侵害できる場合、資産への アクセスを取得したり、他のWoT Things、デバイス、またはサービスに なりすましたり、Denial-Of-Service(DoS)攻撃を開始したりできます。

緩和策:
WoT Runtimeは、プロビジョニングされた任意のセキュリティ資格情報を、 その完全性および機密性を保証しながら安全に保存する SHOULDです。 単一の WoT対応デバイス上に複数のテナントがある場合、 WoT Runtime 実装は、各テナントのプロビジョニングされたセキュリティ資格情報を 他のテナントから隔離する SHOULDです。 プロビジョニングされた セキュリティ資格情報が侵害されるリスクを最小化するため、 WoT Runtime 実装は、スクリプトがプロビジョニングされたセキュリティ資格情報を 照会するためのAPIを公開する SHOULD NOTです。 そのような資格情報 (またはさらに望ましくは、それらを使用するが公開しない 抽象操作)は、それらを使用する基盤プロトコル実装だけが アクセス可能であるSHOULDです。

10.4 Trusted Environmentのリスク

5. 共通の 配備パターンの節では、 Trusted Environmentと セキュリティ境界の概念を含む、いくつかの使用シナリオを提示しました。 Trusted Environmentの メンバーであるエンティティはすべて、(ローカルネットワークなどの) 共通のリソース集合へのアクセスを共有し、互いに特定のアクセス権を 暗黙的に付与されます。一般的な例は、WEPパスワードへのアクセスにより、 追加のアクセス制御なしでデバイスが互いに通信できる家庭内のWiFi LANです。 このような暗黙的アクセス権を許可し、多数のエンティティに対して 単一の共有秘密を使用することは、 Trusted Environmentへ アクセスできる単一の悪意あるアクターが重大な損害を引き起こせることを 意味します。

一般的なIoT状況の1つは、家庭環境内でローカルにホストされた WebサービスへHTTP/HTMLブラウザーを使用してアクセスすることです。 そのようなローカルにホストされたWebサービスは公開表示されるURLを 持たない場合があり、そのためブラウザーがHTTP/TLS(HTTPS)の使用を 可能にするために期待するCAシステムに参加できません。この状況では 平文HTTPが使用され、通信を保護する唯一のセキュリティが たとえば比較的弱いWEPなどのネットワーク暗号化であることが よくあります。

緩和策:
信頼関係は、 可能な限り制限され、理想的にはペア単位であり、必要な アクセスだけに厳密に限定される SHOULDです。 前述のとおり、 状況によってはこれを管理することが困難であり、記述されたような 暗黙的アクセスが使用され、ブラウザーなどの特定のエンティティに 想定される場合さえあります。共通ネットワークへの アクセスによる暗黙的アクセス制御の場合、分割されたネットワークを 使用するSHOULDです。 たとえば家庭環境では、 IoTデバイス用に別個のネットワークを使用できます。商用および 産業環境では、ブラウザーがTLSを使用してローカルサービスへ アクセスできるようにするため、証明書の明示的なインストールを 使用すべきです。証明書は安全な認証をサポートし、TLSを 有効にするために必要です。TLSが有効化されると、API keysや パスワードなど、安全なトランスポートを前提とする他の セキュリティメカニズムを使用して、細粒度のアクセス制御を 提供できます。多数のサービスに単一の鍵を使用することは、 上記の「暗黙的アクセス」状況と同等であることに注意してください。

10.5 安全なトランスポート

10.4 Trusted Environmentのリスクで述べたように、家庭内のローカルLANなど、 TLSのような安全なトランスポートが実現困難または設定困難な 状況があります。残念ながら、一般にHTTPのアクセス制御メカニズムは 安全なトランスポートとともに使用されるように設計されており、 それなしでは容易に迂回される可能性があります。特に、第三者によって 傍受される可能性のある暗号化されていないプロトコルインタラクションから、 パスワードやトークンを取得することは比較的容易です。また、 TLSによるサーバー認証なしでは、中間者攻撃を容易に実装できます。

緩和策:

すべての状況で安全なトランスポートを設定する実務上の 困難があるため、それが常に必須であるという包括的な主張は 行えません。代わりに、異なるユースケースに対する要件の集合を 提供します。

公開ネットワーク:
Thingが公開インターネット上で利用可能にされ、誰でもどこからでも アクセスできる場合、それはTLSまたはDTLSなどの安全な トランスポートによって保護され MUSTます。 公開インターネット上で 利用可能なThingは公開URLを持つため、証明書を提供するための 通常のCAメカニズムが利用可能です。エンドポイントに アクセス制御がない場合、たとえば公開アクセス可能なサービスを 提供する場合であっても、これを行うべきです。なぜなら、 安全なトランスポートは要求者のプライバシー(たとえば クエリの内容)も保護するためです。
私的ネットワーク:
Thingが私的ネットワーク上で利用可能にされる場合、それは TLSまたはDTLSなどの安全なトランスポートによって保護される SHOULDです。 リスクは、 保護されるデータの機微性、損害の可能性、および私的ネットワークへの アクセスを与えられた人数に応じて増加します。安全な トランスポートは、工場ネットワークのような高リスク状況では より優先度が高く、そのような場合には事前共有鍵を インストールすることもより実用的です。低リスク状況では、 次のことが許容されます。 ファイアウォールで 保護されたLANなどの私的ネットワークは、ネットワークセキュリティ のみに依存する Trusted Environmentアプローチを使用して MAYいます。 これは一般には 推奨されませんが、実務上の理由で必要になる場合があります。 このアプローチに伴う追加のリスクおよび緩和策については、 参照されているセキュリティに関する考慮事項を参照してください。
ブラウンフィールドデバイス:
WoTは記述的であり、既存の「brownfield」デバイスの 正確な記述は、それらが安全でないことを明らかにする場合があります。 たとえば、特定のデバイスはTLSなしのHTTPを使用している可能性があり、 パスワードなどのアクセス制御を使用していても、これは安全では ありません。多くの場合、そのようなデバイスをより強力な セキュリティをサポートするようアップグレードすることはできません。 これらの場合でも、上記2つの緩和策が適用されます。私的ネットワーク上で 公開される場合、 Trusted Environmentアプローチを使用し、アクセスは可能な限り 制限すべきです。そのようなデバイスを公開インターネット上で 公開したい場合、そのセキュリティを強化するために追加の手順を 取るべきです。特に、公開ネットワーク上の通信が安全な トランスポートを使用することを保証するために、プロキシを 使用できます。プロキシはアクセス制御を提供するためにも 使用できます。

TCP上の安全な トランスポートが適切な場合、少なくともTLS 1.3 [RFC8446]が 使用されるSHOULDです。 互換性の理由で TLS 1.3を使用できないが、TCP上の安全なトランスポートが 適切である場合、TLS 1.2 [RFC5246]を 使用してMAYいます。 UDP上の 安全なトランスポートが適切な場合、可能であれば少なくとも DTLS 1.3 [RFC9147]が 推奨されます。互換性の理由でDTLS 1.3を 使用できないが、UDP上の安全なトランスポートが適切である場合、 DTLS 1.2 [RFC6347]を 使用してMAYいます。 1.2より前の DTLSまたはTLSのバージョンは、新規開発に使用して MUST NOTです。 より前のバージョンのTLSまたはDTLSを 使用する既存のThingsは、WoTメタデータ(例: Thing Descriptions)で 記述できますが、安全でないものと見なされるべきです。

ThingがPersonally Identifiable Information(PII)を明らかにし得る場合、 追加の考慮事項が適用されます。11.2 Personally Identifiable Informationへの アクセスを参照してください。

11. プライバシーに関する考慮事項

プライバシーは、すべてのWoT構成要素 およびWoT実装において考慮する必要がある横断的な問題です。 この章では、具体的なWoT実装のプライバシーを保つために役立つ、 いくつかの一般的な問題およびガイドラインを要約します。 ただし、これらは一般的なガイドラインにすぎず、この文書で 記述されるような抽象アーキテクチャ自体がプライバシーを 保証することはできません。代わりに、具体的な実装の詳細を 考慮する必要があります。プライバシー(およびセキュリティ)問題の より詳細で完全な分析については、WoT Security and Privacy Guidelines 仕様 [WOT-SECURITY]を参照してください。

11.1 WoT Thing Description のリスク

WoT Thing Description(TD)に含まれるメタデータは潜在的に機微であり、 明示的にPersonally Identifiable Information(PII)を含まない場合であっても、 そこからPIIを推論できる可能性があります。ベストプラクティスとして、 TDsは適切な完全性保護メカニズムおよびアクセス制御ポリシーと ともに使用され、認可されたユーザーにのみ提供することを目標と すべきです。一般に、前節で論じたセキュリティに 関する考慮事項の多くは、望ましくない、または 認可されていない情報開示に関係する場合、プライバシーリスクとも 見なすことができます。

これらの点に関する追加の詳細および議論については、 WoT Thing Description仕様のプライバシーに関する考慮事項の節を 参照してください。

11.1.1 Thing Descriptionの Personally Identifiable Informationリスク

Thing descriptionsは、さまざまな種類の Personally Identifiable Information(PII)を含む可能性があります。 明示的でない場合でも、TDおよびそれと識別可能な人物との関連付けは、 その人物に関する情報を推論するために使用される可能性があります。 たとえば、位置を判定できるモバイルデバイスによって公開される、 フィンガープリント可能なTDsの関連付けは、追跡リスクになり得ます。 特定のデバイスインスタンスを識別できない場合でも、 TDによって表されるデバイスの種類が人物と関連付けられると、 個人情報を構成する場合があります。たとえば、医療機器は、 ユーザーが医学的状態を有していることを推論するために 使用される可能性があります。

一般に、TD内のPersonally Identifiable Informationは、可能な限り制限されるべきです。 ただし、場合によっては避けられないこともあります。TD内に 直接的および推論可能なPIIの双方が存在する可能性があるということは、 TD全体を他の形式のPIIと同様に扱うべきであることを意味します。 それらは安全な方法で保存および送信され、認可されたユーザーにのみ 提供され、限られた期間だけキャッシュされ、要求に応じて削除され、 ユーザーの同意を得て提供された目的にのみ使用されるべきであり、 それ以外にも、PIIの使用に関するすべての要件(法的要件を含む)を 満たすべきです。

緩和策:
TDs内の 明示的なPIIの保存は、可能な限り最小化される SHOULDです。 TDsに 明示的なPIIがない場合でも、追跡および識別の プライバシーリスクが存在する可能性があります。人物と関連付けることが できるTDsは、たとえ明示的にPIIを含まない場合でも、 一般にPIIを含むものとして扱われ、他のPIIと同じ管理ポリシーの 対象とされるSHOULDです。 TDsの配布メカニズムは、 それらが認可されたConsumersにのみ提供されることを保証する SHOULDです。 なお、 WoT Discovery メカニズムは、explorationサービスで認証およびアクセス制御と ともに使用される限り、これらの特定の問題に対処するよう 設計されています。一般的なポリシーとして、不要な情報は 可能な限りTDsで公開すべきではありません。たとえば、TDs内の 明示的な型およびインスタンス識別情報は、ユースケースで必要な 場合にのみ含めるべきです。ユースケースで必要な場合でも、 追跡リスクを最小化するために、グローバル一意識別子ではなく、 分散され範囲が限定された識別子を可能な限り使用すべきです。 人間可読な説明など、他の形式の情報も、フィンガープリンティング リスクを低減するために、一部のユースケースでは省略できます。

11.2 Personally Identifiable Informationへのアクセス

11.1.1 Thing Descriptionの Personally Identifiable Informationリスクで論じた、 メタデータを通じてPersonally Identifiable Information(PII)を明らかにするリスクに加えて、 Thingsによって返されるデータ自体が機微である場合があります。 たとえば、Thingが特定の人物の位置または健康を監視している 可能性があります。人物に関連付けられた情報は、すぐには機微であると 明らかでない場合でも、他の情報と組み合わせることで機微な情報を 明らかにする可能性があるため、PIIとして扱うべきです。

緩和策:
人物に関連付けられたデータまたはメタデータ(TDsなど)を返す Thingsは、何らかの形式のアクセス制御を使用する SHOULDです。 この特別な場合として、 [WOT-DISCOVERY]で 記述されるThing Description Directoryがあります。これは、Thing Descriptionsを データとして返すThingです。そのようなdirectoryサービスは上記の 表明に含まれ、TDsが識別可能な人物に関連付けられたThingsを 記述する場合、アクセス制御を使用すべきです。Thing Descriptionsを 返すサービスの場合、次も適用されます。 不変IDを持つThing Descriptionsを返すサービスは、 何らかの形式のアクセス制御を使用する SHOULDです。 特定の人物に 関連付けられたThingsを記述するThing Descriptionsは、明示的に PIIを含まない場合でもPIIとして扱うべきであるという原則に 従えば、これはそのようなTDsを提供するdirectoriesがアクセス制御を 使用すべきであることを意味します。一般的に言えば、唯一の例外は、 分割されたネットワークなど、TD自体に記述されない別のメカニズムで アクセスが制御されている場合に限られるべきです。さらに、 アクセス制御は一般に、安全なトランスポートも使用されている場合にのみ 有効であることにも再度注意すべきです。 10.5 安全な トランスポートを参照してください。安全なトランスポートなしでの アクセス制御の使用は、せいぜい認可されていない第三者による 気軽なアクセスを抑止するだけです。

12. アクセシビリティに関する考慮事項

この節は非規範的です。

IoT一般、とりわけWoTは、アクセシビリティに関して 機会と課題の双方を提供します。一方では、インターネット対応デバイスの 機能へのネットワークアクセスにより、その機能に対する代替インターフェースを、 Webベースおよび物理的なものの双方として構築することが可能になり、 それらはデバイス自体のハードウェアに制限されません。そのような インターフェースはアクセシビリティのベストプラクティスに従うことができ、 また従うべきです。他方で、IoTデバイスは多様であり、多くの場合 コストと空間の制約があり、ネットワーク接続が確立される前の オンボーディング時など、自身のハードウェアにインターフェースを 依存する必要がある状況では、アクセシブルにすることが困難な場合があります。

WoTに関してアクセシビリティを考慮すべき状況は2つあります。 最初からWoTとともに使用されるよう設計されたgreenfieldデバイスと、 WoTが既存システムを記述するためにのみ使用されるbrownfieldデバイスです。

アクセシビリティに関連する多くのユースケースは、 WoT Use Cases and Requirements文書 [WOT-USE-CASES-REQUIREMENTS]で 扱われています。

12.1 Greenfield WoTシステム

理想的には、任意のgreenfield WoTシステムにおけるコンポーネントの 開発開始時点から、アクセシビリティを考慮すべきです。 コンポーネントのハードウェアが独自のディスプレイまたはその他の 物理的ユーザーインターフェースを持つ場合、それは可能な限り アクセシブルでなければなりません。アクセシブルにできない場合 (たとえば画面サイズの制限のため)、代替としてアクセシブルな インターフェース(Webまたは音声インターフェースなど)を使用できるよう、 同等の機能をネットワーク越しに利用可能にすべきです。 コンポーネントがネットワーク越しにアクセスされる場合、 デバイス上で直接ホストされる場合であっても、別のコンポーネント (ダッシュボードなど)によって提供される場合であっても、 アクセシブルなWebインターフェースのための規定を設けなければなりません。 オンボーディング中など、オンボードハードウェアがインターフェースの 唯一の選択肢となる状況は、可能な限りアクセシブルになるよう 注意深く設計すべきです。

一般に、Thingは、WCAGおよびEN 301 549に従って完全に アクセシブルなユーザーインターフェース(直接またはネットワークベース)の 少なくとも1つを常に持つべきです。アクセシビリティは、製造者、 設置者、デバイス所有者、エンドユーザーなど、すべての種類の ユーザーに提供されるインターフェースに適用されなければなりません。

Thingのユーザーインターフェースのアクセシビリティ状態は、 ユーザーが自分に最も適したユーザーインターフェースを選べるよう、 Thingのメタデータで宣言されるべきです。ThingがWebインターフェースを 持つ場合、Webインターフェースを記述する既存のメカニズムを 使用すべきです。Webと物理インターフェースとの接続をよりよく サポートするため、WoT Thing Descriptionに記述されたaffordancesは、 デバイス上の物理インターフェースとの関係を理解できるような形で 注釈付けされるべきです。

ユーザーインターフェースを直接提供しないコンポーネントも、 適切なデータおよび機能を提供することにより、アクセシビリティを サポートしなければなりません。たとえば、公共Things(例: 券売機またはATM)の開発者は、ユーザーが聴覚的、視覚的、または その他の信号によってThingを物理的に識別し位置を特定できる locator機能を検討すべきです。

12.2 Brownfield WoTシステム

WoTのbrownfield応用は、WoTメタデータが既存デバイスを記述するために 使用されるが、その設計時にはWoTが考慮されていなかった状況を 扱います。この場合でも、上記の規定の多くはなお適用されます。 たとえば、デバイスを監視または制御するために別のシステムが 提供するWebインターフェースは、WCAGのガイドラインに従うべきであり、 Thing Descriptionはaffordancesを適切に注釈付けすべきです。 デバイス自体の物理インターフェースがアクセシビリティ上の課題を もたらす場合、そのネットワークaffordancesに基づく代替インターフェースで それを克服できる可能性があります。

A. 最近の仕様変更

A.1 2023年7月11日の勧告案からの 変更

A.2 2023年1月19日の勧告候補からの 変更

A.3 2022年9月 7日に公開されたWDからの変更

A.4 FPWD版から2022年9月7日公開WDにおける 変更

A.5 [wot-architecture]の 1.0版からFPWDにおける変更

B. 謝辞

WoTアーキテクチャ仕様の初版を共同編集し、多くの重要な 貢献を行ったKazuo Kajimoto、Toru Kawaguchi、および Matthias Kovatschに特別な感謝を表します。Cristiano Aguzzi、Andrea Cimmino Arriaga、Kazuyuki Ashimura、Luca Barbato、Ben Francis、 Christian Glomb、Klaus Hartke、Sebastian Käbisch、Takuki Kamiya、Ari Keränen、Zoltan Kis、Ege Korkan、Michael Koster、 Philippe Le Hegaret、Kazuaki Nimura、Daniel Peintner、James Pullen、Elena Reshetova、およびFarshid Tavakolizadehによる 本文書への貢献に特別な感謝を表します。

WoT Architecture Task Forceの作業に対する継続的な支援と サポートについて、 W3CのDr. Kazuyuki Ashimuraに 特別な感謝を表します。

この文書の改善につながった支援、技術的入力、および提案について、 W3Cスタッフおよび W3C Web of Things Interest Group(WoT IG)およびWorking Group(WoT WG)のすべての active Participantsに深く感謝します。

WoT WGはまた、[WOT-PIONEERS-1] [WOT-PIONEERS-2] [WOT-PIONEERS-3] [WOT-PIONEERS-4] のような出版物および2010年に始まったInternational Workshop on the Web of Thingsという形で、学術的な取り組みとして始まった "Web of Things"概念に関する先駆的な努力にも感謝します。

最後に、WoT IGを発足時から2年間率い、Thing Descriptionを含む WoT構成要素の概念をグループが生み出すよう導いたJoerg Heuerに 特別な感謝を表します。

C. 参考文献

C.1 規範的参考文献

[BCP47]
言語を 識別するためのタグ. A. Phillips, Ed.; M. Davis, Ed.. IETF. 2009年9月. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc5646
[JSON-LD]
JSON-LD 1.0. Manu Sporny; Gregg Kellogg; Markus Lanthaler. W3C. 2020年11月3日. W3C勧告. URL: https://www.w3.org/TR/json-ld/
[RFC2046]
Multipurpose Internet Mail Extensions (MIME) Part Two: メディア タイプ. N. Freed; N. Borenstein. IETF. 1996年11月. Draft Standard. URL: https://www.rfc-editor.org/rfc/rfc2046
[RFC2119]
要求 レベルを示すためにRFCで使用されるキーワード. S. Bradner. IETF. 1997年3月. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
[RFC3986]
Uniform Resource Identifier (URI): 汎用構文. T. Berners-Lee; R. Fielding; L. Masinter. IETF. 2005年1月. Internet Standard. URL: https://www.rfc-editor.org/rfc/rfc3986
[RFC3987]
Internationalized Resource Identifiers (IRIs). M. Duerst; M. Suignard. IETF. 2005年1月. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc3987
[RFC5246]
The Transport Layer Security (TLS) Protocol Version 1.2. T. Dierks; E. Rescorla. IETF. 2008年8月. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc5246
[RFC6347]
Datagram Transport Layer Security Version 1.2. E. Rescorla; N. Modadugu. IETF. 2012年1月. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc6347
[RFC8174]
RFC 2119キーワードにおける 大文字と小文字の曖昧性. B. Leiba. IETF. 2017年5月. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc8174
[RFC8259]
The JavaScript Object Notation (JSON) Data Interchange Format. T. Bray, Ed.. IETF. 2017年12月. Internet Standard. URL: https://www.rfc-editor.org/rfc/rfc8259
[RFC8288]
Web Linking. M. Nottingham. IETF. 2017年10月. Proposed Standard. URL: https://httpwg.org/specs/rfc8288.html
[RFC8446]
The Transport Layer Security (TLS) Protocol Version 1.3. E. Rescorla. IETF. 2018年8月. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc8446
[RFC9147]
The Datagram Transport Layer Security (DTLS) Protocol Version 1.3. E. Rescorla; H. Tschofenig; N. Modadugu. IETF. 2022年4月. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc9147
[wot-architecture]
Web of Things(WoT)アーキテクチャ. Matthias Kovatsch; Ryuichi Matsukura; Michael Lagally; Toru Kawaguchi; Kunihiko Toumura; Kazuo Kajimoto. W3C. 2020年4月9日. W3C 勧告. URL: https://www.w3.org/TR/wot-architecture/
[WOT-DISCOVERY]
Web of Things(WoT)Discovery. Andrea Cimmino; Michael McCool; Farshid Tavakolizadeh; Kunihiko Toumura. W3C. 2023年12月5日. W3C勧告. URL: https://www.w3.org/TR/wot-discovery/
[WOT-PROFILE]
Web of Things(WoT)Profile. Michael Lagally; Ben Francis; Michael McCool; Ryuichi Matsukura; Sebastian Käbisch; Tomoaki Mizushima. W3C. 2023年1月18日. W3C 作業草案. URL: https://www.w3.org/TR/wot-profile/
[WOT-THING-DESCRIPTION]
Web of Things(WoT)Thing Description 1.1. Sebastian Kaebisch; Takuki Kamiya; Michael McCool; Victor Charpenay. W3C. 2023年12月5日. W3C勧告. URL: https://www.w3.org/TR/wot-thing-description11/
[WOT-USE-CASES-REQUIREMENTS]
Web of Things(WoT)Use Cases and Requirements. Michael Lagally; Michael McCool; Ryuichi Matsukura; Tomoaki Mizushima. W3C. 2020年10月. 編集者草案. URL: https://www.w3.org/TR/wot-usecases/

C.2 参考情報文献

[CoRAL]
The Constrained RESTful Application Language (CoRAL). Christian Amsüss; Thomas Fossati. IETF. 2022年3月. Internet-Draft. URL: https://datatracker.ietf.org/doc/html/draft-ietf-core-coral/
[ECMAScript]
ECMAScript 言語仕様. Ecma International. URL: https://tc39.es/ecma262/multipage/
[etsi-en-301-549]
ETSI EN 301 549 V2.1.2 (2018-08): ICT製品およびサービスの アクセシビリティ要件. ETSI. 2018年8月. 公開済み. URL: http://www.etsi.org/deliver/etsi_en/301500_301599/301549/02.01.02_60/en_301549v020102p.pdf
[HCI]
The Encyclopedia of Human-Computer Interaction, 第2版. Interaction Design Foundation. 2013. URL: https://www.interaction-design.org/literature/book/the-encyclopedia-of-human-computer-interaction-2nd-ed
[HTML]
HTML Standard. Anne van Kesteren; Domenic Denicola; Ian Hickson; Philip Jägenstedt; Simon Pieters. WHATWG. Living Standard. URL: https://html.spec.whatwg.org/multipage/
[IANA-RELATIONS]
Link Relations. IANA. URL: https://www.iana.org/assignments/link-relations/
[IEC-FOTF]
未来の 工場. IEC. 2015年10月. URL: https://www.iec.ch/basecamp/factory-future
[IOT-SCHEMA-ORG]
IoT向けSchema Extensions Community Group. URL: https://www.w3.org/community/iotschema/
[ISO-IEC-2382]
情報技術 — 用語. ISO. 2015. URL: https://www.iso.org/obp/ui/#iso:std:iso-iec:2382:ed-1:v2:en
[ISO-IEC-27000]
情報技術 — セキュリティ技術 — 情報セキュリティ管理システム — 概要および 用語. ISO. 2018. URL: https://www.iso.org/obp/ui/#iso:std:iso-iec:27000:ed-5:v1:en
[ISO-IEC-29100]
情報技術 — セキュリティ技術 — プライバシーフレームワーク. ISO. 2011. URL: https://www.iso.org/obp/ui/#iso:std:iso-iec:29100:ed-1:v1:en
[JSON-LD11]
JSON-LD 1.1. Gregg Kellogg; Pierre-Antoine Champin; Dave Longley. W3C. 2020年7月16日. W3C勧告. URL: https://www.w3.org/TR/json-ld11/
[LINKED-DATA]
Linked Data Design Issues. Tim Berners-Lee. W3C. 2006年7月27日. W3C内部文書. URL: https://www.w3.org/DesignIssues/LinkedData.html
[LWM2M]
Lightweight Machine to Machine技術 仕様: Core. OMA SpecWorks. 2018年8月. Approved Version: 1.1. URL: https://openmobilealliance.org/release/LightweightM2M/V1_1-20180710-A/OMA-TS-LightweightM2M_Core-V1_1-20180710-A.pdf
[MQTT]
MQTT Version 3.1.1 Plus Errata 01. Andrew Banks; Rahul Gupta. OASIS標準. 2015年12月. URL: https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html
[NORMAN]
The Psychology of Everyday Things. Donald A. Norman. Basic Books. 1988.
[OCF]
OCF Core Specification. Open Connectivity Foundation. 2019年4月. Version 2.0.2. URL: https://openconnectivity.org/developer/specifications/
[REST]
REST: ネットワークベースソフトウェアアーキテクチャの アーキテクチャスタイルと設計. Roy Thomas Fielding. University of California, Irvine. 2000. 博士論文. URL: https://www.ics.uci.edu/~fielding/pubs/dissertation/fielding_dissertation.pdf
[RFC6202]
双方向HTTPにおける Long PollingおよびStreamingの使用に関する既知の問題と ベストプラクティス. S. Loreto; P. Saint-Andre; S. Salsano; G. Wilkins. IETF. 2011年4月. Informational. URL: https://www.rfc-editor.org/rfc/rfc6202
[RFC6690]
Constrained RESTful Environments (CoRE) Link Format. Z. Shelby. IETF. 2012年8月. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc6690
[RFC7049]
Concise Binary Object Representation (CBOR). C. Bormann; P. Hoffman. IETF. 2013年10月. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc7049
[RFC7228]
制約ノードネットワークの 用語. C. Bormann; M. Ersue; A. Keranen. IETF. 2014年5月. Informational. URL: https://www.rfc-editor.org/rfc/rfc7228
[RFC7231]
Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. R. Fielding, Ed.; J. Reschke, Ed.. IETF. 2014年6月. Proposed Standard. URL: https://httpwg.org/specs/rfc7231.html
[RFC7252]
The Constrained Application Protocol (CoAP). Z. Shelby; K. Hartke; C. Bormann. IETF. 2014年6月. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc7252
[RFC7641]
Constrained Application Protocol (CoAP)における リソースの観測. K. Hartke. IETF. 2015年9月. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc7641
[SAREF]
Smart Appliances REFerence (SAREF) ontology. ETSI. 2015年11月. URL: https://sites.google.com/site/smartappliancesproject/ontologies/reference-ontology
[SOLID]
Solid Technical Reports. W3C Solid CG. 2021年4月. URL: https://solidproject.org/TR/
[VOCAB-SSN]
Semantic Sensor Network Ontology. Armin Haller; Krzysztof Janowicz; Simon Cox; Danh Le Phuoc; Kerry Taylor; Maxime Lefrançois. W3C. 2017年10月19日. W3C 勧告. URL: https://www.w3.org/TR/vocab-ssn/
[WCAG22]
Web Content Accessibility Guidelines (WCAG) 2.2. Michael Cooper; Andrew Kirkpatrick; Alastair Campbell; Rachael Bradley Montgomery; Charles Adams. W3C. 2023年10月5日. W3C勧告. URL: https://www.w3.org/TR/WCAG22/
[WOT-BINDING-TEMPLATES]
Web of Things(WoT)Binding Templates. Michael Koster; Ege Korkan. W3C. 2023年9月28日. W3C Working Group Note. URL: https://www.w3.org/TR/wot-binding-templates/
[WOT-PIONEERS-1]
Web of Thingsとのモバイルサービス インタラクション. E. Rukzio, M. Paolucci; M. Wagner, H. Berndt; J. Hamard; A. Schmidt. Proceedings of 13th International Conference on Telecommunications (ICT 2006), Funchal, Madeira island, Portugal. 2006年5月. URL: https://pdfs.semanticscholar.org/3ee3/a2e8ce93fbf9ba14ad54e12adaeb1f3ca392.pdf
[WOT-PIONEERS-2]
Thingsを RESTへ置く. Erik Wilde. UCB iSchool Report 2007-015, UC Berkeley, Berkeley, CA, USA. 2007年11月. URL: https://escholarship.org/uc/item/1786t1dm
[WOT-PIONEERS-3]
Poster Abstract: Dyser – Web of Things向けリアルタイム検索 エンジンを目指して. Benedikt Ostermaier; B. Maryam Elahi; Kay Römer; Michael Fahrmair; Wolfgang Kellerer. Proceedings of ACM SenSys 2008, Raleigh, NC, USA. 2008年11月. URL: https://www.vs.inf.ethz.ch/publ/papers/ostermai-poster-2008.pdf
[WOT-PIONEERS-4]
Web of Thingsのためのリソース指向アーキテクチャ. Dominique Guinard; Vlad Trifa; Erik Wilde. Proceedings of Internet of Things 2010 International Conference (IoT 2010). Tokyo, Japan. 2010年11月. URL: https://ieeexplore.ieee.org/abstract/document/5678452
[WOT-SCRIPTING-API]
Web of Things(WoT)Scripting API. Zoltan Kis; Daniel Peintner; Cristiano Aguzzi; Johannes Hund; Kazuaki Nimura. W3C. 2023年10月3日. W3C Working Group Note. URL: https://www.w3.org/TR/wot-scripting-api/
[WOT-SECURITY]
Web of Things(WoT)Security and Privacy Guidelines. ; Michael McCool; Elena Reshetova. W3C. 2019年3月. URL: https://www.w3.org/TR/wot-security/
[Y.4409-Y.2070]
ITU-T Rec. Y.4409/Y.2070 (01/2015) ホームエネルギー管理システムおよび ホームネットワークサービスの要件と アーキテクチャ . ITU-T. 2015年1月. 勧告. URL: https://www.itu.int/rec/T-REC-Y.2070-201501-I