HULFT10 API GatewayとDSSでHULFT連携

この記事は [セゾンテクノロジー Advent Calendar 2024](https://qiita.com/advent-calendar/2024/saison-tech) 4日目の記事です。
シリーズ2は [HULFT10](https://www.hulft.com/software/hulft-10) のエンジニアによる投稿をお届けします。

## :round_pushpin:はじめに
本記事では、[12/10にリリースされる当社の新製品](https://www.hulft.com/software/hulft-10/lineup)「**HULFT10 API Gateway**」の機能をご紹介しつつ、
[DataSpider Servista](https://www.hulft.com/software/dataspider)との連携方法についてまとめています。
※一個人の見解です。

私は2023年に未経験で中途入社し、HULFT開発チームに所属して10カ月経ちました。
プロジェクトには今年の5月から参画し、Go言語を使ったバックエンド開発を行っていました。

新製品のプロジェクトで多くのことを学ばせていただきましたが、
その中で行った検証についてご紹介したいと思います。

## ✅対象者
* HULFT10 API Gateway について興味がある方
* DataSpider Servista をご利用の方
* [HULFT](https://www.hulft.com/software/hulft-10)  をご利用の方

## 📝HULFT10 API Gateway とは
:::note info
**HULFT10 API Gateway**
PC上のWebブラウザからWebAPIを介してサーバー上のHULFT10 API Gatewayにアクセスし、各ホストに導入されているHULFTを集中管理するためのシステムです。さらにHULFT10 API Gatewayでは、WebAPIを利用して、認証、接続先ホスト（HULFT）の機能を実行できます。
:::
従来の HULFT の操作、管理を容易にする設計思想のもと作られたHULFTシリーズの新製品です。

## 🔍検証した内容
では本題の HULFT10 API Gateway と DataSpider Servista を連携して HULFT の操作を行う検証の内容についてですが、いくつか前置きがあります。

**＜概要＞**
DataSpider Servista にはすでに HULFT と連携する機能があるため、
DataSpider Servista の既存アダプタと HULFT10 API Gateway を使用する時の差異も確認しながら行いました。

:::note info
DataSpider Servista で HULFT と連携を行う場合、双方が同一OSにないとできませんでしたが、
HULFT10 API Gateway を使用することで他のOSにある HULFT とも連携が可能になります。
:::


**＜目的＞**
今回の検証は製品の動作検証を兼ねて行っております。
下記手法を行う目的は明確でなく、
あくまでも「このような方法で利用できる」ことをお伝えすることが目的です。

**＜考慮事項＞**
諸事情のため、DataSpider Servista v4.5 では試すことができておりません。
そのため最新版では利用可能になっている機能もあるかもしれません。
また、HULFT Script を導入した検証もできませんでしたが、
HULFT10 API Gateway の検証のため割愛しております。ご了承ください。

### 検証環境（すべて同一OS内）
Windows 10 Pro
HULFT10 API Gateway v10.2.0
PostgreSQL v16.3（HULFT10 API Gateway）
HULFT for Windows v10.2.0（HULFT10 API Gateway接続用）
HULFT for Windows v8.5.2（DataSpider Servista接続用）
DataSpider Servista v4.4 sp3

### 要求発行
**＜DataSpider Servista単体＞**
DataSpider ServistaのHULFTアダプタにある「配信要求」処理を使用しました。
![スクリーンショット 2024-12-01 233546.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3769438/d8044c08-7477-e454-e069-0350e2005c3c.png)
[設定]
必須項目と任意項目の「転送グループ」を入力しました。
初回は同一OSにインストールされている HULFT のパスをグローバルリソースに登録する必要があります。

[所感]
とても簡単に配信要求できました。

**＜HULFT10 API Gateway利用＞**
DataSpider ServistaのRESTアダプタにある「POST実行」処理を使用しました。
![スクリーンショット 2024-12-02 102241.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3769438/95a8e0f6-b6ad-86b4-7dac-12371c36d455.png)

[設定]
■必須項目
初回は「接続先」にURLを登録します。
```http:// ~ [hulft-host-id]``` までを記載することで同じ HULFT10 API Gateway のURLを使いまわせそうです。
<table>
  <tr>
    <td> 接続先 </td> <td>上記登録したURLを指定</td>
  </tr>
  <tr>
    <td> パス </td> <td>requests/sendings</td>
  </tr>
  <tr>
    <td> エンコード </td> <td>UTF-8</td>
  </tr>
</table>

■リクエスト設定
<table>
  <tr>
    <td> データ入力元 </td> <td>ファイル</td>
  </tr>
  <tr>
    <td> ファイルパス </td> <td>以下を記載したファイルを指定</td>
  </tr>
</table>

```json:json
{
        "id": "LOOPBAKC",
        "priority": 1
}
```

※idにはファイルIDを指定

:::note info
**HULFT10 API Gateway のリクエストボディについて**
マニュアルにサンプルが記載されているため、コピペで利用可能です。
:::

■レスポンス設定
<table>
  <tr>
    <td> データ出力先 </td> <td>ファイル</td>
  </tr>
  <tr>
    <td> ファイルパス </td> <td>適当なファイルを指定</td>
  </tr>
</table>

■ヘッダ設定
<table>
  <tr>
    <td> リクエストヘッダ </td> <td>以下2つ追加</td>
  </tr>
</table>


| 名前 | 値 |
|:-:|:--|
| Content-type | application/json  |
| Authorization | Bearer [HULFT10 API Gateway内で発行したユーザーのトークン] |

[所感]
設定項目が多く、時間要しました。
しかし、一度設定してしまえば使いまわし可能で、
json形式でリクエストボディを設定できるため、curlより簡単にAPIリクエストを送れました。

### 履歴
**＜DataSpider Servista単体＞**
HULFT Script を使用できなかったため割愛します。

**＜HULFT10 API Gateway利用＞**
DataSpider ServistaのRESTアダプタにある「GET実行」処理を使用しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3769438/c4ea83d5-fd10-5178-02ca-8f3eded0a66d.png)
[設定]
■必須項目
<table>
  <tr>
    <td> 接続先 </td> <td>上記登録したURLを指定</td>
  </tr>
  <tr>
    <td> パス </td> <td>logs/sendings/list</td>
  </tr>
  <tr>
    <td> エンコード </td> <td>UTF-8</td>
  </tr>
</table>

■レスポンス設定
<table>
  <tr>
    <td> データ出力先 </td> <td>ファイル</td>
  </tr>
  <tr>
    <td> ファイルパス </td> <td>適当なファイルを指定</td>
  </tr>
</table>

■ヘッダ設定
<table>
  <tr>
    <td> リクエストヘッダ </td> <td>以下2つ追加</td>
  </tr>
</table>


| 名前 | 値 |
|:-:|:--|
| Content-type | application/json  |
| Authorization | Bearer [HULFT10 API Gateway内で発行したユーザーのトークン] |

[所感]
GET実行はリクエスト設定が不要なこともあり、とても簡単に設定できました。

### 管理情報
**＜DataSpider Servista単体＞**
既存アダプタがないため割愛します。

**＜HULFT10 API Gateway利用＞**
DataSpider ServistaのRESTアダプタにある「POST実行」処理を使用しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3769438/b695cfab-7bf4-2556-a532-4b0d6d76e8ba.png)


[設定]
配信要求時に使用したスクリプトをコピペして使用しました。
今回登録したのは「詳細ホスト」の管理情報です。
以下変更点のみ記載します。

■必須項目
<table>
<tr>
<td>パス</td>　<td>managements/hosts/detail</td>
</tr>
</table>

■リクエスト設定
指定するファイルの中身に下記を記載します。

```json:json
{
    "hostname": "HOSTNAME",
    "comment": "windows host",
    "host_type": "windows",
    "code_set": "utf8",
    "receive_port": 30000,
    "observe_port": 31000,
    "send_multiplex_level": 10,
    "standard_for_japanese": "83jis",
    "connect_type": "lan",
    "hulft7_mode": "disable",
    "proxy_server": {
    "name": "myproxy",
    "port": 50000
},
    "security_setting": {
    "allow_send_request": "allow",
    "allow_huljob": "allow",
    "allow_hulsndrc": "allow",
    "allow_hulrjob": "allow",
    "allow_instant_transfer": "none"
    },
    "notify_user": "none",
    "meta.os_type": "windows"
}
```
:::note info
**HULFT10 API Gateway のリクエストボディについて**
マニュアルに上記と同様のサンプルが記載されているため、コピペで利用可能です。
:::

[所感]
非常に簡単でした！
これまでAPI実行のテストは大変でしたが、こんな身近に便利な最強ツールがあり感動しました。

**追記 ==========================**
HULFT10 for Linux との連携も検証しました。
上記と同様に詳細ホスト情報を登録しました。
[設定]
■必須項目
<table>
  <tr>
    <td> 接続先 </td> <td>上記登録したURLの[hulft-host-id]のみ変更し追加したものを指定</td>
  </tr>
</table>

この設定のみで同じ詳細ホスト情報を異なる HULFT へ簡単に登録できました。

:::note warn
管理情報によっては機種ごとに設定項目が異なる場合があります。
:::


## :scroll:まとめ
* HULFT10 API Gateway にAPIリクエストを送るとき、DataSpider Servista を使ったら簡単に送れた！
* テストとかにも使えるかもしれない！

## :reminder_ribbon:おわりに
検証を通して製品について学ぶことがたくさんあり、とても楽しかったです。
ただ、今回は DataSpider Servista をあまり駆使できなかったので、
より快適に使う方法を探っていきたいと思います！

ここまでご覧いただきありがとうございます。