NTT DOCOMO, INC., Copyright 2016, All rights reserved. 0
デバイスコネクトWebAPIの
開発状況について
2016年6月29日
株式会社NTTドコモ サービスイノベーション部
山添 隆文
NTT DOCOMO, INC., Copyright 2016, All rights reserved. 1
メガネ型
デバイス
言葉の説明
・GotAPI(Generic Open Terminal API):スマートフォンにWebインターフェースを持たせる仕様
・デバイスWebAPI:具体的なデバイスの機能をWebAPIとしてどう記述するかの仕様
・デバイスコネクト:ドコモ提供のGotAPI準拠の開発フレームワーク(MITライセンスのOSS)
温度
センサー
時計型
デバイス
アクション
カメラ
デバイス2
スマートフォン様々なデバイス
ネイティブ
アプリ
…
スマート
家電A規
格
心拍数計
スマート
家電B規
格
Web
インター
フェース Webアプリ/
Webブラウザ
ハイブリッド
アプリ
機能の定義
デバイス1
デバイス2
デバイス3
ライト
画面 加速度
心拍数
カメラ
通知
画面
加速度 通知
デバイス1
デバイス3
OMA GotAPI
デバイスWebAPI
デバイスコネクト:GotAPIに準拠しつつ、拡張したフレームワーク
NTT DOCOMO, INC., Copyright 2016, All rights reserved. 2
{
"result": 0,
"connect": { "bluetooth": true },
"supports": [
"canvas",
"vibration"
]
}
現状の機能Profileリスト取得(serviceInformation)での課題
・仕様を把握していないと、どのようにAPIを使えばいいのかがわからない
・同じ機能Profileでもデバイス毎に使える機能の範囲が異なる
GET <ホスト名>:4035/gotapi/serviceInformation
具体的にどう使うのかがわかりにくい
serviceInformationの改善
NTT DOCOMO, INC., Copyright 2016, All rights reserved. 3
{
"result": 0,
"connect": { "bluetooth": true },
"supports": ["canvas", "vibration"],
"supportApis": {
"canvas": [
{
"name": "Canvas Draw Image API",
"type": "one-shot",
"method": "POST",
"path": "/gotapi/canvas/drawImage",
"requestParams": [ (省略) ]
},
{
"name": "Canvas Delete Image API",
"type": "one-shot",
"method": "DELETE",
"path": "/gotapi/canvas/drawImage",
"requestParams": [ (省略) ]
}
],
"vibration": [
(省略)
]
}
}
標準化仕様との整合性を保ちつつ、機能リストの具体的なAPI記述を取得
supportApis[“canvas”][1].method+<ホスト名:4035>+supportApis[“canvas”][1].pathで
「DELETE <ホスト名>:4035/gotapi/canvas/drawImage」
機能のエンドポイント
のリストを追加
serviceInformationの改善
NTT DOCOMO, INC., Copyright 2016, All rights reserved. 4
API記述のキャメルケース(camelCase:単語の始まりを大文字に)/
スネークケース(snake_case:”_”で区切る)の混在の解消
・media_player⇒mediaPlayer
・mediastream_recording⇒mediaStreamRecording
※ただし、MediaStreamRecording、mediastreamrecordingといった記述も許容する
※現行APIが使えなくなるわけではないので、現行のプラグインとそれに対応するアプリ上
の記述には影響なし。
※スネークケースでないと可読性が低下する?
⇒pathや機能の粒度の設計に課題がある(と、ひとまず考えておく)
API仕様の整理
NTT DOCOMO, INC., Copyright 2016, All rights reserved. 5
Swaggerベースでのモデルファーストのフレームワーク提供
⇒クラウドサービスとしてもスマートフォン上アプリとしても
同一のAPI設計で機能提供を実現
API仕様の整理:今後の計画
Android開発環境
デバイスコネクト
プラグイン環境
プラグイン実装
デバイス依存
のSDK等
API
仕様
iOS開発環境
デバイスコネクト
プラグイン環境
プラグイン実装
デバイス依存
のSDK等
API仕様
Swagger
API
ドキュメント
Android用
ソースコード
iOS用
ソースコード
クラウド用
APIの骨組み
計画
API仕様から各環境のコードを生成
現状
一般的なアプリ開発のやり方
デバイス依存のSDK等
機能の対応付け
機能の対応付け
実装への落とし込み作業
自動生成
NTT DOCOMO, INC., Copyright 2016, All rights reserved. 6
・マネージャ起動処理の自動化、URLスキーム、
インテント起動の整備
機能マネージメントの改善
LaunchActivity
gotapi://start?url=http://xxx
gotapi://stop
WebView
ネイティブアプリ
ハイブリッドアプリ
Webアプリ
URLスキーム
インテント
端末起動時
NTT DOCOMO, INC., Copyright 2016, All rights reserved. 7
・プラグインのリソース管理、未使用リソース解放
・アプリ・サービス単位でのリソース管理
機能マネージメントの改善
アプリAを強制終了
リソース2が
自動で開放
アプリA
アプリB
マネージャ
リソース1(A,Bが利用)
リソース2(Aが利用)
アプリとは独立にリソース
制御を行う必要がある
アプリB マネージャ
リソース1
リソース2
改善後現状
アプリB マネージャ リソース1
NTT DOCOMO, INC., Copyright 2016, All rights reserved. 8
・設定画面からのデバイス状態確認、機能確認
機能マネージメントの改善
・機能確認
serviceInformationの追加機能を
利用し、自動生成
・デバイス状態確認

