DataSpiderSDKとEclipse開発環境の構築

## DataSpide SDK とEclipse開発環境構築
DataSpiderSDKに付属されているサンプルソースは、ビルドツールとしてAntを採用しています。
SDKマニュアル（コンポーネントSDK 開発ガイド※）の第5章アダプタの作成の説明欄にコマンドラインからantコマンドにより、clean、build、inatallの手順が記載されています。

テキストエディタで編集しコマンドラインからビルドを実行、テスト実施後インストールという一連の操作は可能であるが利便性を考慮しEclipseを使用して開発を行いたいものです。

今回は、今後SDK開発を行うにあたり、DataSpiderSDKに付属されているサンプルソースを利用し、Eclipseを使用したビルド環境を構築します。さらにSDKのビルドからDataSpiderへのインストールまでを紹介したいと思います。

## セットアップする環境
当ページでは以下の環境を前提に進めています。
Windows 10 64bit

## 開発環境の構築
### DataSpider Servista（製品版もしくは体験版）のインストール
DataSpiderをまだ入手されていない方は、以下のページからダウンロードおよびインストールを済ませましょう。
【DataSpider Servistaの体験版とは】
https://base.terrasky.co.jp/articles/MWULp

### Eclipseのダウンロード
SDK開発ではJava8が必要です。Eclipseの種類によりJava8が付属しているため、以下のEclipseバージョンをダウンロードします。
ダウンロードしたEclipseにJava8が付属しているため、Ecliseを展開後、その下のJava8までのパスを環境変数に登録します。

具体的には以下を参照：

1\. Eclipseページを開き、最新のEclipseを選択します。
https://mergedoc.osdn.jp/
![eclipse_1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/3629278e-8c56-c593-6e1e-3e817b8ca1d6.jpeg)

2\. Javaをクリックします。
![eclipse_2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/61015cbe-0948-1a46-171d-a34abd608532.jpeg)

3\. 表示されたURLをクリックします。
![eclipse_3.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/c37a05c8-1f44-a1c2-5896-9a1d98d09e2f.jpeg)

4\. 任意のフォルダに展開します。

### Antビルドツールのダウンロード
Java8に対応したバージョンをダウンロードします。
ダウンロードしたAntを展開後、その下のAnt¥binまでのパスを環境変数に登録します。

1\. Antページを開きます。
https://ant.apache.org/bindownload.cgi
![ant_1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/07fd0372-e6eb-572e-a996-f5307f6e6161.jpeg)

2\. 画面を少し下方向にスクロールし、Java8対応のバージョンをクリックします。クリックするとダウンロードが開始されます。
![ant_2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/6b3d1e11-1a48-6d33-9cca-7090242e2b8a.jpeg)

3\. 任意のフォルダに展開します。

### 各環境変数の設定
JAVA_HOME、ANT_HOME、PATHにそれぞれ必要なパスを登録※ します。
登録内容は以下。
※ パスの登録（環境変数）についてはこちらの記事を参照：
https://proengineer.internous.co.jp/content/columnfeature/5205

* JAVA_HOME
「Eclipseをダウンロード後展開したパス」\pleiades\java\8　を登録します。
![path_java.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/4e7fb03a-0772-dedb-81fb-f03d83e50feb.jpeg)

* ANT_HOME
「antをダウンロード後展開したパス」\apache-ant-1.10.12　を登録します。
![path_ant.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/6c35f9b2-6e2d-fed3-3f9d-608f73df100b.jpeg)

* PATH
%JAVA_HOME%\bin、%ANT_HOME%\binを登録します。

### DataSpiderSDKのダウンロード
こちらは、前回の記事を参照：
https://qiita.com/dataspider-fan/items/eb850b6e185b9fffdd33

以上で、開発に必要なツール類が揃いました。

## SDKのファイルの中身

### SDKの展開
ダウンロードしたSDK DSS_SDK_42.zipを以下のフォルダに展開します。
![sdk_1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/87211eea-7db6-146d-8f9a-ee5598b04fd8.jpeg)

### フォルダ構成
* dev
開発に必要なjarファイル、定義ファイルが格納されています。
今後、SDKによるアダプタがの開発は、このフォルダ下にソースコードを配置して行います。
* doc
SDKマニュアルが格納されています。
* sample
DataSpiderが提供するサンプルソースコードが格納されています。

## Hello World AdapterサンプルコードのEclipseプロジェクトへの登録

