NEWS
開発と開発環境のモダナイゼーション 開発と開発環境のモダナイゼーション
2022.08.17

【開発モダナイゼーション】第4回「RDi V9.6の新機能とは?」

【開発モダナイゼーション】第4回「RDi V9.6の新機能とは?」
RDi V9.6の新機能とは?

V9.6での機能拡張により、さらに使いやすくなっているRDiですが、それらの機能をしっかり把握できていますでしょうか?RDiがいかにプログラム開発作業を効率化するか、改めて学び直すのに最適な記事をご紹介します。(編集部)

IBM iを使用している開発者は、2017年に早いクリスマスプレゼントを受け取りました。それは、RDiの新バージョンです。本稿では、私達がこれまでに発見したいくつかの変更の概要について取り上げます。

01/01/2018 スーザン・ガントナー、ジョン・パリス

IBM iを使用している開発者は、2017年に早いクリスマスプレゼントを受け取りました。それは、RDiの新バージョンです。読者の中には、新機能をインストールしてチェックする機会にまだ恵まれていない人が居るかも知れませんので、私達がこれまでに見つけたいくつかの変更の概要について説明します。

RDi V9.6を最初に起動してRPGLEソースメンバを開いた時に、直ぐに気付く可能性のあるいくつかの違いがあります。その他の物は「隠されて」います。ですから、明らかな機能ならびにそれほど明らかではない機能のいくつかを見ることにします。注目するべき点の1つは、新機能の多くがデフォルトで「オン」にされていることです。以前のリリースの方法に戻りたい場合に備え、これらの新しいオプションのほとんどが設定を介して制御できます。

ホバーの機能強化

V9.6でRPGLEソースメンバを開いた後、コード内でカーソルを動かすと、これまでと大きく異なるホバーテキストが表示されることに気付くでしょう。ホバーテキストは、多くの違うやり方で拡張されています。

まず、ロジック内の単純なスタンドアロンフィールドの名前の上にカーソルを持って来ると、V9.5の時と同様にホバーテキストに定義が表示されますが、名前はハイパーリンクになっています。そのハイパーリンクをクリックするとフィールドの定義が現れます。以前はエディターでハイパーリンクがサポートされていたので、これはあまりワクワクするものではないように見えるかも知れませんが読み進めてください。ホバーテキストには多くの新しい機能があります。

外部記述されたフィールドの上にカーソルを持って来ると、ハイパーリンクされた名前と定義だけでなく、そのフィールドが定義されているファイルと様式の名前(コンパイラが定義を見つけたファイルオブジェクトの外部修飾名を含む)も表示されます。

データ構造サブフィールド上にカーソルを持って来ると、ホバーテキストにはサブフィールドが定義されたデータ構造のハイパーリンクされた名前が含まれます。それが入れ子状になったデータ構造内にある場合は、その構造のすべての階層が含まれます。パラメータとしてプログラムまたはプロシージャに渡されたフィールド上にカーソルを持って来ると、その情報も含まれます。

ですから、今やホバーテキストは項目の定義だけでなく、関連性がある場所では定義の文脈も含んでいます。もう1つの新しい機能は、定義に関連するかも知れないとエディターが判断したコメントを含めることです。コメントが関連しているかどうかをどのように判断するのでしょう? 全ての定義行自体の行末コメントだけでなく、定義されている項目の全ての直前のコメント行を取り出します。含めるコメントの検索では空白行は無視されます。コメントを含むプロシージャに対するホバーテキストの例を次に示します。

この新しいホバーの動作の全てについて、さらに気付くかも知れないことがあります。 Windowsシステムでは、この新しいホバー動作がクリック効果音を頻繁に発生すると言われます。私達は二人ともMacを使用しており、効果音に気付いたことはありませんが、Windowsの設定でそれがオンにされるとイライラする可能性があると聞いたことがあります。これはWindowsのコントロールパネルでオフにできます。「コントロールパネル」>「サウンド」で「サウンド」タブを選択します。プログラムイベントのリストで「ナビゲーションの開始」という音響効果に関する設定を見つけ、「サウンド」プルダウンリストから「なし」を選択します。

注釈の機能強化

