今月19日、米国にてVisual Studio 2008(以下、VS 2008)がRTM(Release To Manufacturing)を迎えた。国内でも年内のリリースを目指して最終的な開発が進められており、間もなく皆さんが手に入れられる状態になるはずだ。本誌は、そのVS 2008の特徴と利用者にとってのメリットについて、マイクロソフト デベロッパー&プラットフォーム統括本部 デベロッパービジネス本部 デベロッパー製品部 Visual Studio マーケティンググループ シニアプロダクトマネージャの岩出智行氏と、同マネージャの近藤和彦氏に話を聞いた。
VS 2008の新機能については、『システム開発ジャーナル Vo.1』の「特集記事2 次世代開発ツール Visual Studio 2008」で詳細が解説されている。そちらもぜひ参照されたい。
VS 2008の新機能の柱は、次の3つになるという。
- 開発生産性のさらなる向上
- 最新プラットフォーム・テクノロジの活用
- アプリケーションライフサイクルマネジメントの強化
以下、岩出氏と近藤氏の話を基に、これらを順に掘り下げていこう。
マイクロソフト デベロッパー&プラットフォーム統括本部 デベロッパービジネス本部 デベロッパー製品部 Visual Studio マーケティンググループ シニアプロダクトマネージャの岩出智行氏(左)と、同マネージャの近藤和彦氏(右) |
新たな言語仕様の導入
開発ツールが果たすべき役割とは、簡単に言ってしまえば「開発者一人一人の生産性を向上させること」に尽きる。VS 2008においても、スムーズに開発を行うためにさまざまな改良が行われている。
特徴的なものとしては、たとえばLINQ(Language Integrated Query : 統合言語クエリ)が挙げられる。ソフトウェア開発を行うのであれば、何らかの形でRDBやXMLなどといったデータとのハンドリングが必要になると思うが、LINQを使用することでそういった処理を簡潔に、そして直感的に記述できる。たとえば画面1は、LINQを使用してコードを書いているところだ。
ここで重要なのは、インテリセンスが有効になるということである。たとえば、RDBと連携するソフトウェアを開発するときには、さまざまなテーブルを使うために、テーブル定義のドキュメントを常にそばに置いておく必要があったと思う(※)。しかし、LINQであれば、RDBからテーブル定義をウィザードでいったん読み込んでしまえば、あとはすべてインテリセンスを見ながらコードを記述していくことも出来る。
※ たとえば、Hibernateのクライテリアを使用する場合でも、列名は「文字列」で記述しなくてはならない。そのため結局は、テーブル定義のドキュメントや他のクラスのコードを参照しながらコードを書く、ということが増えてしまう。
また、匿名型などの仕様と組み合わせて利用できるので、不要な候補が表示されることは一切ない。たとえば画面2を見ていただけば、SELECTで指定した列以外はインテリセンスの候補に出ていないことが分かる。画面から目を離して紙のドキュメントを見ることはもちろん、ウィンドウの切り替えさえ行わずに、正確にコードを書いていくことができそうだ。
ちなみに、LINQは新しいO/Rマッパーのように思われがちだが、あくまでも「どのようにしてデータを検索するのか」という「意図」を表現するためのものである。そのため、RDBに限らずXMLやコレクションの検索に対しても使用できる。
LINQの他にも、新しい言語仕様がいくつも導入されており、今までよりもさらに簡潔で柔軟性の高いコードを記述できるようになっている(型推論や匿名型、ラムダ式などの言語仕様については『システム開発ジャーナル Vol.1』を参照)。
VistaやOffice、Ajaxへの対応
2つめの柱は、「最新プラットフォーム・テクノロジの活用」だ。これは、VistaやOffice 2007などのマイクロソフト製品だけでなく、Ajaxなどの標準技術も含まれる。
新しいプラットフォームとして目を引くものとしては、WPF(Windows Presentation Foundation、いわゆる「Avalon」)が挙げられるだろう。従来のWindows Formsでは、複雑なUIを作成すると処理が重くなるということも少なくなかった。しかし、WPFであればGPU による高速化も行われるため、パフォーマンス向上が期待できる。当初、WPFはVistaだけでなく、Windows XPでも動作する。つまり、現在出回っている多くのPCでWPF対応アプリケーションが動作する、と考えてよいだろう。VS 2005でもWPF対応アプリケーションを開発することは可能だったが、VS 2008からはドラッグ&ドロップで直感的に開発していくことができるようになる。
また、VS 2008ではOffice 2007のカスタマイズも可能だ。従来のメニューから置き換えられた「リボン」と言われる部分に、さまざまな機能を追加できるようになっている。たとえば社内向けの帳票ソフトなどを開発する際に、Excelをベースにすれば、表計算機能や印刷機能などを自作する必要がなくなるため、開発の手間を大幅に減らすことが出来る。従来はOffice をカスタマイズするためにはVisual Studio Tools for Microsoft Office System(VSTO)というパッケージを別途購入する必要があった。しかし、VS 2008 ProfessionalにはVSTOの機能がすでに含まれているとのことである。
さらに、VS 2008からASP.NET Ajax(以前はAtlasと呼ばれていた)というフレームワークによって、Ajaxにも標準で対応した。一般的にはAjaxアプリケーションを開発しようとすると、JavaScriptをきちんと記述しなければならない。そのため、C#やJavaなどの静的言語を書いてきた開発者には、毛色の異なる言語であるJavaScriptが必要とされるため、Ajaxは敬遠されがちでもあった。しかし現在では「エンタープライズ分野でもAjaxの注目度は高まってきている」(近藤氏)という。操作性の改善だけでなく、JSONの利用やページ遷移を行わないUIによる、通信の負荷低減なども期待できるからだ。つまり、多くの開発者にとって、Ajaxはもはや避けて通ることはできなくなりつつあるのだろう。
ASP.NET Ajaxを使用することで、「JavaScriptをなるべく直接記述することなく、Ajaxアプリケーションを開発できる」(近藤氏)という(※)。たとえば、「ボタンをクリックしたときにDOMの操作を行う」というような処理であれば、C#やVBで記述するだけで自動的にJavaScriptに変換される。さらにすごいことに、JavaScriptに変換された処理に関しても、デバッグ実行時にはVBやC#によるコードの単位でステップ実行ができてしまうのである。また、通信部分に関しても、クライアント、サーバー共にC#やVBによる記述だけで済ませることも出来る。もちろん、自分でJavaScriptを記述していくことも可能だ。その際にもインテリセンスやデバッグ実行などが利用できる上、サーバー側のWebサービスを呼び出すためのJavaScript側のプロキシクラスの自動生成も行ってくれる。
※ ASP.NETでWebAPIを実装するときには、SOAPやWSDLに簡単に対応させることができるのだが、コード(正確にはクラスやメソッドの属性)をほんの少し書き換えるだけで、JSONによるAPIに変更することもできる。ちなみにこの仕組みは、.NET Framework 3.0のコンポーネントであるWindows Communication Foundation(WCF)によって実装されているそうだ。WCFもVS 2008で使用可能なテクノロジーである。