品質向上のための機能

3つ目の柱は「アプリケーションライフサイクルマネジメント(ALM)の強化」である。ALMと言うと大げさなようだが、「運用や保守のコストを、開発時から下げていくこと」(岩出氏)を目指した、設計やテスト、チーム開発などのサポート機能である。

最近であれば、きちんとユニットテストを作成・管理することは当たり前となっている。しかし、大量のユニットテストを書くのは手間がかかることも確かである。そこでVS 2008の機能を使用することで、ユニットテストを作成する手間を大幅に削減できるのだ。たとえば画面3を見ていただきたい。これは、「引数として与えられた2つの数値を加算する」という処理を行うprivateなメソッド「add」から、右クリックメニューでテスト用コードを自動生成した直後の画面である。テスト用のメソッドだけでなく、引数として値を渡すコードまで生成してくれるので、後は実際に渡す値を記述するだけでよい。さらに、テスト対象のaddがプライベートなメソッドであるため、外部から呼び出すためのクラス(ここではForm1_Accessor)も自動で作成してくれていることが分かる。ここまでサポートしてくれれば、今までよりも気軽にユニットテストを作成できるようになるはずだ。また、ユニットテストの一括実行をできる上に、カバレッジの表示まで行ってくれるのである(画面4)。

ちなみに、ユニットテストの機能だが、以前はSoftware Developersという高価なエディションにしか搭載されていなかった。しかしVS 2008では、比較的安価なProfessional Editionにも搭載されるという話である。個人レベルで開発を行っている開発者にはありがたい。 また、チーム開発の機能も充実している。ソースコードのバージョン管理や構成管理を行うための製品である「Team Foundation Server」も2005から2008にバージョンアップした。大きな変更点のひとつとして、「インストールや管理が非常に簡単になった」(岩出氏)ことが挙げられるという。

画面3: テスト用のメソッドだけでなく、引数として値を渡すコードまで生成してくれる

画面4: ユニットテストを一括実行できる上に、カバレッジまで表示される

楽しくプログラミングを!

このように、さまざまな機能追加が行われたVS 2008だが、やはり一番の目的は開発者という「人」の生産性をいかに上げるか、いかに楽しくソフトウェア開発をしてもらうか、ということにあるそうだ。「開発者の生産性が上がることで、最終的にはエンドユーザーにも使いやすいソフトウェアが増える」(近藤氏)という考え方である。たとえばVS 2008では、「インテリセンス(クラス名やメソッド名の自動補完)」に対する強いこだわりを感じるように思う。

最近では標準クラスライブラリを中心として、膨大なクラスを使いこなすことで素早く開発ができるようになってきているが、それと同時にどのようなクラスを呼び出せばよいのか、ということも分かりにくくなっている。そこで、VS 2008では、プログラマーになるべく負担を強いることなく、多くのクラスを使いこなせるように、常にインテリセンスによるサポートが受けられるような工夫がされている(VS 2008を使ってもらえば気づくと思うが、LINQを使用したコードや、あるいはASP.NET AjaxでのJavaScriptを記述していても、常にインテリセンスが利用できる)。

型推論やラムダ式、あるいは拡張メソッド(※)などを見れば、VS 2008で追加されているのは、動的言語(スクリプト言語)を意識した言語仕様であることが分かる。しかし、それらの仕様はすべて.NET Frameworkという「強い型付け」を持つランタイムの上で構築されているのである。だからこそ、常に開発ツール(Visual Studio)側での正確な候補を表示することができるわけだ。つまり、強力な言語仕様と強力な型付けを両立させることによって、言語仕様だけでなく、開発ツールも含めた上での「総合的な開発生産性」を高めることを目指している、と言うことができる。

※ 既存のクラスに後からメソッドを追加するための言語仕様。ただし、C#のチーフデザイナであるアンダース・ヘルスバーグは「拡張メソッドは使いすぎに注意した方がよい」ということも言っているそうである。

初めにも述べたように、要するに開発ツールというのは開発者がラクをするためのツールである。開発者の生産性をさらに高めることを目指して開発されたVisual Studio 2008、現在ベータ版が公開中なので、ぜひ一度使ってみていただきたい。