よりよいコーディング

Visual Studio 2010 を使ったよりよいコーディング

Doug Turnure

マイクロソフトが Visual Studio を発表してから 13 年経ちました。Visual Studio は、息の長い、同社の統合開発環境のフラグシップ製品です。1997 年のリリースで初めて、Visual Basic のバージョン 5 と Visual C++ が共通の IDE に統合されました。このリリースには、Visual InterDev、Microsoft Transaction Server、Visual SourceSafe 5.0 など、かつて名を馳せたテクノロジが搭載された Enterprise Edition が含まれていました。このリリース最大の目的は、クライアント/サーバーと Web アプリケーションのどちらを開発する場合でも、コンポーネントを使用して、分散アプリケーションの開発を支援することでした。

それ以来、開発者として私たちは大きな進化を遂げてきました。クライアント/サーバー アーキテクチャおよび Web アーキテクチャは現在でもコーディング現場では主流ですが、今は形を変え、このようなアプリケーションの利用範囲や要件は、同種システムと厳密に型指定されたオブジェクト間呼び出しの世界をはるかに超えています。

現在では、Representational State Transfer (REST) と関連テクノロジが、基本の通信メカニズムの主流になっています。アプリケーションは、クラウド ベースのアーキテクチャにその居場所を見つけ、スケーラビリティ、信頼性、およびデータのセキュリティはサードパーティの手にゆだねられるようになりつつあります。また、Web アプリケーション パターンは、コモディティ化されたスタイルや標準に準じています。ハードウェアさえも変化していて、プロセッサ速度は現在のチップ テクノロジによって理論上のピークに迫っており、マルチコア システムは 1 台のコンピューターの処理能力を引き出せるだけ引き出す新しい道を開いています。

Visual Studio 2010 が登場するのは、このような世界であり、その世界のソフトウェアおよびソフトウェア開発者からの要件はこれまで前例のないほど厳しいものになっています。そして、新機能が詰まった Visual Studio 2010 は、さまざまな種類のプラットフォーム、コア、スタイル、標準が利用されるようになった世界で、増え続けるソフトウェア要件に対応できる態勢にあります。この記事では、開発者がこの複雑な業界の中にあって成功につながるソリューションを作成できるように、現状の課題に対応した Visual Studio 2010 の卓越した機能の一部を紹介します。ここでは、すべての新機能を紹介するのではなく、開発者が日常業務にすぐに取り入れることができる特定の機能をいくつか詳しく紹介します。全機能の一覧については、製品ドキュメントを参照してください。

Visual Studio IDE の機能強化

ソフトウェア開発で取り組むシナリオはますます複雑になり、開発者は生産性を高めなければならないというプレッシャーを頻繁に感じています。Visual Studio 2010 では、生産性の向上に役立つ表示機能がいくつかエディター自体に追加されています。ここでは、そのうちの 3 つを紹介します。

Visual Studio 2010 IDE で試していただきたい簡単な機能強化の 1 つは、IDE の親ウィンドウの外部に子ウィンドウをドラッグできる機能です。モニターの価格は、開発者が作業に 2 台 (以上) 使用できるほど安くなりました。そこで、この新機能を使用すれば、コーディング ウィンドウやデザイン ウィンドウを複数の画面に分散することができます。

動作のしくみ: ウィンドウのタブをクリックし、Visual Studio IDE ウィンドウの外にドラッグするだけです。タイトル バーをクリックして IDE の領域内にドラッグし、タイトル バーを他のウィンドウのタブに揃えるだけで、再びウィンドウを簡単にドッキングできます。再ドッキングするときに、ウィンドウを適切に揃えると、視覚的なヒントが出されます。つまり、ウィンドウに網がかかり、ドラッグから解放されると再ドッキングする状態であることが示されます。図 1 は、外枠となる IDE のウィンドウの外にドラッグされたコード ウィンドウを示しています。

Figure 1 Untethering a Window from the IDE
図 1 IDE からのウィンドウの切り離し

Visual Studio 2010 エディターのまた別の便利な新機能は、テキストをボックス選択し、縦方向のテキスト ブロックを編集できる機能です。広範囲にわたり項目を編集しなければならなくなり、おなじみのキーボード シーケンスを高速で繰り返し実行することがあります (たとえば、"n + 方向 + 左方向" キーを繰り返し押す)。このような操作はそれほど頻繁に発生するわけではありませんが、折に触れて発生します。このような場合、縦方向のブロック全体を選択して、同じ変更をすべての行に一度に適用できればよいのにと、多くの開発者が感じていました。Visual Studio 2010 では、このブロック編集機能が導入されています。

