.NET Toolsプログラムを仕上げるときの強力な助っ人DevPartner― プログラムはツールの支援で組み上げる ― |
15年ぐらい前、プログラムの開発といえば、テキスト・エディタとコンパイラ、必要に応じてデバッガがあればそれですべてといっても過言ではない時代があった。これらのツールは、それぞれ独立した単機能なもので、テキスト・エディタといえばテキスト・ファイルの編集しかできず、コンパイラはソース・コードを実行ファイルに変換することしかできず、デバッガはデバッグにしか使えないものだった。おのおのが完全に独立していて別個に操作しなければならないため、テキスト・エディタは強力なマクロ機能を備えていくようになった。これにより、自動的にコンパイラを起動してコンパイルさせたり、エラー情報からソース・コードのエラー個所にジャンプさせたりできた。その名残は、Emacs系エディタの強力なLISPプログラミング機能や、秀丸のマクロ機能などに見ることができる。
しかし、そのような時代は、すでに過去のものになったといってよいだろう。最近では、プログラム開発は統合開発環境で行うことが多くなり、エディタ機能とコンパイラ機能が最初から連携していることは当たり前となっている。いまや、エディタをカスタマイズして自動的にコンパイラを起動させるようなことは、プログラマーの誰もが取り組む必須課題ではなくなった。
しかし、そこで進化が止まってしまったわけではない。プログラム開発において、ツールに要求されることが編集とコンパイルとデバッグだけ、という時代は終わろうとしている。最近では、編集機能がコンパイル機能の一部を取り込むような傾向が見られる。例えば、ソース・コードの編集中にタイプミスで構文エラーを発生させた場合、古い開発スタイルなら、テキスト・エディタがそれを察知することはできなかった。コンパイルを行って初めて構文エラーが検出されるわけである。しかし、最近の統合開発環境は、コンパイルを待たずに構文エラーを検出する。これは、編集機能がコンパイル機能の一部を含んでいるためである。このように、開発環境は、ただ単に編集からコンパイルに簡単に移行できる、というような単純な次元からさらなる進化を遂げつつある。
この進化は、編集中の構文エラー検出程度で終わりはしない。ツールは、積極的にソース・コードの意味を理解して、プログラム開発を支援する方向で進化が続くことが予想される。最近多く見掛けるようになった、複雑なソース・コードをシンプルで分かりやすいコードに書き換えるリファクタリングを支援するプラグインなどはその一例である。リファクタリング支援機能は、Visual Studio .NET(以下「VS.NET」)の将来の版でもサポートされるようである。
このような、ソース・コードの作成や修正を支援する方向性のほかに、もう1つツールが取り組むべき方向性がある。それは、プログラム内容の分析である。プログラマーが自分の書いているプログラムを理解していると思うのは早計で、実際には書いた本人すらも気付かないことがいろいろある。例えば、プログラムが遅いから高速化しようとプログラムを書き換える際、プログラマー本人がボトルネックだと思っていた個所と、本当にボトルネックになっていた個所が違っていた、というような話はよくある。プログラムを正しく理解するために、プログラム内容を分析し、的確な情報を得ること、それが、客観的に優れたプログラムを作成するために必要といえるだろう。
分析を支援するDevPartner
ここでは、プログラムの分析を支援するツールとして、日本コンピュウェアの「DevPartner Studio Professional Edition 7.0」(以下「DevPartner」)を紹介しよう。
これは、複数の分析ツールの集合体で、VS.NETに対応している。個々のツールにもよるが、VS.NETの統合開発環境に組み込んで使うことも、独立した単体アプリケーションとして使うこともできる。
対応するVS.NETのバージョンは、現在はVisual Studio .NET 2002であるため、本稿ではこれを用いて紹介している。近日、Visual Studio .NET 2003対応されることが期待される*1。
対応するプログラム言語は、含まれている個々のツールにもよるが、C#、Visual Basic .NET、Managed C++、C++などである。本稿では、Visual Basic .NET(以下「VB.NET」)を例にして使ってみることにする。
DevPartnerが提供する主な分析機能は、以下の5つである。
-
静的ソース・コード解析
-
パフォーマンス分析
-
カバレッジ分析
-
実行時エラー検出
-
分散アプリケーション分析
このうち、「実行時エラー検出」は「.NET固有のエラー10種を含む77種類の実行時エラーとリークを検出」とされている機能である。以下の問題を検出できるとしている。
-
メモリ・リソースの問題、COM Interfaceリーク
-
不正なAPI呼び出し
-
メモリ・エラー(オーバーラン、未初期化領域参照)
-
.NET Finalizer実行時に発生するエラーの分析
-
ハンドルされていない例外
しかしながら、これらはC/C++に対応する機能のようで、VB.NETやC#では使うことができなかったので、本稿では紹介を割愛する。
もう1つ、「分散アプリケーション分析」はIISなどを用いたWebアプリケーションの動作に関するさまざまな情報を収集、分析することができる機能だが、VB.NETと統合されて機能するものではないので、本稿では紹介を割愛する。
*1 米国では、すでに米Compuware よりVS.NET 2003対応の「DevPartner Studio Professional Edition 7.1」が発売されている。日本コンピュウェアによると現在日本語版へのローカライズを進めているとのことだが、これに先駆け、2004年2月よりまずは英語版7.1の国内販売が開始される(プレスリリース)。DevParner 7.1では、本稿で紹介している機能に加えて、メモリ使用やガベージコレクションのチューニングを支援する「メモリ分析機能」が追加されている。なお、英語版と日本語版は機能的にはまったく同等である。 |
INDEX | ||
[.NET Tools] | ||
プログラムを仕上げるときの強力な助っ人DevPartner | ||
1.分析を支援するDevPartner | ||
2.ソース・コードの弱点を検出する「静的ソース・コード解析」 | ||
3.処理にかかった時間を計測する「パフォーマンス分析」 | ||
4.テスト漏れを防止する「カバレッジ分析」 | ||
「.NET Tools」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|