IBM i のウンチクを語ろう
~ その98:最近JAVAは「元気」なのだろうか
皆さん、こんにちは。DX推進だの技術者不足だの、次から次へと新たな課題が突きつけられる中、対策を考えていると大抵どこかの時点で、採用するべきプログラム言語は何が適しているのか、といった議論が沸き起こります。基幹業務用途であれば、IBM i のFF RPGがその最有力候補の一つに挙げられると思うのですが、これをどのようにしてより多くの方に納得いただければ良いのか日々頭を悩ませております。
一方で、RPGの対極に位置付けられる言語の筆頭として、多くの方が思い浮かべるのはJAVAではないでしょうか。プログラム言語の話題はIT系メディアの中でも度々取り上げられるのですが、最近のJAVAは主力でありながらもかつての勢いを失いつつあるような気がします。そこで今回はJAVAをテーマとして取り上げ、実情はどうなっているのかを背景と共に探ってみようと思います。JAVAにとってRPGは歯牙にもかけない存在でしかないかもしれませんが、RPGからするとライバル的存在なのは事実ですので。
IBM i を継続利用するのか、オープン系に移行するべきかという命題は、しばしばRPGかJAVAか、という問いでもあります。極めて単純でわかり易いのですが、FF RPGの存在を度外視して問いが立てられると、「現在はFF RPGというものがあって、RPGではあってもその存在意義は昔のRPGとは全く違う・・・」といったところから説き起こしてゆかねばなりません。FF RPGの価値については何度かこのコラムで述べてきましたので、過去のコラムを読み返してみようと思われた方は、以下を参照いただければと思います。
まずはプログラミング言語全般の動向を眺めるところから始めてまいりましょう。私がよく参照するのは、オランダのソフトウェア会社であるTIOBEが毎月更新しているTIOBE Index、いわばプログラム言語の人気ランキングです。2024年7月時点ではトップが得票率16.12%のPython、2位10.34%のC++、3位9.48%のC・・・と続きます。Pythonは2021年10月にトップになって以来、現在に至るまで不動の1位の座を保つだけでなく、最近は2位との差も拡げつつあります。AIとの相性の良さが追い風となっているのでしょうか、この傾向は今後しばらく続くのかもしれません。ついでながらRPGは50位に入っています。
懸案のJAVAについて見てみると、最も古い記録が残っている2001年6月以来、一時的にCにその座を譲ることがあったものの、概ねトップを維持しておりました。ですが2020年4月を最後に下降に転じており、現在は得票率8.59%で4位に甘んじています。何故こうなったのか、技術的観点と、ライセンス管理の観点からその理由を説明することができそうです。
1940年代にコンピュータが登場して以来、ITは日進月歩の進化を継続している中で、1990年代だと思うのですが、ソフトウェア・エンジニアリングは置き去りにされている、という懸念がクローズアップされた時期がありました。プログラムの開発生産性がなかなか上がらないという問題です。解決策の一つとして4GL(第四世代言語:4th Generation Language)と呼ばれる言語が登場したのですが、特定のベンダー、特定のプラットフォームにロックインされてしまう傾向があるためか、普及するにしてもごく限られた範囲内に留まっておりました。今で言うところの、ノーコード・ローコードツールに相当するものだと考えれば良いでしょう。
4GLという言葉がある以上は、第一から第三世代までの言語が存在するはずですね。1GLとか2GLといった表記を目にしたことはありませんが。第一世代は機械語、すなわちプロセッサに直接与えるバイナリ・コード、第二世代はそれをアルファベットなどで記号化したアセンブリ言語、第三世代はCOBOLとかCなどプログラム・ロジックを記述するような、いわゆる高級言語を指しています。RPGは第三世代言語と見なされるべきなのだと思いますが、AS/400の遠い祖先にあたるシステム3と共に1969年に登場したRPGⅡは、普通の事務員が操作できることを謳い文句とした、プログラマ不要の伝票発行ツールといった位置付けにありました。そのためかWikipediaでは原始的な4GLとして扱われています。
4GL以外のもう一つの解決策は、出来上がったプログラムを再利用できるようにすることです。「Write Once, Run Anywhere」(一度書けば、どのプラットフォームでも動く)というスローガンと共に登場したJAVAは、オブジェクト指向型という側面もあり、エンジニアリングの問題を解決する最良の選択肢、といった位置付けにあったように思います。単なるブームに過ぎなかったのかもしれませんが。いずれにせよWindowsでも、UNIXでも、IBM i でも全く同じプログラムを動かすことができるのは、当時としては画期的でした。
ここで人気急上昇中のPythonについて見てみましょう。サポートするプラットフォームを拾い上げてみると、Windows、Linux/UNIX、macOS、AIX、IBM i 、iOSとiPadOS、OS/390とz/OS...と枚挙に暇がありません。実質的に「Write Once, Run Anywhere」なので、JAVAのかつてのスローガンが色褪せて見えますね。そもそもPythonインタープリタはC言語で記述されているので、理屈上は公開されているソースコードを入手してCコンパイラにかければ、動作環境が手に入るはずです。面倒そうなので試したことはありませんが。
言語習得上の難易度も考慮するべき重要な要素です。JAVAはオブジェクト指向型、RPGやCなどは手続き型言語という違いがあり、これがどのような影響をもたらすのかを考えてみるべきかもしれません。少なくともオブジェクト指向型の方がプログラミングの前提として理解しておくべき概念が多くなるので、生産性の高さというメリットはあったとしても、学習にあたってのハードルは高いと言って良いでしょう。私自身も初めてSmalltalkというオブジェクト指向言語を学んだ時は、「どうも直感に合わないなぁ」(こいつは嫌いだ)などと思ったものです。
かつてこのコラムで書いたことがあるのですが、大学のIT系学部で非常勤講師を務めていた時に、大学授業で最初に学ぶプログラム言語は何なのかを学生の一人に聞いたことがあります。最初の頃はJAVAという答えが返ってきていたのですが、プログラミングが嫌いになる学生が出てしまったこともあり、また世間の動向に鑑みて、何年後かにPythonに切り替えたと聞きました。
言語を比較した結果、JAVAではなくFF RPGを選択したお客様がいらっしゃいます。新たなアプリケーション開発に取り組むのを機に、基幹業務システム向けに採用するべきプログラム言語をゼロベースで検討した結果です。有力候補だったJAVAは難易度が高い一方でFF RPGはシンプルだったこと、FF RPGの独自性は大分薄れており新規学習のハードルは低いこと、さらに、資産継承性があることも選定理由でした。
プログラムの資産継承性の有無がプログラム言語選定上の理由になり、JAVAからFF RPGに移行したケースもあります。IBMホームページに紹介されている立命館大学様では、インフラ更改の際に多大なワークロードをかけてJAVAアプリケーションを見直さなければなりませんでした。FF RPGならばそのような懸念はありません。またJAVAプログラマにとって、FF RPGに取り組むことは大きなハードルにはなりませんでした。
JAVA人気の衰えは、新たな言語を産み出すのが容易になり、プログラム言語の選択肢が増えてきたことの裏返しとも言えそうです。例えば2001年1月時点の人気ランキング上位3言語、すなわちJAVA、C、C++の得票率合計は60.93%だったのに対して、2024年7月版では同様にPython、C++、C合計で35.94%と大きく下落しています。またGoogleのGo、AppleのSwift、Rust、Scratchなどの新興勢力もベスト20内にありがながら、さらに得票率を上げています。
さて、ライセンス管理の観点からJAVAを眺めてみましょう。ご存知のとおり当初の開発会社はサン・マイクロシステムズ、その後は企業買収に伴ってオラクル社が版権を引き継いでいます。オラクル社がJAVAの使用条件を何度か変更したことが、市場に戸惑いを生じさせたことは間違いないと思います。簡単にトピックを追いかけてみましょう。
バージョン8アップデート211(8u211)においてOTN(Oracle Technology Network)ライセンス契約が定められ、例外規定はあるものの、商用の場合は有償のJAVA SE Subscriptionが必要になりました。俗に言うJAVAの有償化です。
このままではよろしくないと思ったのかどうかはわかりませんが、その後バージョン17以降を対象にNFTC(No-Fee Terms and Conditions)という新たな契約条件が定められ、有償化に対する猶予期間が設けられることになりました。例えばLTS(Long Time Support:長期サポート)とされるバージョン17について、商用の場合でも2024年9月までは無償で利用できます。当コラム執筆時点で無償の期限が近付いているわけですが、見落とされていなければと思っております。
ソフトウェア使用条件というのは結構細かく定められています。上記オラクル社サイトを参照するなり、お付き合いしているベンダーに確認を求めたりするなどして、今後の対応を決めていただければと思います。ただ一連の変更は、有償・無償の問題に留まらず、「JAVAはオープンな言語」という世間の印象を、「オラクルの言語」に変えてしまったかもしれません。
最後にまとめてみましょう。JAVA人気の陰りは、他に有力な言語選択肢が増えていることに加えて、オラクル社による使用条件の変更によるものだと考えられます。さらにIBM i においては、資産継承性がありながら、オープン系技術者にとって学習のハードルが低くなっているFF RPGという選択肢もあります。用途やそれぞれの環境に応じた選択がなされるべきですので、何となくRPG、何となくJAVA、と考えているのでしたら、一度言語を再評価されてはいかがでしょうか。
ではまた