動作のしくみ: Alt キーを押しながら、編集する領域を縦方向にブロック選択します。強調表示された領域は単一行の編集と同様に処理できますが、編集結果は選択されているすべての行に同時に適用されます (図 2 参照)。

Figure 2: box selecting
図 2 ボックス選択

また、コード内の参照箇所を示す便利な強調表示機能もあります。エディター内で、変数、オブジェクト、メソッド、プロパティ、型などのシンボルをクリックすると、コード内のそのシンボルに対するすべての参照が強調表示されるため、クリックされたアイテムが使用されている箇所をすばやく確認できます。

動作のしくみ: 型、変数、メソッドなど何かアイテムを選びクリックするだけで、他のインスタンスが強調表示されます。図 3 は、jumpList という変数にこの機能が適用されるようすを示しています。この変数をマウスでクリックして選択したことで、コード内でこの変数が使用されているすべての箇所に灰色の網が掛けられています。

Figure 3 Highlighted Symbols
図 3 強調表示されたシンボル

並列プログラミングのサポート

新しい IDE 機能をもう少し詳しく見ていきましょう。ここで紹介する次の重要な新機能は、並列プログラミングのサポートです。Visual Studio 2010 には、並列アプリケーションのデバッグと分析に役立つ診断ツールが付属しています。ただし、このツールの説明をすぐに始めるのではなく、まず、並列プログラミングとは何かを簡単に説明して、ランタイムやライブラリがこれらの新機能をどのように実装するかを理解できるようにします。

現在標準の開発コンピューターの多くは、マルチコア、つまり、複数のプロセッサが搭載されています。現状では、コンピューターにさらに多くのコアを搭載する方向に向かっています。純粋な技術革新とは別に、省エネなどの要素や、クロック速度、電力消費、および発熱に対する現実的な制限が、マルチコア システムに向かう流れを後押ししています。業界リーダーの中には、今後数年で 50 以上のコアを搭載したコンピューターが主流になると予想している人もいます。

このため、ユニークな問題が生じています。マルチコア革命が起きるまでは、コンピューターが速くなれば、アプリケーションも速くなることを意味していました。しかし、1 つのコアに縛り付けられるソフトウェア (現在のほとんどのソフトウェア) は、マルチコアという新しいアーキテクチャを利用できません。したがって、これからは、マルチコア アーキテクチャをターゲットにすることが重要になります。Visual Studio 2010 および .NET Framework 4 以前は、複数のコアを利用するコードを作成することは困難でした。この課題に対応するため、今回のリリースでは、開発者がマルチコア システムを利用しやすくなるようにランタイムが更新されています (新しい型、ライブラリ、およびツールも追加されています)。

.NET Framework 4 には、新しい Task Parallel Library (TPL)、新しい PLINQ 実行エンジン、およびいくつかの新しい Coordination Data Structures (CDS) の 3 つのコンポーネントを含む Parallel Extensions が付属しています。TPL には、2 つのプライマリ クラスがあります。1 つは System.Threading.Tasks.Parallel で、For メソッドと ForEach メソッドの並列バージョンなど、並列処理用の構造体を含んでいます。名前が示すように、PLINQ 実行エンジンは LINQ to Objects の並列処理バージョンで、LINQ の Enumerable クラスの代わりに ParallelEnumerable を提供します。完全に同じではありませんが、PLINQ の使用方法は、LINQ to Objects と同様です。最後の CDS には、並列シナリオを容易にする、一連のスレッドセーフのコレクションと同期プリミティブが含まれています。CDS には、スレッドセーフのコレクション (ConcurrentDictionary、ConcurrentQueue、ConcurrentStack など) および同期型 (SemaphoreSlim、SpinLock、SpinWait など) に当然含まれると予想されるおなじみのコレクションや型が含まれています。

Visual Studio 2010 では、[Parallel Stacks] (並列スタック) ウィンドウ、[Parallel Tasks] (並列タスク) ウィンドウ、および Concurrency Visualizer (同時実行ビジュアライザー) により、並列拡張機能のサポートを実現しています。これらのウィンドウはいずれも、さまざまなタスクの実行中のある時点での状態をより詳細に把握できるように設計されています。[Parallel Stacks] (並列スタック) ウィンドウは、複数のタスクが、それぞれの実行経路をどのように処理しているかを示し、各タスクの呼び出し履歴を表示します。これをタスクとして抽象化して表示することも、直接スレッドとして表示することもできます。図 4 は、タスクとして抽象化した表示を使用している、実行時の並列スタック ウィンドウです。

