Azure SDK 2.5

Azure SDK 2.5 for .NET と Visual Studio 2015 の概要

Mohit Srivastava
Saurabh Bhatia

Azure SDK for .NET を利用すると、.NET ベースのクラウド アプリケーションでの Microsoft Azure リソースの使用が容易になります。さらに、Visual Studio がクラウド開発エクスペリエンスに統合されます。Visual Studio から直接クラウド リソースを表示および管理できるだけでなく、クラウド サービスをプロジェクトに追加したり IDE からクラウドに公開したりすることができます。

この記事では、Azure SDK 2.5 for .NET の新機能をいくつか簡単に紹介します。ここで紹介している機能の多くは Visual Studio 2012 と Visual Studio 2013 をサポートしていますが、該当箇所に明記しているとおり、Visual Studio 2015 Preview のみに対応している機能もあります。

この記事の流れを以下に示します。典型的な開発ワークフローを追いながら、Azure SDK 2.5 の新機能を取り上げていきます。

  • Visual Studio と Azure にサインインする
  • クラウド プロジェクトを作成する
  • Azure Storage、WebJobs、シングル サインオンなどのクラウド サービスと機能を追加する
  • 診断とコード分析を有効にする

Visual Studio と Azure にサインインする

Visual Studio を起動すると、Microsoft アカウントにサインインするよう求められます。Visual Studio 2015 Preview では、アカウントが Azure サブスクリプションにも関連付けられている場合、自動的に Azure にサインインします。Azure リソースを表示するには、[表示] メニューの [サーバー エクスプローラー] をクリックします。

Visual Studio 2015 Preview では、一度に複数のアカウントにサインインできます。たとえば、MSDN サブスクリプションに関連付けられている Microsoft アカウントに加えて、勤務先の組織アカウントを持っている方もいるでしょう。サーバー エクスプローラーには、すべてのアカウントのリソースが表示されます。

アカウントを追加するには、サーバー エクスプローラーの [Azure] ノードを右クリックして [サブスクリプションの管理] をクリックします。これにより、Visual Studio に追加したアカウントを表示するダイアログ ボックスが表示されます。新しいアカウントを追加するには、[アカウントの追加] をクリックします。サーバー エクスプローラーに表示する Azure リソースを指定する場合は、[Microsoft Azure サブスクリプションの管理] ダイアログ ボックスで、アカウント、サブスクリプション、リージョン、証明書のチェック ボックスをオンまたはオフにします。

もう 1 つの便利な機能強化として、証明書をインポートしなくても、サーバー エクスプローラーに SQL データベースを表示できるようになりました。Azure アカウントにサインインするだけで、サーバー エクスプローラーに SQL データベースが表示されます (この機能は Visual Studio 2013 Update 4 でも利用できます)。

QuickStart テンプレート

