この記事は David Millington によるNew Productivity Tooling in RAD Studio 10.3.1: Navigatorの抄訳です。

RAD Studio 10.3.1では、ナビゲーションを改善する2つの新しい非常に便利な生産性向上ツールが追加されました。コードの検索とコード内の移動です。先日はBookmarksを紹介しました。この記事ではNavigatorを紹介します。

これら2つは以前はサードパーティ製のツールで、DelphiやC ++Builderの何千もの開発者に非常に人気があり、これらの便利な機能を今日のすべてのお客様にもたらすためにIDE自体に統合できることを嬉しく思います。これらの機能はGetItを通じて提供されます。「ツール」メニューから「GetIt パッケージマネージャ」を選び、Getit パッケージマネージャが表示されたら左側のIDE Pluginsセクションをクリックしてください。または、検索ボックスから探してインストールすることもできます。

Go Toウィンドウ(Delphiで利用可能)

コードを書いたりデバッグしたりするときは、現在見ているコードとやり取りするメソッドや、ユニットを追加するためのuses句など、コード内の特定の項目を見つけたいことがよくあります。たとえば、次のようなことをしたいことがあるはずです。

  • メソッド Foo の場所を開きたいんだけど、それはどこにあるだろうか?
  • ユニットを追加するために uses 句のところまでスクロールしたい
  • プロパティTMyForm.MyPropertyのgetterメソッドは何だろうか?

通常、開発者はメソッドをスクロールして探すか、メソッドの場所を大雑把に覚えておくか、Ctrl + Shift + Upなどの方法を使用してクラスに移動し、スクロールしてメソッド定義を見つけ、同じショートカット(または+ Down)を使用してメソッド実装自体に移動する、または単にユニットを検索するだけです(F3、F3、F3、F3、と、20回くらいは連打すれば、メソッドが呼び出される場所だけでなく、場所がどこにあるのかを見つけることができます)。でもこういう方法は良い方法ではありません。

Navigator はこの問題を解決します。Navigator は Delphi の構文を解釈し、ユニットの中で何が有益な情報なのかを理解します。Ctrl + G を押すと Go To ウィンドウが表示され、現在のユニットで有用な部分すべてがリストアップされます。

https://community.idera.com/resized-image/__size/634x329/__key/communityserver-blogs-components-weblogfiles/00-00-00-03-37/navigator-_2D00_-go-to-3.PNG

これは Ctrl + Gキーを単に押して Navigator のウィンドウが表示された直後の状態です(この例は、githubからダウンロードできるMazesアプリケーションのメインフォームです)。このウィンドウには次の情報が表示されています。

  • すべてのクラス(TForm1など)、レコード、列挙型、その他の種類
  • それらのクラスおよびレコード内のすべてのメソッド、プロパティ、およびフィールド
  • すべてのグローバル変数と定数(オプション設定によりメソッドのローカル定数も出力可能)
  • すべてのスタンドアロンメソッド
  • すべての有用なユニットセクション(uses、type、interface, implementationなど)

言い換えれば、開いているコードの中で開発者が参照したいと思いそうな場所を理解しています。任意の情報を選んでてEnterを押すと、その場所に移動できます。また検索フィールドに入力したキーワードでフィルタリングすることもできます。上または下矢印キーを押すと、検索編集ボックスからフォーカスを移動することなしにフィルタリング結果の選択を変更できます。

このウィンドウでは単に入力を始めるだけでフィルタリングが行われます。たとえば、上記のコードに ‘ShouldStopPlaying’という関数があることを知っていて、それを参照したいとします。このときに「stop」と入力すると、すぐに結果が5件表示されます。

https://community.idera.com/resized-image/__size/634x329/__key/communityserver-blogs-components-weblogfiles/00-00-00-03-37/navigator-_2D00_-go-to-3-_2D00_-filter-1.PNG

さらに絞り込みたい場合は、たとえば関数だけを表示したければ、追加で ‘func’ と入力してください。

https://community.idera.com/resized-image/__size/634x329/__key/communityserver-blogs-components-weblogfiles/00-00-00-03-37/navigator-_2D00_-go-to-3-_2D00_-filter-2.PNG

そしてEnterを押すと、そのメソッドの場所が開きます。

また、フィールド、プロシージャ、クラスのメソッドも同じように検索できます(メソッドの入力で検索を開始できますが、クラス名の一部を入力することでも検索できます)。入力されたキーワードで直ちにフィルタリングが行われます。そして探したいアイテムを見つけるために、多くのキータイプを行う必要はほとんどありません。

ウィンドウにはキーワードを含む項目がすべて表示され、通常はデフォルトで上位の結果が選択されています。しかしクラス名を完全に入力するなど、完全一致の場合は、常にその完全一致した項目が強調表示されます。インターフェースと実装の両方のセクションにあるメソッドの場合は、両方の場所のエントリーも表示されます。この挙動(インターフェースと実装の両方、そしてクラス名とのマッチングも)は他の多くの項目と同様に設定で変更することができます。設定は広範囲に及び、好みに合わせてNavigatorのGo Toウィンドウを設定することができます。

また、Navigator はDelphiを意識した機能を非常に多く持っています。1つの例は、プロパティがフィールドとメソッドによって裏付けられることを知っています。これは、プロパティを検索し、getterとsetterがにリストされているのを確認する短いビデオです。
ビデオでは、「get」(または「getter」、さらにはそれをフィルタリングするのに十分な文字数)と入力してもgetterをフィルタできますが、Navigatorでは、Delphiの用語ではプロパティにreadとwriteのbackerがあります。 このため、このビデオでは ‘read’ ともタイプしていますが、これでもマッチします。

