IBM iのコード編集 ~RDiとOrion 、オープン系と親和性のある新しい開発環境

 

 Part1では、IBM iユーザー視点でのDevOpsの定義や現状について述べたが、Part2、Part 3では個々のツールについて掘り下げる。

 Part1でも述べたとおり、DevOpsと言っても「このツールがそうだ」というものはない。個々のビジネスの要件や目的に応じ、さらにIT面から最大限に貢献できるように必要なツールを組み合わせ、運用していくことが肝心となる。

 IBM iに限らず、基幹業務を含めたDevOps化の波はまだスタートしたばかりである。こうした時期ではまず、従来の開発ツールや運用方法の見直しが必要となる。このとき、単なるツールの選定に捉われず、「自分たちのDevOpsが、ビジネスにどのように貢献できるか」という視点を忘れてはならない。

 以上を念頭に、ここではRDiやOrionを使用したコード編集について解説する。

 

EclipseベースのRDi
ブラウザで操作するOrion

 IBM i のDevOpsを支えるコード編集ツールとしては、Rational Developer for i(以下、RDi)とオープンソースのOrionが挙げられる。

 RDiはPC上で稼働させる統合開発環境(IDE)で、ADTS (Application Development Tool Set:適用業務開発ツールセット)の後継ツールである。Eclipseをベースにしているため、JavaやWebなどを開発しているユーザーにとっては馴染みのあるツールであり、操作感に大きな違いはない。

 他のEclipseツールとRDiの違いは、リモートシステムエクスプローラー (以下、RSE) というIBM i独自の機能が組み込まれている点である。RSEにより、RDiからIBM i に接続し、ライブラリーやIFS上のオブジェクトなどをエクスプローラー形式で表示できる(図表1)

 

[図表1]Rational Developer for iの画面

 RDiにはIBM iのソースメンバーを編集するためのLPEXエディターが搭載されており、コンパイル、デバッグなども可能である。このほかに、リポジトリーで管理されているソースを管理する「iプロジェクト」や、RDi 9.5.1からは5250接続するためのホストエミュレータが組み込まれている。

 これに対して2016年に新しく提供されたのが、Orionである。これは、オープンソースのEclipse Orionプロジェクトを基盤としたブラウザベースの開発環境である(図表2)。IBM i 上でOrionサーバーを稼働させ、ブラウザからアクセスすることで、IBM i上にあるソースを編集できる。RDiとの大きな違いは、IFS上に配置されたソースメンバーに対して操作する点である。

 

[図表2] Orionの画面

 

RDiのiプロジェクトによるコード編集 

 リポジトリーで管理されているソースを編集する場合、RDiのiプロジェクトを使用する。JavaやWebなどで使用されるプロジェクトフォルダと同様、iプロジェクトはIBM i ソースを格納するためのフォルダであり、iプロジェクト単位でリポジトリーに登録する。

 iプロジェクトはオフライン開発での使用を目的としており、作成されたiプロジェクトや、プロジェクト内に格納されているソースメンバーは、ローカルPC上に保存する。開発者はこのローカルにあるソースメンバーを編集し、リポジトリーに対してプッシュして更新内容を反映。プルして、他の開発者の作業内容をローカルに反映する。

 iプロジェクトの特徴としては、リポジトリー間の同期だけでなく、IBM i 上のライブラリーと同期できる点が挙げられる。iプロジェクトに紐付けられた特定のライブラリーに対して、ソースメンバーをプッシュ/プルできる。ローカルで編集したコードをコンパイル/デバッグする際には、このライブラリーとの同期機能を使って、IBM i 上で作業できる。

 以下に、iプロジェクトを使ったコーディングについて解説する。

 RDiには、iプロジェクト用のパースペクティブがある(図表3)。ワークスペース右上のiプロジェクト・パースペクティブ・アイコンをクリックして表示できる。

 

