Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
DelphiIDERAD Studio

Delphi 10.4.2におけるCode Insightの改善

10 4 2 sydney 9064602 2

10.4.2ではCode InsightとDelphi LSPの機能が改善され、より使いやすく便利になりました。このブログでは、RAD Studio製品のシニアマネージャであるDavid Millingtonがこれらの機能について詳しく解説いたします。

RAD Studio 10.4.2 は、品質を重視してリリースされた 10.4.1 に続く、機能を重視したリリースとして計画されました。しかし、10.4.2では、いくつかの主要な機能を提供するだけでなく、前のリリースよりも多くの問題を修正しました。

これらの修正は、Delphi 10.4.2の他の機能パートと同様、Code InsightやDelphi LSPにも該当します。では今回、何が新しくなったのかを見てみましょう。まずは、機能です。

エラーインサイト – 現在のエラー、警告、ヒントのインサイト

RAD Studioのこれまでのバージョンでも、コンパイルする前にコードエラーが検出されると、コードエディタに赤いジグザグの下線(例えば、赤い下線)が表示されていました。

10.4でDelphi LSPを導入した際の大きな改善点の1つは、これらの表示が常に正しいことを確認することでした。コードエディタのマーカーと、そのコードをコンパイルしたときに表示されるコンパイラのエラーとの間には、1対1の相関関係があり、エディタと構造ペインに表示されるすべてのエラーは正しいものです。

10.4.2では、この機能を拡張し、コードエディタでも警告とヒントを確認できるようにしました。警告やヒントは、コードに関する貴重な情報を提供します。コンパイルの妨げにはなりませんが、アプリケーションが期待通りに実行できない可能性があります。 入力時にこれらの情報がエディタにライブで表示されることで、コードの問題を修正するためのフィードバックや対応が格段に早くなります。この修正は警告やヒントなしでコンパイルしたい人のための大きな目標で、警告やヒントなどの情報をインラインで見ることができるのは非常に貴重です。

squiggly light

10.4.2では、警告やヒントが多いコードの場合にコードエディタが複数の色で覆われないようにするため、デフォルトではこの機能を有効にしていませんでした。お客様からのフィードバックをいただき、10.5ではこの機能をデフォルトでオンにする予定です。なお、今回のリリースでは、IDEメニューの[ツール]>[オプション]>[ユーザーインターフェース]>[エディタ]>[言語]ページの「エラーインサイト」タブをクリックし、下図のように「エラーインサイトのレベルを表示」コンボボックスから選択することができます。

code insight changes in delphi 10 4 2 ja 1 5327325

「エラーインサイトのレベルを表示」では、

  • なし
  • エラーのみ
  • 警告以上(エラーと警告)
  • ヒント以上(エラー、警告、ヒント)
  • すべて

の中から選択できます。(デフォルトでは、エラーのみが選択されています)

エディタのレンダリングとその他のネーミングの問題

まずは、以前のバージョンからお馴染みのネーミングについてです。

1つ目は「エラーインサイト」です。このネーミングは素晴らしいですが、現在はエラーだけをインサイトするわけではないため、「エラー、警告、ヒントインサイト」と呼ぶべきかもしれません。(かと言って、エラーインサイトの名前を変更しようというわけではありません)

2つ目は、「赤い波線」です。コードの下に表示される赤いジグザグの線で、「赤い波線」としても知られ、多くの人々が好む用語です。しかし現在のエラーインサイトでは、赤だけでなく「エラー(赤)、警告(琥珀色)、ヒント(青)」の波線で表示されます。さらに10.4.2ではマーカーの表示は波線だけではありません。

10.4.2では、コードエディタのマーカーが明確で見やすいようにし、さらに、お客様がIDEを自分の好みに合わせてカスタマイズしたいと考えていることも知っています。このような理由から、アンダーラインの表示方法を変更しました。

code insight changes in delphi 10 4 2 ja 2 7791923

上図のようにIDEメニューの[ツール]>[オプション]>[ユーザーインターフェース]>[エディタ]>[言語]ページの「エラーインサイト」タブをクリックし、「エディタのレンダリングスタイル」コンボボックスから選択することができます。

