MENU

サーバー化とクライアント化の双方を備えたAPI作成ツール ~API-Bridge |IBM iユーザーに捧げるAPI入門❸

Text=朝倉 啓考 株式会社オムニサイエンス

サーバー化とクライアント化
双方の機能を併せ持つ

API-Bridgeは、「さまざまなクラウドサービスとIBM iの基幹データをつなぐ架け橋」として生まれたソリューションである。IBM iに特化したAPIツールであり、IBM i技術者は外部のWebアプリケーションとの連携に際して新たに言語や関数などを覚える必要がない。

API-Bridge では、IBM i上にAPIを公開する「APIサーバー化」と、IBM iから外部のAPIを実行する「APIクライアント化」の双方に対応している。

APIサーバー化では、IBM i上にREST APIを準備し、さまざまなWebアプリケーションからIBM iのデータを参照および更新できる(図表1)。

図表1 APIサーバー化のパターン

ポイントは、「既存のロジックを流用」「IBM i上のデータに対してAPIを使って参照することで、リアルタイム性を担保」「5250画面から脱却し、それぞれの業務に合わせたインターフェースを採用可能」の3つである。

一方、APIクライアント化では、IBM iから外部のAPIを実行できる(図表2)。

図表2 APIクライアント化のパターン

ポイントは、 「IBM iから外部のAPIをリクエストし、外部データを取り込む」「IBM iからコミュニケーションツールに通知する」「データだけでなく、IFS区画にあるファイルをクラウドストレージなどにアップロードする」の3つである。

以下に、「API-Bridge Server」を使ったAPIサーバー化について紹介しよう。今回はグループウェアである「Garoon」との連携を想定し、API-Bridgeの操作の流れを見ていく。

API-Bridgeを使用した
APIサーバー化の流れ

GaroonとIBM iをAPI-BridgeによりAPI連携することで、図表3のようにGaroonポータルにIBM i上の在庫情報を取得して表示できる。

図表3 Garoonポータルに在庫情報を表示

ここでは、API-Bridgeを使ったIBM i側のREST API作成部分に絞って手順を紹介したい。使用する「API-Bridge Server」は、ブラウザ画面を使って操作するツールである。

API-Bridgeでの作成手順は、以下のとおりである。

① API認証トークンの設定
② APIの作成
③ パスパラメータの設定
④ 取得するデータの指定(SQL手動、SQL自動生成、CL/RPG のいずれかを使って定義)

API認証トークンの設定 

APIで一般的に用いられるセキュリティトークンを設定する。

トークンは、毎回API実行時にキーを発行する「API発行」、60日有効な「長期トークン」、無期限の「無期限トークン」の3種類がある。連携アプリケーションやセキュリティを考慮してこれらを選択する。今回は、「無期限トークン」を利用する。

APIの作成

いわゆるプログラム名、プログラムIDを定義するのと同様、外部(今回はGaroon)からコールされる際のAPIの名前を定義する。

まず、URL名を定義する。https://〜の前半部分はIBM iの環境に依存し、今回は「garoon」というURL名を定義すると、自動的に「/v1」とバージョン情報が設定される。

またこの1つのURL名に対して複数のAPIパスを作成できるので、APIパス単位でAPIの機能を明記する。今回は、「URL名:garoon(Garoon用)」「APIパス:zaimst(在庫マスタ情報)」 となる。

パスパラメータとその他のパラメータの設定

●パスパラメータ

パスにパラメータを渡して実行するために、パスパラメータを設定する。パスパラメータ名を英数字で定義し、文字列または数値のデータタイプを選択する(図表4)。

図表4 パスパラメータの設定

●その他のパラメータ

メソッドをPOST、GET、PUT、DELETEから選択し、パラメータを定義する(図表5)。

図表5 その他のパスパラメータの設定

メソッドごとに選択できるパラメータの種類は異なるが、「Header」「Query」「Body」「Array」「File」の各パラメータを利用できる。このうち「Array」パラメータを使うと、JSONを使って配列でパラメータを受け取ることも可能である。

こちらもパスパラメータと同様、パラメータ名を英数字で定義し、文字列または数値のデータタイプを選択する。

取得するデータの指定

最後にスキーマを作成し、データベース操作を行う。データベース操作にはSQL手動、SQL自動生成、CL/RPGのCALLがある。

ほかにもIFS区画を使ったファイルのアップロードやダウンロード機能が存在するが、今回はデータベース操作の3種類を以下に紹介する。

●SQL手動

たとえば以下のSQL文で、必要なデータベース情報を取得できる。

SELECT * FROM DEMQUERY.DEMJCH WHERE JHJGCD = ? AND JHTKCD = ?

APIで受け取ったパラメータを「?」で表してSQL文を記述すると、リクエストに沿った値を取得できる。

●SQL自動生成

SQLの経験がない場合、図表6のようにGUIに対象ファイルを指定したり、必要項目を選択することで、簡単にSQL文を作成できる。

図表6 SQL自動生成

 今回の事例はこちらを使ってSQL文を生成している。対象ファイルのライブラリー/ファイルの選択、ファイル同士の結合やフィールド選択、検索条件など、すべて選択形式で作成し、生成されたSQLでデータ取得できる。

●CL/RPGのコール

日頃使い慣れたCLやRPGでもAPIを作成できる(図表7)。

図表7 CL/RPGのコール

RPG Ⅲ以上であれば利用できるし、CL経由でもCOBOLなどさまざまなIBM iのプログラムを動かせる。SQLでは難しい、複雑な条件でのデータ取得やデータ更新に適している。

ここでは対象プログラムを選択し、プログラムに記述しているパラメータを定義することでAPIからCL/RPGをコールする。またコールされたプログラムは、これまでのビジネスロジックを流用し、ソース上で画面や帳票に出力していた部分をパラメータやワークファイルに書き込むように一部を修正すると、API用のプログラムが完成する。

これらは複数回連続で実行できるので、複雑な条件の複数明細のデータをAPIで返せるし、Webアプリケーション側で入力された複数明細のデータを一括更新することも可能である(SQL→CLやRPG→SQLなど)。

Swagger機能

作成したAPIは、「Swagger」(REST APIを構築するためのオープンソースのフレームワーク)を使って、単独でテストしたり、API仕様を出力できる。

作成後はパラメータを手動で入力し、正しい値が取得できるかをテストし、問題がなければAPI仕様を公開して、連携先へ情報を開示する。

昨今では、連携するアプリケーションの事例も増え、ノーコード/ローコード開発ツールはもちろん、Excelなど身近なソリューションとの連携などもよく見られる。また業務アプリケーションでのデータ連携だけでなく、クラウドストレージへのファイルアップロードやIBM iのバックアップデータのクラウド保管など、拡張性の高い連携手法が登場している。

将来、データ連携の基盤をAPI連携で考える企業も増えており、クラウド時代の今、IBM iの資産を有効に活用するためにも、API-Bridgeを使ってIBM iをマイクロサービス化し、クラウドシフトを実現することが可能である。

API-Bridge であれば、Web技術とIBM iスキルの双方を持たなくても、API連携の仕組みを用意できる点が大きな強みである。

株式会社オムニサイエンス
https://www.omni-s.co.jp/

 

[i Magazine 2023 Winter(2023年2月)掲載]

 

 

 

 

 

新着