Enterprise Watch
バックナンバー

「Visual Studio 2005 Team System」、その本質に迫る 【第三回】

~コードの精度を高める「Software Developers」

 Visual Studio 2005 Team System(以下、Team System)のVisual Studio Team Edition for Software Developers(以下、Software Developers)は、「コードを記述する」という、いわばVisual Studio 2005のメインと呼べる機能である。つまりSoftware Developersの機能の解説は、そのままVisual Studio 2005といえるかもしれない。

 しかし、Team Systemではチームによる開発を目的としているため、Team Systemの一部であるSoftware Developersには、記述されるコードの精度を高める目的で、Standard Editionなど他の製品には標準で搭載されていないコード分析機能なども含まれている。そこで今回は、IDEとしてのVisual Studio 2005の概要と、Software Developersのコード分析機能やパフォーマンスツールについて解説することにする。

【3月23日更新】コンポーネントの名称変更に伴い、Team Systemのコンポーネント名を変更しました。


Visual Studio 2005と.NET Framework 2.0

 Visual Studio 2005のリリースにあわせ、クラスライブラリと共通言語ランタイム(CLR)で構成されている.NET FrameworkもVersion 2.0となる。クラスライブラリは、.NET Frameworkのアプリケーション、コンポーネント、コントロールを作成する際の基盤となる。一方、共通言語ランタイムは、コードを実行し、メモリ管理、スレッド管理、リモート処理などの重要なサービスを提供する。共通言語ランタイムを使用して実行するように作成されたコードは「マネージドコード」と呼ばれる。

 新しい.NET Framework 2.0では、クラスライブラリ全般にわたって機能が強化・拡張されている。新しく提供されるクラスにより、プリンタやファイルシステムなどのコンポーネントへのアクセスを容易にしたり、WindowsフォームやASP.NETクラスなどの機能拡張によりコード量が削減できる。これらの新しい機能を利用して、効率よくアプリケーションを開発するためのツールがVisual Studio 2005なのである。

 Visual Studio 2005でアプリケーションを開発する際には、「Visual Basic」「Visual C++」「Visual C#」「Visual J#」の4つのプログラミング言語が利用可能である。それぞれの言語はVisual Studio 2005として機能が強化されているだけでなく、自動構文修正を実行するスマートタグ、デバッグ機能の強化など、IDEとしての機能も大幅に向上している。

 大規模なエンタープライズシステムにおいて、アプリケーションのデプロイメントは重要な課題であるが、.NET Framework 2.0のWindowsフォームでは、新しいコントロールやデザイナの機能によって開発が容易になるだけではなく、ClickOnce機能によってアプリケーションのデプロイメントの負担も大幅に軽減される。

 またあわせて提供されるSQL Server 2005では、Visual Studio 2005で作成したマネージドコードを使用するストアドプロシージャを利用できる。このためVisual Studio 2005は、これまで以上にSQL Server 2005と密接に連携するともいえる。


静的コード分析ツール

 Team Systemの静的コード分析機能には、コードの欠陥をすばやく検出するために「PREfast」と「FxCop」と呼ばれる2種類の静的コード分析ツールが用意されている。この2つはIDEに統合されており、IDEから設定を有効にするだけで実行できる。

 コードの欠陥は、発見が遅れると修正にかかるコストが大きくなるが、Team SystemではIDEから自動的にコードを分析できるため、開発のより早い段階でコードの欠陥を検知できる。たとえば開発チームのメンバーに対して、ソースをチェックインする前にコード分析を終了することを義務付けておけば、コードの精度を高い基準で保つことができる。


PREfast警告の画面
[PREfast]
 PREfastは、CやC++といったネイティブコード上で、欠陥の可能性を検知し、その情報を通知するツールである。PREfastが検知できるコードのエラーは、バッファーオーバーラン、メモリの未初期化、nullポインタ逆参照、メモリリーク、リソースリークなどがある。

 ビルドプロセスにおいてPREfastが検知した問題箇所は、Error Listに「PREfast警告」として表示される。この警告をダブルクリックして選択すると、コードエディタ上の強調表示された問題箇所を参照できる。PREfastの警告では、明示的に警告をエラーとして処理したり、無効化したりできる。また、PREfastでは、関数のパラメータ、戻り値の型の条件といった警告の追加情報も注釈として提供する。