Figure 4 Parallel Stacks Window in Visual Studio 2010
図 4 Visual Studio 2010 の [Parallel Stacks] (並列スタック) ウィンドウ

[Parallel Tasks] (並列タスク) ウィンドウは、新しいタスクベースのプログラミング モデルをサポートすることを特に目的として導入されています。アプリケーションがブレーク モードの場合、このウィンドウを使用して、タスクの一覧、各タスクで現在実行中のメソッド、関連付けられているスレッド、アプリケーション ドメイン、タスク ID などの情報を確認できます。このウィンドウは単なる静的ビューではありません。特定のタスクをクリックすると、現在実行中のコードを表示して、そのタスクの状態を表示します。図 5 は、サンプル アプリケーションの状態を示しているようすを示しています。このウィンドウと [Parallel Stacks] (並列スタック) ウィンドウを併用することは、実行中のコードの状態ををすぐに確認できる手段として便利です。

Figure 5 Parallel Tasks Window in Visual Studio 2010
図 5 Visual Studio 2010 の [Parallel Tasks] (並列タスク) ウィンドウ

また、並列アプリケーションをさらに細かく分析できるように、新しい Concurrency Visualizer (同時実行ビジュアライザー) が Visual Studio 2010 には付属しています。このウィンドウは、前述の 2 つのウィンドウよりもはるかに複雑です。また、現時点では Web プロジェクトはサポートされていません。Concurrency Visualizer (同時実行ビジュアライザー) の目的は、マルチコアおよびマルチスレッド シナリオにおいて、アプリケーションと環境間の対話状態について詳細情報を提供することです。ここには次の 3 つのビューがあります。

  • [CPU Utilization] (CPU 使用率) ビューには、プロセッサの稼動状況が表示されます。
  • [Threads] (スレッド) ビューには、アプリケーションのスレッドの対話状態が表示されます。
  • [Cores] (コア) ビューには、スレッドのコア間の移動状態について特定の詳細情報を提供します。

Concurrency Visualizer (同時実行ビジュアライザー) は、Windows イベント トレーシングに依存しているため、Windows Vista 以降で実行される必要があります。基本のテキスト表示から完全なグラフィック表示までも含むこれらのビューによって、CPU 間の不適切な負荷分散、実行ボトルネック、競合などパフォーマンスを妨げる結果となるコード内の非効率箇所を発見できます。図 6 は、プロファイルされたアプリケーションのスレッド使用状況を表示している Concurrency Visualizer (同時実行ビジュアライザー) です。

Figure 6 The Concurrency Visualizer in Visual Studio 2010
図 6 Visual Studio 2010 の Concurrency Visualizer (同時実行ビジュアライザー)

Web 開発向けの更新点

上記の一般的な更新点と併せて、Visual Studio 2010 に移行する Web 開発者向けに、いくつか注目すべき機能強化が施されています。言うまでもないことですが、新しいモデル-ビュー-コントローラー (MVC) プログラミング モデル ツールが搭載されています。このツールについてはこの後説明します。また、クライアント側テクノロジ向けにもサーバー側テクノロジ向けにも、強化された Web 開発機能が提供されているほか、新しいワンクリック Web モデルも導入されています。しかし、まず ASP.NET AJAX および IDE 関連の新機能の紹介から始めましょう。

ASP.NET AJAX ツールは、Visual Studio 2008 の時点で Visual Studio に存在していました。しかし、サーバーを中心にしたテンプレートのために、一部の開発者には、クライアント側開発にはあまり役立たないと思われてしまいました。クライアント側機能は常に提供されていましたが、Visual Studio 
2010 では、ASP.NET AJAX のクライアント側機能とサーバー側機能の両方を明確に認識できる追加のサポートが含まれています。クライアント側のテンプレートおよびコントロールは、強化されたクライアント データ アクセス機能の利用を促進するもので、新機能のかなりの部分を占めています。ただし、jQuery の統合など、多数のその他の新機能も言及する価値があります。

Visual Studio 2010 および .NET Framework 4 以前は、ソフトウェア ダウンロードを使用し、Microsoft AJAX Library と Visual Studio を組み合わせる場合、ScriptManager を追加する時点でページにライブラリ全体を挿入していました。今回のリリースでは、Microsoft AJAX Library と AJAX Control Toolkit が統合されています。また、AJAX のライブラリのリファクタリングも実施され、全体を読み込むかまったく利用しないかしか選択できないのではなく、必要な部分のみを利用できるようにもなりました。モードを指定でき、Microsoft AJAX Library 全体を要求することも、まったく要求しないことも、特定の部分を要求することもできます。

動作のしくみ: 単純に ScriptManager タグに AjaxFrameworkMode 属性を含めます。この属性は、Disabled、Enabled、または Explicit に設定できます。

<asp:ScriptManager ... AjaxFrameworkMode="Disabled"/>

Disabled は、Microsoft AJAX Frameworks を読み込まないことを表します。Enabled は、以前のバージョンの既存の動作を実行することを表します (ライブラリ全体が読み込まれます)。Explicit では、読み込む Microsoft AJAX Library ファイルを指定できます。これは、実行時に、読み込まれたページで [ソースの表示] を使用して確認できます。

同様に、新しいコンテンツ配信ネットワーク (CDN) 属性を使用すると、最新バージョンのスクリプト ライブラリを使用できます。以前は、jQuery や Microsoft AJAX などのスクリプト ライブラリをプロジェクトに組み込むと、組み込まれたバージョンが、そのリリースで常に使用されるバージョンになりました。現在では、ソリューションに組み込まれてしまい、バージョンを変更できないことに悩まされるのではなく、最新バージョンを Web からダウンロードするように要求できます。

動作のしくみ: asp:ScriptManager タグに EnableCdn 属性を含め、これを "true" に設定します。

<asp:ScriptManager ... EnableCdn="true"/>

ASP.NET AJAX 4.0 では、純粋にクライアント側のテンプレートを定義することもできます。<ItemTemplate> というプレースホルダーを設定し、実行時の値を基に、JSON バインド オブジェクトとしてクライアントによって表示を処理します。開発者に代わってランタイムがインスタンスを作成するため、開発者はこれを機能させるために DOM コーディングを行う必要がありません。

ASP.NET AJAX 4.0 に追加された最も有用な機能の 1 つは、強化されたクライアント データ アクセスです。これは、新しい DataView コントロールとクライアント テンプレートを使用して、クライアントでの容易なアクセスと双方向のデータ バインドを提供します。このクライアント データ アクセスは、ASMX Web サービス、WCF サービス、WCF Data Services、MVC Controller、または JSON を返すものであればどのサービスでも利用できるように設計されています。また、これは完全にクライアント側のコードから処理されます。

DataView コントロールは、クライアント テンプレートをサポートするための主要コントロールです。ListView コントロールと同様に機能しますが、完全にクライアント コードに実装されます。DataView を使用するとクライアントにテンプレートを定義し、実行時にデータを取得して、レコードを表示をするときにレコードに書式を適用できます。

動作のしくみ: 非常に基本的なセットアップにより、テンプレートを設定できます。Northwind SQL データベースを基に Entity Data Model を作成し、これを変更せずにそのまま取得する通常の WCF Data Service を使用します。つまり、Employees テーブルに対してクエリを実行できるようになります。この下準備が整ったら、テンプレートとして使用するコントロールを選択して、ID 属性と class="sys-template" 属性を指定します。データ ビューを作成するときに、この ID が、バインド時に取得されるデータの宛先の指定に使用されます。バインドは手動で実行できますが、波かっこを使用して直接フィールド名をマークアップに埋め込む構文もあります。この構文は、データがフェッチされてこれにバインドされると、置き換えられます。この処理を実現できる構文は複数ありますが、この処理を実行するスクリプトとマークアップを記述する方法として読みやすい方法の 1 つは、波かっこを二重に使用する方法です (図 7 参照)。

図 7 DataView コントロールを使用して改良されたデータ アクセス

...
   <script type="text/javascript">
    Sys.require([Sys.components.dataView, 
                 Sys.components.adoNetServiceProxy], function () {
            
       var adoNetDataServiceProxy = 
         new Sys.Data.AdoNetServiceProxy('NWDataService.svc');
         
       Sys.create.dataView("#employeetemplate", {
         dataProvider: adoNetDataServiceProxy,
         fetchOperation: "Employees",
         autoFetch: true
            });
       });
    </script>
</head>
<body>
  <div id="employeetemplate" class="sys-template">
      <span>{{ FirstName }}</span><br/> 
  </div>
</body>

もう 1 つ ASP.NET AJAX について注目すべきことは、これまでよりもはるかに jQuery と密接に統合されるようになったことです。jQuery 開発者が ASP.NET AJAX のコントロールを利用できるようにするという目標のもと、すべての AJAX Control Toolkit のコントロールは、自動的に jQuery プラグインとして公開されるようになりました。つまり、jQuery 開発者は、自分の開発スタイルを変更する必要なく、これらのコントロールを使用できます。単純に、これらのコントロールを jQuery の拡張機能であると考えることもできます。

ASP.NET AJAX 以外の領域でも、ASP.NET のプログラミング機能には便利な機能強化がいくつか施されています。Web フォームでの URL ルーティングは、URL を検索エンジン最適化 (SEO) 対策にも有効で、人間にも読みやすい、すっきりと論理的な印象の URL にすることができます。global.asax ファイルでルートを定義できるため、要求を適切なリソースにマップできます。これは、SEO 評価を向上できるだけでなく、ページがユーザーにとって予想できるパスを辿ることができます (図 8 参照)。

図 8 Visual Studio 2010 の URL ルーティングの機能強化

New URL Routing Format:
    /CurrentPosition/Bob/Tester

Old URL Style:
    /CurrentPositions.aspx?name="Bob"&role="Tester"

スターター Web サイト、よりクリーンな HTML とサイズが小さくなった構成ファイルなど、他にも言及すべき多くの Web 関連の機能強化がありますが、ここではすべてを説明することはできないため、MVC ツールの追加機能を紹介します。

MVC の統合

MVC アーキテクチャ パターンは、境界の定義が適切で、コードが機能ごとに明確にまとめられている、メンテナンスとテストがきわめて容易な Web アプリケーションを作成する際によく利用される手法です。MVC は、ASP.NET Framework を最大限活用する ASP.NET プログラミング スタイルの 1 つです。これは、Web フォームの代わりに使用できますが、Web フォームに置き換わるものではなく、どちらのモデルも特定のシナリオとスキルにとっては非常に有効です。開発者は、Web アプリケーションのプログラミング モデルを選べるようになりました。MVC も Web フォームも ASP.NET が基盤であり、Visual Studio 2010 で完全にサポートされます。

MVC のバージョン 2 と関連ツールは、Visual Studio の前回のリリースから今回のリリースまでの間に開発されたもので、2 つのプロジェクト テンプレートによって Visual Studio 2010 IDE に統合されています (図 9 参照)。

Figure 9 MVC Project Templates in Visual Studio 2010
図 9 Visual Studio 2010 の MVC プロジェクト テンプレート

Visual Studio 2010 リリースでは、MVC プログラミング モデルへの機能強化が 3 つの主要機能に集中して施されています。まず 1 つは、懸案事項の分離の強化です。つまり、ビジネス ロジックの分離の基礎となる新しい RenderAction メソッドや、アプリケーションの機能を分けて "サブ アプリケーション" を作成できる Areas などを使用することで、メンテナンスしやすいコードを作成できます。機能強化の 2 つ目は、データ注釈や、クライアントへの検証ルールのバブルアップの強化により、検証をより的確に適用できるようになったことです。3 つ目は、ヘルパーの機能強化です。厳密に型指定されたヘルパーのほか、自動的にエンティティの UI を生成できるテンプレート化されたヘルパーが用意されています。

動作のしくみ: RenderAction は、複数のコントローラーの間でロジックを簡単に共有できるようにします。ビュー内から RenderAction メソッドを呼び出すには、次のスクリプトを使用します (このスクリプトは HRController 内で NewEmployee アクションを呼び出します)。

<%  Html.RenderAction("NewEmployee" "HRController"); %>

SharePoint の統合

Visual Studio 2010 でのまた別の重要なツール統合は、SharePoint Foundation (以前の Windows SharePoint Services) のテンプレートが追加されたことです。Visual Studio 2010 には、12 種類の SharePoint Foundation 用のテンプレートと、Visual Studio 2008 の Visual Studio Tools for Office アドインの SharePoint 2007 シーケンシャル ワークフロー テンプレートおよび SharePoint 2007 ステート マシンのワークフロー テンプレートが付属しています。これらのテンプレートを使用することで、生産性と柔軟な配置を中心に考えながら、SharePoint 開発のレベルを最高レベルに引き上げることができます。

SharePoint Foundation 自体は、拡張可能な簡潔なポータルというあり方から、ユーザー管理、基盤のリスト インフラストラクチャ、サイト モデルなどのコンポーネントを使用して、ゼロからアプリケーションを作成できるプラットフォームへと、基本の用途が変わりつつあります。データ アクセス、基幹業務アプリケーションの統合、およびワークフローの面で、大きな機能強化が施されています。また、より柔軟性の高い配置モデルも追加されています。多くの企業では、現在、多数の SharePoint をインストールしているため、必然的に、新しい SharePoint アプリケーションの一時的な配置についてより慎重な姿勢がとられています。新しい柔軟な配置モデルでは、SharePoint エコシステム全体に新規インストールを配置するのではなく、配置先を特定のグループに制限できます。

Visual Studio 2010 では、SharePoint アプリケーション作成用のツール オプションが大幅に機能強化されています。実際、このための強力な機能は既に存在していましたが、初期リリースではこの機能の使い方を習得するのはかなり困難でした。今回のリリースでは、SharePoint の優れたサポートがツールに直接組み込まれています。これには、包括的な統合デバッグ、柔軟な配置ツール、および Business Connectivity Services、ワークフロー、LINQ to SharePoint、Visual Web Parts (ビジュアル Web パーツ) の強化されたデザイン サポートが含まれます。また、SharePoint Designer ツールから Visual Studio 2010 へのアイテムのインポートも、より円滑に実行できるようになっています。

動作のしくみ: ビジュアル Web パーツの作成は、新しいデザイン サーフェイスを備えた Visual Studio 2010 では、かなり容易になっています。新しいプロジェクトを開始し、SharePoint またはビジュアル Web パーツを選択して作業を開始します (図 10 参照)。

Figure 10 SharePoint Visual Web Part Template in Visual Studio 2010
図 10 Visual Studio 2010 の SharePoint ビジュアル Web パーツ テンプレート

これには SharePoint が開発コンピューターにインストールされている必要があることに注意してください。ただし、SharePoint のインストールは以前ほど難しくありません。Windows Vista SP1 (以降) または Windows 7 を使用している場合、そのコンピューターに直接 SharePoint をインストールでき、Windows Server のインストールや、SharePoint のための VM の設定を気にかける必要はありません。

デバッグ用のソリューションのインストール先を Visual Studio 2010 に指示するためのダイアログ ボックスが表示されます。エディターが開かれたら、左下の [Design] (デザイン) タブをクリックし、コントロールをデザイン サーフェイスにドラッグ アンド ドロップするだけで、Web パーツの視覚的な作成を開始できます。ツールボックスが表示されていない場合は、ツールボックス ([表示] メニューの [ツールボックス]) を開かなければならないことに注意してください。

Windows 7 での開発

Windows 7 の人気が高まってきているため、新しいプラットフォームで提供されているリッチな機能を利用できるように、アプリケーションに機能を追加し始めてもよいでしょう。Windows 7 固有の機能を追加できる方法は多数あります。よく使用される新機能の 1 つは、新しいタスク バーです。タスク バーはユーザーの受け入れが早く、プログラミングが容易なことを考えると、Windows 7 を対象とするアプリケーションで採用する機能の候補として有力です。

タスク バーは、以前のバージョンの Windows のクイック起動タスク バーに置き換わるものです。タスク バーは Windows 7 画面の下部 (既定) に沿って配置されていて、タスク バーにはアプリケーションを "固定" できます。また、アプリケーションに、ジャンプ リスト (ドッキングされたアイコンを右クリックすることで取得できるクイック リンクのセット) や、タスクバーのプレビュー (アプリケーションのウィンドウで開かれているウィンドウの縮小表示) などの要素を組み込むことができます。タスク バーは、マネージ コード (Windows 7 API Code Pack を利用) でも、アンマネージ コードでも、容易にプログラミングでき、Windows 7 で稼働するアプリケーション開発を利用する開発者に非常に適しています。

動作のしくみ: スタート メニュー、エクスプローラー、またはタスク バー自体でアイコンを右クリックするだけで、アプリケーションをタスク バーに固定したり固定解除したりできます。アプリケーションを固定するには、アプリケーション (ドキュメントではなくアプリケーション自体) のアイコンを右クリックし、[タスク バーに表示する] をクリックします。タスクバーからアプリケーションを削除するには、同様に操作しますが、[タスク バーにこのプログラムを表示しない] をクリックします。

タスク バーは、外観的にも機能的にもアプリケーションの質を高めることができます。どのようなプログラムでも、実行中かどうかにかかわらず、タスク バーに固定できます。固定されたアイコンは、アプリケーションを起動するか、最小化ウィンドウを表示する働きをします。タスク バーのアイコンにカーソルを重ねると、アプリケーションが実行中の場合、ホット トラックと呼ばれる便利な視覚効果が得られます。ホット トラックは、アイコンの主要な色を特定し、その色を使用してアイコンを強調表示します。もちろん、アプリケーションの実行中のインスタンスのプレビューも、固定されているアイコンのすぐ上に表示されます。

タスク バーには、Aero プレビューと呼ばれる機能もあります。この機能を確認するには、ウィンドウのプレビュー表示にカーソルを重ねます。重ねると、選択したプレビューのウィンドウが最前面に表示され、その他のウィンドウは透明になります。これは、選択を切り替えることも、何かキーを押すこともなく、隠れているか最小化されているウィンドウをすばやく確認できる非常に便利な機能です。

アプリケーションの追跡については、実行中のアプリケーションのインスタンスにアプリケーション ID が割り当てられ、タスク バーの各アプリケーション アイコンと対応付けられます。開発者は、TaskbarManager クラスと JumpList クラスを使用して、アプリケーションからプログラムを使ってタスク バーとやり取りできます。これらのクラスを使用するには、無料の Windows 7 API Code Pack のアセンブリを code.msdn.microsoft.com/WindowsAPICodePack (英語) からダウンロードし、参照する必要があります。

このコード パックは、Windows SDK チームによって作成されたもので、プログラムからタスク バーの操作を可能にします。また、Windows 7 の機能強化を含むサンプル アプリケーションもいくつか付属しています。実際には、コード内のコンパイル済みのアセンブリ (この例では、Taskbar プロジェクトを参照) への参照を設定します。

また、あるアプリケーションの複数のインスタンスに、同じアプリケーション ID を割り当てることも、一意のアプリケーションを割り当てることもできるため、タスクバー上で複数のインスタンスをまとめることも、分離することもできます。アプリケーションの各インスタンスに一意の ID を割り当てるには、Application.Run を呼び出す前に、アプリケーション ID を設定する必要があります。単に子ウィンドウごとに専用のアイコンをタスクバーに表示する場合は、いつでもアイコンのアプリケーション ID を変更できます。

動作のしくみ: 各子ウィンドウ専用のアイコンをタスク バーに表示するには、JumpList クラスを使用して、CreateJumpListForIndividualWindow 静的メソッドを呼び出し、子ウィンドウのアプリケーション ID とウィンドウのハンドルを渡します。コードは次のようになります。

childWindowJumpList = JumpList.CreateJumpListForIndividualWindow(
childWindowApplicationId, this.Handle);

Windows Azure の統合

クラウド コンピューティングは、従来の社内および Web ホスティング アーキテクチャ ソリューションに代わり得るものとして、急速に注目を集めてきています。簡単に説明すると、クラウド コンピューティングは、ソフトウェア ソリューションの一部 (またはすべて) を選び、そのすべてを巨大なデータセンターでホストするように任意の企業に依頼するという考えで、必要に応じて規模を調整できるほか、高い信頼性も得られます。Windows Azure Platform は、マイクロソフトのクラウド コンピューティングおよびサービス プラットフォームです。Windows Azure Platform は、Windows Azure、SQL Azure、および Windows Azure Platform AppFabric の 3 種類のサービスで構成されています。

Windows Azure は、アプリケーションをホストするための環境で、クラウドにおける OS と見なすことができます。SQL Azure は、基本的にクラウドにおけるデータベースです。Windows Azure AppFabric は、クラウドにホストされるアプリケーションが使用する共通のビルド ブロックのセットです。Windows Azure AppFabric には、現在、Access Control Service (フェデレーション認証とクレームベースの承認用) と 
Service Bus (クラウド内のソリューションと社内ソリューション間の接続用) の 2 種類のサービスが含まれています。

Visual Studio 2010 には、Windows Azure Platform ソリューションを作成するための、複数のプロジェクト テンプレートが付属しています。VB.NET でも C# でも、Web ロール用に 4 種類のテンプレートと、Worker ロール用に 1 つのテンプレートが用意されています。また、F# 用の Worker ロール プロジェクト テンプレートもあります。VB.NET と C# の Web ロール テンプレートとしては、ASP.NET、MVC with ASP.NET、WCF サービス、および CGI 用のテンプレートが 1 つずつ用意されています。

