DataSpiderで人事DBとLINE WORKSをノンプログラミングで繋いでみた

# はじめに
こんにちは、よろず相談担当 すぎもん :yum:です。

今回は、DataSpiderでワークスモバイルジャパン様のサービス「LINE WORKS」と人事DBを連携するスクリプトを構築してみました。
https://line.worksmobile.com/jp/

今回構築してみたきっかけは、ワークスモバイルジャパン様で公開されている以下の事例になります。
https://line.worksmobile.com/jp/cases/noevir/

この中で、お客様が弊社製品「DataSpider Servista」を利用しており、LINE WORKSとの連携でご活用いただいているとのことでしたので、これは自分でもやってみなくてはということで構築してみました。

## 今回やってみること
正直、bot連携を行うことで様々な事ができると考えましたが、まずは事例にあった人事DBとLINE WORKSのユーザアカウントとの連携部分を構築してみることにしました。
今回は以下のユースケースを満たすスクリプトを構築してみようと思います。

- 社員が新たに入社した場合、人事DBを更新すると自動的にLINE WORKSのアカウントが追加される
- 社員が退職した場合、人事DBを更新すると自動的にLINE WORKSのアカウントが削除される
- 社員が移動などした場合、人事DBを更新すると自動的にLINE WORKSのアカウントが更新される
- 社員が休職/復職した場合、人事DBを更新すると自動的にLINE WORKSのアカウントが一時停止/復旧される
- 上記処理に失敗した場合、メールで管理者へ通知する

## 構成概要
今回用意する環境の概要は以下になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/22f6df4f-b1e0-cf14-9b17-17276661c696.png)


使用したDataSpiderのバージョンは4.1になります。
また、LINE WORKSとの接続検証を行ったのは2019年10月時点となります。

DB部分はPostgreSQLとしましたが、もちろん異なるDBでも良いですし、CSVファイルなどでも代用可能です。
DBとDataSpiderは予めインストールして準備しておきます。

# LINE WORKS環境準備
DataSpiderの環境を構築する前に、LINE WORKSとAPI連携するための準備を行います。

なお、今回の検証はLINE WORKSの本環境ではなく、「Sandbox」というテスト環境で実施します。
以下は「Sandbox」に関してLINE WORKSで公開されていた説明文になります。詳しくはサイトをご確認ください。
> - Sandboxとは？
> Sandboxは現在使用中のサービスと分離されたテスト環境です。
> Sandboxでは、現在ご利用中のサービスに影響を与えることなく、安全に API 及び連携テストを行うことができます。

## Sandbox環境準備
以下の流れでSandbox環境を立ち上げます。
1. 以下のURLから「LINE WORKS Developers」のサイトへアクセスします。
https://developers.worksmobile.com/jp/ 
2. 画面右上の「Developers Console」をクリックします。
3. 画面左の「Sandbox」をクリックします。
4. 画面の案内に沿ってSandbox環境を作成します。
5. 作成後、「Sandbox用Developer Console」の開くをクリックします。

以降のConsole作業は「Sandbox用Developer Console」にて行います。

## API連携の有効化
デフォルトだと、APIでの連携が行えない設定になっているため以下の流れで有効化します。

1. 「Developers Console」にログイン後、左の「組織連携」メニューをクリック
2. 「組織連携使用設定」を「on」にする
3. 職級/役職などすべての項目を「on」にする

このサンプルスクリプトでは「組織連携 API」を使用します。
今回は検証目的のためすべてonにしましたが、ここは以下のサイトを参考に組織の運用に応じて設計してください。
https://developers.worksmobile.com/jp/document/100300101?lang=ja

なお、この設定前に追加されているユーザ（管理ユーザ含む）については、APIキーとなる「External Key」が設定されていません。以下のコミュニティのやり取りを参考に予め設定を変更してください。
https://forum.worksmobile.com/jp/posts/149


## API 認証の準備

以下のサイトの記載を参考に、予め必要なキー情報を取得してください。
https://developers.worksmobile.com/jp/document/1002002?lang=ja

必要なもの
Domain ID 、API ID、Server API Consumer Key、Token

なお、今回は「サーバー API」のみ利用するため、「サービス API」で必要となる情報は不要です。

これでLINE WORKSと連携するための準備は完了です。

# DataSpiderで人事DBとLINE WORKSをノンプログラミングで繋いでみる

いよいよ本題です。
DataSpiderで人事DBとLINE WORKSを繋いでみようと思います。

事前に用意したシナリオをスクリプトに書くと、以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/913b37ce-96d5-bc7b-7dbb-249353e8bc59.png)

なお、DataSpiderの一般的な機能や設定については今回は割愛します。
以下は、特にLINE WORKSと接続する際に必要な作業について記載します。

## グローバルリソースの設定
事前にREST接続のグローバルリソースを設定しておきます。

本番環境とテスト環境で設定するURLが異なります。
サービス: https://apis.worksmobile.com/r/{API ID}/
テスト: https://sandbox-apis.worksmobile.com/r/{API ID}/

API ID部分は、事前に取得しておいたものを記載します。

## RESTアダプタの設定

今回は、目的に合わせてそれぞれ以下のAPIを利用します。
・入社
メンバー追加
https://developers.worksmobile.com/jp/document/100300501?lang=ja

・退職
メンバー削除
https://developers.worksmobile.com/jp/document/100300504?lang=ja

・休職、復職
メンバー照会
https://developers.worksmobile.com/jp/document/100300507?lang=ja

メンバー一時停止
https://developers.worksmobile.com/jp/document/100300524?lang=ja

メンバー一時停止の取消し
https://developers.worksmobile.com/jp/document/100300525?lang=ja

アダプタの設定時、パスは以下のように設定します。
なお、今回は社員番号をAPI発行時のキー情報と使用しているため、パスにも社員番号を入れてあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/3f9132f8-fd60-4b16-fcb7-992e37e6e21a.png)

ヘッダ情報には、事前に取得しておいた「Server API Consumer Key」、「Token」を入れたスクリプト変数を使用します。設定については後述します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/a10ed7ba-e679-254f-1aaa-556b1b0056f0.png)

## マイトリガーの作成
マイトリガーを作成する際に、スクリプト引数に値を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/1966fb83-5cca-a3e1-cce0-f01e65a6cc95.png)

それぞれ、事前に用意した以下の値を設定します。
DomainID：「Domain ID」を設定
consumerKey:「Server API Consumer Key」を設定
Authorization:「Token」を設定

# 最後に
DataSpiderで人事DBとLINE WORKSをノンプログラミングで繋いでみましたがいかがでしたでしょうか？スクリプトの詳細は、機会があれば別に記載したいと思います。

LINE WORKSは開発者向けAPIドキュメントやコミュニティ、テスト環境が充実しておりとても開発しやすかったです。開発中、APIの細かい仕様でわからない点もありましたがコミュニティで質問させていただきながら開発しました。また、sandbox環境で開発するとこで本番環境に影響を与えずにテストできる点も良かったです。

今回はテーマを絞って実施しましたが、LINE WORKSのbot連携を活用することで例えば社内システムとユーザをつなぐ事もできます。そうすることで、幅広いシステムとユーザをノンプログラミングで繋でいくことができるのではないでしょうか。

皆さんもLINE WORKSを導入される際は、DataSpiderによるノンプログラミング開発で社内システムを繋いでみてはいかがでしょうか？

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

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

それでは、また！