Node.js でも Python でも必要になる XMLService ってどんな機能!?

今回は IBM i の XMLService という機能の紹介と、その導入の仕方を簡単に紹介したいと思います。


5733-OPS と 5770-DG1 とは関係がある!?

IBM i で node.js や Python が使える!?」で Open Source Technologies on IBM i (5733-OPS) というライセンス・プログラムを紹介しました。

IBM i 上で node.js や Python などのオープンソース製品を使える、というものなのですが、その関連情報である「How to obtain the new Open Source for IBM i Product - 5733OPS」の中に ↓ のような記述があります。

Once you have obtained the new product and options of interest, all future updates will also be included with the Latest HTTP PTF Group:

•SF99368 - level 31 for IBM i 7.1

•SF99713 - level 5 for IBM i 7.2

5733-OPS - node.js や Python についての更新が 5770-DG1 (HTTP Server for IBM i) のグループPTF にも含まれるので適用するように、ということなのですが、node.js も Python も必ずしも実行に HTTP サーバー(DG1) は必要とするわけではないのに何故だろう?? と思いませんか?!

これは、node.js で IBM i コマンドの実行や IBM i オブジェクトへのアクセスに使用される Node.js Toolkit for IBM i や、Python で IBM i コマンドの実行や IBM i オブジェクトへのアクセスに使用される Python Toolkit for IBM i で、IBM i とのやりとりに XML が使われており、その XML への整形や文字コード変換などを行っている XML Service という機能が 5770-DG1 の機能だから、なんですね。

XML Service の機能とは??

では、その node.js や Python の Toolkit で使われている、という XML Service とはどんな機能なのでしょうか??

端的にいうと、IBM i に対する指示(コマンドや SQL などの実行等)や IBM i オブジェクトのインターフェイスとして XML を使用できるようにする機能、ということになります。

たとえば、IBM i に対するコマンド実行であれば、実行するコマンド、そのコマンドへの引数などを XML に整形してこの XML Service のインターフェイスを呼び出して渡すと、該当するコマンドが実行されるようになっています。PCML と同様の発想ですね。コマンドの実行結果も XML のかたちで返ってきるようになっています。

UTF-8 の XML 形式であればたいていの“オープンソース製品”でごく自然に扱うことができるので、Node.js や Python での IBM i とのインターフェイスにいいだろう、ということでの採用なのではないでしょうか。

この XML Service、もともと IBM i の HTTP サーバー内部で使っていた機能で、5770-DG1 に含まれる機能だったんです。ほんの一例ですが、5770-DG1 の PTF に SI48830 というものがありますが、その内容の説明に ↓ のような記述があります。

APAR#: SE54197
Component: 5770DG100 - IBM HTTP SERVER FOR I
Release(s): 7.1
Abstract
HTTPSVR XML Service support update

"HTTPSVR XML Service"とあるのがわかりますね。

HTTP Server に限らずもっと普遍的に、いろんな製品・機能から利用できる、ということで 5733-OPS でも流用されている、ということのようです。

5733-OPS で呼び出す XMLService はもともと 5770-DG1 の一部!?

XML Service は「HTTP Server for IBM i (5770-DG1)」というライセンス・プログラムの一部としてパッケージされているので、その修正はやはり 5770-DG1 の PTF として提供されることになります。

5733-OPS への更新は、もちろん 5733-OPS の PTF として提供されますが、XML Service の機能に不具合があった場合は 5770-DG1 の PTF として提供されるわけです。

モジュールによっては別のライセンス・プログラムの PTF として提供されることもある、ということなんですね。これが、5733-OPS の PTF の他にも 5770-DG1 のグループ PTF を適用しておくように、と IBM のサイトが書いていた意図なんだと思います。

XMLService のオープンソース化

ただし、一見したところ関係のないものに依存関係がある、ということはあまり望ましくない状況だとも言えます。おそらくはその解決方法のひとつとして、IBM はこの機能をオープンソース化したのではないでしょうか。
PTF などを気にせず自由に使え、不都合なところ(もしあれば、ですが)の改変も自由にできる、というわけです。

それが“XMLService”と呼ばれるものなんですね。

オープンソースにしておけば、どのライセンス・プログラムに属するものか、などといったことを気にしなくてよくなりますし、随時最新の機能を追加していくこともできます。ユーザー側でちょっとした修正を行うこともできるでしょう。

Open Source for IBM i (5733-OPS) という製品と共に使うのであれば、他のライセンス・プログラムの機能 (5770-DG1 の XML Service) を流用するより、オープンソース化されたこちらの XMLService の方が使い勝手のよい局面がけっこうありそうです。


導入手順

導入とセットアップは全然難しくはありません。

導入手順が「XMLService Intall」に載っていますので、その手順にそって見ていきましょう。

ソースファイル等のダウンロードと展開

まず、こちらのサイトxmlservice.savf.zip (latest) と書かれているリンクから保管ファイル(savf)をダウンロードします。

ダウンロードした保管ファイルを ftp で IBM i にアップロードし、XMLSERVICE という名のライブラリーに復元します。

ソースファイルのコンパイルと実行

復元した XMLSERVICE ライブラリーをジョブのライブラリーリストに入れます。その後、XMLService 関連のオブジェクトを作成するための CRTXML プログラムが用意されているので、コンパイルし、実行します。ちなみに、この時のジョブの CCSID は 1399 にしています。

導入を実行中の画面を、いくつかスクリーンショットとして取ってみました。

CRTXML プログラムの実行は、最後には ↓ のような画面になって終了します。実行キーを押して完了です。

導入がうまくできたかどうかをテストするプログラムがあるので、実行して確認してみましょう。

特にエラーがなければ導入はこれで完了です。


今後重要な機能になってくるかも!?

現時点では、Node.js Toolkit for IBM iPython Toolkit for IBM i などの内部でしか使われていないので、この XMLService という機能にあまりピンとこないかもしれませんが、今後、IBM iと他システムとのインターフェイスとして重要な機能になってくる可能性もあります。

Node,js や Python を使う人には必須ですが、そうでない人もこういった機能が存在している、ということと、オープンソースで最新の状態のものがソースと共に入手できるようになっている、ということを認識しておいていいでしょう。

[Top Pageに戻る]

Ads by TOK2