IBM i のウンチクを語ろう
~ その39:ハイブリッド化が進むIBM i
皆さん、こんにちは。松尾芭蕉の句にある、「隣は何をする人ぞ」ではありませんが、IBM i ユーザーも「隣人」の振舞いにはなかなか無縁ではいられないようです。IBM i コミュニティの中で多く採用されるプログラミング言語は何で、どのような課題を抱え、解決に向けた取り組みがなされているのだろうか、といった問いは、我々自身もよく投げ掛けられます。特にアプリケーション開発ツールの開発・販売に取り組んでいる会社にとっては、市場動向を正しく把握する事は会社の命運を握る重要事項ですので、単なる関心に留まりません。定期的にサーベイを行い、結果を公開するところもあります。今回はIBM i アプリケーション開発ツール・ベンダーの一つである、アメリカProfound Logic Software社のレポート「The 2019 State of IBM i Modernization Report」を取り上げて考察してみます。日本語訳はありませんが、文章は比較的シンプルですので、機会がありましたらざっとでも目を通してみる事をお勧めします。
蛇足ながら、先の俳句の上五(かみご)と呼ばれる最初の五文字は「秋深し」だと思い込んでいたのですが、正確には「秋深き」なのだそうです。本来ならば続くべき被修飾語が省略されているところに不安定感があり、味わい深さがあるのだとか。私の様な素人が同じ事をやったら、せいぜいヘボと一蹴されてしまうのがオチなのでしょうけど。
IBM i イコールRPGという図式は過去のものではありますが、この言語がコミュニティ内でどのように扱われているのかは、常に関心の的となっています。まずはIBM i 上で使用されているプログラム言語のシェアを見てみましょう。上記レポートのページ6「Which programming languages are you currently using in your development?」(アプリケーション開発において現在利用しているプログラム言語は何ですか?)からの引用です。一社で複数言語を採用するケースがありますので、合算値は100%を大きく超えます。なお、前回レポートの言語シェアについては「The 2017 State of IBM i Modernization White Paper」を参照しています。
言語 | シェア | 前回比 | |
---|---|---|---|
1 | フリーフォーム RPG | 76% | -3ポイント |
2 | ILE RPG (初期版) | 61% | +/- 0ポイント |
3 | RPGⅢ | 45% | -3ポイント |
4 | Java | 28% | +/- 0ポイント |
5 | PHP | 16% | -3ポイント |
6 | COBOL | 14% | +2ポイント |
7 | Node.js | 12% | +8ポイント |
8 | Python | 9% | +6ポイント以上 |
その他 | 21% |
RPGが最も高いシェアを占める中で、最新のフリーフォームRPGがトップ、その後ILE RPG(初期版)、RPGⅢと続きます。日本における同様の統計値を目にしたことは無いのですが、あったとしたらどうなるでしょうか。RPG言語がグループとして最大のシェアを占めるであろう事は想像に難くありませんが、技術的な保守的傾向の強さゆえに、内訳の順位は逆転、すなわちRPGⅢがトップに来るのではないかと思います。
前回レポートとの比較を見ると、第5位にランクインしているPHPのシェアはわずかに落ちたものの比較的堅調でありながら、Node.jsやPythonなどオープンソース系言語のシェアが顕著に伸びています。RPGやCOBOLが大きくシェアを落としているわけではないので、言語の置き換えが進んでいるわけではなさそうです。そもそもバージョンが違うとアプリケーション資産の継承性が維持されるわけではありませんので、これら言語は長期的に利用される基幹業務には不適だと言えます。Node.jsの公式サイトによると、この言語の目的は拡張性あるネットワーク・アプリケーションを記述するため(build scalable network applications)とあります。Pythonの公式サイトにはWebやインターネット・アプリケーション、科学技術計算、教育などの用途が列記されていますが、最近では専用ライブラリやフレームワーク製品が充実してきている事から、AIアプリケーション開発の利用例が増えています。基幹業務はRPGやCOBOLを使いながら、これらの新しいアプリケーションの開発においてもIBM i が活用されているのだと考えられます。
使用されるプログラム言語は多岐に渡るようになってきているのでしょう。先の言語ランキングのシェア・パーセンテージを単純に合算してみると、282%に達します。「その他」カテゴリに含まれる言語の数は特定できませんが、計算上は平均すると一社あたり2.8種類以上の言語が採用されています。2017年のレポートについても同様に計算すると273%、すなわち2.7種類以上でしたので、10社中1社は新たに一つのプログラム言語を採用している事がわかります。
ページ11にある「Which modernization projects are you starting?」(開始しようとしているモダナイゼーション・プロジェクトは何ですか?)の結果を見ても、オープンソース(OSS)の利用ケースが増えている事がわかります。前回の22%から41%へとほぼ倍増です。基幹業務以外、すなわちSoRに対するSoEアプリケーション開発、ないしデジタルトランスフォーメーションの実装がIBM i にも浸透しつつあるのでしょう。
言語 | シェア | 前回比 | |
---|---|---|---|
1 | 画面のGUI化 | 63% | -6ポイント |
2 | RPGのフリーフォーム化 | 55% | +1ポイント |
3 | オープンソースによる開発 | 41% | +19ポイント |
4 | DDSのSQL化 | 40% | +/- 0ポイント |
5 | モバイル化 | 38% | -5ポイント |
6 | IBM i からの脱却 | 10% | +3ポイント |
製品側も大きく変わっています。かつては5733-OPSというIBM製品番号とそのオプションを通じて、各種OSS製品の出荷管理が行われておりました。例えばPython 3には5733-OPSオプション2が割り当てられ、何らかの更新がある場合は5733-OPS向けに修正プログラム(PTF)がリリースされる、といった具合です。IBM i 技術者にはお馴染みの仕組みではありますが、OSS技術者にとってはハードルになってしまうかもしれません。急速に拡大する製品メニューと頻繁に更新されるOSSのスピード感にもなかなか合いません。
OSSには最適な製品配布と更新管理の仕組みが必要、というわけで、5733-OPSに代えてRPM(Red Hat Package Manager)とyum(Yellowdog Updater Modified)という、スタンダードなツールが既に利用可能になっています。RPMはソフトウェアの配布とインストール、yumはパッケージ間の依存関係を管理するなど、RPMそのものを統合管理する機能を受け持ち、両者はセットで機能します。IBM i 7.4の発表の際に、5733-OPSは最早利用されない事(英語ではSunset ~ サンセットと表現するそうです)も明らかになっています。
yumはACS(IBM i Access Client Solutions)のGUIパネルから起動できます。ACSバージョンの前提は2018年6月に提供開始された1.1.8、IBM i は7.2であり、既に200近くものパッケージが利用可能になっています。詳しくは日本IBM社Webサイト「IBM i インターネット・セミナー」の「IBM i での新しいオープン・ソース・ソフトウェアのパッケージ管理 201811」にありますので適宜参照しながら試してみてください。OSSは良いのだけれども何をしようか、という方はPythonはいかがでしょう?IT業界内でも人気急上昇中ですし、「IBM i でPythonを始める」という記事も参考になると思います。
2006年のPHPに始まり、PythonやNode.js、2019年になってR言語のサポートが加わるにつれて、OSSプロジェクトも増加傾向にあります。IBM i は最早RPGと同義ではないばかりか、基幹業務アプリケーション専用のシステムですらありません。レガシー的側面を備えながらもOSSも積極的にサポートする、ハイブリッド性を多くの方に活用いただきたいと思っております。
ではまた