みんな大好き、ショートカット。パート1、ナビゲーション
この記事のオリジナル バージョンを記したのは数年前のことですが、今でも多くのRPGプログラマーは、私が思うほどにはキーボード ショートカットを使用していないようです。ショートカットを利用することで生産性の大幅な向上が見込めることもあるため、最新のバージョンのRDiにおける変更を受けてのいくつかのアップデートを交えながら、このトピックの見直しを行うこととしました。また、本記事は、前回のRDiのキーボード ショートカットに関する記事の続編でもあります。
ここ数年、RPGプログラマーによるRDi(Rational Developer for i)の使用が非常に急増しています。これは、RPG言語の新たなV7の完全フリー フォーマット バージョンをサポートしているエディターがRDiのみだということによるところが大きいのでしょう。すぐにフリーフォームのD仕様書を使用する予定のないショップの間でも、この制限から、不吉な兆しがあること、そしてSEUの時代は終わったことが認識されるようになってきたようです。
RDiに対する関心の度合いは、私の「 RSE Quick Start Guide 」および「 Favorite Keyboard Shortcuts」へのリクエスト数からも見て取れます。かつてないほどの賑わいです。
いったんショートカットにはまったら、特にRDiに関して言えば、大のショートカット好きになるようです。そのため、この記事には、あまり広く知られていない、いくつかの便利なショートカットに関する詳細情報も含めました。この記事では、特にソース メンバー内を素早くナビゲートするのに役立つショートカットを中心に取り上げます。
RDiを使用する大きなメリットの1つは、すべてのコードがワークステーション上でローカルであるということです。特に大きなソース メンバーでは、そのおかげで、移動したい場所へより迅速かつ容易に移動できます。
それでは、まず、Ctrl+HomeキーとCtrl+Endキーについて見てみましょう。これらのショートカット キーは、ソースの先頭(Home)または末尾(End)へジャンプするだけです。これらのショートカットはいずれも、RDiだけではなく、多くのWindowsアプリケーションでも使用されています。ただし、RDiでは、1つ機能が加わっています。それは、そのショートカット キーを押したときに位置していたコード行に「クイック マーク」を自動的に作成する機能です。クイック マークは一時的なブックマークのようなものであり、Alt+Qショートカットを使用することで、後でその場所に戻って来ることができます。
たとえば、数多くの(ゾッとする)コンパイル時配列を使用している旧式のRPGコードを編集しているとしましょう。私がそれほどコンパイル時配列を嫌いな理由の1つは、配列の定義がソースの先頭付近にあり、データは反対側のソースの末尾にあることです。RDiでは、配列の定義または配列の要素への参照のいずれかにいる場合は、Ctrl-Endを使用して、メンバーの末尾へジャンプしてそのデータを見ることができます。その後で、Alt+Qを使用すれば、前にいたどの場所へもすぐに戻ることができます。もちろん、この他にも、メンバーの先頭または末尾へのジャンプが便利な場面があります。たとえば、多くのショップで使用しているメンバーの先頭付近にある標準コメント ブロックをちらっと確認する場合や、ファイル宣言へ移動してそこで変更を行う必要があるときなどです。
同じようなナビゲーション ツールとして、私がもっと頻繁に使用しているものがあります。RPGロジックのサブルーチンまたは内部サブプロシージャーの名前のところで、F3キーを使用すると、そのサブルーチンまたはサブプロシージャーのコードへ直接ジャンプできます。そこでロジックを調べた後で、ジャンプした元の場所(EXSRまたはプロシージャー呼び出しなど)へ戻るための同様のショートカットがあります。今ではもう、Alt+Qではありません(数回前のリリースで変更)。現在では、ルーチンへ移動した後で元の場所へ戻るには、Alt+左矢印を使用します。F3で移動した後にエディター下部のメッセージ領域を見ると、元の場所へ戻る方法を示すメッセージが表示されています。また、Alt+右矢印とAlt+左矢印を組み合せて使用しても、ルーチン コードとそのルーチンの呼び出しとを行ったり来たりすることができます。
まだあります。F3を使用して、データ項目の定義へジャンプすることもできるようになりました。サブルーチンと同様に、変数の名前のところでF3を押すと、プログラム内のその変数の定義へ素早く移動できます。この場合も、Alt+左矢印で、F3を押したときの場所へ戻ります。
このショートカットを紹介するときに最もよく尋ねられる質問の1つは、「どうしてF3なのか」というものです。そして、私の答えは、「私には分かりません」です。その目的で使用するショートカットとしては、確かに多少の違和感はあります。F3と言えば「終了」とほとんどの人が思うでしょう。けれども、これは非常に便利なショートカットですので、ぜひとも試してみてください。最初は、ソース メンバーを閉じてしまうかもしれないと不安でしょうが。
これらのショートカットに関して一番大事だと思うことは、他の何かを見ようとしたときに、コード内の前にいた場所に戻ることができるということです。RDiには、コードの先頭や末尾へ移動したり、データの定義やサブルーチンへ移動したりする多くの方法があります。しかし、前にいた場所に素早く戻る方法は、私が知る限りでは、これらのショートカットを使用する方法だけです。大幅な時間の節約になります。
前述の通り、Ctrl+HomeおよびCtrl+Endキーでは自動的にクイック マークが設定されます。また、クイック マークを自分の望む場所に手動で設定する方法を知っておくと便利なこともあります。クイック マークは、Ctrl+Qを使用するだけで設定できます。前述のショートカットと同様に、Alt+Qを使用すれば、設定した場所へ素早く戻ることができます。
また、Alt+Qも、前にいた場所に自動的なクイック マークを設定することに注意してください。そのため、Alt+Qを使用して、コードの2つの異なる場所の間を、必要なだけ何度もジャンプして行ったり来たりできることになります。
クイック マークは、一度に利用可能なのは1つだけであり、短い期間だけ使用するためのものです。コード内の複数の場所に、いつでも(何日か後でも)戻ることができるように設定したい場合は、タスクまたはブックマークの使用をお勧めします。これらはクイック マークとよく似ていますが、名前または説明を設定することができ、また、必要な数だけ設定できます。また、削除するまで保持されるため、より長期間の目的で重要なコード部分をマーキングするのに非常に便利です。タスクまたはブックマークの使用方法については、Paul Tuohyによる記事がありますので、詳細は そちらの記事でご確認ください。
ソースのナビゲーションがテーマだとすれば、私のお気に入りのRDi機能の1つである「アウトライン」ビューを紹介しないわけにはいきません。「アウトライン」ビューを使用しても、編集しているソース メンバーで、フィールド、データ構造、サブルーチン、およびサブプロシージャーが定義され、および/または参照されている場所を簡単に見つけることができます。「アウトライン」ビューは、長年にわたって私のメインのナビゲーション ツールでした。「アウトライン」ビューなしではRPGプログラムを書くことができないと思うと何度もコメントしたほどです。ただし、上述の通り、「アウトライン」ビューでのクリックでは、移動したい場所へ移動するだけであり、前にいた場所に後で自動的に戻ることはできないため、現在は、メインのナビゲーションの方法として私が使用しているのはF3です。
私がナビゲーションに利用してきたもうひとつのツールに、フィルタリングがあります。「アウトライン」ビューには、フィールドが参照されるすべてのステートメントのリストが示されるため、一度に1つずつ、それぞれの参照をクリックしてそれらの参照先へ移動することができますが、そのフィールドを参照する行以外のすべてのコードを除外してしまう方が手っ取り早い場合もあります。その後で、関心のあるステートメントに絞り込んでから、周囲のコードを併せて表示することができます。
フィールド名を基にフィルタリングするには、2つの方法があります(ちなみに、他のテキストを基にフィルタリングすることもできますが、私が最も頻繁に使用するのはフィールド名か構造名です)。1つは、ソース内のどこかでフィールド名を見つけて、それを選択(ダブルクリック)してから、右クリックして「Selected」→「Filter selection」を選択する方法です。これで、そのフィールド名があるステートメントだけが表示されます。関心のあるステートメントに移動してから、コンテキスト メニューから「Show All」を選択するか、ショートカットCtrl+Wを使用します。周囲のコードをちらっと確認したいだけの場合は、各行の左側に表示される+記号をクリックして表示することができます。
名前を基にフィルタリングする2つ目の方法は、「検索/置換」ダイアログを使用する方法です。そのダイアログを表示するショートカットはCtrl+Fです。「Find」ボックスに名前を入力し、右にある「All」ボタンをクリックします。また、「検索/置換」ダイアログで、「次へ」ボタンまたはShift+F4ショートカットを使用して、そのフィールドが使用されている場所へ順番に移動することもできます。
名前ではなく、変更日を基にコードをフィルタリングしたい場合もあるかもしれません。これは、修正作業に当たっているバグの原因が、最近行ったコードに対する変更だと思われる場合などに特に役に立つことかもしれません。これは、エディター内のどの場所でもコンテキスト メニューを表示して、「Filter view」→「Date」を選択することで簡単に行えます。表示されるダイアログで、検索対象となる日付または日付範囲を入力します。
日付で指定した期間内に変更された各行へ、一度に1つのステートメントずつ移動したい場合は、Ctrl+Shift+D(変更日による検索)を使用します。コードに最近もたらされたバグの検索に加え、コード レビューを行う際に、これを活用しているショップもあるようです。
コード内をナビゲートするためにどれほど多種多様なやり方でRDi機能を使用していたか、この記事を書いて初めて気付かされました。今回、紹介できなかったナビゲーションの技は、まだまだあると思います。そのいくつかは、私もまだ見つけていないかもしれません。皆さんのお気に入りの手法のうち、私が見落としているものがあるようでしたら、ぜひ、お知らせください。