IBM i のウンチクを語ろう
~ その35:JAVAかRPGか
皆さん、こんにちは。かつて会社勤務の傍ら、大学では非常勤講師、社会人向け大学院では客員教授の身分で、ビジネスとITとの関わり合いについての授業を受け持っていた時期があります。大学の方は100人規模の受講者を前に講義中心、大学院は少人数だったこともあり、講義はそこそこに趣旨に反しない限りは意見・質問・その他の思い付き発言など何でもありの議論中心、と異なるスタイルで授業を進めました。特に社会人学生の方は高いモチベーションを持って授業に臨むので、鋭い反論や全く想定外の質問も多く、金曜夜の90分、プラス有志による最長60分に及ぶ質問と議論の「延長戦」が終わる頃にはかなり消耗したものです。教える立場にありながら、実は相当に鍛えてもらっていたような気がします。同じ事は二度と繰り返したくはないのですが、当時は意外に楽しんでもおりました。
学生の方は聞いた事もないようなシステムの教育を受けたいと思っているわけではないので、講義では敢えてIBM i の製品説明に偏らないよう心がけました。基幹業務をサポートするためのシステムの理想を追求するとしたらどのような考慮点や課題があるのか、どのような仕組みや特性を備えるべきか、を理詰めで検討してゆけば、いずれはIBM i のようなシステムに帰結するだろうという発想です。回り道ではありますが、確実な理解に結びつけてもらう事を優先しました。長年IBM i ありきの世界の中で生きてきた私にとっては、前提知識が皆無でIBM i に特に関心を持ってはいない方の理解を得るために、どのように論理を組み立てて説明するべきかを検討する事は、良い思考訓練になりました。
![コラム01](/images/col1905-01.png)
議論の過程でアプリケーションとかその記述言語に関する話題を避けて通る事はできません。学生に最も馴染みがあるのはJAVA、C、Pythonなどかも知れませんが、旧来から様々なプラットフォームで利用されており、業界標準が策定されている基幹業務向け言語の代表格を挙げるとしたらCOBOLでしょうか。これら言語はどのように比較できるのか、議論しながら表にまとめた事があります。オープン系言語のJAVA対、レガシー系言語のCOBOLというわけです。議論に入る前には何コマ分かの時間を費やして、ITの歴史や主な用途の変遷、それぞれの言語の特徴は検討済みです。
参考までに、IBM i 7.3用ILE COBOLのマニュアルによると、以下の国際的な、もしくはアメリカの業界標準に準拠しているとあります。JAVA言語には相当するものは見あたりません。標準の有無という事実だけを見れば、オープンなのはCOBOLの方だという事になりそうです。感覚に反していますね。オープンという概念・感覚は結構いい加減なものだと言うべきなのでしょう。ちなみにRPG言語にも業界標準はありません。準拠すべきものが無いからこそ、IBMは気兼ねなくフリーフォームRPGを登場させる事ができたとも言えます。オープンと非オープンの優劣の判断も怪しいものです。
- ANSI X3.23-1985、X3.23a-1989、X3.23b-1993 (ANSI = American National Standards Institute: アメリカ国家規格協会、日本のJISに相当)
- ISO 1989:1985 (ISO = International Organization for Standardization: 国際標準化機構、何故か略称はIOSではなくISOです)
- ISO/IEC 1989 AMENDMENT2 (IEC = International Electrotechnical Commission: 国際電気標準会議)
比較は技術論というよりも外から見た印象によるものに過ぎませんが、できる限り皆が納得できるものに仕上げてゆきました。書記兼ツッコミ係に徹したので、私の意見は敢えて反映してありませんし、言葉遣いもほぼ発言されたままです。
JAVA | COBOL | |
---|---|---|
一般的な印象 | オープン | レガシー |
プログラマ年齢構成(推定) | 20~30 代が多い | 40~50 代が多い |
開発費用 | 人月単価は安い | 人月単価は高い |
プログラマ人口動向 | 長期的にも安定 | 当面は絶滅しないが長期的には減少傾向 |
プログラミング動機の順序 | 1. プログラミング 2. ビジネス | 1. ビジネス 2. プログラミング |
用途 | Web から業務へ拡張 J2EE やフレームワーク製品 |
業務中心 |
Web 対応の業務アプリ開発 | Java のみで開発可能 | 他言語との組み合わせ前提 |
プログラミング自由度 | PHP、Perl、Ruby などよりは小、COBOL よりは大 | 小 ~ 様式の縛りがある |
プログラム可読性 | COBOL に劣る | 良い |
アプリケーション安定性 | COBOL に劣る | 良い |
アプリケーション寿命 | スクラッチ文化 | 世代を超えて長期 |
言語としての進化 | 頻繁にバージョンアップ | かなり安定 |
COBOLについてざっくりとまとめると、プログラマは年配者が多く、将来は次第に人材確保が困難になるかも知れない。その一方で業務用途の開発言語として長期的に安定していて、可読性や保守性が高い、といったところでしょうか。机上で思考を巡らせただけではありますが、概ね納得感がある比較になっています。
![コラム01](/images/col1905-02.png)
私が着目したいのは、プログラミングの動機です。業務プロセスを習得するのが先で、その後何かのきっかけでプログラミングに足を踏み入れるのがCOBOLプログラマです。プログラミングないしその習得がまずは目的にあって、獲得したスキルを業務領域に適用するのがJAVAプログラマです。業務を知っているCOBOLプログラマと、そうでない可能性があるJAVAプログラマ、と表現しても良いと思います。もちろん例外もあるはずですし、数値的な比較を見た事がないので感覚的なものに過ぎません。既存の基幹業務アプリケーションをJAVAに移行しようとして失敗するケースを聞く事がありますが、原因の一つはここにある、と言われれば、何となく腑に落ちます。
本当はJAVA対RPGの比較にしたかったところなのですが、せいぜいRPGという名前を聞いた事がある程度の人にとってはイメージし難いので、COBOLはその代役として登場させています。置き換えてもほぼそのままRPGに当てはめる事ができますが、IBM i を意識するならばさらにいくつかの項目を表に付け加えたいところです。以下は私が思い付く追加項目です。他にも何か考えられるかもしれません。
JAVA | RPG | |
---|---|---|
バージョン・アップグレード時 のアプリケーションン互換性 |
ない | ある |
言語開発の背景 | C言語から複雑さを排除すると共に、生産性向上のためにオブ ジェクト指向化を図った多くのプラットフォームでサポートされる |
パンチカード・システムによる伝票発行手続きを進化させたもの 簡易性を重視し当初はプログラマ不要とされた |
構文 | C言語に近く、他の多くの言語と類似性が高い | RPGⅢ:独自性が強く他言語経験はあまり役立たない RPGⅣ:関数やプログラム間のダイナミック・リンクを サポートするなど他言語にやや近づいた フリーフォームRPG:他の多くの言語との類似性が高まった |
オープンとかレガシーと形容する事でそれぞれのテクノロジーに先入観を植え付けてしまう前に、冷静に比較すればそれぞれに存在するべき理由が見出せます。極端な言い方をすれば、プログラム言語はそれぞれのポリシーに基づいてITを活用するための手段に過ぎず、多くのユーザーにおいて採用されているのであれば、致命的な欠陥は無いだろうと想定できます。逆に、あらゆる面において優位性を発揮する言語も聞いた事はありません。用途やそれぞれの環境に応じて適切な言語を選択する、という発想を持ちたいですね。
ではまた