仕事でNGSIによるInformation modelを扱う機械になったのでまとめてみた。
NGSIとは
ネットワークAPIの共通規格のこと
国内では主にNECがメインとなって進めていた。
OMA(Open Mobile Alliance)という団体で、仕様策定などを行なっている。
各国、各社の取り組みについて
国内
官民データ活用共通プラットフォーム協議会(製造業やSIer、クラウドベンダーなどの集まり)がNGSIを用いたシステムの実証実験を2018年ごろから実施している。
## 海外
欧州の官民プロジェクトにて
NGSIをベースとしたFIWAREというスマートシティプラットーフォームで活用できるOSS群の活用や、中のデータの持ち方などを定義している。
NGSI v2とは
改良され単純化された OMA-NGSIのバインディング
- 単純なことが容易にできる
- 複雑なことができる
- アジャイル、実装主導型のアプローチ
- デベロッパー・フレンドリー(RESTful, JSON)
リソースURLに/v2プレフィックスを使用する。
モデル(NGSI)
RESTful-ness
NGSI v1では
- 厳密ではRESTfulではなかった。リソースを識別することはできず、単なる操作の種類を示していた。
- POSTのみであった。
- 実際、RESTfulというよりも、RPCに近い。
NGSI v1との違い
JSON
以下のようにリクエスト・レスポンスの一連の動きをみても
ペイロードの長さやURLの簡潔さにおいて、v2はv1よりも優れていることがわかる。
v1はXMLエンコーディングに合わせて文字列ベースで作られていたが、v2ではJSONベースで様々な型が利用できる。
Datetimeについても、v1は文字列でしか扱うことはできないが、v2ではサポートされている。
これは、v2が優れているというより、v1がビミョーなきがする。
ページネーションだと露骨にv1はまずい。
上:v1、下:v2
errorCodeとして扱われている。(errorではないにも関わらず)
その他
RESTfulとは
REpresentational State Transferの略
特徴
アドレス可能性
URIをつうじ、リソースを端的にさし示すことができる性質を有している。APIのバージョン、データを取得するのか、それとも更新するのか、などが一目でわかるように全ての情報が一意なURIで表現されているようにすること。
ステートレス性
全てのHTTPリクエストが完全に分離している性質であること。セッション管理などの状態管理は行われない。
接続性
ある情報に「別の情報へのリンク」を含めることができること。また別の情報に接続できること。
統一インタフェース
CRUDは全てHTTPメソッドを使用すること
参考資料
https://businessnetwork.jp/Detail/tabid/65/artid/245/Default.aspx
https://www.slideshare.net/fisuda/ngsiv2-overview-for-developers-that-already-know-ngsiv1-ja