あなたが気付く可能性のあるもう1つの機能は、以前よりも広く使用されている注釈の領域にあります。V9.5.1の時にこの機能は、ソースに追加の行として挿入される従来の明るいピンク色のエラーメッセージの代わりに、構文エラーを注釈としてエディターの左の余白に表示するために導入されました。しかし、エラーリスト表示メニューから「何も挿入しない」オプションを選択しない限り、コンパイルエラーはソースに挿入されたままでした。このオプションを選択した場合、エディターにエラー表示は全くされません。

この新バージョンでは、コンパイルエラーも(デフォルトで)ピンク色のエラーメッセージを挿入する代わりに、左の余白の注釈として実装されます。エラーの注釈の上にカーソルを持って行くと、そのコード行に関連するエラーメッセージが表示されます。占有するスペースが少ないので、私達はエラーを表示するこの新しい方法が気に入っています。 古いやり方では、コンパイルが完了してからコード行が挿入または削除されると、時々配置に問題が発生していました。しかし、あなたがピンク色のエラーメッセージが好きで、それらを取り戻したいなら、エラーリストの表示メニューから新しい「メッセージスタイル」オプションを介して注釈をオフにすることができます。

もう1つの注釈の機能強化は、ソースメンバ内で参照されていないソース内のあらゆる定義項目を強調表示する新機能です。これらは、定義されているけれど具体的に全く参照されていないデータ宣言またはプロシージャである可能性があります。その情報を含む注釈は小文字のiのように見え、その上にカーソルを持って行くと、その項目が使用されていないことが表示されます。この機能は設定を介してカスタマイズ可能です。これらの新しい注釈を表示させたくない場合、「リモート・システムLPEXエディター」>「 IBM i構文解析プログラム」の下にあるILE RPG設定ページにある「非参照定義に注釈を付ける」という設定をオフにするだけです。

下の画像にコンパイルエラーと参照されていない項目の注釈の両方の例を示します。

比較とマージ

V9.6以前は、リモート・システム・エクスプローラーのリストで2つのメンバを選択し、コンテキスト・メニューから「比較」>「相互」が選択できました。これにより、2つのメンバを並べてその違いを詳細に比較することができます。それは違いを確認するのに非常に便利でした。しかし、一方のメンバから他方のメンバに変更を適用する場合、iSphere比較エディターのような別個のプラグインが必要でした。

2つのメンバを比較すると、右のメンバから左のメンバに、あるいはその逆向きに変更をコピーできるようにする新しいアイコンが表示されます。一方から他方に全ての変更をコピーする選択肢がありますが、多くの人は一度に1つの変更を選択し、その変更を他のメンバに移動するかどうかを決定するという、もっと制御されたアプローチを好むでしょう。

変更を実装するためにアイコンを使用することに加え、見付かった一連の変更各々の間に小さなコネクターの線もあります。 コネクターの線の上にカーソルを持って行くと、2つの矢印が表示されます。右向きの矢印をクリックすると、現在の一連の変更が左側のメンバから右側のメンバに適用され、左向きの矢印をクリックすると変更は逆向きに適用されます。下の画像はこの機能を示しています。一連の変更の間にある矢印が付いたホバーテキストに注意してください。右側に強調表示されているアイコンは、一度に1つずつ、または一度に全ての変更を適用するために使用できます。比較のタイプ(今の場合、IBM i メンバ比較)が特定され左側に表示されています。タイプの重要性について読み進めてください。

「IBM iメンバ比較」というタイプは、エディターから順序番号と変更日付を隠し、かつもっと重要なことに、変更が1つのソースから別のソースに伝播される際に、開発者のためにそれらを維持します。他方で、「テキスト比較」というタイプには順序番号と変更日付が含まれ、変更が行われる際にそれらを維持しません。「テキスト比較」を使用する場合、最初に変更を加えた時にその情報を維持する責任があなたにあるという事を注意喚起するために、警告がポップアップ表示されます。比較タイプ名の横にある矢印を使用して、「メンバ比較」モードと「テキスト比較」モードを切り替えることができます。

新しい主要な動作

このリリースで私たちがお気に入りの拡張機能のいくつかは、RPGソースコードを編集するときに使用する小さいけれども非常に素晴らしい新機能です。これらの新機能は、ILE RPG構文解析プログラムの新しい設定ページ(「主要な動作」ページ)を介して制御されます。以前、主要なILE RPG設定ページに「Enterキーの動作」用の節があったことを思い出すかも知れません。ここで、「以前の指定タイプを繰り返す」や「制御ブロックの自動クローズ」などが指定できました。いくつかの優れた新機能用のコントロールと共に、これらの項目は新しい包括的な「主要な動作」ページに移動しました。

