こんにちは。CData Software Japanエンジニアの浦邊です。
本記事ではDevice Web API ManagerとCData JDBC REST Driverを利用し、JDBC経由で手元のスマートフォンのデータにアクセスする方法を紹介します。
Device Web API Manager
ウェアラブルデバイスやIoTデバイスの多様化に伴い、デバイス間連携がますます重要になっています。 デバイス間の連携を実現するためには、各デバイスに合わせた連携用のソフトウェアを開発する必要があります。 デバイスメーカーによってはネイティブアプリケーション向けにSDKを提供している場合もありますが、仕様や使い方がメーカ間で統一されていません。 そのため、異なるメーカのデバイス間で連携を実装する際には、それぞれのSDKの仕様を理解する必要があり、開発コストの増大につながっています。 これらの課題を解決するために、HTTPを使って外部デバイスとの連携を中継する共通のフレームワークとしてGotAPI (Generic Open Termainal API)が開発されました。 GotAPIとは、多種多様なデバイスを統一したWebインタフェースで扱うための仕様です。デバイス上の仮想サーバが提供するWebAPIにより、ハードウェアやOSに依存しない共通動作を実現します。
Device Web API ManagerはGClue社が提供する、Got APIを実装したアプリです。 OMA策定のOMA Generic Open Terminal API Framework V1.1(GotAPI)をサポートしており、デバイス上で起動している仮想サーバを通して、ハードウェアへのアクセスが可能になります。
CData REST JDBC Driver
CData REST JDBC DriverはRESTインタフェースへのJDBCアクセスを実現するドライバです。 このドライバを利用することで、JavaベースのアプリケーションやJavaコードからRESTインタフェースに簡単に接続することができます。 今回はCData REST JDBC Driverを使用し、Javaベースのデータベース可視化ツール「DBVisualizer」でスマートフォンのデータにアクセスします。
必要なもの
事前準備
Device Web API Managerのインストール
スマートフォンのアプリストア(GooglePlay, AppStore)を開き、「Device Web API Manager」をインストールします。
CData REST JDBC Driverのインストール
CData Software Japan社のREST JDBC Driverダウンロードページにアクセスしてください。 ダウンロードページの「評価版」をクリックすると必要事項入力画面が表示されます。
必要事項を入力し、「ダウンロード」をクリックするとREST JDBC Driver評価版のインストーラがダウンロードされます。 ダウンロードしたsetup.jarファイルをダブルクリックするとインストーラが起動しますので、ウィザードに従ってインストールしてください。 途中、ライセンスサーバーへのオンラインアクティベーションが行われるためネットワーク環境に接続されている必要があります。 ライセンスサーバにアクセス出来ないネットワーク環境の場合は、CData Software Japan テクニカルサポートまでお問い合わせください。
Device Web API Managerの設定
Device Web API Managerを開きます。はじめにサービスのIPアドレスを確認してください。 これはAPIにアクセスするためのIPアドレスになりますのでメモしておきます。
もしサービスが起動していたらオフにします。 「設定」から設定画面を開き、「外部IPを許可」をチェックします。 また、今回はテストのため「Local OAuth」と「Origin有効化」のチェックを外し、認証を省略します。
設定画面の上に戻り、「Device Web API Manager」をオンにしてサービスを起動します。
Service Idを取得
ブラウザから以下のURLにアクセスします。 <IPアドレス>は先ほどメモしたIPアドレスで置き換えてください。
http://<IPアドレス>:4035/gotapi/servicediscovery
レスポンスの「Id」の値がAPIにアクセスするためのService Idとなりますので、この値をメモしておきます。
DBVisualizerによるJDBCのアクセス
以上でJDBC経由でスマートフォンのデータにアクセスする準備ができました。 今回は、データの確認にデータベースツールDBVisualizerを使います。
ドライバの登録
DBVisualizerで初めてCData REST Driverを使う際にはドライバを登録する必要があります。 以下の手順に従ってドライバを登録してください。
- 「Tools」メニューから「Driver Manager」ダイアログを開きます。
- 「+」ボタンをクリックし、新しいドライバを追加します。
- 「Name」に分かりやすい名前(本例では「CData REST Driver」)、「URL Format」に「jdbc:rest:」と入力します。
- jarファイルを開くアイコンをクリックし、CData REST JDBC Driverのインストールフォルダのlibフォルダにある「cdata.jdbc.rest.jar」ファイルを選択します。
- jarファイルの読み込みが完了したらDriver Managerダイアログを閉じます。
データへのコネクション作成
登録したドライバを使ってコネクションを作成します。 「Connections」を右クリックし「Create Database Connections」を選択します。 ウィザードを使用するかどうか聞かれた場合はNoを選択します。 接続設定画面が開いたら、「Name」に任意のコネクション名を入力し、「Driver(JDBC)」に先ほど作成したドライバ(CData REST Driver)を選択します。 「Database URL」に以下の接続文字列を入力します。<IPアドレス>と<Service id>は前節で取得した値にそれぞれ置き換えてください。
jdbc:rest:URI=http://<IPアドレス>:4035/gotapi/battery?serviceId=<Service id>.localhost.deviceconnect.org
「Connect」をクリックしエラーが出ないことを確認します。
データの確認
DBVisualizerを開きます。 作成したコネクションを選択して「Connect」をクリックします。 スキーマの階層を展開し「json」テーブルを開きます。
「Data」タブを開き、データの内容を確認します。 下図の通り、APIからcharging(充電状況)、level(バッテリー残量)等を取得することができました。
ここで、スマートフォンに充電ケーブルを刺して充電を開始します。 テーブルを更新すると、下図のようにchargingがtrue(充電中)と変わることが確認できます。
次にスマートフォンがある位置を取得してみます。 位置情報のエンドポイントはgotapi/geolocation/currentPositionです。
接続文字列のURIを以下のように変更します。
URI=http://<IPアドレス>:4035/gotapi/geolocation/currentPosition?serviceId=<Service id>.localhost.deviceconnect.org
この設定でアクセスすると、以下のように現在のスマートフォンの位置情報を取得できます。
WebAPIのエンドポイントは以下のリファレンスを参考にしてください。
Device_Connect_RESTful_API_Specification
おわりに
本記事ではDevice Web API ManagerとCData REST JDBC Driverを利用し、手元にあるスマートフォンのデータへノーコードでアクセスする方法を紹介しました。 今回はJDBCで試行しましたが、ODBCやADOでもほぼ同様の手順で使用することができます。 Excel Add-In for RESTを利用すればExcel上にデータを取得できます。
これらの汎用インタフェースを介することで、BI(Business Intelligence)やETL(Extract, Transformation, Load)ツールとの連携も簡単に実現することができます。 CData REST Driversは30日間無料でお試しいただけます。ウェアラブル、IoTデバイスとのデータ連携をご検討の方はぜひお試しください。