IBM i のウンチクを語ろう
~ その33:アプリケーション開発ツールを考える
皆さん、こんにちは。このコラムの第15から18回目にかけてRPG言語について考えました(「RPG言語は好きですか? -1、2、3、4」)。当時、執筆にあたってRPG言語はいつ登場したのかを調べようとIBM社のサイトをあちこち探し回ったのですが、それらしい情報が見つかりません。結局見つける事ができたのは、IBM 1401というメインフレーム向けに開発され、1959年に登場した言語だったというWikipediaの記述のみです。IBM 1401の方はIBM社サイトにきちんと歴史として刻まれているのに対して、RPGについては残念ながら言及がありません。唯一見つかった情報源のWikipediaをこのまま信じるとしたら、RPGは今年で「還暦」を迎える言語という事になります。ついでながら事務処理用のCOBOLはRPGと同年の1959 年、科学技術計算用のFORTRANは1957年、に対して、IBM i はAS/400として1988年に登場したシステムです。長寿命とは言われていますが、このコラム執筆時点でわずか「30歳」に過ぎませんから、これら言語に比べるとまだまだ「若い」ですね。ITの世界で最も長寿命なのはプログラミング言語なのかも知れません。
RPGはその後System/3向けにRPGⅡ、System/38向けにRPGⅢへと進化します。1988年のAS/400登場時に利用可能だったのは、RPGⅢをベースに機能強化されたRPG/400と、5250エミュレータを前提として稼働するADTS : Application Development Toolset(日本語製品名は「適用業務開発ツールセット」)の組合せです。世代的にも機能的にも極めて近い事から、RPG/400をそのままRPGⅢと呼ぶのが一般的でした。1994年には次世代のILE RPG、またはRPGⅢの次なのでRPGⅣ、さらに2013年にはその機能強化版とでも言うべきフリーフォームRPGが登場します。
![コラム01](/images/image1903-1.png)
開発ツールの方は長らく5250エミュレータを前提とするADTSが主力でした。手元の記録によると2002年にはJavaすなわちEclipseテクノロジーを前提とする、現在のRDi : Rational Developer for i の初期バージョンとでも言うべきWebSphere Development Studioが登場しています。単にGUI化されたADTSという位置付けに留まらず、アプリケーション開発において必要となる一通りの機能群、エディター、コンパイラ、デバッガなどが統合されたIDE : Integrated Development Environment(統合開発環境)製品です。Javaをベースとして様々なプラットフォーム上で稼働する汎用性もあり、コンセプトは良かったのですが、一般的なPCにとっては非常に「重い」製品でした。今でこそ2.3GHz Core i5プロセッサ、4GBメモリとSSD搭載の、私の「普通の」ノートPC上でもストレスなく動作しますが、当時としてはかなり重装備のPCが必要でした。必要最低限度とされるスペックを満たしてはいても、「サクサク」動くといったレベルには程遠かったようです。RDiを試した事はあるが性能的に使い物にならなかった、という評価を今でも聞く事があります。第一印象が全てを決めてしまうのは致し方無い面もありますが、最新の環境でもう一度試してみていただきたいと思っております。
登場順にRPG/400、ILE RPG、フリーフォームRPG のRPG各世代と、ADTS、RDiの各開発ツールとの間には、互換性について認識しておきたい点が二つあります。ADTSはフリーフォームRPGには使えないこと、RDi は全ての世代のRPG開発に使用できること、です。
最も歴史あるRPG/400とADTSに対するIBMの扱いは同じです。2008年に登場したIBM i バージョン6.1のタイミングに最後の機能強化がなされ、以降はOSのバージョン・アップグレードに伴って、出荷とサポートが継続されるのみに留まります。フリーフォームRPGの登場は2013年ですから、ADTSに含まれるエディターのSEU(Source Entry Utility)はこの新しい構文・文法を理解できません。IBMのサポートは無いのを承知の上で無理にコーディングすると、大量のエラーを吐き出します。それにもめげずにILE RPG コンパイラにかける事はできますが、エディターによる文法チェックは効きませんので、作業効率はよろしくありません。
![コラム01](/images/image1903-2.png)
私としましてはRDiの位置付けをもっと多くの方に認識いただきたいと考えております。備えている機能や利便性もさる事ながら、AS/400にとっての初代にあたるRPG/400以来の全RPG世代をサポートしています。そしてフリーフォームRPGを含むILE RPGと同様に、IBMは今後もRDiの機能強化を進めてゆく方針を明らかにしています。現在はRPG/400を利用中でもいずれはフリーフォーム版に移行するかも知れない、と考えているのでしたら、今から新しいツールに慣れておくのも悪い事ではないはずです。
ベースとなるEclipseはオープンソースの開発ツールとして、多くのプラットフォームでサポートされる、業界標準テクノロジーです。アドオン・モジュールをインストールする事で、様々なプログラム言語をサポートできる柔軟性があります。RDi はEclipseにRPGやCOBOLなどのIBM製アドオン・モジュールをパッケージングし、サポート付きでIBMが有償で提供する製品です。
アドオン・モジュールもさる事ながら、一つにパッケージングされていて、インストーラーがあるというのはかなりの付加価値だと感じます。何年も前に私個人のPCに、EclipseとC言語コンパイラであるGCCアドオンとをインストールしようとして、GCCのところで躓いた経験があります。Windowsのシステム値を手作業で変更するところまでは良かったのですが、コンパイラをEclipseに認知させる事ができず、何日もかけて設定を見直したり、様々なWebサイトを検索したり、修正プログラムを試したりしました。ようやくコンパイラを動かす時と、エディターを動かす時とで、Eclipseを構成するJAVAモジュールの名前を変更する、という極めて変則的な回避策に辿り着きました。それで期待どおりに動作することは確認できたのですが、この上なく面倒なので使うのをあきらめてしまいました。問題は既に解決済みと思いますが、このような煩わしさから解放されるとしたら、大変にありがたい事です。
![コラム01](/images/image1903-3.png)
パフォーマンス以外にADTS利用から離れられない理由としてよく挙げられるのは、RDiにはソース・プログラムだけとか、「Q」で始まる名前を持つオブジェクトだけ、といった条件付きの一覧を表示できない問題です。旧来のツリー状のオブジェクト一覧では確かに用は成しません。RDi バージョン 9.6 において実現されたPDMパースペクティブと呼ばれる機能によって、この点は解決されています。最早ADTSに留まるべき理由は無くなった、とまで言う方もいます。
面白いのは、二つのソースコードを並べて比較する機能です。相違のある箇所が図示されるだけでなく、各箇所について双方向に移動し適用する事ができます。ADTS内のSEUにも似たような機能がありますが、エミュレータ画面を上下に区切るので見通せる範囲が10行そこそこに制約されており、実際に活用されているケースはあまり聞きません。PC上でエミュレータ画面を同時に複数開いた方が見通しは良いですね。ただその場合は、目で見て差分チェックをしなければなりませんが。
Eclipseベースである事は、プログラム言語のバリエーション以外にも、各種機能の拡張性・柔軟性を実現するのに一役買っています。例えばチームによるアプリケーション開発をサポートするための、JAZZテクノロジーをベースとするRTC: Rational Team Concertや、アプリケーションの構造を可視化し、分析レポートを生成するX-Analysisなどです。これらはアドオンとしてRDiに統合し利用する事ができます。
如何に利便性・機能性が高いとは言っても、ライセンス料金を気にする方がいらっしゃるのも事実です。金額だけを旧来のADTSと比較すると、そうなるのは致し方無いのかも知れません。ただ、一度でも試してみれば、メリットや価値を感じていただけると思います。幸いな事にRDi には試用期間があります。現状のまま「慣れ」に安住するのか、多少の投資を伴うけれども、新しいテクノロジーがもたらす利便性を試してみるのか、IT に関わる以上は避けて通れない選択です。2002年の登場以来、そして今後もIBMが投資を継続し機能強化を行うツールである事も、考慮されるべきポイントではないでしょうか。
ではまた