1番目は、フリー・フォームのRPGをコーディングする時に、今は新しい空白行を挿入する代りにEnterキーに分割行アクションを実行させることです。これにより、2つの例外を除いてAlt-Sショートカットキーと同じことが実現します。第1に、Alt-Sが任意の行を分割するのに対し、新しいEnterキーの動作はコードのフリー・フォームの行が分割されるだけです。この設定を使っていても、固定形式のRPGを編集する場合は、Enterキーで新しい行が挿入されます。第2に、以前のリリースで導入された次の行に分割されたコードを字下げする設定は、依然としてAlt-Sショートカットだけを制御します。つまり、EnterキーはAlt-S分割動作の設定に関係なく、分割された行のコードを常に字下げします。

「Enterキー押下による行分割」という動作は、他の言語エディターの通常の動作と一貫しています。ただし、私達のほとんどは、この新しい動作(V9.6ではデフォルトでオンになっています)に慣れるのに少し時間を要します。そうは言っても、SEUからRDiに移行した多くの人は、以前のEnterキーの動作に慣れるまでに時間がかかりました。うっかりEnterキーを押し、誤って行を分割した場合は、Alt-Jを使って行を結合し直すか、言うまでもなく分割動作を元に戻すことができます。

2番目の新しい設定は、フリー・フォームのRPGをコーディングする時に、単純にカーソルを移動するだけでなく、Tabキーでカーソルの右方向にコードをずらす機能です。設定には「Tabキーでフリー・フォーム・ソースにスペースを挿入する」と表示され、デフォルトでオンに設定されてもいます。この動作は、1行のコードの開発を行っているのか、選択したコードブロックの開発を行っているのかによって少し違ってきます。1行の場合、Tabキーを押すと、現在のカーソル位置の右方向にコードがずらされます(またはShift-Tabで行頭が左方向に移動されます)。コードのブロックが選択された場合、カーソル位置に関係なく選択したすべての行のすべてのコードがずらされます。これは、既存のコードに追加の字下げを必要とする新しいレベルの入れ子になったロジックを挿入するときに大変便利です。

Enterキーの設定による分割行と同様にこれは完全に新しい機能ではありません。これを実現するために、これまで私達はコードを選択し、ショートカット・キーAlt-F8を使用して右にずらすかAlt-F7を使用して左にずらしていました。しかし、Tabキーを使用するのはもっと分かり易く、他のエディターの動作に似ています。

各字下げの大きさ(つまり、Tabキーを押すごとに挿入されるスペースの数)は、ILE RPGパーサーの下のフォーマッター設定ページで制御されます。

ホストベースのコードカバレッジ用のCLコマンド

コードカバレッジ機能は、V9.1でRDiに導入され、V9.5で機能拡張されました。主に、どのコード行がテスト実行でカバーされていないかを示し、アプリケーションのテストを支援することを目的としています。

コードカバレッジ機能は、V9.6以前は常にRDi内から起動され、結果はRDiで見られていました。この新機能により、CLコマンドを介してホストでコードカバレッジセッションを起動できます。この場合、収集されたデータは、後でRDiを使って見たり分析したりするためにアクセスされるファイルに保存されます。これは、カバレッジデータの収集中にRDiワークベンチを解放するだけでなく、コードカバレッジテストの自動化も容易にします。収集されたデータを見たり分析したりするには、引き続きRDiが必要です。

コードカバレッジセッションを起動するためにこの新しいCLコマンドを使用したい場合は、いくつかのPTFがホストシステムにインストールされていることをまず確認する必要があります。 V7R2とV7R3の両方のためのPTFが利用可能で、以下にリストされています。

V7R3: 5770WDS PTFs SI65229 and SI64655 
V7R2: 5770WDS PTFs SI65228 and SI64544

