MENU

Code for IBM i:その全貌 ~IBM i開発をオープンへと進展させるオープンソースの開発環境|Part1 Code for IBM iについて

日本ではほとんど知られていないが、欧米では昨年来「Code for IBM i」への関心が高まっている。Visual Studio CodeでIBM iのプログラム開発を可能にする開発環境だが、オープンソースであること、有志たちによりコミュニティ型で開発が進められていること、IBMのエンジニアも開発に参画していることなど、これまでのIBM i市場では見られなかった特徴がある。IBM iアーキテクトのスティーブ・ウィル氏は、「VS Codeの拡張は、私たちの戦略的な未来の重要な部分」と言い切っている。そして日本において先行して利用するユーザーは、「使えるツール」と高く評価する。まだ開発の途中段階で不透明な部分もあるが、Code for IBM iの概要を紹介する。[編集部]

Part1 Code for IBM iについて(今回)
Part2 開発環境俯瞰図
Part3 基本的な使い方
Part4 ソースコードの保守
Part5 Code for IBM i以外の便利な拡張機能
Part6 DeepL API を使った翻訳プログラムの作成と実行

text=小川 誠   ティアンドトラスト

はじめに

2022年5月に、IBM iの新しいバージョンである7.5が発表された。その目玉として話題になっているのがIBM i Merlin(Modernization Engine for Lifecycle Integration、以下Merlin)である。Merlinはブラウザで利用できる開発環境(エディタ)と、DevOps 開発に必須のソースコード管理(Git)やCI/CDを実現するJenkins、RPGコンバータなどがパッケージされたものだ。そして最も画期的なことは、MerlinはIBM i 上ではなくRedHat OpenShiftコンテナ内で実行されるという点と、パッケージ化されたツールもオープンソース由来のもの(Merlinは有償)を利用している点だろう。Merlinの発表により、IBMは従来のSEU/PDM開発環境からオープンソースを利用した開発環境へと完全に舵を切ったことになる。

最近、IBM i界隈で話題になっているCode for IBM iも、オープンソースの開発環境だ。i Magazine 2022年冬号の特集「IBM i ユーザーに捧げるVisual Studio Code入門」でも少し解説したが、今回はCode for IBM iに焦点をあてて解説していく。Merlinの採用に向けた事前準備としてでもよいし、RDiに変わるツールとして利用していただくのもよい。Code for IBM iを通して、オープンソース開発環境への第一歩を踏み出してほしい。

Code for IBM iについて

i Magazine 2022年冬号の特集「IBM i ユーザーに捧げるVisual Studio Code入門」の復習になるが、あらためてCode for IBM iとは何かを解説しておきたいと思う。

Code for IBM iは、Microsoftが提供するVisual Studio Code(以下、VSCode)で利用できる拡張機能(エクステンション)だ。拡張機能とは言葉のとおり、VSCodeには標準でサポートされていない機能を後から追加で可能にするもので、Code for IBM iをインストールすれば、VSCodeでIBM iのプログラム開発を行えるようになる。もちろんCode for IBM iも、他の拡張機能同様に無償でインストールおよび利用することが可能だ(図表1)。

図表1 Visual Studio Code+Code for IBM i
図表1 Visual Studio Code+Code for IBM i

ここで、Code for IBM iの特徴をまとめておきたい。

1. VSCodeで RPG / CL / COBOL のソースコードの保守が可能
2. VSCodeからコンパイルが可能
3. IBM iのソースファイルのメンバーを直接編集することが可能
4. IBM iのIFSに配置したソースコード・ファイルを直接編集することが可能
5. ローカルのソースコードをIBM iのIFSにプッシュすることが可能

3の機能は、SEU/PDMユーザーがこの拡張機能を使うきっかけとして気軽に試してもらいたいものだ。特に、SEU使用時の大きな問題であった5250の画面サイズ問題(狭い)が解決できる点は大きい。VSCodeは開発PCのディスプレイサイズを十分活用できるので、5250エミュレータのサイズに制約されることなくソースコードを俯瞰できる。この一点だけでもこの拡張機能を利用すべきだと思う。

i Magazine 2021年秋号の特集「IBM iユーザーに捧げるGit入門」でも触れたが、ソースコードは変更管理されるのが当たり前だ。IBM iで稼働するプログラムのソースコードも当然例外ではない。バージョン管理用のツールはオープンソースで利用できるGitがデファクト・スタンダードであるが、VSCodeとCode for IBM iを利用すれば、RPGなどのソースコードの変更管理をGitを使って行うことが可能になる。5の機能はそれを実現するためには必須の機能だ。

■ SEU/PDMに変わる機能

Code for IBM iにより、SEU/PDMのレガシーな開発環境を、最も利用されているVSCodeのオープンな開発環境になぜ置き換えられるのかはこれから解説していくが、ここで改めてIBM iで利用可能な他の開発環境との比較をしておこう。