Visual Studio 2010 での Windows Azure Platform プロジェクトの操作固有の特徴の 1 つは、プロジェクトを作成するときにプロジェクトに複数のロールを選択できることです。たとえば、C# の ASP.NET MVC Web ロールと VB.NET の Worker ロールを設定した新規プロジェクトを作成できます。[新規作成] の [プロジェクト] の動作が、クラウド アプリケーションの場合わずかに異なっているのは、このためです。クラウド アプリケーションの場合は、他のほとんどのプロジェクト テンプレートで使用されている単一選択のコントロールではなく、ダイアログ ボックスからロールを選択します。

動作のしくみ: Visual Studio 2010 で Windows Azure Platform を対象とするプロジェクトを作成するには、[インストールされたテンプレート] の一覧から [クラウド] を選択します (図 11 参照)。

Figure 11 Selecting a Cloud Project Type in Visual Studio 2010
図 11 Visual Studio 2010 でのクラウド プロジェクトの種類の選択

目的のロールを選択できるダイアログ ボックスが表示されます。各ロールには、異なる種類や言語を設定することができます。図 12 は、ASP.NET MVC Web ロールが 1 つ、VB.NET Worker ロールが 2 つ、および F# Worker ロールが 1 つ選択されている、新しい Windows Azure クラウド サービス プロジェクトを示しています。

Figure 12 Setting up a Cloud Service Project with Multiple Roles and Languages
図 12 複数のロールと言語をサポートするクラウド サービス プロジェクトの設定

複数バージョン対応

複数バージョン対応自体は、実際には Visual Studio 2010 の新機能ではありませんが、確認する価値がある新しい拡張機能があります。複数バージョン対応のメリットと、複数バージョン対応を Visual Studio 2010 で利用して、以前のバージョンの .NET Framework で稼働するソリューションを作成できることに気が付いていない方が多いのは少し意外です。複数バージョン対応は、最新のツール (およびその高度なデバッグ機能と強化されたエディター機能) を利用しながらも、コード (または、場合によりユーザー) を今すぐに .NET Framework 4 に移行する準備ができていない開発チーム向けの機能です。複数バージョン対応を使用すると、.NET Framework のバージョン 2.0、3.0、3.5、または 4 を対象にアプリケーションを作成できます。

動作のしくみ: 新しいプロジェクトを開始するときに、ドロップダウン リストから対象とするフレームワークを選択するだけです (図 13 参照)。

Figure 13 Selecting a Target Framework Version Via Multi-Targeting
図 13 複数バージョン対応による対象フレームワークのバージョンの選択

[<その他の Framework>] という新しいオプション (図 13 の楕円で囲まれたドロップ ダウン ボックスの最後のエントリ) を使用すると、サポートされる対象フレームワークを拡張できます。このため、.NET Framework の将来のバージョンを追加でき、さらに将来はその他の .NET Framework プロファイルも追加できる可能性があります。このような追加機能はおそらく MSI を使用してインストールされますが、最終的には、XML 記述ファイルを使用するか、フレームワークのアセンブリを直接コンピューターにコピーすることで、手動で追加できるようになるでしょう。

その他

Visual Studio 2010 には、他にも、この記事ではとうてい取り上げられないほど多くの新機能があります。カスタマイズ可能な開始ページも、企業に独自のリソースを関連付けることができる格好の機会を提供するもので、見逃せません。さらに、C++/ANSI の更新、継続的に更新されているヘルプ、新しい F# プログラミング言語、Entity Framework の機能強化、コードの視覚化など、知るに値する新機能が他にも多数あります。これらの機能は、この業界が現在期待しているソフトウェアを提供できる魅力的な開発ツールとして、Visual Studio 2010 の位置付けをさらに確かなものとしています。これで、Visual Studio 2010 の提供機能について少しでも理解を深めていただけたらさいわいです。Visual Studio 2010 を試用される場合は、microsoft.com/vstudio から評価版をダウンロードしてください。

Doug Turnure は、マイクロソフトの Visual Studio チームのプログラム マネージャーで、主に顧客のフィードバックや製品導入を担当しています。これまでのキャリアでは、開発者、執筆者、トレーナー、Twitter 利用者、マーケッターを経験し、ときにはカンファレンスで発表者を務めることもありました。長年、シアトルには移住しないと宣誓していましたが、現在は、そこでの生活を楽しんでいます。

この記事のレビューに協力してくれた技術スタッフの Miguel Castro、Mark Dunn、および Jim Wooley に心より感謝いたします。