Skip to content

DeviceConnect/DeviceConnect-Codegen

Repository files navigation

DeviceConnect Codegen

はじめに

DeviceConnect Codegenは、DeviceConnectシステム上で動作するプラグインおよびアプリケーションのスケルトンコードを生成するためのコマンドラインツールです。(以下、本ツールと呼びます)

本ツールへの入力として、DeviceConnectプロファイルの定義ファイルを自前で用意しておく必要があります。標準プロファイルについては全API仕様を定義したファイルを提供しますので、適宜編集してください。

前提知識

  • OpenAPI Specification 2.0

サポート範囲

本ツールで生成可能なスケルトンコードのタイプは下記のとおりです。

  • Androidプラグイン
  • iOSプラグイン
  • node-gotapiプラグイン
  • HTMLアプリケーション
  • DeviceConnectエミュレータ
  • DeviceConnectAPIリファレンス
    • HTML
    • Markdown

ファイル構成

本ツールはzipで配布されます。圧縮されているファイルの構成は下記のとおりです。

ファイル名 説明
bin/deviceconnect-codegen.jar 本ツールのバイナリ。
src/deviceconnect-codegen 本ツールのソースコード。
standard-profile-specs/*.json DeviceConnect標準のプロファイル定義ファイル群。
samples/android-plugin.sh Androidプラグインのスケルトンコードを生成するシェルスクリプトのサンプル。
samples/ios-plugin.sh iOSプラグインのスケルトンコードを生成するシェルスクリプトのサンプル。
samples/profiles-specs シェルスクリプトのサンプルに入力するプロファイル定義ファイル群。

Get Started

deviceconnect-codegen-project-1.8.3-dist.zip をPC上の任意の場所にダウンロードし、解凍してください。

解凍後、ターミナルを起動し、以下のコマンドによりをサンプルのスケルトンコードを生成してください。

生成後の手順については、各出力先のREADME.mdを参照してください。

Androidプラグインの場合

$ cd deviceconnect-codegen-project-X.Y.Z-dist/samples
$ ./android-plugin.sh

出力先: samples/output/Android/MyPlugin

iOSプラグインの場合

$ cd deviceconnect-codegen-project-X.Y.Z-dist/samples
$ ./ios-plugin.sh

出力先: samples/output/iOS/MyPlugin

node-gotapiプラグインの場合

$ cd deviceconnect-codegen-project-X.Y.Z-dist/samples
$ ./node-plugin.sh

出力先: samples/output/NodeJS/node-gotapi-plugin-sample

HTMLアプリケーションの場合

$ cd deviceconnect-codegen-project-X.Y.Z-dist/samples
$ ./html-app.sh

出力先: samples/output/html/MyApp

DeviceConnectエミュレータの場合

$ cd deviceconnect-codegen-project-X.Y.Z-dist/samples
$ ./emulator.sh

出力先: samples/output/NodeJS/Emulator

DeviceConnectAPIリファレンス (HTML) の場合

$ cd deviceconnect-codegen-project-X.Y.Z-dist/samples
$ ./html-docs.sh

出力先: samples/output/html/Device_Connect_RESTful_API_Specification

DeviceConnectAPIリファレンス (Markdown) の場合

$ cd deviceconnect-codegen-project-X.Y.Z-dist/samples
$ ./md-docs.sh

出力先: samples/output/html/Device_Connect_RESTful_API_Specification

リファレンス

実行方法

下記のようなJavaコマンドで実行してください。指定可能なオプションは次節参照。

java -jar bin/deviceconnect-codegen.jar [オプション]

オプション一覧

オプション説明省略
--lang
スケルトン生成対象の指定。下記のいずれかの値を引数とする。
  • Androidプラグイン: deviceConnectAndroidPlugin
  • iOSプラグイン: deviceConnectIosPlugin
  • node-gotapiプラグイン: gotapiNodePlugin
  • HTMLアプリケーション: deviceConnectHtmlApp
  • DeviceConnectエミュレータ: deviceConnectEmulator
  • DeviceConnectAPIリファレンス (HTML): deviceConnectHtmlDocs
  • DeviceConnectAPIリファレンス (Markdown): deviceConnectMarkdownDocs
-
--input-spec
スケルトンコードでサポートするプロファイル仕様の指定。プロファイル仕様定義ファイルへの絶対パスまたは相対パスを引数とする。ファイルの形式はJSON・YAMLのいずれかとする。指定したファイル内にサポートするすべてのAPIを定義すること。 *1
--input-spec-dir
スケルトンコードでサポートするプロファイル仕様の指定。プロファイル仕様定義ファイルを格納したディレクトリへの絶対パスまたは相対パスを引数とする。各ファイルの形式はそれぞれJSON・YAMLのいずれかとする。ファイル名は <プロファイル名>.<拡張子>であること。 *1
--output
スケルトンコードの出力先の指定。PC上の任意のディレクトリへの絶対パスまたは相対パスを引数とする。

存在しないディレクトリが指定された場合は、そのディレクトリを新規で作成する。存在していた場合は、出力内容を強制的に上書きする。
-
--display-name
[プラグインまたはアプリケーションのみ有効]
スケルトンコードの名前の指定。

プラグインの場合、System APIによって取得できるデバイスプラグインの名前として使用される。アプリケーションの場合、主にアプリケーションのタイトルとして表示する名前として使用される。

デフォルト値は、プラグインの場合は "MyPlugin"、アプリケーションの場合は "MyApp"。
o
--connection-type
[Androidプラグインのみ有効]
Device Connect Managerとの連携タイプの指定。下記のいずれかの値を引数とする。デフォルト値は、"binder"。
  • broadcast: IntentのブロードキャストによってDevice Connect Managerと通信する。
  • binder: Device Connect Managerとバインドし、AIDLで定義されたインターフェース経由でIntent形式のメッセージを送受信する。
o
--package-name
[Androidプラグインのみ有効]
スケルトンコードのパッケージ名の指定。デフォルト値は、"com.mydomain.myplugin"。
o
--template-dir
[Androidプラグインのみ有効]
Androidプラグインのテンプレートを独自テンプレートに差し替えたい場合に、テンプレートをまとめたディレクトリへのパスを指定する。

本オプションが省略された場合、本ツールにデフォルトのテンプレートが使⽤される。本オプションによって指定したテンプレートとデフォルトのテンプレートの間でファイル名の衝突が発⽣した場合は、本オプションで指定した⽅が優先される。
o
--sdk
[Androidプラグインのみ有効]
独自テンプレート向けのオプション。

ソースコードで提供されたDeviceConnect SDKを使用する場合に、そのフォルダへの絶対パスまたは相対パスを指定する。

指定した⽂字列は、テンプレート側から {{{sdkLocation}}} という名前で参照可能。デフォルトのテンプレートでは参照されない。
o
--signing-configs
[Androidプラグインのみ有効]
独自テンプレート向けのオプション。

Androidプラグインのビルド時に使用される署名情報の保存されているフォルダへの絶対パスまたは相対パスを指定する。

指定した⽂字列は、テンプレート側から {{{signingConfigsLocation}}} という名前で参照可能。デフォルトのテンプレートでは参照されない。
o
--gradle-plugin-version
[Androidプラグインのみ有効]
プラグインのビルドツールとして使⽤するAndroidPlugin for Gradle のバージョン名を指定する。省略された場合は 3.0.0 とする。

指定した⽂字列は、テンプレート側から {{{gradlePluginVersion}}} という名前で参照可能。デフォルトのテンプレートからも参照される。
o
--class-prefix
[Androidプラグイン・iOSプラグインの場合のみ有効]
出力されるクラス名のプレフィクスの指定。

標準プロファイルを実装する場合に、SDK側から提供される既定クラスと名前を区別するために使用される。独自プロファイルの場合は適用されない。

デフォルト値は、 "My"。
o

*1: --input-spec または --input-spec-dir のいずれかを必ず指定すること。両方指定された場合は --input-spec が優先される。

開発環境

開発ツール

  • Apache Maven 3.3.9+
  • Python 2.x

ビルド方法

DeviceConnectCodegenのルートディレクトリで下記のコマンドを実行すると、本ツールをビルドできます。

$ mvn package

ビルドを実行すると、本ツールのバイナリと配布用zipがそれぞれ下記の場所に出力されます。

項目 出力先
バイナリ DeviceConnectCodegen/bin/deviceconnect-codegen.jar
配布用zip DeviceConnectCodegen/target/deviceconnect-codegen-project-1.8.3-dist.zip

バージョン更新

新しいバージョンを開発する場合は、以下のPython 2.x スクリプトで全体的にバージョン設定を書き換えること。

例: バージョン a.b.c に変更する場合

$ cd DeviceConnect-Experiments/DeviceConnectCodegen
$ python tools/version.py a.b.c

正常に変更された場合は、以下のログが標準出力される。

Changed: /(略)/DeviceConnect-Experiments/DeviceConnectCodegen/pom.xml
Changed: /(略)/DeviceConnect-Experiments/DeviceConnectCodegen/modules/deviceconnect-codegen/pom.xml
Changed: /(略)/DeviceConnect-Experiments/DeviceConnectCodegen/README.md
Completed

参考リンク

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •