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

【開発モダナイゼーション】第3回「RDiの機能強化に付いて行く」

【開発モダナイゼーション】第3回「RDiの機能強化に付いて行く」
RDiの機能強化に付いて行く

IBM iにおけるモダナイゼーションを支える柱の1つに、開発環境のモダナイゼーションがあります。ソースエディターをSEUからRDiに切り替えることもその1つですが、その理由は、単に最新のFF RPGの機能を活用するにはRDiが必要というだけでなく、コーディング、デバッグ、メンテナンスの効率向上が図れるという点も見逃せません。今回の記事は少々前の物になりますが、RDiの主要な生産性向上機能の要点を簡潔にまとめており、現行のV9.6においても大いに参考になるものと思います。(編集部)

この記事はV9.5.1(2016年9月)およびV9.5.1.1(2016年12月)からの最近のRDiの機能強化にハイライトを当てており、RPGのアウトラインの改善その他の話題をカバーしています。

03/21/2017 ジョン・パリス、スーザン・ガントナー

RDiの機能拡張は頻繁に行われ、通常IBM iやRPGなどのための新しいリリースやTRのように、多くの注目を集める発表とタイミングが合いません。付いて行くのが難しい可能性があります。今月は、あなたがそれらを見逃したかもしれない場合に備え、私達の最近のお気に入りのRDi拡張機能のいくつかにハイライトを当てることで支援を試みようと考えました。このレビューでは、V9.5.1(2016年9月から)およびV9.5.1.1(2016年12月から)で行われた変更に目を向けます。

以前、これらの拡張機能の中で私達が最も気に入っているものについて記事を書きました。それは、Windows VMなしにMac上でRDiを実行するためのネイティブサポートです。それは私達が非常に長い間待ち望んでいたものでした。ここではこれについては再度立ち入りませんが、Mac RDi以外のユーザーをもっとワクワクさせるかもしれないV9.5.1に伴う他の素晴らしい機能がありました。


コメント

RPGまたはCOBOLでコーディングするときに享受したのと同じ容易なコメント機能が、現在はCLおよびDDSに追加されています。これは、各行の最初と最後に何かが必要なコメントスタイル(そのせいでコメントがずっと煩わしくなる)が要求されるCLの場合に特に役立ちます。

既存のRDiコメントサポートにまだ馴染みがない場合に備え、以下に基本事項を述べます。1行のコードだけをコメントアウトする場合は、単にその行にカーソルを置いてキーボードショートカットの「Ctrl + /」(または、Macの場合は「コマンド+ /」)を使用します。 コードブロックをコメントアウトするには、お気に入りの方法を使ってコードブロックを選択し(これについては、ブロックの最初と最後の行でAlt-Lを使用するのが私達の好みです)、同じショートカットを使用します。 行または行のブロックのコメントを外すには、「Ctrl + \」(Macでは「コマンド+ \」)を使用します。これはSEUでやろうとするよりもずっと容易ですよね?

RPGのアウトラインの改善

RPGアウトライン・ビューは、薄切りにされたパン以降で最高のものだと既に私達は考えているので、それに対する機能強化は常に私たちの注意を引きます。V9.5.1にはいくつかの改良がなされており、多くの場合これらの改良はエディターのホバーヘルプ情報、ハイパーリンクサポート、コンテンツ・アシストなどの機能にも影響を与えます。これらの機能はアウトラインと同じ場所から情報を得るので、最新の改良の恩恵も受けます。

最初に、私達のお気に入りの拡張機能について取り上げます。それは、参照されていない項目を非表示にする機能です。RPGのアウトラインは非常に長くなる傾向があり、プログラムに存在する定義で雑然としているものの、実際には使用されていないことがよくあります。この最も一般的な例は、外部記述ファイルのフィールドと、多数のルーチン用のプロトタイプを含んだ汎用ソースメンバーからコピーされたプロトタイプです。参照されていない雑然としたものを全てアウトラインから削除する機能により、アウトラインがずっと便利になります。これを以前のリリースで追加されたフィルターボックスと組み合わせると、非常に長いアウトラインでさえも遥かに便利に使えるようになります。