CLコマンドはCODECOVです。2つの必須パラメータがあります。

  1. テストされているコードを実行するコマンド(多くの場合、CALLコマンドですが、ユーザー作成のコマンドの可能性もあります)
  2. (1つ以上のプログラムまたはサービスプログラムの内で)統計を収集したい少なくとも1つのモジュール
  3. その他の良い事と悪い事

    名前付き標識をアウトライン・ビューのフィールドとして分類するためのILE RPG用の新しい設定があります。これはデフォルトでは有効になっていませんが、これらをアウトラインの標識リストではなくフィールドリストで見たい場合は、その設定をオンにできます。

    iプロジェクトを使えば、ビルドを実行してエラーを検索するためのいくつかの新しいショートカットがあり、複数のiプロジェクトに対する接続とライブラリを一度に関連付けられることを発見する筈です。

    「SQLスクリプトの実行」または「5250エミュレーター」の使用のためにACS(Access Client Solutions)を使う場合、「SQLスクリプトの実行」、「5250エミュレーター」、または「スキーマ」インターフェースのどれかを直接起動するためのオプションと同様に、完全なACSインターフェース機能を起動するための、リモート・システムのオブジェクトサブシステム用のコンテキスト・メニューに追加された新しいオプションに興味を覚えるかも知れません。

    これらのオプションのどれを使用しても、そのバージョンが十分に新しければ、既にインストールしたバージョンのACSが起動します。そうでない場合、RDiと共に出荷されたバージョン(現在はACSバージョン1.1.7.1)(注1)を起動します。

    V9.5と比べてこの新バージョンのRDiは、もっと最近のバージョン(4.6.3)のEclipseを土台にしています。この新しい土台は、他のいくつかの注目すべき違いをもたらしました。まず、デフォルトでは(ワークベンチの右上近くにリストされる)開いているパースペクティブは、自身の名前を含んでいません。これは、それらに必要なスペースを減らすためにそうされました。アイコンの1つを右クリックして「テキストを表示」オプションを選択すると、このテキストを取り戻してパースペクティブに表示することができます。

    印刷ツールバーボタンもデフォルトで非表示にされています。これは私たちが今まで使ったことのある機能ではありませんが、使う場合は元に戻すことができます。「ウィンドウ」プルダウンメニューで「パースペクティブ」>「パースペクティブのカスタマイズ」を選択し、「ファイル」カテゴリを展開して「印刷」アイコンを見つけます。

    EGL言語を含むバージョンのRDiを使う場合は、V9.6で利用可能なRDiのEGLバージョンがないことを知っておく必要があります。ですから、現在のバージョンを削除しないでください。

    RDiと共にData Studioをインストールした場合、Data Studioをインストールする前に確実に最新のフィックスパック(V9.6.0.1またはそれ以降)をインストールしてください。

    V9.6にはいくつかの他の新機能があります。上で取り上げたものは、私達が最も興味深いと思ったものです。新機能の完全なリストはここで表示できます。これらの新機能のいくつかを言葉あるいは静止画像を使って説明するのは困難です。言葉で説明するのが難しい機能のいくつかを説明するためのビデオへのリンクを含む、RDi V9.6での経験の詳細については私達のブログをチェックしてください(注2)。

    (注1)2022年4月現在の最新のACSのバージョンは、ACS1.1.9.0です。
    (注2)このブログの中で紹介されているビデオへのリンクはアクセスできなくなっています。RDi機能を説明したビデオについては、 英語版ですがこちらのリンクにまとめサイトがありますので、そこから興味のあるビデオにアクセスしてください。

いいねと思ったらシェア
twitter
facebook
hatena
開発と開発環境のモダナイゼーション 目次を見る

この連載は…

開発と開発環境のモダナイゼーション
関連記事
【開発モダナイゼーション】第2回「RPG開発者がRDiを使うべき理由」
【開発モダナイゼーション】第2回「RPG開発者がRDiを使うべき理由」
【開発モダナイゼーション】第7回「VSCodeの拡張機能 Code for IBM i による開発利用可能性の拡大」
【開発モダナイゼーション】第7回「VSCodeの拡張機能 Code for IBM i による開発利用可能性の拡大」
【開発モダナイゼーション】第19回「IBM i の開発作業をVS Codeで!進化・拡大するCode for IBM i コミュニティー」
【開発モダナイゼーション】第19回「IBM i の開発作業をVS Codeで!進化・拡大するCode for IBM i コミュニティー」
あなたにオススメの連載
できるIBM i 温故知新編
9記事
できるIBM i 温故知新編
IBM i の”新”必須言語 〜FFRPG入門〜
14記事
IBM i の”新”必須言語 〜FFRPG入門〜
IBM i アプリの第二の柱 OSS
15記事
IBM i アプリの第二の柱 OSS
PAGE TOP