2017.12.29  i Magazine 2017 Autumn(8月)掲載

08 IBM i開発 FAQ

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

Question:
IBM iのソースコード・エディタは何がいいか?

Answer:
IBM iでの利用可能なソースコード・エディタには、5250画面で利用できるCUIのSEU、EclipseベースのGUIで利用できるRDiがある。機能的な差はほとんどなく、SEUでできることはRDiでも可能。RDi登場時はPC側に必要とされるメモリ、CPU能力が高かったため利用できるPCが限られていたが、現在ではPCも十分な能力をもっているのでEclipseが利用できる環境であれば十分に使用可能。また、SEUの機能強化は今後行われず、RDiへの機能開発投資が継続される予定なので、今後はRDiが利用の中心になっていくものと考えられている。

Question:
IBM iでのSCM(Source Code Management)はどうなっているか?

Answer:
Javaなどで広く用いられているSCMツール(従来はCVS、現在ではGitなど)は、5250画面環境ではADTS(Application Development Toolset)があり、そのなかでSEUやPDM(Programming Development Manager)が利用できる。とくにPDMでは、複数ソースをまたいでソースコードの検索調査が行える。しかしながら、いわゆる変更管理(変更履歴やインシデントとの対応づけなど)の機能は盛り込まれておらず、サードベンダー製品の購入が必要だった。最近ではRDiと併せて利用が可能になるRTC(Rational Team Concerts)が使えるようになり、ソース変更履歴の追跡やインシデント情報との関連づけ、コードビルド制御などSCMで期待されている機能が利用できる。

Question:
IBM iのJava開発におけるToolbox for Javaとは?

Answer:
IBM iにおけるJava開発・実行はJavaそのものであり、ほかのプラットフォームとの違いはない。言語シンタックスなども同じものが利用できる。

IBM iのOSの機能をJavaから参照・操作したい場合に必要となるのがToolbox for Javaである。システムの状況を参照し、あるいはDBへのアクセスのためのドライバ(JDBCやネイティブアクセス方式のレコードレベルアクセス)がPackage化されておりIBM iでのJava開発では必須となっている。Toolbox for JavaはIBM i OS上のIFSに組み込まれて出荷されるほか、JTOpenというオープンソースとしても広くインターネットでも入手できる。最新の機能はJTOpenで実装され、製品版のToolbox for Javaに反映されていくという流れになっている。

Question:
IBM iのDb2は特殊なデータベースか?

Answer:
IBM iに統合されているDb2 for iはOSに同梱されていることもあり、世間的なイメージとしてはかなり誤解されている面が多々ある。

しかしながらDb2 for iは、z/OS版やLUW版(Linux、UNIX、Windowsなどの分散サーバー機)と並ぶDb2ファミリの1つである。そのためSQL命令などの互換性は注意深く保たれており、アプリケーション開発でのSQLの違いはほとんどない。

ストレージ管理の容易さ(SLS機能など)でSQLテーブルスペース管理周りの命令が不要などの違いは出てくるが、運用面のごく一部であり、かつ運用が容易になるという方向性のものなので、あまり問題にはなっていない。しかし、SQLの実行面から見ると上記の3つのDb2製品では違いが生じてくる。実行コストをあらかじめ最適化エンジン(オプティマイザ)が計算してアクセスプランを作成し実行するコストベースのSQLであることは確かだが、各自のプラットフォームごとの実行特性に合わせた最適化が施されるため、同じSQLを流してもアクセスプランが異なる場合が生じる。

LUW版でSQLを作成し、IBM iで実行したらパフォーマンスが異なったという声はよく聞く。これはある意味で当然で、同じDb2ファミリであっても実行時は別の考慮が必要ということだ。

IBM iは昔から大量データを高速に処理するために索引処理を重要視しており、SQLではインデックスの有無がまず優先的に検討すべきこととなっている。Windows環境ではデータ数はそれほど多くなく、とくに開発現場では少ないデータでテストするのでは、インデックスをさほど考慮せずに開発を通過している場合が多々ある。このような場合、IBM i環境へSQLをもち込むと不具合が生じるケースが見受けられる。

IBM iはある意味でRDBの基本に忠実に作られているので、インデックスなどを適切に考慮しておけば、それほど難しい問題にはならないはずである。

Question:
IBM iで開発コミュニティはあるか?

Answer:
日本語環境では草の根的に存在するが、大きなコミュニティには育っていない。IBM iを企業システムの構築で利用する場合が多い日本では、枯れて安定している技術(RPGやCOBOLなど)が好まれるため、最新機能などに関して積極的な討論の場が形成されにくい事情がある。

海外に目を向けると活発なユーザー活動が見られ、IBM iの最新機能についても積極的な意見交換がなされている。

IBMでもdeveloperWorksサイト上でIBM iコミュニティを設置しその後押しをしている。英語という壁があるが、一度のぞいてみるとよいだろう。マニアックな記事からクラウドとIBM iとの連携など製品・機能の紹介にとどまらない興味深い情報が満載されている。

https://www.ibm.com/developerworks/learn/ibmi/

Question:
IBM iで、WebサービスやRESTサービスは作れるか?

 

Answer:
できる。とくに既存プログラム(RPG、COBOL)などを活用でき、呼び出しインターフェースをPCML(Program Call Markup Language)というXML形式で定義することにより、既存システム資産をRESTサービスなどで利用できる。これらを活用し、クラウドとデータ連携などのシステム構築が進んでいる。[箕手 幸広]