新機能の QuickStart テンプレートを使用すれば、Azure をすぐに使い始めることができます。QuickStart テンプレートに付属しているサンプル コードを利用すると、Azure SDK などのライブラリを使用して Azure サービスを操作する方法がわかります。QuickStart テンプレートを表示するには、[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。次に、[Visual C#] ノードで [Cloud] (クラウド) をクリックして、[QuickStarts] をクリックします。

最新リリースには、Azure Storage (BLOB、テーブル、キュー)、DocumentDB、Azure Redis Cache サービス、Azure Media Services、Azure WebJobs、および Service Bus (トピックとキュー) 用の QuickStart テンプレートが用意されています。また、Microsoft Azure Management Libraries (MAML) を使用して Azure リソースをプログラムで管理する方法を示す、QuickStart テンプレートもあります。

リソース グループとクラウド配置プロジェクトを作成する

一般的なクラウド アプリケーションでは、複数の Azure リソースを使用する場合があります。たとえば、Azure Websites でホストされるアプリケーションでは、リレーショナル データには SQL データベースを、BLOB やキューには Azure Storage を、低待機時間のデータ アクセスには Azure Redis Cache を使用します。

リソース グループは、すべてのリソースを論理グループとして管理する手段です。Azure SDK 2.5 では、新しく追加されたクラウド配置プロジェクト テンプレートを使用して、リソース グループ内のリソース一式を作成および配置できます。現時点では、以下のシナリオ用のテンプレートが用意されています。

  • Azure Web サイト
  • Azure Web サイト + SQL
  • Azure Web サイト + SQL + Redis Cache

今後のリリースでは、ネットワーク、ストレージ、仮想マシンなど、他の Azure 機能を使用するアプリケーション シナリオに対応したテンプレートが追加される予定です。ビルドするソリューションに最も近いテンプレートを選択してください。

テンプレートの使い方の例を説明しましょう。まず、Visual Studio で [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。次に、[Visual C#] ノードで [Cloud] (クラウド) をクリックして、[クラウド配置プロジェクト] をクリックします。プロジェクトに MyAzureCloudApp という名前を付け、[OK] をクリックします。一般的な Azure ギャラリーのテンプレートの一覧が表示されるので、いずれかのテンプレートを選択します (図 1 参照)。

Azure ギャラリーのテンプレート
図 1 Azure ギャラリーのテンプレート

たとえば、Azure Web サイト テンプレートを選択して、プロジェクトに MyAzureCloudApp という名前を付けます。テンプレートを選択すると、ASP.NET のプロジェクトの種類 (Web フォーム、MVC、Web API など) を選択するよう求められます。Visual Studio によって、以下の 2 つのプロジェクトが含まれるソリューションが作成されます。

  • MyAzureCloudApp: ASP.NET アプリケーション
  • MyAzureCloudApp.Deployment: 配置プロジェクト

配置プロジェクト (図 2 参照) には、以下のファイルが含まれています。

  • WebSiteDeploy.json: 配置テンプレート
  • WebSiteDeploy.param.dev.json: テンプレート パラメーター
  • Publish-AzureResourceGroup.ps1: Azure へのリソースの配置に使用できる Windows PowerShell スクリプト

配置プロジェクトのファイル
図 2 配置プロジェクトのファイル

配置テンプレート (WebSiteDeploy.json) とパラメーター ファイル (WebSiteDeploy.param.dev.json) を組み合わせて、リソースの配置とプロビジョニングの詳細を指定します。

Visual Studio から Azure にリソースを配置するのは簡単です。ソリューション エクスプローラーで配置プロジェクトを右クリックして、[配置] をポイントし、[新しい配置] をクリックします。次に、[新しい配置] ダイアログ ボックスで [リソース グループ] をクリックします。[リソース グループに配置する] ダイアログ ボックスが表示されます。

新しいリソース グループを作成するには、[リソース グループ] ボックスをクリックして、[Create New] (新規作成) をクリックします。リソース グループに名前を付け、リージョンを選択し、[Create] (作成) をクリックします。[Create] (作成) をクリックすると Azure リソース グループがプロビジョニングされますが、いずれの Azure リソースもまだ稼働しません (配置すると稼働します)。

次に、[パラメーターの編集] をクリックして、Web サイト名、Web ホスティング プラン、Web サイトの場所など、配置テンプレートのパラメーターを編集します。必須の値を入力していない場合は、赤い警告アイコンが表示されます。[Save] (保存) をクリックすると、パラメーター値が WebSiteDeploy.param.dev.json ファイルに保存されます。2 回目以降の配置でこの情報を再入力する必要はありません。ローカルの JSON をカスタマイズして保存できるため、リソースを再配置するときに失敗する可能性が低くなります。

すべてのパラメーターを指定したら、[配置] をクリックして、リソースをプロビジョニングし、アプリケーションを配置します。Visual Studio の [出力] ウィンドウには、詳しい進行状況が表示されます。新しい Azure 管理ポータルにも、リソース グループと配置済みのリソースが表示されます。

配置テンプレートとパラメーター ファイルにより、クラウドのライフサイクルのパターンに合わせた作業と、コードとしての構成の取り扱いが容易になります。たとえば、*.test.json や *.staging.json などの複数のパラメーター ファイルを作成すると、テストやステージングなどを目的とした複数の環境に 1 つのテンプレートを配置できます。Visual Studio には JSON エディターが組み込まれているだけでなく、発行された JSON スキーマに基づく IntelliSense も搭載されているので、簡単に JSON ファイルを編集できます。

エンタープライズ シングル サインオン

ビジネス アプリケーションに関する一般的な作業の 1 つは、Azure Active Directory を使用したエンタープライズ シングル サインオン (SSO) に対応するようアプリケーションを構成することです。Visual Studio 2015 では、開発中の任意の時点でこのような作業を簡単に実行できます。まず、ソリューション エクスプローラーでプロジェクトを右クリックして、[Azure AD 認証を構成する] をクリックします。

このようにすると、アプリケーションが Active Directory と連携するよう構成するためのガイドを示すウィザードが表示されます。ウィザードで Active Directory ドメインを指定すると、アプリケーションがその Active Directory に登録され、サインインを要求するよう構成されます。開発環境やテスト環境で利用を開始する場合は、アプリケーションをドメインで登録することをお勧めします。アプリケーションの構成ファイルを容易に再構成して、アプリケーションのライフサイクルで次の段階の環境に移行するときに別のドメインを使用するよう指定できます。この機能の詳細については、Azure Active Directory の概要に関するビデオ (bit.ly/1xCRpoc、英語) を参照してください。

接続済みサービスを追加する

Visual Studio 2015 では、クラウド アプリケーションの作成後に、追加のクラウド サービス (Azure Storage、Azure Mobile Services、Office 365、または Salesforce) をそのアプリケーションに簡単に組み込むことができるようになりました。

ASP.NET アプリケーションを Azure Storage アカウントに接続する方法を説明しましょう。ソリューション エクスプローラーで Web アプリケーション プロジェクトを展開します。[参照設定] ノードを右クリックして、[接続済みサービスの追加] をクリックします。サービスの一覧から [Azure Storage] を選択して、[構成] をクリックします。

これにより、既存のストレージ アカウントの一覧が表示されます。いずれかのアカウントを選択するか、新しいアカウントをプロビジョニングします。そのストレージ アカウントにアプリケーションから接続するには、[追加] をクリックします。これにより、最新の NuGet パッケージを使用した Azure Storage の参照が追加され、選択したストレージ アカウントの接続文字列が web.config に追加されます。また、Azure Storage を使い始めるのに役立つ概要ページも表示されます。このページを再表示するには、ソリューション エクスプローラーで GettingStarted.html ファイルを右クリックし、[View in Browser] (ブラウザーで表示) をクリックします。

ストレージ エクスプローラーの BLOB フォルダー

BLOB ストレージは、クラウド用の永続的なファイル ストレージです。BLOB には、ドキュメント、メディア ファイル、アプリケーション インストーラーなど、あらゆる種類のテキスト データやバイナリ データが該当します。BLOB を論理単位でグループ化する方法の 1 つが、BLOB フォルダーです。BLOB フォルダーは、1 つの BLOB コンテナーにすべての情報を保存する場合に特に便利です。実装の面から言うと、BLOB フォルダーは / で区切った BLOB 名のプレフィックスにすぎません。たとえば、file.png という名前の BLOB が pictures という名前のフォルダー内にある場合、その BLOB の URL は以下の形式になります。

https://<ストレージ アカウント名>.blob.core.windows.net/<BLOB コンテナー名>/pictures/file.png

今回のリリースから、Visual Studio で直接 BLOB フォルダーを作成したり、BLOB フォルダーの内容どうしの間を移動したりすることができるようになりました。

そのためには、サーバー エクスプローラーで [ストレージ] ノードを展開します。このノードの下にストレージ アカウントが表示されます。[<ストレージ アカウント>]、[BLOB]、[<コンテナー名>] を順にクリックします。コンテナー名を右クリックして、[BLOB コンテナーの表示] をクリックします。サーバー エクスプローラーから新しいコンテナーを作成することもできます。

フォルダーから別のフォルダーに移動するには、フォルダーをダブルクリックして内部を表示するか、上矢印を使用して上位のフォルダーに移動します。[BLOB のアップロード] ボタンを使用して BLOB を Azure Storage にアップロードするときには、新しいフォルダーを作成することができます。

WebJobs

Azure WebJobs を使用すると、Azure Web サイトで簡単にスクリプトやプログラムをバックグラウンド プロセスとして実行できます。.cmd、.bat、.exe (.NET)、.ps1、.sh、.php、.py、.js、.jar などの実行可能ファイルをアップロードして実行することができます。これらのプログラムは、スケジュールに従って (cron)、または継続的に、WebJobs として実行されます。現在 Azure WebJobs と WebJobs SDK は一般に提供されています。WebJobs の詳細については、azure.microsoft.com/documentation/articles/websites-webjobs-resources/ を参照してください。

既存の Web アプリケーションに Web ジョブ プロジェクトを追加することもできます。ソリューション エクスプローラーで Web アプリケーション プロジェクトを右クリックして、[追加] をポイントし、[New Azure WebJob Project] (新しい Azure Web ジョブ プロジェクト) をクリックします。図 3 のように、継続的、固定スケジュール、オンデマンドのいずれで Web ジョブを実行するかを選択できます。スケジュール設定された Web ジョブについては、開始日時、終了日時、および頻度を選択します。

プロジェクトへの Azure WebJobs の追加
図 3 プロジェクトへの Azure WebJobs の追加

オンデマンドまたはスケジュール設定されたジョブの Program.cs ファイルには、Web ジョブを明示的に実行するための以下のコードが含まれています。

static void Main()
{
  var host = new JobHost();
  host.Call(typeof(Functions).GetMethod("ManualTrigger"), 
    new { value = 20 });
}

継続的な Web ジョブの場合は Program.cs ファイルが異なっています。以下のように、Web ジョブのホストを開始してその終了をブロックするための呼び出しが含まれています。

static void Main()
{
  var host = new JobHost();
  // The following code ensures the WebJob will be running continuously
  host.RunAndBlock();
}

WebJobs プロジェクトの作成と配置の詳細については、azure.microsoft.com/documentation/articles/websites-dotnet-deploy-webjobs を参照してください。

Azure SDK 2.5 では、Web ジョブがサーバー エクスプローラーに表示されるようになりました。Web ジョブは、配置先 Azure Web サイトの下に一覧表示され、実行モード (継続的、オンデマンド、スケジュール設定) ごとにグループ化されます。サーバー エクスプローラーで Web ジョブを右クリックすると、その Web ジョブのダッシュボードが開きます。また、オンデマンドのジョブを実行や、継続的なジョブの停止と開始も可能です。

継続的な Web ジョブでは、リモート デバッグがサポートされるようになりました。継続的な Web ジョブを開始すると、クラウドで実行中の Web ジョブに Visual Studio デバッガーをアタッチできます。デバッガーをアタッチするには、サーバー エクスプローラーで Web ジョブを右クリックして、[Attach Debugger] (デバッガーのアタッチ) をクリックします。ブレークポイントを設定してデバッガーをアタッチすると、Visual Studio でローカルに実行している場合と同様にコードをステップ スルーすることができます。

HDInsight

Azure SDK 2.5 では、サーバー エクスプローラーに新しいツールが追加されました。このツールを使用すると、HDInsight でホストしている Hadoop サービスを使用したり、データセットのクエリに Hive を使用したりすることで、ビッグ データを操作する際の生産性が上がります。

他の Azure サービスと同じように、サブスクリプションの HDInsight リソースを参照して、一般的な開発作業やテスト作業を行うことができます。サーバー エクスプローラーを使用して、Hive テーブルの表示、スキーマの検証、さらにはテーブルの最初の 100 行に対するクエリも実行できます。このような機能は、操作中のデータの全容を把握するのに役立ちます。

また、Hive クエリを作成してジョブとして送信するためのツールもあります。Hadoop クラスターのコンテキスト メニューを使用すれば、すぐに Hive クエリ スクリプトの記述を開始できます。このジョブ ブラウザー ツールでは、ジョブの送信と状態を確認することができます。任意のジョブをダブルクリックすると、[Hive Job Summary] (Hive ジョブの概要) ウィンドウに概要と詳細が表示されます。図 4 の例では、地理情報に関するクエリをテーブルに対して発行し、国の総数を特定して、国別に並べ替えています。

Visual Studio のサーバー エクスプローラーにおける Hive ジョブの表示
図 4 Visual Studio のサーバー エクスプローラーにおける Hive ジョブの表示

HDInsight で使用されているバッキング BLOB ストレージは、サーバー エクスプローラーに一覧表示されます。任意の BLOB コンテナーに移動して開き、コンテナー内のファイルを操作することができます。Azure ダッシュボードで Hadoop クラスターを作成するときには、バッキング ストアが Hadoop クラスターと関連付けられます。Hadoop クラスターは、引き続き同じ Azure ダッシュボード内で管理できます。

より複雑なスクリプトの作成やライフサイクル管理を行う場合も、Visual Studio で Hive プロジェクトを作成できます。[新しいプロジェクト] ダイアログ ボックスには、[HDInsight] テンプレート カテゴリが表示されるようになりました。[Hive Sample] をお試しいただくと、わかりやすいと思います。このプロジェクトには、Web サーバー ログを処理するためのより複雑な Hive クエリとサンプル データがあらかじめ用意されています。

Cloud Services と Virtual Machines 用の強化された診断ログ

Azure SDK 2.5 では、Azure Cloud Services Platform as a Service (PaaS) と Azure Virtual Machines Infrastructure as a Service (IaaS) の両方における診断ログが強化されました。

たとえば、Windows イベント トレーシング (ETW) イベント ソースを使用すると、構造化されたセマンティックなログ記録が可能です。また、ETW イベント ソースとイベント ID を使用して、アプリケーション ワークフローのイベントやステージを論理的に定義できます。イベントやステージを定義すると、イベント追跡を多層化できるため、アプリケーション ワークフローで発生した問題を診断しやすくなります。また、クラッシュ ダンプも収集できます。既定では、クラウド ロールで特に一般的なプロセスがクラッシュ ダンプのコレクションとしてあらかじめ選択されています。クラウド サービスが発行された後に、実行中のサービスの診断構成を更新できるのは非常に便利です。

Microsoft Code Analysis for Azure Preview

コードを記述しながらコードの問題を発見できたら便利だと思いませんか。コンパイル エラーだけでなく、コーディングの微妙な問題も発見できたらどうでしょう。

Visual Studio 2015 Preview の .NET Compiler Platform には、コードの記述時にリアルタイムでコードの問題を検出する、新しいコード分析機能が搭載されています。Azure チームはこの機能を活用して、Azure 用のコード分析ルールをまとめ上げました。これらのルールは、コードの問題を特定し、可能な場合は自動的に修正案を提示します。こうしたルールは "Microsoft Code Analysis for Azure" NuGet パッケージを通じて入手できます。

パッケージをインストールするには、ソリューションを右クリックして [NuGet パッケージの管理] をクリックします。必ず [Include Prerelease] (プレリリース版を含む) チェック ボックスをオンにした状態で、Azure Code Analysis を検索します。

検索結果に、Microsoft.VisualStudio.Azure.CodeAnalysis パッケージが表示されます。ソリューションのプロジェクトを選択して [Install] (インストール) をクリックすると、該当するプロジェクトのコード分析が有効になります。プロジェクトに分析機能を追加すると、コード分析が常に実行されます。ソリューション全体でコード分析を実行するには、ソリューションをビルドします。ソース ファイルの編集時、コード分析機能の警告やエラーは、すべて自動的にエラー リストに表示されます。

コード作成時、エラーがある行には赤い下線が、警告がある行には緑の下線が表示されます。下線が引かれたコードをポイントすると詳細が表示されます。問題の隣に表示される電球アイコンをクリックすると、修正に関するその他の詳細が表示されます。たとえば図 5 は、Worker ロールの Run メソッドを async として宣言している問題を示しています。この状況は、Worker ロールでなんらかの非同期操作を実行する場合には一般的ですが、Run メソッドそのものを async として宣言すると、無限ループでロールが再起動されます。コード分析機能によってこのような問題が検出され、Run メソッドをリファクタリングして async 操作を別のメソッドに移動するという修正案が自動的に表示されます。

コード分析機能とコード修正案
図 5 コード分析機能とコード修正案

コードの問題がすべて自動修正されるわけではありません。自動的な修正案が表示されない場合は、電球メニューに、問題の解決方法を説明するドキュメントが示されます。

NuGet パッケージで提供されるコード分析ルールは、新しい .NET コンパイラのコード分析機能の紹介を目的として設計されたルールの最初のセットにすぎません。Azure チームは、フィードバックを参考にしながら、ルールを徐々に拡充する予定です。

まとめ

図 6 に、Azure SDK 2.5 for .NET の新機能をまとめます。Azure SDK 2.5 と Visual Studio 2015 Preview を使用すると、かつてないほど簡単に、リッチなクラウド アプリケーション開発を開始できます。

図 6 Azure SDK 2.5 for .NET Framework の新機能のまとめ

機能 Visual Studio 2015 Preview Visual Studio 2013/2012
複数の Azure アカウントへの Visual Studio の接続 x  
QuickStart テンプレート x x
クラウド配置プロジェクト x x (Visual Studio 2013 のみ)
[接続済みサービスの追加] ダイアログ ボックス x  
ストレージ エクスプローラーの BLOB フォルダー x x
WebJobs: サーバー エクスプローラーのサポートとリモート デバッグ x x
HDInsight: サーバー エクスプローラーと Hive クエリのサポート x x
エンタープライズ シングル サインオン (SSO) の構成 x  
診断の強化 x x
Code Analysis for Azure Preview x  

まだ Azure アカウントをお持ちでない方は、無料評価版に登録すれば、この記事で紹介したすべての機能を使えるようになります。SDK を使い始める方法には、以下の 2 とおりがあります。

  • SDK のローカル インストール: Azure .NET デベロッパー センター (azure.microsoft.com/develop/net) からダウンロードします。
  • Azure の VM イメージ: Azure SDK 2.5 を最も手軽に使い始めるには、Azure Virtual Machines ギャラリーを使用します。Visual Studio 2015 Preview または Visual Studio Community 2013 のイメージと Azure SDK 2.5 がインストールされている VM を作成できます。どちらのイメージも、Azure の全ユーザーが入手できます。MSDN サブスクリプション会員の方は、Windows 8.1 と Windows Server 2012 にインストールされている Visual Studio 2013 イメージも利用できます。このイメージは、Visual Studio 2013 Update 4 と Azure SDK 2.5 に更新されています。

SDK を使用してアプリケーションを開発する方法の詳細については、NET デベロッパー センター (azure.microsoft.com/develop/net) を参照してください。


Saurabh Bhatia は、マイクロソフトのプログラム マネージャーとして、Visual Studio Azure ツールに携わっています。以前は、Office 365 API の開発者向けツールや、Office 用および SharePoint 用アプリに取り組んでいました。連絡先は saurabh@microsoft.com (英語のみ) です。

Mohit Srivastava は、マイクロソフトのリード プログラム マネージャーとして、Azure 開発者や Web 開発者向けのツールとサービスに携わっています。以前は、中核的な Azure および Windows サービス担当として "下層" に携わると同時に、ミニブログに関するベンチャー企業の共同創設者として "上層" でも活動していました。連絡先は mohisri@microsoft.com (英語のみ) です。

この記事のレビューに協力してくれたマイクロソフト技術スタッフの Brady Gaster と Michael Wasson に心より感謝いたします。
Brady Gaster は、Azure SDK および Visual Studio Web Tools 拡張機能チームでプログラム マネージャーを務めています。Brady のチームは、開発者がコマンド ライン、マネージ コード、および Visual Studio から簡単にクラウドに参入できるようにする、クライアント ライブラリとコマンド ラインのエクスペリエンスを開発しています。Brady は Scala などの JVM 言語の勉強中で、小型ロボットやハードウェアの試作型を構築しながら .NET Micro Framework もいじっています。また、趣味で音楽も楽しんでいます。連絡先は bradyg@microsoft.com (英語のみ) です。または、Twitter (@bradygaster、英語) で彼をフォローしてください。

Mike Wasson は、マイクロソフトのプログラマ兼ライターです。長年の間、Win32 マルチメディア API のドキュメントを作成してきました。現在は、ASP.NET と Microsoft Azure に関する記事を執筆しています。連絡先は mwasson@microsoft.com (英語のみ) です。