下の図1は、新しい「未参照定義を非表示」アイコンを使って、CGIDEV2ツール用の標準プロトタイプメンバがコピーされたプログラムに対するアウトラインの前と後のビューを示しています。


▲図1

さらに、制御文(別名H仕様つまりCtl-Opt)セクション、出力文セクション、例外出力セクションなど、RPGコードのより多くの項目がアウトラインに表示されます。私達にとって幸いなことに、O仕様と例外出力を大量に使用するRPGコードを操作する必要は滅多にないので、これらの追加機能を使用した経験はあまりありません。しかし、古いスタイルのコードを使用している場合、特定の出力レコードがロジックで使用されているすべての場所を調べたり、例外出力定義に素早くジャンプできたりすることは大きな助けになるでしょう。

更なる柔軟性と制御

開発者にもっと柔軟性を与えるために、いくつかの新しい設定が追加されました。

コーディング中に構文エラーが発生した経験があるなら、そのコードに挿入され、何が間違っているかを伝える素敵なピンク色のエラーメッセージに多分馴染みがあると思います。 構文エラーのもっと繊細な通知がお好みなら、エディター内で余分な領域を占める挿入ではなく、これらのエラーを注釈として受けとる設定が現在あることを知って嬉しく思うでしょう。このエラーは赤い円の中にXという記号で示されます。 Xにカーソルを合わせると、エラーメッセージが表示されます。これは、変数にカーソルを合わせたときにコード内の変数の定義が表示される方法と同様です。そのアイデアが気になる場合は、「リモート・システム」>「リモート・システムLPEXエディター」>「IBM i構文解析プログラム」の下の「設定」のページを見て、「構文検査メッセージを注釈として表示」というチェックボックスを見つけてください。

コンテンツ・アシストのサポートは、現在、設定によって更に自動化できるようになっています。コンテンツ・アシストは、通常ショートカットキー(Ctrl +スペース)によって起動され、プログラムの文を完成させるための提案を提示します。もしもRDiの前身であるWDSCのユーザーだったならば、コンテンツ・アシストが最初に導入されたとき、それは自動だったことを思い出すかも知れません。つまり、コードを入力すると常に提案が表示されます。多くのRPGプログラマーが、これは気が散りすぎると感じたので、IBMは提案を自動表示させるのを止め、キーボードショートカットの使用を求めるように変更しました。 その結果、私たちを含め大半のRDiユーザーは、多分私達ができるだろう程頻繁にはコンテンツ・アシストを活用していないのではないかと思います。

機能拡張要求(RFE)に応え、IBMはこの自動サポートを部分的に再度使用可能にできるようにしました。完全に自動的ではありませんが、最初の製品のようにこれはILE RPGコンテンツ・アシスト設定ページから制御できます。これは、「設定」のフィルターボックスに「コンテンツ・アシスト」と入力することで見つけられます。そのページでは、提案が表示されるまでの時間の長さがミリ秒単位で(デフォルトは500)指定でき、自動的に提案を引き起こす文字の指定もできます。「%」と「. (ピリオド)」は提案された文字です。「%」を入力した後に組み込み関数の名前を思い出すために一時停止すると、コンテンツ・アシストはそれらの一覧をポップアップ表示します。同様に、修飾されたデータ構造の名前の後に「.」を入力すると、選択するべき構造体内のサブフィールドのリストが表示されます。実験として、リストにスペースを追加しようと試みた結果、至る所にコンテンツ・アシストがポップアップ表示されました。それは直ぐに少し多くなり過ぎたので削除しました。この全てのヘルプがあなたにとってあまりにも多過ぎるなら、「自動アクティベーション」を単にオフにしてください。ショートカットキーを使用しない限り、コンテンツ・アシストの提案は表示されないでしょう。

RDiに対しての長年に渡るRFEは、RSE(リモートシステムエクスプローラー)でメンバを開く時に「参照用に開く」をデフォルトの動作にする機能でした。そのオプションは、現在「リモート・システム」> 「IBM i」>「オブジェクトサブシステム」の下にある設定になりました。「ソースを参照モードで開く」というチェックボックスにチェックマークを入れることでデフォルトとしてブラウズモードを有効にします。

