IBM i のウンチクを語ろう
~ その96:意外に使えそうな無償開発ツールVSCode+Code4i
皆さん、こんにちは。以前もこのコラムでお話ししましたように、IBM i の戦略の一つにオープン性の追求があります。元々はビジネス遂行を支える理想的なシステムであるために、独自アーキテクチャを採用したAS/400であったわけですが、市場の変化を見据えながら、オープン性も追求するように軌道修正されています。そしてIBM i の「i」はインテグレーション(Integration: 統合)の「i」というコンセプトの元、旧来から継承されてきたテクノロジーと新しいテクノロジーの統合を推進しています。
RPGやCOBOLといった、旧来からのプログラム言語を対象とする開発ツールにもオープン化の波は押し寄せています。5250エミュレータを前提とするかつてのADTSから、Eclipseというオープンな開発プラットフォームをベースとするRDi(Rational Developer for i)、2022年になるとOpenShiftコンテナ上で稼働するMerlinへと進化しています。Merlinは単なるアプリケーション開発ツールの枠を越え、DevOpsという、アプリケーションの開発・テスト・本番環境への展開から寿命が尽きるまでのライフサイクル全体を管理する機能を備えます。この辺りの事情については、当コラム「今後のアプリ開発ツールはIBM i Merlinなのか」にありますので、目を通していただければと思います。そして先の5月7日にはMerlinのバージョン2が発表されています。サブスクリプション・ライセンスの提供によって初期コストを抑え、シングルノードOpenShift(SNO)をサポートすることで必要資源量削減を可能にし、後述するCode for IBM i を取り込むことで開発ツールとしての機能の充実を図ります。今回テーマとして取り上げたいのは、Merlinに含まれる開発ツールであるVisual Studio Codeです。
![テーマ](/images/col2406-01.png)
「VSCode」として知られるこのツールは、マイクロソフト社が無償提供するオープンソースのソフトウェアで、Merlinとは無関係に利用することができます。開発者の間では圧倒的に高い人気を誇っており、例えばStack Overflow社が実施する市場調査「2023 Developer Survey」の「Integrated Development Environment」セクションによると、全部で66,500近いプロの開発者中74%超が利用しており、2位のVisual Studio 28.74%を大きく引き離します。世界で最もポピュラーな開発ツールだと言えるでしょう。参考までにRDiのベースとなっているEclipseは9.69%で12位にランクインしています。
ここで念のためですが名前が似ていて混乱しそうなので、Visual Studio Code(VSCode)と2位にランクインしているVisual Studioとの違いを確認しておきましょう。VSCodeは言わばソースコード・エディタです。各種のプログラム言語に対応でき、必要に応じて拡張機能を追加することができます。一方のVisual Studioはエディタに加えてコンパイラやデバッガを集約したIDE(Integrated Development Environment)、すなわち統合開発環境であり、無償のCommunityから最も高機能で有償のEnterpriseエディションまでのラインアップがあります。どちらも提供元はマイクロソフト社で、Visual Studioファミリの一員です。ややこしいことに、Visual Studioはファミリ名であると同時に、IDEツール名でもあるということのようです。ちなみにRDiはVisual Studioと同じくIDEのカテゴリに属します。
VSCodeにその拡張機能であるCode for IBM i を追加インストールすれば、IBM i のアプリケーション開発に利用できるようになります。「Code4i」と簡略表記されることもあるこの拡張機能は、あらゆるILE言語、すなわち ILE RPG、ILE COBOL、CL、C/C++をサポートします。念のためですが、フリーフォーム(FF)RPGもILE RPGの一部です。そしてCode4iからIBM i のコンパイラを起動できるだけでなく、デバッガである「IBM i Debug」やSQL機能を提供する「Db2 for IBM i」などの拡張機能も揃っているので、全体でフルセットのIDEと呼べるほどの機能群を利用することができます。
2021年2月にリリースされて以来、このコラムを書いている5月22日時点で、Code4iのダウンロード数は32,000を超えています。この全てがIBM i の開発者だと考えて良いでしょう。無償の人気あるツールを使える点が、多くのIBM i 開発者に受けているのだと思います。
![ダウンロード](/images/col2406-02.png)
では実際にどうやって始めれば良いのでしょうか。Qiita上の記事を参照しながら手掛けていただくのが手っ取り早いと思います。ちなみに私は、自身のPCにVSCodeとCode4iをインストールし、FF RPGプログラム入力からコンパイル・実行までを行うのに以下の文書を参照しました。まずは最低限のことができれば良いと考えたので、できるだけシンプルな文書を選んだに過ぎませんが、特に途中で引っ掛かることなく作業を進めることができました。VSCodeに関する知識は皆無の状態から始めたのですが、作業時間としてはものの1時間程度のものでした。
「IBM i 駆け出し日記:VS CodeでIBM i を触る~設定編~」
「IBM i 駆け出し日記:VS CodeでIBM i を触る~コードコンパイル編~」
他に役立ちそうな文書として見つかったのは以下です。いずれもシリーズ化されそうな雰囲気を感じますので、今後、より一層情報が充実してくるものと思います。
「VSCodeでFFRPGをシュッと始める 環境構築/ソースをIFSへPush編」
「VSCodeでFFRPGをシュッと始める いざ、コンパイル編」
「Code for IBM i をぼちぼちはじめてみる①インストール編」
実際に使ってみると、多くの方は「無償ツールなのに意外に使えるな」と感じるのではないでしょうか。かく言う私もそのうちの一人です。だからと言って例えば、RDiやMerlinのような製品を置き換えるのか、と問われると、ケースバイケースといったところなのだと思います。
懸念事項として最も多くの方から指摘を受けそうなのはサポートの問題でしょう。VSCodeにせよCode4iにせよ、MITライセンスに基づいて提供されています。無償で自由に利用できるというメリットがある反面、メーカーの公式サポートは得られないので、コミュニティによる非公式なサポートに頼るしかありません。業務上利用する全ての製品にはメーカーによるサポートがなければならない、と考えていてはVSCodeは使えません。だからと言って、VSCodeを利用するプロの開発者は向こう見ずである、と決めつけるのも穏当ではなさそうです。
そもそもサポートを必要とするのは、システムの健康を保つための予防措置という側面だけでなく、万が一の不具合などに遭遇した場合に、可能な限り迅速に事態を復旧させるためでもあります。特に基幹業務を担うシステムにおいては、業務停止はその時間的長さ次第では、企業としての死活問題に関わります。ではアプリケーション開発作業の停止は企業の死活に関わるのか、と問われると、それほどのリスクをもたらすとは考えられない、というのが多くの方の答えになるのではないでしょうか。もちろん作業を長期にわたって停止させてしまうわけにはいきませんが、やみくもにアベイラビリティを追求するのではなく、多少の時間的余裕は持ち得るのだとしたら、コミュニティによる非公式なサポートだけでも問題無い、という判断もあり得るでしょう。メーカーサポートの必要性判断にもメリハリを考える、というわけです。
![考える](/images/col2406-03.png)
もちろん開発ツールであってもサポートは必要だという判断に至るケースもあるでしょう。その場合はVSCodeとCode4iとを内包し、IBMによる公式サポートが提供されるMerlinを選択肢とすることが考えられます。前述しましたようにバージョン2では利用開始にあたってのハードルが下がるので、本格的に展開しようと考える方も徐々に増えてくるものと思います。
もう一点、FF RPG以外のソース編集において懸念事項になるかもしれないのは、ディフォルトのままではVSCodeに桁位置を表示するルーラーが無いことでしょうか。桁位置が示されなければ、初期版である固定フォームのILE RPGやDDSソースの編集の際は使い辛そうです。
ルーラーの設定については、e-BELLNET翻訳版海外記事の「VSCodeでCode4i拡張機能を使い始める」に設定方法が記載されていますので、試されてはいかがでしょう。もしくは海外サイトの「VS Code - Vertical Rulers for Prettier Code?」も参考になりそうです。英語ですがブラウザの翻訳機能を使えば、問題無く読み解けるものと思います。
今回はVSCodeとCode4iの概要をお話ししてきたわけですが、必ずしもメーカーによる丸抱えではない、オープンソースの文化のようなものを感じられた方もいらっしゃるかもしれません。これまでに馴染んだ開発環境を破棄するべきとは思いませんが、VSCodeとCode4iもちょっと試してみようか、と思う方が一人でも出てくればと願っております。
ではまた