### これからやることの整理
SDKを展開したsamplesフォルダ下に数種類のソースコードが格納されています。
この中から、「Hello World Adapter」というアダプタをdev下にコピーし、Eclipseのプロジェクトに読み込ませビルドします。
この時点でアダプタのjarファイルが生成されます。
ビルド後、DataSpiderにjarファイルをインストールし、DataSpiderのスクリプトから実行し動作を確認します。
なお、今回インストールまで行う「Hello World Adapter」は、スクリプトの実行時にデバッグ欄に「Hello World !」を出力するアダプタです。

### Hello World Adapterの登録
1\. **sample**フォルダ下ある**Hello World Adapter**フォルダを**dev**フォルダ下にコピーします。
なお、Hello World Adapterサンプルプログラムの詳細は、「5.1. Hello World Adapter の作成」を参照ください。
* 【コピー元】
![sdk_2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/f544f7d1-8cc3-4aa9-30c5-db9dff52e870.jpeg)

* 【コピー先】
![sdk_3.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/f42ea610-f15a-023e-f8d9-d1bcf6a29174.jpeg)

2\. build.xmlを開きプロジェクト名を変更します。
赤ライン「DataSpiderServistaAdapter SDK」部分を緑ライン「hello_world_adapter」に変更：
```diff_xml
<?xml version="1.0" encoding="Shift_JIS"?>
- <project name="DataSpiderServistaAdapter SDK" default="jar" basedir=".">
+ <project name="hello_world_adapter" default="jar" basedir=".">
  <taskdef file="../ant_custom.properties" classpath="../ant_custom.jar" />
  <import file="../build.xml"/>

  <!-- init -->
  <target name="init.basename">
    <basename property="module" file="${basedir}"/>
  </target>

</project>
```


3\.Eclipseを起動します。

:::note warn
Eclipseは管理者権限で起動します。
ビルドしたHello World AdapterをDataSpider下のライブラリパスにコピーする際に管理者権限が必要となります。
:::

Eclipseの起動時に表示されるワークスペースのパスに上記SDKのdevフォルダを指定します。
![sdk_4.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/fc18af85-a60e-dad9-af04-3ec076072a30.jpeg) 

4\.**ファイル**メニューから**新規** > **その他**を選択します。
![run_eclipse_2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/a994e95f-00b2-0db4-6810-b62d40d57792.jpeg)
**既存AntビルドファイルからのJavaプロジェクト**を選択します。
![run_eclipse_3.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/ef274c60-7bc4-0149-c28d-e74d5ac8b55d.jpeg)
**参照**ボタンをクリックします。
![run_eclipse_4.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/beccc8ac-1c3c-0d88-c503-2b75fd03dcf4.jpeg)
先ほどコピーした**hello_world_adapter**フォルダ下の**build.xml**を選択します。
![run_eclipse_5.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/73acc7a6-dc5f-83ad-42d1-33e7d3462b17.jpeg)
**完了**ボタンをクリックします。
![run_eclipse_6.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/e07a211e-e4ab-1697-6610-b8ca4e203609.jpeg)

5\.ダイアログが閉じ、ツリー表示（プロジェクト・エクスプローラ部分）に画面が遷移します。
![run_eclipse_7.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/4abb4784-7a8b-31e1-579a-088bd0379a33.jpeg)

Eclipseへのプロジェクト登録は以上です。

## Hello World Adapterのビルド

### Javaバージョンの変更
1\. **ウィンドウ**メニューから**設定**をクリックします。
![build_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/5f8f427e-b3c5-da9c-5896-343417360ea4.jpeg)

左側ツリーから**Java** > **インストール済みのJRE**をクリックし、**Java8**にチェックを入れます。
画面下の**適用**ボタンをクリックします。
![build_1-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/3348d4a1-3813-e60d-c066-44150047f6a6.jpeg)
続いて、左側ツリーから**Java** > **コンパイラ**をクリックし、JDK準拠欄おリストボックスから**1.8**を選択します。
**適用して閉じる**ボタンをクリックします。
![build_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/89ad25e5-ad0a-fe36-9aa5-15e7453cb4f7.jpeg)

Javaバージョンの変更は以上です。

### ビルド実行
1\. **build.xml**を右クリックし、**実行**から**1.Antビルド**をクリックします。
![build_3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/e5080972-c525-2f0a-b40a-ad6be26da997.jpeg)

2\. 正常にビルドが完了すると、jarファイルが生成されます。
```log4j
Buildfile: C:\DataSpiderSDKs\dev\hello_world_adapter\build.xml
init.basename:
init:
     [echo] dataspider.home: C:\Program Files\DataSpiderServista
     [echo] Implementation-Title: HelloWorldAdapter
     [echo] display.name: Hello World Adapter
     [echo] module.category: SAMPLE
     [echo] module.label: HelloWorld
     [echo] basedir: C:\DataSpiderSDKs\dev\hello_world_adapter
     [echo] module: hello_world_adapter
assert:
prepare:
touch.module.props:
native2ascii_default:
native2ascii:
     [echo] encoding:        UTF-8
compile:
jar:
update.modules.props:
execute.custom:
BUILD SUCCESSFUL
Total time: 449 milliseconds
```

