9

Click here to load reader

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

Embed Size (px)

Citation preview

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

NTT DOCOMO, INC., Copyright 2016, All rights reserved. 0

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

2016年6月29日

株式会社NTTドコモ サービスイノベーション部

山添 隆文

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

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に準拠しつつ、拡張したフレームワーク

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

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の改善

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

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の改善

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

NTT DOCOMO, INC., Copyright 2016, All rights reserved. 4

API記述のキャメルケース(camelCase:単語の始まりを大文字に)/スネークケース(snake_case:”_”で区切る)の混在の解消

・media_player⇒mediaPlayer

・mediastream_recording⇒mediaStreamRecording

※ただし、MediaStreamRecording、mediastreamrecordingといった記述も許容する

※現行APIが使えなくなるわけではないので、現行のプラグインとそれに対応するアプリ上の記述には影響なし。

※スネークケースでないと可読性が低下する?⇒pathや機能の粒度の設計に課題がある(と、ひとまず考えておく)

API仕様の整理

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

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等

機能の対応付け

機能の対応付け

実装への落とし込み作業自動生成

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

NTT DOCOMO, INC., Copyright 2016, All rights reserved. 6

・マネージャ起動処理の自動化、URLスキーム、インテント起動の整備

機能マネージメントの改善

LaunchActivity

gotapi://start?url=http://xxxgotapi://stop

WebView

ネイティブアプリ

ハイブリッドアプリ

Webアプリ

URLスキーム

インテント

端末起動時

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

NTT DOCOMO, INC., Copyright 2016, All rights reserved. 7

・プラグインのリソース管理、未使用リソース解放・アプリ・サービス単位でのリソース管理

機能マネージメントの改善

アプリAを強制終了

リソース2が自動で開放

アプリA

アプリBマネージャ

リソース1(A,Bが利用)

リソース2(Aが利用)

アプリとは独立にリソース制御を行う必要がある

アプリB マネージャリソース1

リソース2

改善後現状

アプリB マネージャ リソース1

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

NTT DOCOMO, INC., Copyright 2016, All rights reserved. 8

・設定画面からのデバイス状態確認、機能確認

機能マネージメントの改善

・機能確認serviceInformationの追加機能を

利用し、自動生成

・デバイス状態確認