[図表3] iプロジェクト・パースペクティブ図

 iプロジェクト・パースペクティブは、iプロジェクトをエクスプローラー形式で表示する「iプロジェクト・ナビゲーター」、ソースを編集する際に使用する「LPEXエディター」と「アウトライン」、オンラインで作業するときに使用する「RSE」、オンライン時にソースのプッシュやコンパイルした際のログを示す「コマンド・ログ」などで構成されている。主に使用するのは、iプロジェクト・ナビゲーターとLPEXエディターである。

 iプロジェクトをさらに詳しく見ていこう。ここにはオフラインで開発するためのソースがライブラリーと同様、ソース物理ファイル単位で格納されている(図表4)。開発者は、このiプロジェクトに登録されているソースに対して編集する。

 

[図表4] iプロジェクト・ナビゲーター

 

 ソースメンバーをダブルクリックすると、デフォルトでLPEXエディターが開く。LPEXエディターはIBM iのソースを編集するための専用エディターで、RPGやCOBOLなどの構文を解釈し、エラーがある場合はそれを赤バツ印で表示する。

 エディターの右側に、コーディングをサポートするためのアウトラインが表示される。ここに、ソース内で定義されているパラメータやプロシージャーなどをグルーピングし、表示する。このアウトライン機能では、オンライン時に情報を取得してキャッシュするため、オフライン開発時の情報が最新とは限らないことに注意が必要である。

 コーディングを終えてコンパイルするときは、リポジトリーやIBM iに接続する必要がある。ソースをコンパイルするには、まずiプロジェクトのプロパティで指定したIBM i 上のライブラリーにアップロードする。ソースを右クリックし、「リモート・アクション」メニューからソースのプッシュ、コンパイルなどを実行する(図表5)

 