エディタのレンダリングスタイルには、以下の4種類あります。

  • クラシック(従来のジグザグ線)
  • なめらかな波線(他のIDEでよく見かけるカーブした波線)
  • 実線

下図は、それぞれのレンダリングスタイルのオプションを選択した際のアンダーラインの表示例です。

code insight changes in delphi 10 4 2 ja 3 9341771

もし高解像度のモニターをお使いの方や視力に問題のある方には、ご自分に合ったマーカースタイルを見つけていただきたいと思います。

そして10.4.2では、エディタのガッター(左余白)にもエラーインサイトのアイコンを表示されるようになりました。

code insight changes in delphi 10 4 2 ja 4 3493584

この改善により、高速でスクロールしているときに、エラーや警告、ヒントを見つけやすくなります。なお、この機能は、[エラーインサイト]タブの”エディタの左余白にエラーインサイトを表示”をチェックすることで有効化/無効化できます。

code insight changes in delphi 10 4 2 ja 5 6704277

エディタのステータスバーとツールチップでのインサイト

横方向に十分なスペースがあれば、コードエディタの下部にあるステータスバーに、現在のユニットのエラー、警告、ヒントの数が表示されるようになりました。

code insight changes in delphi 10 4 2 ja 6 4713090

またエディタ内でエラー(または警告、ヒント)箇所にマウスオーバーした時に、ツールチップでそれぞれの情報を表示するように調整されました。

code insight changes in delphi 10 4 2 ja 7 9679619
ツールチップにエラーが表示される例
code insight changes in delphi 10 4 2 ja 8 6782285
ツールチップにヒントが表示される例
code insight changes in delphi 10 4 2 ja 9 2943214
ツールチップに警告が表示される例

LSPサーバーのアクティビティ

Code Insightエンジンが何をしているのか、何を処理しているのか、いつ結果が出るのか気になったことはありませんか?10.4.2では、Projectsビューの下部にある小さなバーにLSPサーバーのアクティビティを表示し、ステータスが「見える化」されます。

code insight changes in delphi 10 4 2 ja 10 2363264

Inherited

2015年3月、現在は製品のシニアマネージャである私(David Millington)がEmbarcaderoに入社する1年以上前、いつかここで働くかもしれない、ましてやDelphiのこの部分を担当することになるとは思ってもいなかった頃、私はQuality Portalに機能要望としてリクエストしました(RSP-10217)。このケースは117票、41人のウォッチャーがいる人気のQPレポートです。要望した内容は、シンボルの宣言に移動するCtrl+Clickを拡張して、「inherited」キーワードをCtrl+Clickできるようにすることでした。

10.4.2でこの機能が実装されたことを嬉しく思います。 Ctrlキーを押しながら「inherited」キーワードをクリックし、「inherited Create」などのメソッドで修飾されている場合は、Ctrlキーを押しながらメソッド名をクリックすることもでき、その継承されたメソッドにコードを移動できます。

10 4 2 ctrl click inherited

なぜこのような便利な機能が追加されたのでしょうか?もしソースコードを読んでいて、気になるコード定義を見つけたとき、その定義のさらに深いコード場所に移動することは、定義されているコードを学んだり、そのコードが何をしているするものかを知るために非常に役立ちますし、一般的にCtrl+Clickが便利な理由でもあります。しかし、この機能は以前はシンボル名に対してのみ機能していました。継承されたメソッドを呼び出したとき、つまり祖先クラスの実装を呼び出したとき、そのメソッドが何をするのかを知るためにナビゲートできるようにしたいものです。実際、オブジェクト指向コードを理解するには、継承階層内を移動することが重要であるため、これは非常に便利です 。以前は継承されたメソッドを見つける方法はありませんでしたが、10.4.2からはそれが可能になりました!

最後に、「inherited」キーワードの後にコードを完了すると、祖先クラスのメソッドのみが一覧表示されるようになりました。

…そして品質!