違反として強調表示されている箇所(コードエディタの画面)
[FxCop]
 FxCopは、マネージドコードアセンブリを分析して、プログラムやデザインがマイクロソフトが公開している「クラスライブラリ開発者向けのデザインガイドライン」に違反していないかをチェックするツールである。

 ビルドプロセスにおいてFxCopが検知した違反は、Error Listでルール違反として表示される。この違反をダブルクリックして選択すると、コードエディタ上の強調表示された違反箇所を参照できる。FxCopでは、分析で実行するチェックを「ルール」と呼ぶ。ルールは「アセンブリを分析して結果を返す」という処理を実行するマネージドコードであり、違反を検知した場合、可能であれば修正方法に関する情報を提供する。


パフォーマンスツールによるコードプロファイリング

 Team Systemでは、IDEに統合されているパフォーマンスツールを利用してアプリケーションのパフォーマンスを計測し、ボトルネックとなる箇所を追跡できる。Team Systemのパフォーマンスツールでは、「サンプリング」と「インストルメンテーション (Instrumentation)」という2種類のプロファイリング方法をサポートしている。

 サンプリングによるプロファイリングは、アプリケーションを定期的に中断して、実行されている関数をチェックする。アプリケーションのスナップショット情報を収集するように関数のサンプルをカウントして、関数の呼び出し履歴情報も記録する。アプリケーションの実行が終了すると、収集されたデータはレポートファイルとして参照できる。


パフォーマンスエクスプローラ
 しかしサンプリングでは、抽出された関数に関連するパフォーマンスデータしか収集できない。そこで、アプリケーション特定領域のパフォーマンスデータを収集するために、インストルメンテーションによるプロファイリングを用いることになる。インストルメンテーションでは、テストの実装中に“enter”や“exit”といった調査用のコードを関数に挿入し、関数の実行に要する正確な時間などのパフォーマンスデータを収集する。つまりアプリケーションの実行状況の情報を、リアルタイムで収集するのである。しかし、その分だけオーバーヘッドも大きいという問題がある。

 Team Systemでパフォーマンスセッションを作成するには、IDEからパフォーマンスセッションウィザードを起動する方法と、手動で作成する方法がある。作成されたパフォーマンスセッションは、パフォーマンスエクスプローラから参照できる。

 アプリケーションの実行が終了すると、パフォーマンスセッションレポートがReportsノードに自動作成される。パフォーマンスセッションレポートには、「サマリービュー」「ファンクションビュー」「呼び出し元/呼び出し先ビュー」「呼び出し履歴ビュー」「タイプビュー」のビューが用意されている。パフォーマンスセッションレポートの基本情報はサマリービューに表示される。このサマリービューから各データポイントを選択して、より詳細なビューを表示できる。


パフォーマンスセッションレポートの基本情報を表示する「サマリービュー」 アプリケーションに呼び出された全関数を表示する「ファンクションビュー」

ファンクションビューに一覧表示された関数の詳細を表示する「呼び出し元/呼び出し先ビュー」 特定の呼び出しトレースをドリルダウンできる「呼び出し履歴ビュー」 特定タイプのインスタンス数、合計バイト数を表示する「タイプビュー」

まとめ

 Software Developersの機能の多くは、Visual Studio 2005のメイン機能となる。しかしエンタープライズシステムにおけるアプリケーションの開発では、コーディングの容易さだけでなく、より質の高いアプリケーションを効率よく作成するために、コードの精度やアプリケーションのパフォーマンスを意識することも重要となる。



URL
  マイクロソフト株式会社
  http://www.microsoft.com/japan/
  Visual Studio 2005 Team System
  http://www.microsoft.com/japan/msdn/vstudio/2005/teamsystem/

関連記事
  ・ 「Visual Studio 2005 Team System」、その本質に迫る 【第一回】(2005/03/03)
  ・ 「Visual Studio 2005 Team System」、その本質に迫る 【第二回】(2005/03/10)


( 北原 静香 )
2005/03/17 00:00

Enterprise Watch ホームページ
Copyright (c) 2005 Impress Corporation, an Impress Group company. All rights reserved.