MENU

IBM iユーザーに捧げるVisual Studio Code入門|Visual Studio Code の拡張機能でIBM iのソース・メンバーを直接操作◎特集 Part5

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

 

ここで少しRDiの話をしよう。RDiは、IBM i のソースコードを編集するために、現在以下の3つの方法をサポートしている。

① リモート・システム・エクスプローラー(RSE)
② iプロジェクト
③ IFSプロジェクト

前述した VSCode の使い方は、RDi 9.5.1 で追加になったIFSプロジェクトに似ている。iプロジェクトの場合は、リモート・リコンサイラーを使用してリモートのソースコードと同期する。RDi を利用しているなら、こちらもぜひ試してほしい。

RDiのリモート・システム・エクスプローラー(以下、RSE)には、IBM iに接続した状態で、ソース・ファイルおよびメンバーの一覧を表示し、選択したメンバーを直接開いて編集・保存する機能がある。また、コンパイルもRDiのインターフェースから実行できる。

このRSEと同等の機能を提供するCode for IBM iというVSCodeの拡張機能がある。ここではこの拡張機能の基本的な使い方を紹介したい。

ちなみに今回はIBM i 7.3のみで操作している。すべてのバージョンで同じ動きをするとは限らないので、注意してほしい。

Code for IBM i のインストール

それでは拡張機能をインストールしてみよう。VSCode のアクティビティバーの拡張機能アイコンをクリックし、文字列IBM iで検索してCode for IBM iを表示し、インストールをクリックする。

Code for IBM iをインストールすると、「Code for IBM i Walkthroughs」「IBM i Language」という2つの拡張機能もインストールされる(図表1)。

図表1 VSCodeの拡張機能

Code for IBM iを使用するには、まず接続設定が必要になる。新しい拡張機能アイコン 「IBM i」がアクティビティバーに追加されているので、それをクリックする。次に、「Connect to an IBM i」をクリックする。

接続設定に指定する項目は、図表2、図表3のとおりである。

図表2 接続設定に指定する項目
図表3 接続設定の入力

接続は ssh なので、IBM iでsshdが開始されていることを事前に確認する。

設定が完了したら、Connectボタンをクリックして接続する。接続が完了すると、右下に「Connected to xxx.xxx.xxx.xxx」と表示され、サイドバーの表示が切り替わる。サイドバーには、以下の4つ項目が表示される。

1. USER LIBRARY LIST
2. OBJECT BROWSER
3. IFS BROWSER
4. DATABASE BROWSER

Code for IBM i拡張機能は多彩だが、今回は USER LIBRARY LISTとOBJECT BROWSERの設定を通して基本的な機能を紹介しよう。

USER LIBRARY LIST

USER LIBRARY LIST には、ライブラリー・リストのユーザー部分が表示される。ライブラリーを追加するには、図表4の①をクリックしてライブラリー名を指定すればよい。

図表4 USER LIBRARY LISTでのライブラリー追加

ライブラリーの順番は、ライブラリー名をポイントすると表示される上下矢印アイコンで変更できる。リストから除去するには、ライブラリー名で右クリックし、Remove from library list をクリックする。

現行ライブラリーは、図表4の②をクリックすることで変更できる。接続に使用したユーザー・プロファイルに設定されているライブラリーは初期値だが、変更したい場合はここで設定を変える。

このライブラリー・リストは、何らかのアクション(たとえばコンパイルなど)をVSCode のインターフェースから実行するたびにIBM iで設定されるライブラリー・リストの情報なので、実際に存在しないライブラリーでもこのリストに追加できる。エラーも見つけにくいので、設定には十分に注意してほしい。

OBJECT BROWSER

OBJECT BROWSERでは処理対象のオブジェクトを一覧表示し、フィルターでオブジェクトを絞り込んで表示できる。VSCode なので、主にソース・ファイルを指定することになる(図表5)。

図表5 OBJECT BROWSER

ここでは、ライブラリーUSER01LIB内のQで始まるソース・ファイルのみを選択している。さらにメンバーもフィルターしたい場合は、最後のMemberで指定する。Save Settings をクリックすると、作成されたフィルターがサイドバーに表示される(図表6)。

図表6 作成されたフィルター

ここに表示されているソース・ファイルのメンバーをクリックすると、エディタにソース・メンバーが表示されて修正できる。保存先はもちろんIBM iのソース・メンバーである。