上記(ここまでで紹介した)内容はすべて新機能であり、時には本当に素晴らしい新機能です。しかし、冒頭で述べたように、10.4.2は大きな品質のリリースでもありました。ただDelphi LSPにとってはバグの修正とも思えるかもしれませんが、これは別の意味では「機能の見直し」という側面も持っており、あまり一般的でないシナリオでの動作の確保、フィードバックに基づく動作の変更などです。今回のリリースでDelphi LSPで行った調整および修正の一部をご紹介します。

  • UNICODEやMSWINDOWSなど、一部の状況でコンパイラが定義した組み込みマクロのIFDEFブロック内のコード補完関数
  • uses節でコードを補完する際に多くの改善が行われました(検索やプロジェクトのパスに.pasや.dcuファイルも表示されます。必要に応じて、プラットフォームごとのプロジェクトオプションでDCUを無効にすることができます)。また下図のようにuses節に補完しているユニットが重複している場合は、エラーサイトで、より明確に示されるようになりました。 11
  • オーバーロードされたメソッドをCtrlを押しながらクリックしたときに表示されるオーバーロードの解決方法や、メソッドに複数のオーバーロードがある場合に表示されるParameter Insightの表示方法など、多くの改善が行われました。
  • メソッドの実装をCtrlキーを押しながらクリックすると、その宣言に移動し、その逆も可能です。Ctrl+Clickによるナビゲーションは、インスタンス化されたジェネリック・メソッドの呼び出しにも機能し、多くの場合、不正な(コンパイルできない)コードのシンボルや、Exit inbuiltの引数にも機能し、さらにuses節で使用することで改善されます。
  • Genericsクラスの補完、厳格なプライベート/保護されたシンボルの表示、Genericsタイプのフィールドやプロパティの検索宣言、他のユニットのGenericsメソッドの検索など、Genericsに関する多くの改良が施されています。
  • 属性、スコープ付きの列挙、リソース文字列の一覧表示、プロパティやプロパティゲッター/セッターへの移動など、さまざまな機能が改善されています。
  • XMLDoc の表示を含むパラメータ補完も改善されています。 
  • 多くのパフォーマンスが調整され、実行ファイルのサイズも小さくなりました。

それだけではありません。Delphi LSP全体では、さらに多くの調整、変更、品質修正が行われています。上記はリストの4分の1で、多くのドットポイントが複数の項目をカバーしていることに気づくでしょう。それぞれに他の項目があります。たとえば、言及されていない.pasおよび.dcuルックアップの処理に関する調整、パラメータ補完に関する調整、IDEによるテキストの挿入方法に関する調整などがあります。

私が伝えたい印象は、10.4.2でどれだけの修正と改善が行われたかということです。上記の項目以外にも細かい改善が多く行われており、その細かい修正が集まって以前のバージョンよりも、そして10.4.1よりも、コード補完やそれに関連する機能が、これまで以上に、10.4.2では期待したとおりに動作するようになっています。

まとめ

DelphiおよびRAD Studio 10.4.2のCodeInsightには、よくある要望を含め、本当に便利な新機能が搭載されています 。

  • エディタでの警告とヒント!
  • Ctrl+クリックによる「inherited」の参照!
  • LSPサーバーのアクティビティが見える化!

などなど、全体的に多くの質の高い改訂が行われています。これまでにお客様から寄せられたフィードバックは非常に好評で、できるだけ早く10.4.2をインストールすることを強くお勧めします。

今すぐ10.4.2を使い始めよう

すでに、10.4.2のトライアル版が利用可能になっており、今後製品を購入いただくと、10.4.2をダウンロードいただけるようになります。また、すでに製品をお持ちの方は、有効なアップデートサブスクリプションがあれば、既存のライセンスを使用してRAD Studio 10.4.2をご利用いただけます。10.4.2のダウンロードは、新しいカスタマーポータルサイト(my.embarcadero.com)から行えます。

詳細については、以下の情報をご確認ください。

エンバカデロでは、10.4.2において行った作業について大きな成果を上げることができたと考えており、皆さんがこの新しいリリースをご活用いただけるものと期待しています。

Dev Days of Summer 2-24

Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

IN THE ARTICLES