まず、IBM iでプログラムを作成する手順は、

❶ ソースコードを入力
❷ コンパイル
❸ コンパイル・エラーの場合はコンパイルリストを確認
❹ コンパイルが成功すればプログラムのテストを実施(デバッグ機能を含む)

という流れだが、❹については5250環境でしか行えないケースもある(対話型プログラムなど)ので、今回は❶から❸の作業に関しての選択肢を考える。

現在、❶から❸を実現可能な開発環境の選択肢は、以下の3つになると思う(本来であればMerlinも評価対象に含めるべきだが、純粋なプログラム作成機能以外に、CI/CD の機能などシステムのライフサイクル全般に必要な機能が今後も追加されていく開発プラットフォームなので、今回とは別次元の製品と見なし、対象からはずしてある)。

(A)SEU/PDM
(B)RDi
(C)VSCode+ 拡張機能

どれを採用すべきかの評価基準はさまざまあるが、今回は以下2点に絞って考える。

a. RPG Ⅲ、RPG ⅣおよびFF RPGの開発が可能か
b. ソースコードのバージョン管理が可能か

評価結果をまとめると図表2のようになる。

図表2 3つの開発環境の評価結果
図表2 3つの開発環境の評価結果

この結果からみると、RPG Ⅲ、RPG ⅣおよびFF RPGに完璧に対応しているのが (B)RDi、ソースコードのバージョン管理が可能なのは(B)RDiと(C)VSCode+Code for IBM iだ。

FF RPGに対応していないこと、Gitによるソースコードのバージョン管理はもはや必須であることを考えると、(A)SEU/PDMについては選択する理由はないと思う。

RDiは2つの評価基準を満たしているが、現時点でIBM iユーザーの標準の開発ツールになっているかというと、必ずしもそうとは言えない。Eclipseベースのツールなので活用シーンはたくさんあるが、かえってそれが利用時の手間を増やしてしまっている感もある。また有償であるという点もあまり広まっていない理由の1つなのかもしれない。とはいえ、IBMが提供する開発環境なので、メーカーのサポートが必要なユーザーにはぜひ使っていただきたいツールであることは間違いない。

Code for IBM iは、RPG ⅢおよびRPG Ⅳの開発については△という評価である。これは以下の理由による。

・RPG ⅢのコードをGitで管理しながらコンパイルすることができない
・RPG Ⅲの行単位のプロンプト機能がない
・RPG Ⅳの行単位のプロンプト機能に難がある
・SEUと同様の行単位のエラーチェック機能がない

まず、RPG Ⅲのコードのバージョン管理がCode for IBM i単体では不可能な理由を解説しよう。この拡張機能では、ローカルのソースコードをIBM iのIFS上にプッシュする機能があることは先に述べた。しかし、ソースファイルのメンバーにプッシュする機能は提供されていない。RPG Ⅳ(FF RPG)のコンパイラはIFS上のソースを参照するパラメータがあるので問題ないのだが、RPG Ⅲのコンパイラはソースファイルのメンバーしか参照できないため、仮にGitの管理下(開発PCのディスク上)にソースをおいて編集できたとしても、ソースファイルのメンバーにプッシュできない以上はコンパイルすることができない。この問題を解決する方法は、記事の後半で解説したい。

次にプロンプト機能について。RPG Ⅲは定位置記入形式なので、新規にコードを記述する場合はプロンプト機能が必須になる。SEUはもちろんこの機能を提供しているし、RDiももちろん実装している。しかし、Code for IBM iはプロンプト機能を提供していないので、この点も懸念材料になるだろう。RPG Ⅳについては別の拡張機能(後述)を利用することで定位置入力は可能だ。

この△の評価により、「だから使えない」と判断するのは簡単だが、ではSEU/PDMなのかという結論もありえない。後半では「使えない」を「使える」ようにするにはどうするかも考えていきたいと思う。[Part2へ続く]

Code for IBM i |目次

Part1 Code for IBM iについて(今回)
Part2 開発環境俯瞰図
Part3 基本的な使い方
Part4 ソースコードの保守
Part5 Code for IBM i以外の便利な拡張機能
Part6 DeepL API を使った翻訳プログラムの作成と実行

著者|
小川 誠氏

ティアンドトラスト株式会社
代表取締役社長 CIO  CTO

1989年、エス・イー・ラボ入社。その後、1993年にティアンドトラストに入社。システム/38 から IBM i まで、さまざまな開発プロジェクトに参加。またAS/400 、IBM i の機能拡張に伴い、他プラットフォームとの連携機能開発も手掛ける。IBM i 関連の多彩な教育コンテンツの作成や研修、セミナーなども担当。2021年6月から現職。

[i Magazine 2023 Winter掲載]

新着