Talendコンポーネント活用（５）コンポーネントを自作する

#Talendのコンポーネントを自作する#
以前に標準コンポーネントでは実現できない処理をカスタムコンポーネントで使用する方法を紹介しましたが、今回はコンポーネントを作成する方法を紹介いたします。

#Talendバージョン７以降ではコンポーネント作成手法が変更#
Talendのバージョン６以前ではTalendStudioにComponent Designerという機能が付随されており、これを使ってコンポーネントの作成ができるようになっていました。
しかしバージョン７以降ではComponent Designerが廃止され、EclipseやIntelliJなどのJava統合開発環境で開発する方法に変更されました。

#開発環境準備#
コンポーネントの開発にはTalend Component Kitが必要になりますので、プラグインが利用可能なIntelliJを使用します。
IntelliJを起動して空のプロジェクトを作成し、メニューのファイルから設定画面を開き、プラグインのマーケットプレイスの検索タブからTalendを入力するとTalend Component Kitが表示されますので、これを選択してインストールしてIntelliJを再起動します。
なお、JavaはJava JDK1.8.xが必須となります。

#プロジェクトの新規作成#
IntelliJ IDEA へようこそ画面からプロジェクトの新規作成をクリックし、Talend Component Kitを選択して次へをクリックします。
![00_新規プロジェクト_Talend Component Kit選択.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/6c651225-f88c-9460-31b4-7dfbd05bc2dc.jpeg)
下図のTalend STARTER TOOLKITが表示されます。
![01_STARTER TOOLKIT_開始直後.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/7917b208-aca9-8fd6-adf4-390e09085913.jpeg)

#メタデータの定義#
Talend STARTER TOOLKIT画面ではコンポーネントとプロジェクトのメタデータを定義します。
今回は下図の内容を設定します。
![02_STARTER TOOLKIT_メタデータ入力後.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/c22195da-1c9b-437e-441a-08315eb6f9f5.jpeg)
各項目を入力し画面左側の③Add A ComponentをクリックするとConfigration画面が表示されます。
![03_STARTER TOOLKIT_Add_Component_クリック直後.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/27469951-c523-7e31-42d1-4ab329c5f156.jpeg)

#コンポーネントの標準定義設定#
Configration画面ではコンポーネントの名前と入出力設定を行います。
今回は下図のように名前のみをLoggerに変更し入出力はデフォルト設定で行います。
![04_STARTER TOOLKIT_Add_Component_Logger入力後.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/e255deb6-21ca-7a0e-e1cb-08ffc8bed80b.jpeg)
次へをクリックすると下図のプロジェクト名と保存場所の設定画面が表示されますので、必要に応じて変更して完了ボタンをクリックします。
![06_プロジェクト保存場所.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/a3b03ff4-f04a-e5f6-54b4-4a4fe0a2c6f4.jpeg)

#プロジェクトの確認#
STARTER TOOLKITが完了するとIntelliJのプロジェクト画面に移行します。
この時点でコンポーネントの作成に必要な最低限の設定は完了しています。
プロジェクトからLoggerProcessor.javaを開くと、コンポーネント作成に必要なコードの下地が既に作成されています。
![07_プロジェクト保存後のLoggerProcessor.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/f9f940a9-e533-187c-5870-37af83e9d643.jpeg)

#コンポーネントのコンパイルとデプロイ#
この時点では特に何も機能しないコンポーネントではありますが、TalendOpenStudioへのデプロイまで実行してみます。
IntelliJのターミナルでmvnw clear installを入力してコンパイルを実行します。
![08_IntelliJ_ターミナル_mvnwコマンド.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/2ffa57ee-e900-63c0-58df-40a1bdb90057.jpeg)
下図のようにコンパイルが実行され正常に終了します。
![09_IntelliJ_ターミナル_mvnwコマンド実行後.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/850c74f1-fcf0-982a-901c-85781fc72443.jpeg)
続いて、mvnw talend-component:deploy-in-studio -Dtalend.component.studioHome="C:\Talend\7.1.1_TOS_DI"を入力してTalendOpenStudioへのデプロイを実行します。
ダブルクォーテーションで囲まれているパスには、デプロイするコンポーネントを使用するTalendOpenStudioのホームのパスを設定します。
![10_TalendOpenStudioへのデプロイコマンド入力後.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/cc9b7aa9-b5b1-97ed-e1cb-dd207bf9aaf6.jpeg)
下図のようにデプロイが実行され正常に終了します。
![11_TalendOpenStudioへのデプロイコマンド実行後.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/1fa68430-9fdd-e9c2-96f8-91a9789e66b9.jpeg)

#TalendOpenStudioから作成したコンポーネントを使用する#
デプロイ先に指定したTalendOpenStudioを起動して空のジョブを作成します。
PaletteのMiscを開くと、STARTER TOOLKITのメタデータで定義したSampleFamilyが表示され、デプロイしたコンポーネントSampleFamilyLoggerが使用できるようになっていますので、これをジョブに配置して使用できることを確認します。
![12_TalendOpenStudioでジョブからコンポーネント使用.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/0a7c1d4c-e06b-06e1-25c0-ed776674e29b.jpeg)

#入力内容を表示するコードを追加する#
このままでは実行しても見た目の結果が何もないコンポーネントなので、入力内容を表示するコンポーネントに変更します。
TalendOpenStudioを終了してIntelliJに戻り、LoggerProcessor.javaを開いて@ElementListenerを探して以下の２行を追加します。
//Log to the console
System.out.println("Input["+defaultInput+"]");
![13_Inputを表示するコードを追加.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/8e44af98-48ef-bba2-beee-e274b8bd44bf.jpeg)
先ほどと同様にターミナルからコンパイルとデプロイを実行します。
再びTalendOpenStudioを起動して、先ほどのジョブを開いてコンポーネントのInput側にtFileInputDelimitedeを追加してジョブを実行すると、実行結果にファイルからの入力内容が表示されます。
![14_出力追加後のジョブ実行結果.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/985eae39-2e67-ebe1-f1f8-abdde17a680f.jpeg)

#まとめ#
IntelliJとTalend Component Kitを使用することにより、簡単にコンポーネントの下地を作成することができました。
次回はもう少し深堀してコンポーネントを作成したいと考えてます。