RPGコードでプログラム確認用プログラムを使用し、制御文にDftActGrp(* No)が含まれている場合によく受け取るエラーメッセージを無視するようにトレーニングする必要があるなら、現在その問題を「修正」する簡単な方法があると知って嬉しく思うでしょう。ところで、このエラーはCRTRPGMODでコンパイルする時にキーワードがサポートされていないことが理由ですが、CRTBNDRPGに対しては完全に有効です。プロフラム確認用プログラムは、デフォルトでCRTRPGMOD用のルールを使うことを選択しました。一方、設定を介してその選択を変更することはできますが、常にオン/オフを変更するのは面倒でした。私たちのほとんどが、どちらか一方のモードでだけ有効な機能に関する検証エラーを無視することを学びました。現在は「確認(プロンプト)」を選択すると、望みのモード(CRTBNDRPGまたはCRTRPGMOD)が選択でき、その選択を新しいデフォルトとして保存できます。

RPGコードのリファクタリング

最新の更新版(V9.5.1.1)には、RPGのコードリファクタリング用の初めてのオプションが加わりました。明らかにこれはIBMが改善したい領域です。この最初の更新版では、RPGコード内の項目名、すなわち変数、プロシージャ、ファイル、フォーマットなどの名前が変更できます。このテーマに関するブログ記事で私達が述べたように、この機能拡張は単純なテキストの広範囲に渡る検索/置換を超えています。 この機能は、これが特定の要素の名前であることを理解し、定義の範囲を認識します。「Work」という名前のグローバル変数の名前を変更しても、同じソースメンバー内のプロシージャの「Work」という名前のローカル変数には影響しません。しかし、「Work」という名前のローカル変数が無い場合、名前の変更は問題になっているグローバル変数に対する全ての参照に影響します。また、行われる変更が実際に必要なものであることを開発者が確認できるようにする、非常に役立つプレビューモードもあります。

変数名の変更の効果を調べるために、私達は変数Xをもつ小さなプログラムを作成し、名前をY変更するように依頼します。ソースで変数Xを選択した後、下の図2に示すように、「リファクタリング」>「名前の変更」を右クリックします。新しい名前(Y)を入力し、「プレビュー」ボタンをクリックするとダイアログが表示されました。


▲図2

下の図3は、元のソースとリファクタリングされたソースを並べて比較したものです。プレビューダイアログで「OK」を押すと、提案された変更が行われます。


▲図3

Like(X)キーワードおよびロジック内での参照を含め、グローバル変数名XがYに変更されたことが分かりますが、文字Xを含む他の名前への変更は行われませんでした。また、プロシージャProcAuto内のXへの参照は、Xという名前のローカル変数があるので、名前は変更されなかったことにも注意してください。そのローカル変数定義が存在しなければ、プロシージャ内のXへの参照もリファクタリングされます。コメント行が変更されていないことも注目に値します。

その他の機能強化

最近のリリースには、通常の作業では利用しない機能の追加の変更が含まれています。それらについて経験からは話すことはできません。 Kerberosを介したシングルサインオンサポートを使用している方は、現在RDiでこれが動くようになったと聞いて嬉しく思うでしょう。個別にサインオンする必要はありません。これは、「リモート・システム」> 「IBM i」> 「認証」の下にある「設定」で制御され、ここで認証オプションとしてKerberosを指定できます。

ローカルプロジェクトとIFS間の同期のサポートもあります。JavaまたはWebコード(HTML、CSS、Javascriptなど)のようなものに対するRDiプロジェクトに携わっているなら、そのコードをもっと簡単にRDiローカルプロジェクトからIFSにデプロイできます。このサポートの更なる詳細については、エリック・シンプソン氏によるこの記事を参照してください。

機能強化の提供はこれからも続くので、より多くのRDi新機能を楽しみにしています!

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

この連載は…

開発と開発環境のモダナイゼーション
あなたにオススメの連載
できるIBM i 温故知新編
9記事
できるIBM i 温故知新編
IBM i の”新”必須言語 〜FFRPG入門〜
14記事
IBM i の”新”必須言語 〜FFRPG入門〜
IBM i アプリの第二の柱 OSS
15記事
IBM i アプリの第二の柱 OSS
PAGE TOP