iPLAss SDKを使ってEclipse環境で開発できるようにする

# iPLAssについて

詳細は公式サイトを参照してください。
https://iplass.org/

# 本手順について

- [iPLAssをInstall and Run（MySQL8.0.17＋Windows10）で構築する](https://qiita.com/systie/items/0a0d0aa0d2f3a2c05008)
の続きになります。

- 上記記事ではGroovyでの開発が前提でしたが、本手順を行うことでEclipse+Javaでの開発も行えるようになります。

- iPLAss SDKにあるzipファイルで作成する手順になります。
そのため、Githubアカウントがなくても構築できます。

- 公式サイトにも導入手順がありますが、ここでは画像を交えて以下の環境での構築手順を載せていきます。

## 構築環境等について

- Windows10
- iPLAss 3.0.16
- JavaおよびTomcatは以下を利用して準備済み（解凍済み）
  - eclipse 2019-09、JavaのFull Edition を導入（[Pleiades All in One](http://mergedoc.osdn.jp/)）
  - 配置先：E:\eclipse\pleiades2019-09
  - 公式指定によりTomcatは8を利用する
  - Javaはeclipse 2019-09でデフォルト設定の11を利用する
- MySQL 8.0.17

公式が推奨する最新環境の情報は以下にあります。
利用し始めるiPLAssのバージョンに合わせて環境を準備してください。
https://iplass.org/docs/environment/index.html

## 「開発環境の構築」について

公式の構築手順URLは以下です。
https://iplass.org/docs/gettingstarted/installguide/index.html

# Eclipseの設定
ウィンドウ > 設定　で設定画面を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/27bfe5c3-b4a1-f603-8928-5c62f85efa8b.png)

## Eclipseの設定 01/03
一般 > ワークスペース　の「テキスト・ファイル・エンコード」で「UTF-8」を設定します。
![rapture_20191208043603.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/9f3f3906-dc61-81f5-57aa-57744d44c809.jpeg)

## Eclipseの設定 02/03
Java > インストール済みのJRE　：利用するJavaが設定されている
Java > コンパイラー　：利用するJavaと同様のコンパイラー準拠レベルになっている
それぞれが設定されていることを確認します。
![rapture_20191208044005.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/ee11164e-5315-c58f-01a3-e575f2677fd9.jpeg)
![rapture_20191208044012.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/3f87a4bd-f099-f49e-a77a-3d3dc82191c6.jpeg)

## Eclipseの設定 03/03
サーバー > ランタイム環境　で利用するTomcat＋Javaの構成を登録します。
![rapture_20191208045843.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/fb967569-39b3-f551-c7b9-f285754a0603.jpeg)
![rapture_20191208050054.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/cc487e47-6654-cee2-12f7-3a108e926769.jpeg)
![rapture_20191208050143.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/8648b7d3-ec79-2358-32cf-447f93a1f72c.jpeg)
![rapture_20191208050214.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/0379c597-5dd6-d56e-7961-5cdb94176c11.jpeg)

上記３点の設定を行ったら、「適用して閉じる」を押下して設定画面を閉じます。

# プロジェクトの取り込み

## プロジェクトの取り込み 01/09
iPLAss公式サイトからSDKをダウンロードし、解凍します。
https://iplass.org/downloads/
![rapture_20191208052157.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/8643a472-2f80-85ac-9c93-b994c580503c.jpeg)

## プロジェクトの取り込み 02/09
解凍した中にある「iplass-skeleton」ディレクトリを、Eclipseのworkspaceにコピーします。
![rapture_20191208052842.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/114d5d10-d2cb-53e5-2abd-79d038580958.jpeg)

## プロジェクトの取り込み 03/09
Eclipse側で取り込みます。
「プロジェクトのインポート」を選択します。
![rapture_20191208053610.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/a1712543-b2dc-49b9-2937-ba481914818c.jpeg)

## プロジェクトの取り込み 04/09
一般 > フォルダーまたはアーカイブからプロジェクト　を選択します。
![rapture_20191208053643.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/ed54276b-f1c3-e4d6-7aa4-0ee8e4579d27.jpeg)

## プロジェクトの取り込み 05/09
「ディレクトリー」を選択し、workspaceにコピーした「iplass-skeleton」ディレクトリを選択します。
その後、「プロジェクト・ネーチャーの検出および構成」のチェックを外して、「完了」ボタンを押下します。
![rapture_20191208054235.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/ad97c62a-4cbc-9f42-da4b-b2db2dcb9cba.jpeg)

## プロジェクトの取り込み 06/09
プロジェクト名（アプリケーション名）等を以下の手順で変更します。
### 1. 名前変更
プロジェクトを右クリックし、以下の手順でプロジェクト名を変更します。
リファクタリング > 名前変更
![rapture_20191208054748 - コピー.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/92ae803b-d748-2292-833e-1fe7b6ec28ba.jpeg)
![rapture_20191208055017.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/6d9a10e9-6c2b-ed3b-3fd5-d84f76dfb675.jpeg)
### 2. 移動
再度プロジェクトを右クリックし、以下の手順で実際のディレクトリを変更します。
リファクタリング > 移動
![rapture_20191208054748.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/99fe23af-ef73-99ec-e1aa-7941bd230fa0.jpeg)
![rapture_20191208055201.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/441362d1-8fb6-7556-f19c-536fcd6c6183.jpeg)
修正前：E:\eclipse\pleiades-2019-09\workspace\iplass-skeleton
修正後：E:\eclipse\pleiades-2019-09\workspace\＜プロジェクト名へ＞
### 3. Gradleの設定変更
プロジェクト内にある「setting.gradle」ファイルを開き、「rootProject.name」の値をプロジェクト名の値へ変更します。
![rapture_20191208055625.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/7579e2e5-0074-3cbf-b513-706b5cab6848.jpeg)

## プロジェクトの取り込み 07/09
プロジェクト内にある「build.gradle」を開き、MySQLのJDBCドライバをGradleで取得するように設定します。
※JDBCのバージョンは、iPLAssのリリース時期の最新バージョンになっているため、環境に合わせて値を変更してください。（8.0.17、という部分）
![rapture_20191208060659.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/f45bc887-14e9-6984-d6ce-069fe92697c8.jpeg)

## プロジェクトの取り込み 08/09
プロジェクトを右クリックし、以下の手順でプロジェクトをGradleの実行ができるプロジェクトへ変換します。
構成 > Gradleネーチャーの追加
![rapture_20191208060039.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/963f3b91-d401-ee32-ddf2-52e898ba09b8.jpeg)

## プロジェクトの取り込み 09/09
プロジェクトを右クリックし、「リフレッシュ」を選択します。
依存関係のライブラリ等が取り込まれます。
![rapture_20191208061036.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/746a8ef0-6d32-a414-0bc7-71ac02e67df7.jpeg)

# プロジェクトの設定

## プロジェクトの設定 01/08
プロジェクトを右クリックし、「プロパティ」を選択して設定画面を開きます。
![rapture_20191208061642.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/c85bac77-182d-3cd3-ca0b-715ec070be2b.jpeg)

## プロジェクトの設定 02/08
「Webプロジェクトの設定」を選択し、コンテキスト・ルートを設定します。
（URLの一部になります）
今回、この手順では「systie」とします。
![rapture_20191208071113.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/a998c950-b3bc-683b-2cc9-4b388e721b8b.jpeg)


## プロジェクトの設定 03/08
「プロジェクト・ファセット」を選択し、以下手順で設定します。
1. 「ランタイム」タブを選択。
![rapture_20191208062131.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/351ce5fb-68e3-8d44-04b0-c7c2f7ca11f0.jpeg)
2. 「ランタイム」タブ内で、利用したい構成（本手順では、上記で作成したTomcat8.5＋Java11の構成とする）を選択。
![rapture_20191208062146.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/4478b7fe-a9bf-5e77-859e-1d9ade4062e2.jpeg)
3. 左側の枠にある「動的Webモジュール」のバージョンを「3.1」へ変更。
![rapture_20191208062201.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/d49fe22c-26e2-b620-80d1-85f823d76a6f.jpeg)
設定が完了したら、「適用して閉じる」で閉じます。

## プロジェクトの設定 04/08
「src/main/resource」にある「mtp-service-config.xml」を開きます。
![rapture_20191208062830.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/83379ee6-c741-aabb-47e2-2d1040e5414a.jpeg)

## プロジェクトの設定 05/08
iPLAssでMySQLで動くように設定します。
iPLAssではDB毎に読み込むXMLの切り替えることで設定ができます。
デフォルトではoracleの設定が読み込まれるため、OracleのXMLはコメントアウトし、MySQLのXMLのコメントアウトを外してください。

```xml:mtp-service-config.xml：修正前
	<inherits>/mtp-core-service-config-oracle.xml</inherits>
	<!-- If use mysql, inherits mtp-core-service-config-mysql.xml for convenience. -->
	<!--
	<inherits>/mtp-core-service-config-mysql.xml</inherits>
	-->
```
```xml:mtp-service-config.xml：修正後
	<!--
	<inherits>/mtp-core-service-config-oracle.xml</inherits>
	-->
	<!-- If use mysql, inherits mtp-core-service-config-mysql.xml for convenience. -->
	<inherits>/mtp-core-service-config-mysql.xml</inherits>
```

## プロジェクトの設定 06/08
MySQLへの接続情報を設定します。
こちらも同様にOracle設定をコメントアウトし、MySQL設定のコメントアウトを外して接続情報を記載します。

```xml:mtp-service-config.xml：修正前
	<!-- Rdb Connection Settings -->
	<service>
		<interface>org.iplass.mtp.impl.rdb.connection.ConnectionFactory</interface>

		<!-- DriverManager base ConnectionFactory -->
		<class>org.iplass.mtp.impl.rdb.connection.DriverManagerConnectionFactory</class>

		<!-- ■ your rdb setting 1 ■ -->
		<!-- for oracle -->
		<property name="url" value="jdbc:oracle:thin:ADDRESS:PORT:DB" />
		<property name="user" value="XXXXX" />
		<property name="password" value="XXXXX" />
		<property name="driver" value="oracle.jdbc.driver.OracleDriver" />

		<!-- for mysql -->
		<!--
		<property name="url" value="jdbc:mysql://ADDRESS:PORT/DB" />
		<property name="user" value="XXXXX" />
		<property name="password" value="XXXXX" />
		<property name="driver" value="com.mysql.cj.jdbc.Driver" />
		-->
```
```xml:mtp-service-config.xml：修正後
	<!-- Rdb Connection Settings -->
	<service>
		<interface>org.iplass.mtp.impl.rdb.connection.ConnectionFactory</interface>

		<!-- DriverManager base ConnectionFactory -->
		<class>org.iplass.mtp.impl.rdb.connection.DriverManagerConnectionFactory</class>

		<!-- ■ your rdb setting 1 ■ -->
		<!-- for oracle -->
		<!--
		<property name="url" value="jdbc:oracle:thin:ADDRESS:PORT:DB" />
		<property name="user" value="XXXXX" />
		<property name="password" value="XXXXX" />
		<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
		-->

		<!-- for mysql -->
		<property name="url" value="jdbc:mysql://localhost:3306/mtdb" />
		<property name="user" value="xxx" />
		<property name="password" value="xxxx" />
		<property name="driver" value="com.mysql.cj.jdbc.Driver" />

```


## プロジェクトの設定 07/08
バイナリデータの保存先を設定します。
MySQLの場合は設定が必須となります。
コメントアウトを外して、バイナリを保存する場所のルートディレクトリの設定を変更してください。

```xml:mtp-service-config.xml：修正前
	<!-- Lob Store Settings -->
	<service>
		<interface>org.iplass.mtp.impl.lob.LobStoreService</interface>

		<!--
			バイナリデータをファイルに保存する場合、以下のコメントアウトを外してください。
			DBがMySQL及びPostgreSQLの場合はFileLobStoreの設定は必須です。
			※下記設定は、Binaryはファイル、LongTextはRDBに保存する設定です。
			　　LongTextもファイルにする場合は、longTextStoreの設定もFileLobStoreにしてください。
		 -->
		<!--
		<property name="binaryStore" class="org.iplass.mtp.impl.lob.lobstore.file.FileLobStore">
			<property name="rootDir" value="[setYourBinaryFileStoreRootPath]" />
			<property name="overwriteFile" value="false" />
		</property>
		<property name="longTextStore" class="org.iplass.mtp.impl.lob.lobstore.rdb.RdbLobStore">
		</property>
		 -->

		<!--
			LobサイズをRdb(lob_store)で管理するかを指定します。
		-->
		<property name="manageLobSizeOnRdb" value="true" />
	</service>
```
```xml:mtp-service-config.xml：修正後
	<!-- Lob Store Settings -->
	<service>
		<interface>org.iplass.mtp.impl.lob.LobStoreService</interface>

		<!--
			バイナリデータをファイルに保存する場合、以下のコメントアウトを外してください。
			DBがMySQL及びPostgreSQLの場合はFileLobStoreの設定は必須です。
			※下記設定は、Binaryはファイル、LongTextはRDBに保存する設定です。
			　　LongTextもファイルにする場合は、longTextStoreの設定もFileLobStoreにしてください。
		 -->
		<property name="binaryStore" class="org.iplass.mtp.impl.lob.lobstore.file.FileLobStore">
			<property name="rootDir" value="E:\ProgramFiles\mysql\iplass" />
			<property name="overwriteFile" value="false" />
		</property>
		<property name="longTextStore" class="org.iplass.mtp.impl.lob.lobstore.rdb.RdbLobStore">
		</property>

		<!--
			LobサイズをRdb(lob_store)で管理するかを指定します。
		-->
		<property name="manageLobSizeOnRdb" value="true" />
	</service>
```


## プロジェクトの設定 08/08
メールの設定を行います。
ローカル開発やメールサーバを利用したくない環境の場合は、ログに出力を行うことで、メールの確認ができます。
※iPLAssで利用するユーザは、デフォルトでは初期登録時にメールを飛ばし仮パスワードが発行されます。

```xml:mtp-service-config.xml：修正前
		<!-- ■ for develop only (additional="true) ■ -->
		<!-- 送信メールをデバッグ出力する場合、以下を有効にしてください。 -->
		<!--
		<property name="listener" class="org.iplass.mtp.mail.listeners.LoggingSendMailListener" additional="true"/>
		-->
```
```xml:mtp-service-config.xml：修正後
		<!-- ■ for develop only (additional="true) ■ -->
		<!-- 送信メールをデバッグ出力する場合、以下を有効にしてください。 -->
		<property name="listener" class="org.iplass.mtp.mail.listeners.LoggingSendMailListener" additional="true"/>
```

ここまで変更したら、「mtp-service-config.xml」は保存してください。

# テナントの作成（補足）
iPLAssセットアップでもテナントを作成しましたが、上記設定後はEclipseから複数のテナントが作成できます。
※テナント：iPLAssでは、プロジェクト（の箱）、のようなイメージ（個人の感想）
※前提として、iPLAssで利用するテーブル情報があることです。
　iPLAssセットアップを行っていない場合は、iPLAssSDK内にある「iplass-server-setup-kit」というzipファイルの対応が必要になります。
　詳細は、zip内のreadme参照してください。

新しくテナントを作成する場合は、以下手順で画面を開いて作成が可能です。
※軽い補足なので、スクリーンショットのみの案内とします。
![rapture_20191208072625.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/2cf871a4-0a97-2e02-7a42-cf723ecf129c.jpeg)
![rapture_20191208072646.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/3c71d3bd-5758-e1af-7ae7-97c368068c6f.jpeg)
![rapture_20191208072828.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/833dc2b3-f4e1-9def-f589-9c3af0f74580.jpeg)
![rapture_20191208072844.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/47204ad5-aafa-1b56-7034-8bcaaf6e6547.jpeg)
![rapture_20191208072936.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/a478d576-f064-0617-6ac9-36fc646f3dd7.jpeg)
上記に必要情報を入れることでテナントを作成することができます。

# サーバーの起動

## サーバーの起動 01/06
ウィンドウ > ビューの表示 > その他　で画面を開きます。
![rapture_20191208072625.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/2cf871a4-0a97-2e02-7a42-cf723ecf129c.jpeg)

## サーバーの起動 02/06
サーバー > サーバー　を選択し、Eclipseの画面にビューを追加します。
![rapture_20191208073529.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/672a6987-0a30-549a-4d1c-004c2bf61917.jpeg)

## サーバーの起動 03/06
リンクをクリックします。
![rapture_20191208073915.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/a8f8c0be-31c0-1e68-4f88-d64222d5e582.jpeg)

## サーバーの起動 04/06
利用するサーバー（今回であれば、Tomcat v8.5 サーバー）を選択し、サーバー・ランタイム環境に作成した環境設定を選択します。
設定後、「次へ」を押下します。
![rapture_20191208081106.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/665e3caa-1de9-3954-21ee-3c078b4c66d8.jpeg)

## サーバーの起動 05/06
プロジェクトを選択し、「追加」を押下します。
構成済みエリアにプロジェクトが移動したら、「完了」を押下します。
![rapture_20191208081252.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/facaa8f8-d282-8c68-f4cd-b4221639f927.jpeg)

## サーバーの起動 06/06
サーバーを起動します。
![rapture_20191208081450.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/3f2ea3e7-0796-4a9d-a413-ac32a1d84863.jpeg)

# iPLAssへのアクセス
iPLAssのURL構成は以下のようになっています。
http://localhost:8080/コンテキスト名/テナント名/gem/

今回でいうと以下になります。
http://localhost:8080/systie/free/gem/
セットアップ後と同様に以下ログイン画面が出れば、成功です。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85658/eb4ffcce-af54-0d9f-333c-023e5d70f018.jpeg" width=100%>



以上でiPLAss構築（Eclipse版）は完了です。