https://community.idera.com/cfs-file/__key/communityserver-blogs-components-weblogfiles/00-00-00-03-37/navigator-filter-property-getter.gif

あなたが見ているのは、開発者が「このプロパティのgetterが実装されている場所を確認したい」と考えて操作するビデオです。必要なキーワードを入力してEnterキーを押すだけで、その場所に移動できます。これは本当に便利です。

注意:このことはキーボードを使って完全にナビゲートできることを意味します。マウスを使う必要はまったくありません。キーボードとマウスの切り替えなしに操作できることは、特にキーボードだけで作業することのを好む開発者にとって、生産性を本当に向上させることができます。

ミニマップ(DelphiとC++の両方で利用可能)

NavigatorはIDEにもう1つ便利なツールを追加します。コードエディタでの視覚的ナビゲーションです。あなたは他のIDEからのミニマップに精通しているかもしれません。ミニマップは、ファイル全体の中でエディタの一方の端にあるコードの小さなプレビューで、スクロールバーのように移動するために使用できます。実質的に、これはユニット全体のコードを示すマークアップされたスクロールバーとして機能します。

https://community.idera.com/resized-image/__size/1040x498/__key/communityserver-blogs-components-weblogfiles/00-00-00-03-37/navigator-_2D00_-minimap-with-hint-_2D00_-in-editor.PNG

この画像では、エディタの右側にミニマップがあります。これは、DelphiとC++Builderの両方で強調表示された構文全体を小さな形式で示しています。現在表示されている部分、つまりエディタに表示されているコードは、エディタ自体と同じ背景色です。画面の上下にあるその他の箇所は淡色表示されます。ミニマップ内で、ユニットのどの部分でもマウスオーバーすると、その箇所のコードがポップアップヒントとして表示されるので、全体をスクロールしなくてもミニマップ内でユニットの内容をすばやくスクロールして確認できます。また任意の場所をクリックして表示したり、ドラッグしてスクロールすることもできます。

これらのすべての挙動を設定変更可能です - 例えば、非可視領域を薄暗くする代わりに可視領域を強調表示したり、ミニマップを描画するスケールを変更することができます。また、このスクリーンショットではエディタのスクロールバーが表示されていません。これは、ミニマップが優れた代替品であるためです。ただし、必要に応じてそれを元に戻すこともできます。これと同様の設定で、水平スクロールバーを隠すこともできます。有効にすると(デフォルト)、エディタは常に水平スクロールバーを表示するのではなく、必要な場合や、すでにスクロール済みの場合だけ表示するようになります。水平スクロールバーが不要なときに非表示にすると、エディタのUIが非常にすっきりします。

また便利な点の1つは「Navigator」ウィンドウが開いているときに、すべてのフィルター処理された結果がミニマップ上で明るいオレンジ色で強調表示され、現在選択されている結果はより濃いオレンジ色で強調表示されることです。これにより、目的のアイテムがどこにあるのかを視覚的に確認できます。

設定

ミニマップの下部にある歯車のアイコン、Navigator ウィンドウの[Settings]ボタン、または[ツール]> [オプション]メニュー項目をクリックすると、ナビゲーターの設定にアクセスできます。この機能はサードパーティ製品から統合されたばかりのため、現在はサードパーティセクションにあります。

設定は非常に広範囲で、Navigator の Go To ウィンドウに表示される項目を非常に広範囲にカスタマイズできます。例えば、移動する前にキャレットのブックマークをドロップした場合のショートカット(Bookmarks についてもお読みください - どこかに移動した後にEscapeキーを押すと元の場所に戻る機能があります)、ミニマップのスケール、プレビューのヒント、表示色、表示領域と画面外の領域の強調表示方法、および表示方法(必要に応じて、現在のように構文の強調色だけをレンダリングするのではなく、実際の単位テキストを非常に小さくレンダリングすることもできます。)

まとめ

覚えておくと便利なこと:

  • Ctrl+G でGo Toウィンドウが開きます。
  • 入力するだけでフィルタリングでき、単語を完全に入力する必要はありません。”func foo” と入力すれば、おそらく “function TForm1.FooBar:Integer” を絞り込み表示するのに十分です。
  • クラス名、戻り型など、テキストとして表示されているものなら何でもフィルタできます。
  • ミニマップは素晴らしいスクロールバーの代替品です。

NavigatorはIDEに素晴らしい機能を追加し、コード内を素早く移動するのに役立ちます。マウスの操作なしでキーボードから完全に、特定のメソッドまで、コードの有用な領域にジャンプできることは非常に便利です。ミニマップはモダンなタッチで、コードをナビゲートするための便利な視覚的方法です。多種多様な設定と調整により、ワークフローに合わせて完璧にカスタマイズできます。

これらの機能はGetItを通じて提供されます。「ツール」メニューから「GetIt パッケージマネージャ」を選び、GetIit パッケージマネージャが表示されたら左側のIDE Pluginsセクションをクリックしてください。または、検索ボックスから探してインストールすることもできます。

開発者の皆様にとって、これがIDEへのすばらしい追加機能となることを願っています! また、10.3.1のもう一つの生産性向上ツールである Bookmarks をチェックすることもお忘れなく。

https://community.idera.com/resized-image/__size/320x240/__key/communityserver-blogs-components-weblogfiles/00-00-00-03-37/navigator-_2D00_-go-to-2.PNGhttps://community.idera.com/resized-image/__size/320x240/__key/communityserver-blogs-components-weblogfiles/00-00-00-03-37/navigator-_2D00_-minimap-with-hint-_2D00_-in-editor.PNG