デバイスコネクトWebAPIの開発状況について

  • 1.
    NTT DOCOMO, INC.,Copyright 2016, All rights reserved. 0 デバイスコネクトWebAPIの 開発状況について 2016年6月29日 株式会社NTTドコモ サービスイノベーション部 山添 隆文
  • 2.
    NTT DOCOMO, INC.,Copyright 2016, All rights reserved. 1 メガネ型 デバイス 言葉の説明 ・GotAPI(Generic Open Terminal API):スマートフォンにWebインターフェースを持たせる仕様 ・デバイスWebAPI:具体的なデバイスの機能をWebAPIとしてどう記述するかの仕様 ・デバイスコネクト:ドコモ提供のGotAPI準拠の開発フレームワーク(MITライセンスのOSS) 温度 センサー 時計型 デバイス アクション カメラ デバイス2 スマートフォン様々なデバイス ネイティブ アプリ … スマート 家電A規 格 心拍数計 スマート 家電B規 格 Web インター フェース Webアプリ/ Webブラウザ ハイブリッド アプリ 機能の定義 デバイス1 デバイス2 デバイス3 ライト 画面 加速度 心拍数 カメラ 通知 画面 加速度 通知 デバイス1 デバイス3 OMA GotAPI デバイスWebAPI デバイスコネクト:GotAPIに準拠しつつ、拡張したフレームワーク
  • 3.
    NTT DOCOMO, INC.,Copyright 2016, All rights reserved. 2 { "result": 0, "connect": { "bluetooth": true }, "supports": [ "canvas", "vibration" ] } 現状の機能Profileリスト取得(serviceInformation)での課題 ・仕様を把握していないと、どのようにAPIを使えばいいのかがわからない ・同じ機能Profileでもデバイス毎に使える機能の範囲が異なる GET <ホスト名>:4035/gotapi/serviceInformation 具体的にどう使うのかがわかりにくい serviceInformationの改善
  • 4.
    NTT DOCOMO, INC.,Copyright 2016, All rights reserved. 3 { "result": 0, "connect": { "bluetooth": true }, "supports": ["canvas", "vibration"], "supportApis": { "canvas": [ { "name": "Canvas Draw Image API", "type": "one-shot", "method": "POST", "path": "/gotapi/canvas/drawImage", "requestParams": [ (省略) ] }, { "name": "Canvas Delete Image API", "type": "one-shot", "method": "DELETE", "path": "/gotapi/canvas/drawImage", "requestParams": [ (省略) ] } ], "vibration": [ (省略) ] } } 標準化仕様との整合性を保ちつつ、機能リストの具体的なAPI記述を取得 supportApis[“canvas”][1].method+<ホスト名:4035>+supportApis[“canvas”][1].pathで 「DELETE <ホスト名>:4035/gotapi/canvas/drawImage」 機能のエンドポイント のリストを追加 serviceInformationの改善
  • 5.
    NTT DOCOMO, INC.,Copyright 2016, All rights reserved. 4 API記述のキャメルケース(camelCase:単語の始まりを大文字に)/ スネークケース(snake_case:”_”で区切る)の混在の解消 ・media_player⇒mediaPlayer ・mediastream_recording⇒mediaStreamRecording ※ただし、MediaStreamRecording、mediastreamrecordingといった記述も許容する ※現行APIが使えなくなるわけではないので、現行のプラグインとそれに対応するアプリ上 の記述には影響なし。 ※スネークケースでないと可読性が低下する? ⇒pathや機能の粒度の設計に課題がある(と、ひとまず考えておく) API仕様の整理
  • 6.
    NTT DOCOMO, INC.,Copyright 2016, All rights reserved. 5 Swaggerベースでのモデルファーストのフレームワーク提供 ⇒クラウドサービスとしてもスマートフォン上アプリとしても 同一のAPI設計で機能提供を実現 API仕様の整理:今後の計画 Android開発環境 デバイスコネクト プラグイン環境 プラグイン実装 デバイス依存 のSDK等 API 仕様 iOS開発環境 デバイスコネクト プラグイン環境 プラグイン実装 デバイス依存 のSDK等 API仕様 Swagger API ドキュメント Android用 ソースコード iOS用 ソースコード クラウド用 APIの骨組み 計画 API仕様から各環境のコードを生成 現状 一般的なアプリ開発のやり方 デバイス依存のSDK等 機能の対応付け 機能の対応付け 実装への落とし込み作業 自動生成
  • 7.
    NTT DOCOMO, INC.,Copyright 2016, All rights reserved. 6 ・マネージャ起動処理の自動化、URLスキーム、 インテント起動の整備 機能マネージメントの改善 LaunchActivity gotapi://start?url=http://xxx gotapi://stop WebView ネイティブアプリ ハイブリッドアプリ Webアプリ URLスキーム インテント 端末起動時
  • 8.
    NTT DOCOMO, INC.,Copyright 2016, All rights reserved. 7 ・プラグインのリソース管理、未使用リソース解放 ・アプリ・サービス単位でのリソース管理 機能マネージメントの改善 アプリAを強制終了 リソース2が 自動で開放 アプリA アプリB マネージャ リソース1(A,Bが利用) リソース2(Aが利用) アプリとは独立にリソース 制御を行う必要がある アプリB マネージャ リソース1 リソース2 改善後現状 アプリB マネージャ リソース1
  • 9.
    NTT DOCOMO, INC.,Copyright 2016, All rights reserved. 8 ・設定画面からのデバイス状態確認、機能確認 機能マネージメントの改善 ・機能確認 serviceInformationの追加機能を 利用し、自動生成 ・デバイス状態確認