[図表5] リモート・アクション・メニュー

 

 プッシュする際には、「差分」もしくは「選択したもののみ」と使い分けることが可能である。アップロードするとき、万一ライブラリー上のオブジェクトが変更されていた場合は、競合として検知される。そのため、iプロジェクトに紐付けられるライブラリーは個人ユーザーのワーク用に限定した運用が推奨される。

 ソースをサーバー上にプッシュしたあとにコンパイルするが、対話型コンパイルも、あるいはバッチ投入も可能である。RDiの設定画面から、「iプロジェクト」→「ビルドおよびコンパイル」メニューで選択する(図表6

 

[図表6] ビルドおよびコンパイルの設定

 

 デフォルト設定であるバッチコンパイルでは、各コンパイルの処理がジョブとして「ジョブ状況」に一覧で表示される。図表7のように、対象のジョブが「*OUTQ」に変わったことを確認し、ジョブを右クリックし、「タスク・アクション」→「検索エラー」メニューを選択すると、「エラー・リスト」が表示される(図表8)。エラー・リストに表示されたエラーをダブルクリックすると、対象のソースが表示される。

 

[図表7] ジョブ状況と検索エラー

 

[図表8] エラー・リスト

 コンパイルを終了したソースはリポジトリーに登録し、共有する。なお、ここではIBM i に接続し、リモート・アクション・メニューからコンパイルしているが、リポジトリーに登録し、リポジトリーから「個人ビルド」という形でコンパイルする方法もある。リポジトリーとの共有については、Part 3のコード変更管理で解説する。

Orionによるコード編集

 次に、オープンソースであるOrionを使ったコード編集を紹介する。

 2018年7月時点でIBM iが提供しているOrionは、Orion 13をベースとし、IBM i独自の追加機能を加えている。Orion 11でサポートされていたフリーフォームRPGに加え、CL、COBOL、DDS、そしてUIMの構文ハイライト機能が最新のOrion13で拡張されている。

 5733OPS1のオプション8の導入とPTF SI63852を適用するだけで、Orionを使用できる。Orionの導入ディレクトリである/QOpenSys/QIBM/ProdData/OPS/Orion/ からorionシェルを実行すると、QHTTPSVRサブシステム配下で、QORION、QZSHSHという2つのジョブが起動する。

 Orionを使用するためのセットアップは以上である。これでブラウザからポート2025にアクセスし、Orionが使用可能になる。RDiと違って、開発者の各端末に導入する必要はなく、ブラウザさえあれば使用できる。

 RDiのiプロジェクトがローカルPC上でソースを編集していたのに対し、Orionは直接サーバー上のソースをブラウザから編集する。この違いは、ソースメンバーがライブラリーではなく、IFS上に格納されていることに起因する。

 IBM Cloudで採用され、Web開発をメインにしてきたOrionも、フォルダ形式でソースを格納する。iプロジェクトと同様に、ライブラリー、ソース物理ファイル、ソースメンバーという階層でソースを格納する。

 新規に開発する場合は、まずプロジェクトを作成する。画面上部にあるツールバーより、「File」→「New」→「Project」→「Basic」と展開すると、ポップアップが表示されるので、作成するプロジェクト名を入力し、「Submit」をクリックする。指定した名前のプロジェクトが作成され、ここに適宜フォルダ、ファイルを追加し開発する(図表9)

 

[図表9] 新規プロジェクトの作成

 ソースメンバーを追加する際には、ソースの種類を拡張子に指定する。たとえばILE RPGのソースメンバーを追加する場合には、拡張子に.RPGLE を付ける。これにより、RPGかCOBOLかの言語を認識し、エディターで構文を解釈し、ハイライトして表示する(図表10)

 

[図表10] Orionエディター

 

 Orionを使ってソースを編集する場合は、RDiのようなコンテンツ・アシストや構文チェックはサポートされないが、Webエディターなのでソースはデフォルトで自動保管される。画面右上にあるスパナ・アイコンをクリックし、「Auto Save」と書かれたチェックボックスを選択するだけである(図表11)

 

[図表11] エディターの設定

 

 開発したソースはデフォルトでは、/QOpenSys/QIBM/UserData/OPS/Orion/serverworks
pace ディレクトリ配下に、ユーザーごとに作成される。ソースをコンパイルするときには、このディレクトリ上に作成されているソースメンバーを指定する。

 たとえばOrionで開発したTest01.rpgleソースをコンパイルする場合、以下のコマンドを使用する。

 通常のコンパイルと異なるのは、SRCSTMFパラメータを使って、コンパイルするソースメンバーを指定する点である。このSRCSTMFに、Orionワークスペース上にあるファイルを指定する。

 さらにOrionで開発したソースをコンパイルする際には、TGTCCSIDパラメータを用い、作成されるオブジェクトのCCSIDを指定する点に注意が必要である。Orionで作成されたファイルはCCSID1208で作成される。しかしILE RPGコンパイラーは、EBCDIC CCSIDのみを認識するので、Unicodeで作成されているストリーム・ファイルを正しく読み込むには、TGTCCSIDパラメータを指定する必要がある。なお、このTGTCCSIDパラメータはIBM i 7.2ではSI62604、IBM i 7.3ではSI626
05 というPTFで提供されている。

 以上、Orionで開発されたソースのコンパイル・コマンドを紹介したが、RDiのように、コンパイルするための機能やインターフェースは用意されていない。そのため上記のように、5250コマンド・ラインからコマンドを実行するか、個別にコンパイルするためのシェルスクリプトなどを用意する必要がある(図表12)

 

 

 またここではOrionワークスペースにあるソースを直接コンパイルしているが、OrionをGitなどのリポジトリーと連携させ、開発したソースをリポジトリー経由でビルドする方法も考えられる。これについては詳細をPart 3で紹介する。

 

著者|藤村 奈穂 氏

日本アイ・ビー・エム システムズ・エンジニアリング株式会社
アセット企画
アドバイザリーITスペシャリスト

[i Magazine 2018 Autumn(2018年8月)掲載]

・・・・・・・・

特集|IBM iのDevOpsアプローチ ◎目次

Part 1 IBM iの最新DevOps 

IBM iの基幹システム開発にも、これからはDevOpsアプローチが求められる

・・・・・・・・

Part 2 IBM iのコード編集 

DevOpsを支えるコード編集ツール◎RDiとOrion

・・・・・・・・

Part 3 IBM iのコード変更管理 

オープンソースのGitを利用して、ソースコードや変更履歴情報を共有する

・・・・・・・・

Part 4 IBM iのビルド管理 

IBM iでJenkinsを使う、オープンソースベースの標準的なビルド管理を実現

[i Magazine 2018 Autumn(2018年8月)掲載]