見えてきた! 次期.NET FrameworkとVisual StudioTech・Ed 2009 Session Report

Windows 7だけでなく、Tech Ed Japan 2009の話題として開発者が気にしていたのは、やはり「.NET Framework 4」と、その対になる開発環境「Visual Studio 2010」ではないだろうか――。

» 2009年09月02日 08時00分 公開
[下村恭(ハンズシステム),ITmedia]

メジャーバージョンアップとなる.NET Framework

 Windowsプラットフォーム上で重要な位置を占めるソフトウェア開発フレームワークの.NET Frameworkは、そのバージョンを1.0、1.1、2.0、3.0、3.5と上げてきたが、その実行環境であるCLR(Common Language Runtime)と、フレームワークを形作るライブラリのバージョンが異なり、特に、現行の.NET Framework 3.5の場合、CLRのバージョンが2.0、ライブラリは2.0と3.0と3.5を合わせたものという形になっており、分かりにくいものになっていた。

.NET Frameworkの変遷(Tech Ed Japan 2009 セッションT2-201より),.NET Frameworkの変遷(Tech Ed Japan 2009,セッションT2-201より)

 次のバージョンでは、CLRとライブラリのバージョンを4.0に統一し、複数のバージョンが混在していたライブラリも、1つのバージョンに統一される。ちなみに、CLRとライブラリのバージョンに小数点とゼロが付くのに対し、.NET Frameworkのバージョンが「4」だけなのは、Silverlightなどの最近のテクノロジーのバージョン呼称と統一するためらしい。

 さて、.NET Framework 4での新機能と言えば、Parallel対応だろう。CPUクロック周波数が抑えられコア数が増えるという、最近のマルチコア化の動きに合わせ、プログラム側でも並列処理対応を進める必要が出てきた流れに沿ったものだ。

 Tech Edのブレークアウトセッションでも、.NET Framework 4のParallel化のデモが行われた。ここでは、以下のような階乗を求めるサンプルプログラムの例(C#による)を示し、その比較が行われた。

  • 1,通常のfor文

for (int i = 0; i < EXEC_CNT; i++) CalcPower();

  • 2,Threadを起こす場合

Thread[] th = new Thread[EXEC_CNT];

for (int i = 0; i < EXEC_CNT; i++)

{

  th[i] = new Thread(new ThreadStart(CalcPower));

  th[i].Start();

}

for (int i = 0; i < EXEC_CNT; i++) th[i].Join();

  • 3,Taskを起こす場合

Task[] tsk = new Task[EXEC_CNT];

for (int i = 0; i < EXEC_CNT; i++)

  tsk[i] = Task.Factory.StartNew(CalcPower);

Task.WaitAll(tsk);

  • 4,Parallel.Forを使った場合

Parallel.For(0, EXEC_CNT, x => { CalcPower(); });


 「1」の通常のfor文ではCPUを使い切ることなく、一番実行時間が長く約38秒、「2」のスレッドを起こす場合は、CPUを100%使い切って13秒弱、「3」のタスクを起こすやり方では、スレッドのようなオーバーヘッドが無いため9秒強、「4」のParallel.Forを使った場合では、タスクとほぼ同じ約9秒となった。C#のコードを見てもらえば分かるが、とても簡単な記述で、タスクと同じパフォーマンスを得られることが分かる。

.NET Framework 4のParallel化のデモ(Tech Ed Japan 2009 セッションT2-201より),.NET Framework 4のParallel化のデモ(Tech Ed Japan 2009,セッションT2-201より)

 また、.NET Framework 4でのCLRの拡張により、言語面でも拡張が行われ、VB.NETでコードを文の途中で改行する際に「_」(アンダースコア)がいらなくなる暗黙的改行や、複数行のラムダ式、配列の初期化に対応など、C#と同様のことができるようになる。また、C#でもオプション引数や、名前付き引数などC++ライクな引数指定方法ができるようになる。

 ADO.NET Entitiy Frameworkでは、Entityクラスを継承せずに、普通のCLRオブジェクトをデータ型として使えるように、POCO(Plain Old CLR Object)をサポートする。これにより、余分なコードが付かないオブジェクトをデータ型として利用できるようになる。

 WPFの拡張も行われる。新コントロールとして、待ち望まれているDataGrid、DatePicker、Calenderが追加される。また新OSであるWindows 7のジャンプリストといった新機能に対応するほか、Office 2007で一般的になったリボンインタフェースにも対応する。、

 ASP.NETでは、従来のWeb Formに加え、MVC Frameworkも標準で対応する。Web Formは、Windows Formと同様のプログラミングモデルを提供するため、開発効率に優れているが、PostBackを使用するため、URLと機能の関係が分かりにくくなっていた。また、StateViewを使う必要があり、データが重くなる傾向にあった。MVC Frameworkでは、PHPやPerlといったCGI系と同じような作りにできるため、URLと画面の関係が分かりやすく、SEO対策が容易であったり、単体テストが容易になるなどのメリットがある。いままではASP.NETではWeb Formが標準であり、選択肢としてMVCが標準ではなかったが、.NET Framework 4からは、標準で2つの方式から、適材適所に選ぶことができるようになる。

 ASP.NET AJAXでは、クライアント サイド テンプレート機能が追加され、サーバ側でHTMLをレンダリングしなくても、サーバ側からデータを送るだけで、クライアント側でHTMLに変換できる。

Visual Studio 2010の変化

 さて、開発環境の次バージョンとなるVisual Studio 2010では、どのような部分が進化するのだろうか?

 開発環境の顔としてのIDEを見れば、WPFで書き直されたことで、快適さが手に入りそうだ。スタートページがXAMLで記述されるため、プロジェクトポータルなどをXAMLで書くことで、独自のスタートページを作成できる。

 また、チーム開発を協力にサポートするための機能も追加される。UMLを使う人にとって朗報なのが、Visual Studio Team System 2010が、UML2.xを標準でサポートすることだろう。今までのVSTSが独自のモデル記述方法であったのに対し、VSTS2010では、UMLのユースケース図、アクティビティ図、コンポーネント図、パッケージ図を含む論理クラス図、シーケンス図を標準でサポートし、自動コード生成だけでなく、リバースエンジニアリング用に、コードからも図を起こせるようになる。

 細かい点だが、ASP.NETの開発者にとって助かるのが、Web.Configをデバッグ用とリリース用、ステージング用と、配置環境に応じて切り替えてくれる機能だ。Web.Configを書き換え忘れてテスト環境からサーバにアップロードしたために、DBが切り替わっていなかった、といった経験をしたことがあるのではないだろうか。このようなつまらないミスをしなくて済むのは、とても助かる。


 来年のTech Edの話題の中心は、.NET Framework 4とVisual Studio 2010になることは間違いないだろう。それまでの間には、Windows 7とWindows Server 2008 R2の出荷、Office 2010の登場、Windows Asureの商用提供開始など、目の離せない1年となりそうだ。

関連キーワード

.NET | Visual Studio 2010 | Windows 7 | XAML


関連ホワイトペーパー

.NET | Visual Studio


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