3\. buildフォルダ下に、hello_world_adapter.jarファイルが出力されていることが確認できます。
![build_4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/b3b6e523-19a1-07e8-63a4-2db8649e9883.jpeg)

ビルドは以上です。

## Hello World Adapterのインストール
インストールは、DataSpider下のフォルダにjarファイルをコピーすれば完了です。
Antビルドツールのinstall設定にて、このコピー処理が行えます。その設定手順を説明します。

:::note warn
インストール時は、DataSpider_Servistaサービスを停止しておきます。
:::

### Antターゲットの設定とインストール実行
1\. **build.xml**を右クリックし、**実行**から**ファイルツールの構成**をクリックします。
![build_5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/cb85bb81-2b12-ea62-e54d-59839061e7e2.jpeg)

2\. **実行するターゲットを検査**欄から**install**をチェックをONにします。
![build_6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/dd2dd7e2-fa46-0082-e004-ba2901fab0b4.jpeg)

3\. **実行**ボタンをクリックします。
```
Buildfile: C:\DataSpiderSDKs\dev\hello_world_adapter\build.xml
init.basename:
init:
     [echo] dataspider.home: C:\Program Files\DataSpiderServista
     [echo] Implementation-Title: HelloWorldAdapter
     [echo] display.name: Hello World Adapter
     [echo] module.category: SAMPLE
     [echo] module.label: HelloWorld
     [echo] basedir: C:\DataSpiderSDKs\dev\hello_world_adapter
     [echo] module: hello_world_adapter
assert:
prepare:
touch.module.props:
native2ascii_default:
native2ascii:
     [echo] encoding:        UTF-8
compile:
jar:
update.modules.props:
execute.custom:
init.basename:
init:
     [echo] dataspider.home: C:\Program Files\DataSpiderServista
     [echo] Implementation-Title: HelloWorldAdapter
     [echo] display.name: Hello World Adapter
     [echo] module.category: SAMPLE
     [echo] module.label: HelloWorld
     [echo] basedir: C:\DataSpiderSDKs\dev\hello_world_adapter
     [echo] module: hello_world_adapter
assert:
prepare:
touch.module.props:
native2ascii_default:
native2ascii:
     [echo] encoding:        UTF-8
compile:
jar:
update.modules.props:
execute.custom:
install:
    [mkdir] Created dir: C:\Program Files\DataSpiderServista\server\plugin\data_processing\modules\hello_world_adapter
    [mkdir] Created dir: C:\Program Files\DataSpiderServista\server\plugin\data_processing\modules\hello_world_adapter\META-INF
     [copy] Copying 1 file to C:\Program Files\DataSpiderServista\server\plugin\data_processing\modules\hello_world_adapter
     [copy] Copying 4 files to C:\Program Files\DataSpiderServista\server\plugin\data_processing\modules\hello_world_adapter\META-INF
BUILD SUCCESSFUL
Total time: 526 milliseconds

```

Antターゲットの設定とインストールは以上です。

## DataSpiderからの実行
DataSpiderを起動し、hello_world_adapterアダプタが表示されることを確認後、スクリプトにhello_world_adapterアイコンを配置し、スクリプトを実行することによりhello_world_adapterで定義されたメッセージが出力されるまでを見てみましょう。

ビルドからインストールまで正常に完了すると以下の右下にSDKにて指定されたツールパレット（画面右側）にhello_world_adapterアダプタが読み取りアイコンとして表示されます。
hello_world_adapterをSAMPLEカテゴリに設定（デフォルトのまま変更無し）したため、SAMPLE下に表示されます。
アイコンを設置しスクリプトを実行すると、hello_world_adapterに定義されたメッセージが出力されます。
![run_hello.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2849535/9935a6f9-1ad5-f354-224d-7a79cf541a56.jpeg)

動作確認は以上です。

## 次回は
DataSpiderの製品コンセプトは、「ノンプログラミング/ノーコードでシステム間の**データやアプリケーションをつなぐ**」と提唱しているということもあり、数年前からメディアでも取り上げられるようになったブロックチェーンと連携できるアダプタを開発したいと思います。
DataSpiderは英語版も提供されており、[アダプタの多言語化を実装](https://qiita.com/dataspider-fan/items/57d4a3e514893f0dff2e)したいと思います。