2017.12.29  i Magazine 2017 Autumn(8月)掲載
i Magazine 

07 IBM iと他システムの連携

保存版「これから使う人のためのIBM i入門ガイド」開発編 07

IBM iシステムの多くは、ホストやUNIX系システムなどIBM i以外のシステムとも連携しているが、システム連携と一言で言っても、その手法は多数ある。連携するのはデータなのかアプリケーションなのか、イントラネットなのか、あるいはインターネットを使った企業間連携なのかなど、扱うデータの種類やネットワーク環境によってさまざまである。このパートでは、既存のIBM iアプリケーションを新しいシステムと連携させる際の基本デザインの概要とその手法について紹介する。

システム連携デザイン

アプリケーションをシステム間で連携させる際、そのアプリケーションが独立して稼働できるプログラム・オブジェクトであることと、入出力のインターフェースが定義されている必要がある。簡単に言えば、Webアプリケーション開発で一般的に用いられるMVCモデルのように、ビジネス・ロジック部分となるModel、画面表示のView、その間を制御するControllerに分割できることを意味している。

プログラムを分割し、入力パラメータ・出力パラメータでインターフェースの再定義を行う。このように分割することで、たとえばプログラム・ロジックはそのままで、画面部分を5250からWebインターフェースに変えることも容易になる。

IBM iはそのオブジェクト指向アーキテクチャから、アプリケーションをオブジェクトとして分割するデザインを採用できる。これを実現するのが、前章でも紹介されているILE(Integrated Language Environment)である。ILEではマルチスレッド・アプリケーションを実現できる。現在稼働中のアプリケーションをJavaに置き換える、もしくはサービス・プログラムに書き換える場合、ILEに変更しておくことで再利用しやすくなるだけでなく、新しい技術を取り入れることも可能になる。

システム連携を実現する製品技術

これまでに述べたアプリケーション・デザインを用い、システム連携を実現する製品技術は複数ある。本稿では、現場で多く使用され実績のあるPCML連携、最近注目されているREST連携、そしてMQ(Message Queue)連携の3つを紹介する。

 

PCML連携

JavaなどのWebアプリケーションなどと連携する際に多く使われるのが、PCMLを使った連携である。PCMLとは「Program Call Markup Language」の略で、JavaからIBM i上のプログラムを呼び出す際に使用できるタグ言語である。入力パラメータ・出力パラメータを定義し、RPGやCOBOLなどの既存アプリケーションを容易に呼び出すことができる(図表1)

 

図表1 画像をクリックすると拡大します】

 

また、プログラムを呼び出すのに必要なPCMLファイルは、プログラムのコンパイル時に、PGMインターフェース情報(PGMINFO)パラメータに*PCMLを指定することで、自動的に指定したIFSディレクトリに定義ファイルを生成してくれる。

また、最新のPTFを適用し、プログラムのH仕様書において、PGMINFO(*PCML : *MODULE)と指定することで、PCMLファイルをプログラムやモジュールに組み込むこともできる。プログラム開発者は、呼び出されるインターフェースを意識してコーディングしコンパイルするだけで、Webアプリケーションから呼び出される準備は完了する。

 

REST連携

PCMLを使うさらなるメリットは、Webサービス化することで、クラウド・アプリケーションなどからREST呼び出しが可能となることである。PCMLファイルが組み込まれたプログラムと、IBM iに同梱されているIntegrated Web Service Serverを使うことで、RESTで連携することができる。Integrated Web Serviceにおいてサービス追加ウィザードを実行し、呼び出すプログラム、URI、メソッドなどを指定するだけで、ILE RPGプログラムなどがWebサービスとしてIBM i上にデプロイされ、RESTで呼び出せるようになる。

 

MQ連携

通信系アプリケーションや印刷処理、バッチアプリケーションなどの非同期型アプリケーションなどには、メッセージ・キュー(以下、MQ)適用パターンが挙げられる。PCMLなどと同様に、メッセージ・キューを使用してWebサービスと既存アプリケーションとを連携することができる。

プログラムを呼び出すための情報はメッセージ・キューに入れ、キューに入れられた値は、IBM i上のプログラムから取り出される。処理結果は再びキューに返され、それをJava Servletなどの制御プログラムで受け取り、JSFなどを使用してデータを結果表示することができる(図表2)

 

図表2 画像をクリックすると拡大します】

ILE化とインターフェース化がキー

近年、IBM i上のプログラムを有効活用したいという要望をしばしば聞くが、プログラムを正しくオブジェクト化し、分割することで、ほかのシステムとの連携が可能になる。

IBM iの優位性は、資産継承である。既存アプリケーションをリフォームすることで、クラウド・アプリケーションなどと連携し、新しいスタイルのビジネスも可能になる。システム連携するには「ILE化」と「インターフェース化」がキーとなることを覚えておいてほしい。[藤村 奈穂]