フィルターは複数作成できるので、ソースコードが複数ライブラリーに存在する場合も、同時に処理できる。

コンパイル

拡張機能Code for IBM iが秀逸なのはここからだ。この拡張機能は、VSCodeのインターフェースで、IBM iでのコンパイルを実行できる。しかもコンパイル・リストを表示したり、エラーメッセージからソースの該当箇所を教えてくれたり、ソース上でエラー情報をポップアップ表示もできる。

それでは、実際にコンパイルして確かめてみよう。

まずコンパイル対象のソースコードをエディタで開く(OBJECT BROWSERに表示されているメンバー名をクリックする)。コンパイルは、メンバーの編集を実行して保存したのち、Ctrl+Eを入力し、上部に表示されるコマンド一覧から該当コマンドをクリックすることで実行する。

今回サンプルでコンパイルしたソースコードの拡張子は.sqlrpgle なので、CRTSQLRPGI が選択候補として表示されている(図表7)。

図表7 選択候補を表示

では、CRTSQLRPGIをクリックしてコマンドを選択し、Enterキーを押してコンパイルを実行しよう。今回はわざとエラーになるようコードを修正しているので、しばらくすると右下にエラーが発生したというメッセージが表示される。

メッセージ内にある Show Output ボタンをクリックすると(図表8)、パネル部にコンパイル・リストが表示される(図表9)。

図表8 エラー発生を表示
図表9 コンパイル・リストを表示


エラー箇所を特定したい場合は、パネル部の問題タブをクリックし、一覧表示されるエラーをクリックすると(図表10)、エディタ内の該当箇所が波線で強調されて表示される(図表11)。

図表10 パネル部の問題を表示
図表11 エラーの詳細を表示

しかも、その行にマウスのカーソルを合わせると、ポップアップでエラーの詳細が表示される。この例では、SenMessageという変数が未定義であることが視覚的にすぐ把握できる。

あくまでIBM iのソース・メンバーを直接操作しているので、このような使い方をしている限りGitでのバージョン管理はできないが、RDiのRSEと同等の機能をVSCodeで実現できることは特筆すべきである。

Code for IBM iにはこれ以外にも多くの機能があるので、興味があれば以下のサイトを参照してほしい。

Code for IBM i
https://halcyon-tech.github.io/vscode-ibmi/#/?id=code-for-ibm-i

接続の切断

IBM iへの接続を切断するには、「表示」-「コマンドパレット」、もしくは F1 キーを押して表示されるコマンドパレットで、「IBM i:Disconnect from current Connection」を検索して実行する(図表12)。

図表12 Disconnect from current Connection

拡張機能は機能の追加や修正が日々行われている。Code for IBM i はとくに多機能なので、ここで紹介したものと実際の画面が異なる場合もあるので注意してほしい。

 *

以上、VSCodeの概要と、FF RPGでの開発に必要な設定および実際の手順を解説してきた。本稿ではFF RPGを使用したが、IFS下のソースコードからコンパイルできる言語であれば、基本的にVSCodeで開発可能なので他の言語でも試してほしい。

もちろんPHPなども同じ手順でコーディングし、保存できる。PHPはインタプリタ言語なので、拡張機能SFTPを使えば、コーディングして保存したらすぐに実行できる。ローカルに保存したあとで、別途アップロード処理をする必要がないので、開発効率も向上する。 

IBM iで利用できるその他のオープン系言語も同様である。今後は、積極的にVSCodeを開発ツールとして採用してほしい。

今回紹介した IBM i関連の拡張機能はほんの一部であり、まだまだ多くの機能が存在する。本稿では「できない」と表現していた内容を可能にする拡張機能があるかもしれないし、今後発表される可能性もある。そんな発見があるのも、VSCode を使っていればこその楽しみと言えるだろう。

開発環境をオープン系ツールで構築する利点は多々あるが、他のプラットフォームと共通の開発環境を採用することで、そのツールを使い慣れた若い技術者がIBM iのシステム開発プロジェクトに参加しやすくなることをここで強調しておきたい。

冒頭で述べたように、新しい技術基盤を取り込み続けているIBM iだからこそ、さまざまなバックグラウンドを備えた技術者が共同でシステムを開発することが今後は必要になる。その少しでも早い実現に向けて、VSCodeとGitがこれからの開発ツールの共通基盤となるだろう。

著者|
小川 誠氏

ティアンドトラスト株式会社
常務取締役

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

 

[i Magazine・IS magazine]

新着