RPM/Yum対応などオープンソース管理も標準対応へ
菅田 丈士氏
日本アイ・ビー・エム株式会社
システム事業本部
Power Systemsテクニカル・セールス
アドバイザリーITスペシャリスト
Db2 for iへの
REST接続機能を拡張
DXによるデータドリブンな意思決定を実現していくには、基幹システムであるIBM iと他システムやクラウドサービスとの接続性のよさが重要である。
企業固有の業務データが蓄積されているIBM iは、データを提供する側としても、データ分析の基盤としても、周辺のオープン系システムやクラウド上のWebサービス上の多様なアプリケーションやツールとの相互連携のニーズが年々高まっている。
データ連携の手法は数多くあるが、モバイルデバイスやクラウドサービスの普及によって、主にWebサービスのバックエンドのデータ連携にREST(Representational State Transfer)APIを利用するケースが多くみられるようになった。
REST APIは、HTTP/HTTPSを通じてデータをやり取りする仕組みで、プラットフォームに依存しない。その柔軟性の高さゆえに、Web環境のような多様なシステムやサービスが連携する世界ではREST APIの活用が増えている。
IBM iもIBM i 7.1から統合ウェブ・サービス・サーバー(IWSサーバー)でREST接続をサポートしており、GUI画面(Navigator for i)でウィザード形式の手順を進めていくことでREST サービスを立ち上げることができる。
IBM i 7.4では、Db2 for iのデータベースへのREST接続機能を拡張した。これまでの方法は、ILE RPGやILE COBOLで作成したサービス・プログラムを読み込んでRESTサービスを生成する仕組みであった。そのためデータベース接続のロジックをプログラミングするスキルが必要であった(図表1の①)。
IBM i 7.4ではサービスプログラムではなく、IWSサーバーがDb2サーバージョブを介してデータベースにアクセスする仕組みが追加され、SQL言語でデータ操作(GET、PUT、POST、DELETE)を記述できるようになった(図表1の②)。これによって、SQL言語のスキルで、より簡単にデータベース接続のREST APIサービスを実装できるようになっている。
DB照会をSQL記述で
RESTサービス化する手順
ここから、データベース照会をSQL記述でRESTサービス化する手順を紹介する。これは、Navigator for iのApplication ServerメニューにあるWeb Serviceウィザードの「新規サービスの配置」から作成できる。
IBM i 7.4とIBM i 7.3 TR6ではウィザードステップ1のSpecify Web service implementationパラメータで「*SQL」を選択することができる(図表2)。
では図表3に示すDb2 for iのサンプルデータを例に、外部からデータを参照するREST APIサービスの構成手順を追って紹介する。
ウィザードのステップ2では、リソース名とURIパス・テンプレートを指定する(図表4)。
ウィザードのステップ3では、サービス化の対象とするテーブルのライブラリを指定する(図表5)。
そしてウィザードのステップ4で、SQLによるデータ操作を記述する。
図表6は2つのプロシージャを定義している例である。getAllプロシージャは全レコードデータを返すメソッドとして定義している。getByIDプロシージャはSTOREIDを指定して特定のレコードを返すメソッドとして定義している。
ウィザードのステップ5ではSQL処理をカスタマイズする。ここではgetByIDプロシージャのSQL result typeを「Single-row result set」に変更している。この記事の例では、getALLプロシージャを含め、それ以外のパラメータはデフォルトの設定で進めている(図表7)。
ウィザードのステップ6では各プロシージャのメソッド情報を指定する。getAllプロシージャはデフォルトのパラメータのままとし、getByIDプロシージャは図表8のように、入力パラメータを設定してレコード番号を特定できるように定義する。
ウィザードのステップ7ではサービスの実行ユーザーIDを指定する(図表9)。
ウィザードのステップ8の要約画面で設定内容を確認して完了すると、サービスが起動する(図表10)。
生成したREST APIサービスはWebブラウザでアクセスして稼働を確認できる。Db2 for iのデータをJSON形式で受け取ることができる(図表11、図表12)。
以上の手順で、ウィザードに沿ってSQL文でデータ操作を記述し、REST APIサービスを簡単に生成できるようになった。
今回の機能拡張で、REST APIサービスの開発生産性が高まった。IBM iと他システム、他サービスとの相互連携の促進につながり、データ活用が進むことでDX実現に近づくことができるだろうか。
RPMとYumをサポートし
オープンソース対応を強化
昨今のIBM iの進化の象徴の1つと言えるオープンソース対応でも、特筆すべき点がある。目まぐるしく変化するビジネス環境に即応する機敏性が求められ、ITシステムにおいてはDevOpsやアジャイル開発を取り入れることがアジリティを高めるポイントとなっている。
アジリティ向上にはオープンソース・テクノロジーが広く活用されていて、IBM iもより多くのオープンソースに、より早く対応するために進化を続けている。
Red Hat系のLinuxディストリビューションでパッケージ管理に使われているRPM(RPM Packageanager)とYumをサポートするようになり、これまで以上にIBM iにおけるオープンソースの導入や活用、管理が容易になった。
実は、RPMとYumへの対応は、IBM i 7.4発表前の2018年である。DevOpsやアジャイル開発に関しては、より早くIBM iユーザーに活用いただけるようにIBM i 7.4へのバージョンアップを待たずに機能をリリースしている点も注目していただきたい。
また、オープンソース用に2014年12月から提供を開始した5733-OPS(オープンソース・テクノロジー)は、RPMとYumのサポート開始に伴い、役目を終えることになった。
Linuxに馴染みのあるユーザーであればsshでIBM iに接続して、Yumコマンドでオープンソース環境を活用することもできる。それだけでなく、ACSにもパッケージ管理インターフェースを追加で用意しており、多様な環境やユーザーを想定したIBM iならではの対応といえる。
オープンソースを使い
データ解析までオールインワンで実装
パッケージの管理方法が変わっただけではない。IBM i 7.4の発表に合わせてNode.js のバージョン10、ビッグデータ解析の分野で人気の高いR言語、高機能なテキストエディタとして人気のあるvimなど、ラインアップも拡充しており、オープンソース活用の領域を着実に広げている(図表13)。
IBM iのオープンソース対応について、必要性を感じないと思われるユーザーもいるのではないだろうか。しかしIBM iのデータを周辺のLinuxサーバーに転送して分析しているようなケースを考えると、外部にデータを転送しなくともデータのあるIBM i上でPythonやRを利用してデータ解析すれば、リアルタイム性やセキュリティも高められるのである。また解析したデータをユーザーに公開するWebサービスをNode.jsで開発することもできる。
企業資産ともいえるデータが蓄積されているIBM i上で、データ解析までオールインワンで実装する手法としてオープンソース・テクノロジーを活用してはいかがだろうか。
参考:IBM iとWatsonの連携手法|REST webサービス化とRPGによるダイレクト接続(i Magazine掲載):
菅田 丈士氏
2008年、日本IBMへ入社。GTSデリバリー部門でIBM iの設計・構築・移行プロジェクトに従事。2014年、テクニカル・セールス部門に異動し、Power SystemsおよびIBM iの提案活動の技術支援を担当、現在に至る。
[i Magazine 2019 Autumn(2019年8月)掲載]
・・・・・
PART 1 オールインワンの軸は曲げずにDXを支える技術の幅を拡大
三ヶ尻 裕貴子氏
日本アイ・ビー・エム株式会社
システム事業本部Power Systemsテクニカル・セールス 部長