HULFT IoT EdgeStreamingでプラグインを作成してみた【実行編】(3/3)

#はじめに
こんにちは。よろず相談担当　すぎもん:yum:です。
今回は、HULFT IoT EdgeStreamingのSDKを使用したコンポーネント（アダプタ）の開発をやってみようと思います。全3部作で完結するよう記載してます。


#今回やること
今回は、第3弾としてHULFT IoT EdgeStreaming Plugin SDKで開発したプラグインのビルドと実行をしてみようと思います。第1弾、第2弾の記事は、下記にありますので参考にしてみてください。

:arrow_forward: [HULFT IoT EdgeStreamingでプラグインを作成してみた【セットアップ編】(1/3)]
(https://qiita.com/sugimon/items/cf7503479c6e4c46c3b3)
:arrow_forward: [HULFT IoT EdgeStreamingでプラグインを作成してみた【開発編】(2/3)](https://qiita.com/sugimon/items/67bdd6f610e03cdfcef2)
:arrow_forward: HULFT IoT EdgeStreamingでプラグインを作成してみた【実行編】(3/3)


#プラグインのビルド
今回、作成したプラグインをビルドしてみます。※Windows PCを使用して試しています。
なお、
$SDK_HOMEは、EdgeStreaming SDKホームディレクトリを指します。
$DATASPIDER_HOMEは、EdgeStreamingのホームディレクトリを指します。

###ビルド
プラグインのビルドは、`$SDK_HOME/dev/sample_adapter`から以下のコマンドを実行します。

`$ ant`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/c7e37ebc-5494-3e74-0fdf-ed02ef91db6d.png)

コマンド実行後、`BUILD SUCCESSFUL`と出力され、下記のファイル類が作成されていればビルドは成功です。

・`$SDK_HOME/dev/sample_adapter/build`
　sample_adapter.jar
・`$SDK_HOME/dev/sample_adapter/build/plugin/sample_plugin`
　各ターゲット向けのgoの実行ファイル

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/a1faa11c-5618-7125-e354-313d6d7ed1a8.png)


###アイコンファイルのコピー
実際にEdgeStreaming Studio画面で使用するアイコンファイルを作成します。
ビルドに成功後、`$SDK_HOME/dev/sample_adapter/META-INF`が生成されるので、アイコンのサンプルファイルをコピーしリネームします。

・Source Operation用アイコンのコピー
`$SDK_HOME/dev/conf/operation.source.icon`
⇒　`$SDK_HOME/dev/sample_adapter/META-INF/operation.sample_source.icon`

・Sink Operation用アイコンのコピー
`$SDK_HOME/dev/conf/operation.sink.icon`
⇒　`$SDK_HOME/dev/sample_adapter/META-INF/operation.sample_sink.icon`

・UDSF Operation用アイコンのコピー
`$SDK_HOME/dev/conf/operation.udsf.icon`
⇒　`$SDK_HOME/dev/sample_adapter/META-INF/operation.sample_udsf.icon`

###module.propertiesファイルの確認
`$SDK_HOME/dev/sample_adapter/META-INF/module.properties`ファイルが正常に作成されたことを確認します。

このプロパティファイルは、`$SDK_HOME/dev/sample_adapter/config.properties`ファイルで定義されているプロパティを基に作成されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/0a767d8e-55d3-4119-b691-47e8ce766549.png)

#プラグインのインストール
アダプタのインストールは`$SDK_HOME/dev/sample_adapter`からantコマンドの第一引数にinstallターゲットを指定して実行します。

`$ ant install`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/3385bece-ceed-0ee7-e018-d0c0a3d0b9ba.png)


ant installを実行後、下記のようにインストールがされます。
・Javaモジュールがインストールされます。
`$DATASPIDER_HOME/server/plugin/data_processing/modules`配下

・Golangモジュールがインストールされます。
`$DATASPIDER_HOME/server/es-agent/plugin`配下

※インストールしたプラグインを有効にするには、EdgeStreaming Studioの再起動が必要です。

#実行してみましょう
それでは、作成したプラグインの実行をしてみましょう。

### EdgeStreamingの起動
・EdgeStreamingを起動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/533aa563-acc6-8248-0f14-43167df81d0b.png)


・作成したプラグインを確認してみましょう。
新規プロジェクトから、プロジェクトを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/bdd2e21d-58b2-6263-a0a8-1c9a144b693c.png)


スクリプトを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/9709fe97-800f-b906-efdc-e7b66664a7bd.png)


### プラグインの確認
作成したプラグインが、「ツールパレット」にできていることを確認します。
「ツールパレット」の「Sample」配下に、それぞれ以下のプラグインができていると思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/2a8a08f0-dfe8-b938-6cbf-68e86fa45f9a.png)


### 簡単な処理を作成してみましょう
**・入力処理（一定時間間隔で疑似乱数を生成するオペレーション）**
Source Operationで作成した処理を配置します。
ツールパレットのSampleからSample sourceをドラッグ＆ドロップで中央へ移動させます。
※Intervalには、取得する間隔を指定してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/aea5a142-da24-b487-9481-eb7e05a7d097.png)


**・出力処理（有効小数点桁数で切り捨ててログに出力するオペレーション）**
Sample Sinkで作成した処理を配置します。
ツールパレットのSampleからSample sinkをドラッグ＆ドロップで中央へ移動させます。
※Decimalには、任意の有効小数点桁数を指定してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/d1552e93-3699-da93-6fba-0dd113c7cbdc.png)


**マッピング処理**
入力処理アイコンをドラッグ＆ドロップして、出力処理までアイコンをつなげます。
つなげた線を右クリックし、マッピングの追加を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/d1868c3c-7e47-cd0c-aa33-1335d9b38331.png)


マッピングアイコンを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/a9f2f2a5-5eec-8262-fc17-b3a21698f8e8.png)

・入力元の「value」と出力先の「value」をつなげます。
・出力先の「formula」にツールパレット->文字列->基本->文字列定数を配置し、
  任意の文字列を指定し、「formula」につなげます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/27192f81-7e66-766a-00e9-47b6ac2f93dc.png)


**スクリプト全体**
このようにスクリプトが作成できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/4d313158-2ca5-9e4e-88b6-8af381c84b72.png)


### 実行してみましょう
画面メニューの緑矢印から作成したスクリプトを実行してみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/6d605340-a10d-ac86-d53a-1b4bdbd014a5.png)


疑似乱数が指定したIntervalごとに生成され、指定した小数点桁数で値が出力されることが確認できると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/3f25f4cc-5097-7a93-ce53-b5357adae637.png)


また、作成したUDSFのオペレーションアイコンを使用することで、取得した値に対して四則演算ができますので、
組み合わせて、いろいろと試してみてください。

#最後に
3部作の最終編として、今回はプラグインのビルドから実行までやってみました。
このようにSDKを使用してプラグインの処理を実装することが可能です。本記事がプラグイン開発の道しるべになれたら幸いです。

このブログでは、今後も技術の「よろず相談窓口」で相談を受けた内容や、誕生したワザをご紹介していけたらな、と思っています。

これからも是非チェックいただき、宜しければフォローをお願いします。

それでは、また！