ブログ

IBMiにREST APIを実装i-Cross APIのご紹介:概要編

i-Cross API(アイ、クロス、エーピーアイ)はIWSILEなど習得する必要がなく、RPGⅢのような既存スキルでIBMiにREST APIのサーバー/クライアント機能を付加します。

下図1のようにIBMiにREST APIを設定し外部システムからコールされるとjson形式でデータを返す①サーバー機能、逆に外部システムが提供しているREST APIをIBMiがコールし受け取ったjson形式のデータをIBMi物理ファイルへ自動変換する②クライアント機能を提供します。

図1 i-CrossAPIが提供するサーバー/クライアント機能

REST APIとは

「REST APIとは」で検索すると様々な解説が参照可能ですので詳細解説は割愛しますが、個人的に重要と思えるポイントは、HTTPプロトコルを持い、URI(http://xxxxxx.co.jp/xxxxのような文字列)に対してGET、POST、PUT、DELETEといったメソッド(命令みたいなもの)でデータの参照、追加、置換、削除といった、いわゆるCRUD操作をネットワーク経由で可能としたところだと思います。

REST APIでの連携は何が良いのか

システム連携の仕方は歴史的に様々です。過去多くの場合、連携にはシステム同士のH/W、OS、データベース、ミドルエアなど多様なシステム構成要素の組み合わせとバージョンを意識し、専用のドライバー、コネクター、ツールキットなどの導入と設定が必要でした。ですがREST APIでは連携相手を意識するのはURIだけになり、実際に動いているシステム構成要素を全く意識する必要が無くなりました。

また普段WebブラウザでWebサイトを閲覧する場合HTTPプロトコルを用いていますので、セキュリティー強化目的で全ポートを閉じ、意図しない通信を遮断する設定を行っている企業でもHTTPプロトコルならば多くの場合遮断していないのでREST APIでのシステム間接続が可能と思われます。

ETLや転送ツールとの違い

典型的なデータ連携用途から見るとETLや転送ツールは下表の用途「1データ同期」、「2データ分析」のための積み上げデータ生成といったバッチ転送型のデータコピー作成が主な用途です。

表1 データ連携用途例

スケジュール起動でデータ同期や分析が一日に数回といった運用であれば良いのですが「今の在庫が知りたい」、「今座席に空きがあるのか知りたい」といった要求時実行のリアルタイム連携が必要な利用シーンは昨今珍しくありません。このような場合には外部システムからの問い合わせを待機し、即時回答を返す仕組みが必要です。i-Cross APIであれば外部システムからの要求時にIBMiデータを参照、追加、置換、削除しますので、データが最新でリアルタイム性の高かい運用に向いています。

i-CrossAPIは何が良いのか

  • IBMi専用にREST API利用が簡単に活用可能に作られているため設定が分かりやすい。
  • IWSILEなど習得する必要がなく、RPGⅢのような既存スキルでIBMiにREST APIのサーバー/クライアント機能を付加します。
  • サーバー用プログラムは既存RPGⅢプログラムの入力部分をパラメーター化(C仕様書で*ENTRY PLIST・・・のように修正)で流用が可能なためREST API用に新たにプログラム作成が不要です。
  • 外部システムからコールされ返信するデータは自動でjson形式へ変換し、逆に外部システムをコールし受信したjson形式のデータをIBMi物理ファイルへ自動変換するのでjson形式を特に意識する必要がありません。
  • REST APIサーバー機能を提供するシステムを別筐体サーバーで稼働させるのではなく、IBMi一筐体で稼働させるので、API用サーバーの調達、維持管理が不要で稼働基盤として堅牢なIBMi自体の高可用性の享受が可能です。
  • ライセンス形態として安価なスターターキットを用意しているので直ぐに始める事が可能です。

サーバー設定の実態

外部システムがコール可能なURI「http://xxxxxx.co.jp/xxxx」のような文字列をIBMiに設定するのですが、このURIがコールされるとIBMi内で稼働する実態(i-CrossAPIではスキーマと呼んでいる)が必要です。

i-Cross APIでIBMiに作成するREST APIの実態は主に2つです。1つは外部システムがIBMiへ参照目的で指定した値での検索結果を返すSQL、2つ目は外部システムから受けっとったデータをIBMiへ追加、更新、削除を行うRPGプログラムがREST APIの実態です。

下図は典型的なSQL設定例です。①データベーステーブルを選択します。この例では一つのテーブルを選択していますが、複数テーブルを選択しキー項目同士でjoinする事も可能です。②検索条件に指定するテーブルカラムを選択します。検索条件に使用するカラムはAND、ORで複数指定可能です。③検索条件を「=、<>、<、>・・・」などで指定します。④外部システムから検索パラメータとして受け取るためパラメータ指定をします。⑤は上記①~④指定で自動作成されたSQL文の参照が可能です。

図2 SQL設定例

IBMiへデータを追加、更新、削除を行うREST APIの場合、IBMi内で稼働する実態はRPGプログラムです。RPGプログラムが外部システムからデータの受け取りを可能とするため既存RPGプログラムの典型的な修正は下図のようにC仕様書で*ENTRY PLIST・・・のように修正する事で既存RPGプログラムの流用が可能です。

図3 既存RPGプログラムの

クライアント設定概要

i-Croos APIが提供するクライアント機能は下図のようにコール先システムが提供するREST APIマニュアルに従ってIBMi画面から直接コールが可能です。例えば下図ではヤフーが提供する郵便番号検索APIをコールしています。①はリクエストURL、②はメソッド。③はパラメータとしてheader、body、cookie、queryなど別に、それぞれ10個まで指定可能です。

上記で定義した設定は専用の呼び出しコマンド「APIBRIDGE EXEC(*EXEC)・・・・・」コマンドを用い任意に実行が可能です。

コール先システムから返ってきたjsonデータは自動的にIBMi物理ファイルに格納されますので、別途json変換取り込みプログラムなど作成する必要はありません。

関連リンク

お問合せ
https://alpcom.co.jp/contact/

アルファー・コミュニケーションズ公式YouTube
https://www.youtube.com/channel/UCTqwZsRRpAs9NPTUz2yH3ow/videos

データ活用支援サービス
https://alpcom.co.jp/products/data_utilization/

pagetop