Talend + JDBC Driver で Microsoft Access のマスターを kintone に同期

# はじめに
本資料は CData Software 社の JDBC Driver 及び、Talend 社の Talend Open Studio を利用してコーディングを行うことなく、Microsoft Access から kintone 上のデータを更新する手法を説明しています。

![model_kintone.PNG](https://qiita-image-store.s3.amazonaws.com/0/333450/16457139-caf6-1586-f456-d5681707d8dd.png)

データ更新を行うシナリオとして、上図のように Talend + JDBC Driver にて Access のデータを取得し、kintone アプリ "testApp" の文字列を更新する例を説明します。

# 検証環境
以下の環境にて検証を行っています。

 * Windows 10 Home バージョン 1803
 * Microsoft Access for Office 365 (64bit)
 * Java SE Runtime Environment 8 (1.8.0_181)
 * Talend Open Studio for Data Integration 6.5.1
 * CData JDBC Driver
  - CData JDBC Driver for kintone 2018J
  - CData JDBC Driver for Access 2018J

Microsoft Access (以下、Access) 及び、Java SE Runtime Environment 8 についてはインストール済みという前提で今後の説明を進めさせていただきます。
また、Access に関しては下記から Office 365 を取得し、1か月間に限り無料試用することも可能です。

 * https://products.office.com/ja-jp/try

# CData JDBC Driver for kintone インストール
1. 以下のサイトから kintone 用の CData JDBC Driver をダウンロードします。
 * https://www.cdata.com/jp/drivers/kintone/download/jdbc/

2. ダウンロードしたファイルを任意の場所に展開し、コマンドプロンプトにて下記のコマンドを実行してください。
![JDBC_Kintone_1.png](https://qiita-image-store.s3.amazonaws.com/0/333450/d3adf045-dbd3-1f7c-49ca-a5806be83636.png)

3. インストーラーが起動しますので、必要な設問に回答し、インストールを完了させてください。

# CData JDBC Driver for Access インストール
[Microsoft Access から Salesforce Sales Cloud のデータを更新]
(https://qiita.com/kamega/items/b3e7d6b0d9ff17f2c5ff) の [CData JDBC Driver for Access インストール](https://qiita.com/kamega/items/b3e7d6b0d9ff17f2c5ff#cdata-jdbc-driver-for-access-%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB) を参照してください。

# Talend Open Studio インストール
Talend Open Studio の最新バージョンは 7.1.1 ですが、この版ではDB接続のタイプとして "General JDBC" が存在しないため、以下のサイトから Talend Open Studio for Data Integration 6.5.1 をダウンロードし、任意の場所に展開してください。

 * https://ja.osdn.net/projects/sfnet_talend-studio/downloads/Talend%20Open%20Studio/6.5.1/TOS_DI-20180116_1512-V6.5.1.zip/

# kintone 評価版アカウントの取得
[kintone評価版アカウント取得、および、サンプルアプリケーションの作成方法](https://qiita.com/kuwazzy/items/416b9c884892016bcc9f)
を参考に 、kintone 評価版アカウントを取得してください。

# Access から kintone のデータ更新 事前準備

1.　はじめに検証用の kintone アプリとデータを作成します。[kintone 評価版アカウントの取得](#kintone-評価版アカウントの取得) にて作成したアカウントにて kintone にログインし、"アプリ" の右の "+" ボタンを押します。
![kintone_1.png](https://qiita-image-store.s3.amazonaws.com/0/333450/7e0f1325-8241-2f30-0a04-083932bfc85e.png)


2.　下記の画面が表示されますので、"はじめから作成" リンクを押します。
![kintone_2.png](https://qiita-image-store.s3.amazonaws.com/0/333450/7cb38d89-7c64-d860-241d-8c1668d3040e.png)

3.　アプリケーション名を "testApp" とし、"文字列（1行）" をクリックし、フォームへドラッグ & ドロップします。次に、"文字列（1行）" の "設定" を押し、"フィールド名" を "input1" に変更し、"保存"ボタンを押します。その後、"アプリを公開" ボタンを押すと、"フォームを保存して、アプリを公開します。よろしいですか ?" と問われますので、"OK" ボタンを押します。
![kintone_3.png](https://qiita-image-store.s3.amazonaws.com/0/333450/247f78ac-c1a0-256e-8136-78445e27004c.png)
![kintone_10.png](https://qiita-image-store.s3.amazonaws.com/0/333450/c74c5995-fad2-ba9a-9658-6cce0a8e421c.png)
![kintone_11.png](https://qiita-image-store.s3.amazonaws.com/0/333450/6b77736c-29c4-a32b-be5e-cd96b22d3535.png)

4.　下記の画面が表示されますので、"+" ボタンを押し、文字列を入力(ここでは "test1" とします)した後、"保存" ボタンを押します。
![kintone_4.png](https://qiita-image-store.s3.amazonaws.com/0/333450/43512a9c-3014-7ff4-dbbf-39c2a32e801a.png)
![kintone_5.png](https://qiita-image-store.s3.amazonaws.com/0/333450/2b0879bc-58dd-24b5-2923-29864b1023ed.png)

5.　下記の画面が表示されますので、再度 "+" ボタンを押し、文字列を入力(ここでは "test2" とします)した後、"保存" ボタンを押します。
![kintone_6.png](https://qiita-image-store.s3.amazonaws.com/0/333450/2731ad59-ffea-a83d-4dd6-174d64935c86.png)
![kintone_7.png](https://qiita-image-store.s3.amazonaws.com/0/333450/ba937439-6a42-c300-de6b-315ec1066078.png)

6.　下記の画面が表示されますので、"testApp" リンクを押し、2件のデータが登録されていることを確認します。
![kintone_8.png](https://qiita-image-store.s3.amazonaws.com/0/333450/721224af-9490-0dad-d9d8-f13dbee99599.png)
![kintone_9.png](https://qiita-image-store.s3.amazonaws.com/0/333450/9d589367-cf32-26db-f1b0-b4ae82dc9606.png)

7.　次に Talend Open Studio を起動します。先ほど展開したフォルダ配下の TOS_DI-20180116_1512-V6.5.1\TOS_DI-win-x86_64.exe を起動します。

8.　下記の画面が表示されますので、"x" を押してください。
![Talend_Salesforce_1.png](https://qiita-image-store.s3.amazonaws.com/0/333450/b51731ff-bb26-f6b7-4af1-ea6b4979c3f7.png)

9.　下記の画面が表示されますので、"リポジトリ" の "ジョブ" を右クリックし、"ジョブの作成" を選択してください。
![Talend_Salesforce_2.png](https://qiita-image-store.s3.amazonaws.com/0/333450/09f10f77-44bc-d9ed-b6ef-9696c89f13ae.png)
![Talend_Salesforce_3.png](https://qiita-image-store.s3.amazonaws.com/0/333450/bd9c9e17-035e-6f18-316c-6c8399b49d83.png)

10.　下記の画面が表示されますので、"名" を入力(ここでは "TrialKintone1" とします)し、"Finish" ボタンを押してください。
![Talend_Kintone_1.png](https://qiita-image-store.s3.amazonaws.com/0/333450/0743b78a-b805-0158-e971-1f2caa3efa4e.png)

11.　下記のように画面が表示されます。
![Talend_Kintone_2.png](https://qiita-image-store.s3.amazonaws.com/0/333450/aa4b50bc-186e-71c5-cd62-da48f22d50ee.png)

12.　次に kintone 用の JDBC接続を作成します。"リポジトリ" の "DB接続" を右クリックし、"DB接続の作成" を選択してください。
![Talend_Salesforce_6.png](https://qiita-image-store.s3.amazonaws.com/0/333450/470159a4-c3a9-754e-5f1c-6ebb5100b0be.png)

13.　下記の画面が表示されますので、"名" を入力(ここでは "JDBC_kintone" とします)し、"Next" ボタンを押してください。
![Talend_Kintone_3.png](https://qiita-image-store.s3.amazonaws.com/0/333450/cd77c54d-57fa-c669-8ad4-da6ca88eca53.png)

14.　下記の画面が表示されますので、"DBタイプ" として "General JDBC" を選択してください。
![Talend_Salesforce_8.png](https://qiita-image-store.s3.amazonaws.com/0/333450/136e71ab-3ec4-cd51-6b1a-0b778865513a.png)

15.　下記の画面が表示されますので、それぞれ次のように設定してください。
![Talend_Salesforce_9.png](https://qiita-image-store.s3.amazonaws.com/0/333450/ceed2ae3-7ce1-ed96-5110-605b71e40417.png)
<dl>
<dt>JDBC URL
  <dd>[kintone 評価版アカウントの取得](#kintone-評価版アカウントの取得) にて作成した"ユーザ"、"パスワード"、"URL"を用いて下記の文字列を作成し、設定してください。
```jdbc:kintone:Username=ユーザ;Password=パスワード;URL=URL;```<br>
<dt>ドライバJar
  <dd>"外部モジュール" を選択し、"追加" ボタンを押し、先の [CData JDBC Driver for kintone インストール](#cdata-jdbc-driver-for-kintone-インストール) でインストールしたパスから lib\cdata.jdbc.kintone.jar を選択した後、"OK" ボタンを押してください。<br>
<dt>クラス名
  <dd>"cdata.jdbc.kintone.KintoneDriver" を選択してください。<br>
<dt>ユーザー名
  <dd>[kintone 評価版アカウントの取得](#kintone-評価版アカウントの取得) にて設定したユーザを入力してください。<br>
<dt>パスワード
  <dd>[kintone 評価版アカウントの取得](#kintone-評価版アカウントの取得) にて設定したパスワードを入力してください。<br>
</dl>

16.　"Finish" ボタンを押してください。
![Talend_Kintone_4.png](https://qiita-image-store.s3.amazonaws.com/0/333450/d55d29b5-bce9-8745-90f9-4cbc5834dfb1.png)

17.　"リポジトリ" の "メタデータ"、"DB接続" の下に "JDBC_kintone" が作成されますので、右クリックし、"スキーマ情報の取得" を選択してください。
![Talend_Kintone_5.png](https://qiita-image-store.s3.amazonaws.com/0/333450/b2e1eaa5-5f37-4d2f-1079-85b083b66280.png)

18.　下記の画面が表示されますので、"Next" ボタンを押してください。
![Talend_Salesforce_13.png](https://qiita-image-store.s3.amazonaws.com/0/333450/f8e81c19-9574-853d-cdb2-f640b8323f84.png)

19.　"名" を展開し、"testApp" テーブルをチェックし、"Next" ボタンを押してください。
![Talend_Kintone_6.png](https://qiita-image-store.s3.amazonaws.com/0/333450/a071fae3-d548-03a6-5118-9649566b288c.png)

20.　下記の画面が表示されますので、"Finish" ボタンを押してください。
![Talend_Kintone_7.png](https://qiita-image-store.s3.amazonaws.com/0/333450/88785401-3138-50b9-c19b-7b12a3685a8f.png)

21.　"リポジトリ" の "メタデータ"、"DB接続"、"JDBC_kintone"、"テーブル" の下に "testApp" オブジェクトが作成されていることを確認できます。
![Talend_Kintone_8.png](https://qiita-image-store.s3.amazonaws.com/0/333450/21eed9f5-10ae-68da-4eb4-247c1c93bfbd.png)

22.　21. の "testApp" オブジェクトを右クリックし、"クエリの編集" を選択してください。
![Talend_Kintone_9.png](https://qiita-image-store.s3.amazonaws.com/0/333450/589b533f-fafe-4e36-8108-712496aa1f8c.png)

23.　下記の画面が表示されますので、青枠の "SQLの実行" を押してください。
![Talend_Kintone_10.png](https://qiita-image-store.s3.amazonaws.com/0/333450/21494a72-67df-cece-cacc-3a43e205ec2f.png)

24.　"クエリの結果" に kintone アプリ "testApp" で入力したレコードの一覧が表示されますので、"test1" の入力に対応する "RecordId"、"AppId" フィールドの値を記録してください。
![Talend_Kintone_11.png](https://qiita-image-store.s3.amazonaws.com/0/333450/87594e9c-b49c-c549-ecde-5c74823d8833.png)

25.　次に Access を起動し、下記の形で "testApp" テーブルを作成してください。
![Talend_Kintone_12.png](https://qiita-image-store.s3.amazonaws.com/0/333450/df05167d-4e14-d259-fdf6-87851d7da757.png)

<dl>
<dt>RecordId
<dd>主キー</dd>
<dd>データ型: 数値型</dd>
<dd>フィールドサイズ: 長整数型</dd>
<dd>値要求: はい</dd>
<dd>インデックス: はい(重複なし)</dd><br>
<dt>AppId
<dd>データ型: 数値型</dd>
<dd>フィールドサイズ: 長整数型</dd>
<dd>値要求: はい</dd>
<dd>インデックス: はい(重複あり)</dd><br>
<dt>input1
<dd>データ型: 短いテキスト</dd>
<dd>フィールドサイズ: 255</dd>
<dd>値要求: いいえ</dd>
<dd>インデックス: いいえ</dd>
</dl>
また、データとして下記の値を登録してください。
<dl>
<dt>RecordId
<dd>24. で記録した "RecordId" フィールドの値<br>
<dt>AppId
<dd>24. で記録した "AppId" フィールドの値<br>
<dt>input1
<dd>任意の値 (ここでは "test11" とします)<br>
</dl>

26.　[Microsoft Access から Salesforce Sales Cloud のデータを更新]
(https://qiita.com/kamega/items/b3e7d6b0d9ff17f2c5ff) の [Access から Salesforce のデータ更新 事前準備](https://qiita.com/kamega/items/b3e7d6b0d9ff17f2c5ff#access-%E3%81%8B%E3%82%89-salesforce-%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E6%9B%B4%E6%96%B0-%E4%BA%8B%E5%89%8D%E6%BA%96%E5%82%99) 20. ～ 23. を参照し、Talend 上で Access 用の JDBC接続を作成してください。

27.　"リポジトリ" の "メタデータ"、"DB接続" の下に "JDBC_Access" が存在しますので、右クリックし、"スキーマ情報の取得" を選択してください。
![Talend_Kintone_13.png](https://qiita-image-store.s3.amazonaws.com/0/333450/8d4f728a-7613-db1a-3f8b-d6103ea56382.png)

28.　下記の画面が表示されますので、"Next" ボタンを押してください。
![Talend_Salesforce_13.png](https://qiita-image-store.s3.amazonaws.com/0/333450/f8e81c19-9574-853d-cdb2-f640b8323f84.png)

29.　"名" を展開し、"testApp" テーブルをチェックし、"Next" ボタンを押してください。
![Talend_Kintone_14.png](https://qiita-image-store.s3.amazonaws.com/0/333450/e0a9e9a2-3256-70e1-5e7f-136d26411533.png)

30.　下記の画面が表示されますので、"Finish" ボタンを押してください。
![Talend_Kintone_15.png](https://qiita-image-store.s3.amazonaws.com/0/333450/05d52e9f-5dcf-b428-9b59-9c4106e10a4c.png)

31.　"リポジトリ" の "メタデータ"、"DB接続"、"JDBC_Access"、"テーブル" の下に "testApp" オブジェクトが作成されていることを確認できます。
![Talend_Kintone_16.png](https://qiita-image-store.s3.amazonaws.com/0/333450/058ac483-88a6-b875-306c-4d2e43f29326.png)

事前準備はここまでとなります。

# Access から kintone のデータ更新 ジョブの作成
ここでは Access から kintone のデータ更新を行う事例として、kintone アプリ  "testApp" の文字列を変更するジョブを作成します。

1.　Talend の "メタデータ"、"DB接続"、"JDBC_Access"、"テーブル"配下の "testApp" オブジェクトをジョブ "TrailKintone1" へドラッグ & ドロップすると、コンポーネント選択ダイアログが表示されますので、"tJDBCInput" を選択し、"OK"ボタンを押してください。
![Talend_kintone_Job_1.png](https://qiita-image-store.s3.amazonaws.com/0/333450/490fa241-c2a0-72cb-2810-6619eb6452a2.png)
![Talend_Salesforce_Job_2.png](https://qiita-image-store.s3.amazonaws.com/0/333450/cd2d30cc-205e-b80d-3017-3d980a6bdb14.png)

2.　次に、"メタデータ"、"DB接続"、"JDBC_kintone"、"テーブル"配下の "testApp" オブジェクトをジョブ "TrailKintone1" へドラッグ & ドロップし、コンポーネント選択ダイアログから "tJDBCOutput" を選択し、"OK"ボタンを押してください。
![Talend_kintone_Job_2.png](https://qiita-image-store.s3.amazonaws.com/0/333450/9107a2e9-8456-cefd-fd60-d46d653a9ef7.png)

3.　"Palette" から "tMap" オブジェクトをジョブ "TrailKintone1" へドラッグ & ドロップしてください。
![Talend_kintone_Job_3.png](https://qiita-image-store.s3.amazonaws.com/0/333450/17dac576-99e7-bec8-ed8b-64605e0e0f26.png)

4.　"JDBC_Access" の "testApp" オブジェクトをクリックすると、下記のように変化するので、青枠の部分をクリックし、先ほど追加した "tMap" オブジェクトまでドラッグ & ドロップしてください。
![Talend_kintone_Job_4.png](https://qiita-image-store.s3.amazonaws.com/0/333450/237148cc-eb15-1562-01d8-d578dce6c199.png)

5.　同様に "tMap" オブジェクトをクリックし、青枠の部分を "JDBC_kintone" の "testApp" オブジェクトまでドラッグ & ドロップしてください。出力名の入力を求められますので、"toKintone" と入力し、"OK" ボタンを押してください。その後、"ターゲットコンポーネントのスキーマを取得しますか ?" と問われますので、"Yes"ボタンを押してください。
![Talend_kintone_Job_5.png](https://qiita-image-store.s3.amazonaws.com/0/333450/90b2c4c9-bdbd-5690-c30c-9258a18d2d67.png)

6.　"JDBC_kintone" の "testApp" オブジェクトをクリックし、"コンポーネント" タブの "データ操作" を "更新" に変更してください。
![Talend_kintone_Job_6.png](https://qiita-image-store.s3.amazonaws.com/0/333450/61a7d646-9bc5-63d6-006d-b2845174d707.png)

7.　"tMap" オブジェクトをダブルクリックすると、下記の画面が表示されます。右側の "toKintone" のフィールドを "RecordId"、"AppId"、"input1" だけ残して削除してください。削除は右下のスキーマエディタにてフィールドを選択した後、赤×ボタンにて行います。
![Talend_kintone_Job_7.png](https://qiita-image-store.s3.amazonaws.com/0/333450/4744349f-288f-1ec2-37fb-40a5a33d3608.png)

8.　次に、右上の "自動マップ" を押し、"JDBC_Access" の "testApp" オブジェクトと "JDBC_kintone" の "testApp" オブジェクトの紐付けを行います。 また、"row1" の "AppId", "RecordId" の "タイプ" を "Integer" に変更してください。 その後、"OK" ボタンを押すと、"変更を反映しますか ?" と問われますので、"Yes"ボタンを押してください。
![Talend_kintone_Job_8.png](https://qiita-image-store.s3.amazonaws.com/0/333450/b990f38e-4027-c43a-76ec-ed0a730f95e2.png)

9.　"実行" タブの実行ボタンを押してください。
![Talend_kintone_Job_9.png](https://qiita-image-store.s3.amazonaws.com/0/333450/43d4bf5b-c967-492f-a54f-7da283d377f9.png)
![Talend_kintone_Job_10.png](https://qiita-image-store.s3.amazonaws.com/0/333450/84b701ce-4a80-d827-4d6e-1c506a4d19e2.png)

10.　エラーがなく実行が完了した際、[kintone 評価版アカウントの取得](#kintone-評価版アカウントの取得) にて作成したアカウントにて、kintone にログインし、アプリ "testApp" を起動します。レコード番号1 の "input1" の値が [Access から kintone のデータ更新 事前準備](#access-から-kintone-のデータ更新-事前準備) の 25. にて設定したものに更新されていることを確認します。
![kintone_12.png](https://qiita-image-store.s3.amazonaws.com/0/333450/0305bffd-d5c3-b2cb-5d5b-a12a41c1f6ec.png)
![kintone_13.png](https://qiita-image-store.s3.amazonaws.com/0/333450/bfc7b473-aea4-2e5a-8f3a-fd2c57bb6f03.png)