Visual Studio 2013 Update 3 および Azure SDK 2.4 のリリースを発表
このポストは、8 月 4 日に投稿した Announcing release of Visual Studio 2013 Update 3 and Azure SDK 2.4 の翻訳です。
マイクロソフトはこのたび Visual Studio 2013 Update 3 と Azure SDK 2.4 for .NET のリリースを発表しました。この記事では、これらのリリースに含まれる新しい Azure 開発用ツールの使用方法についてご紹介します。
Visual Studio Update 3 [ダウンロードする (英語)]
- WebSites: コンソールまたは Web プロジェクトから WebJobs を発行。
- Mobile Services: Mobile Services プロジェクト作成時にクラウドで開発/テスト環境を作成。.NET Mobile Services でプッシュ通知ウィザードを使用。
- Notification Hubs: デバイス登録の表示と管理。
Azure SDK 2.4 for .NET [VS 2013 向けをダウンロードする (英語) | VS 2012 向けをダウンロードする (英語)]
さらに、Azure SDK 2.4 for .NET をインストールすると以下の機能を使用できるようになります。
- Virtual Machines: 32 ビット版 Virtual Machines のリモート デバッグ。Virtual Machines の構成 (マルウェア対策、Puppet、Chef、カスタム スクリプトといった動的な拡張機能のインストールと構成を含む)。Virtual Machines のディスク状態のスナップショットを作成。
- Storage: Storage アクティビティ ログを診断に利用。Visual Studio から読み取りアクセス地理冗長ストレージをプロビジョニング。
- Cloud Services: Emulator Express が新規プロジェクトの既定のオプションに追加 (Full Emulator は非推奨)。サービス モデルの新しいネットワーク機能の構成。
他にも、Azure PowerShell の更新プログラムをいくつか発表しました。Azure PowerShell 0.8.6 (英語) もその 1 つです。新機能の詳細については changelog (英語) を確認してください。
WebSites: コンソール プロジェクトから WebJobs を発行する
今年の 1 月にリリースした WebJob という機能を使用すると、バックグラウンド コード (プログラムまたはスクリプト) を WebSites で簡単に実行することができます。これまで WebJob を発行するにはポータルまたは Azure PowerShell を使用しなければなりませんでしたが、今回のリリースにより WebJob を Visual Studio から直接発行できるようになりました。
この機能を利用するには、まず既存のコンソール プロジェクトを開くか、新たにプロジェクトを作成します。
Main メソッドを実装します。必須ではありませんが、これには Microsoft Azure WebJobs SDK (英語) を使用できます。この SDK は NuGet パッケージ (英語) として提供されるため、Azure Storage に簡単に統合することができ、Queues や Blobs、Tables にアイテムが追加されたタイミングでプログラムの関数を呼び出せます。
プロジェクトを Azure に発行する準備ができたらプロジェクトを選択して右クリックし、[Publish as Azure WebJob] コマンドを選択します。
WebJob を構成する画面が表示されるので、 [Run Continuously] 、 [Run on a Schedule] 、 [Run on Demand] のうちいずれかの実行方法を選択します。
[Run Continuously] を選択する場合は、そのコードが繰り返し実行されるように記述されていることを確認します。[OK] を選択すると Publish Web ダイアログが表示されます。そこで発行先の WebSites を選択します。WebJob は既存の WebSites の一部としてデプロイするか、または新規の WebSites を作成することができます。
最後に Azure ポータルを開き、WebJob を持つ WebSites に移動します。[WEBJOBS] タブを選択すると WebJob に関する詳細情報が表示されます。ログ表示やステータスのモニタリングが可能なダッシュボードへのリンクもあります。
WebSites: Web プロジェクトから WebJob を発行する
WebJob を毎回 1 つずつ発行するのではなく、Azure WebSites の発行と同時に発行することで、1 度にその WebSites と関連するすべての WebJob を簡単に発行できます。対象の Web プロジェクトを右クリックします。新しいプロジェクトの場合は [Add]、[New Azure WebJob Project] の順、既存のプロジェクトの場合は [Add]、[Existing Project as Azure WebJob] の順にクリックして、コンソール プロジェクトを関連付けます。
これで [Publish] をクリックしてプロジェクトを Azure WebSite に発行すると、関連する WebJob もデプロイされます。
Mobile Services: .NET Mobile Services のプッシュ通知ウィザードを使用する
Visual Studio 2013 Update 3 では、.NET Mobile Services のプッシュ通知ウィザードをサポートしました。これにより、Windows Phone や Windows Store アプリケーションに簡単にプッシュ通知を追加することができます。プッシュ通知ウィザードではクライアントをプッシュ通知に登録し、プッシュ通知を送信するバックエンド ロジックのサンプルを利用できます。ウィザードを呼び出すには、対象のプロジェクトを右クリックして [Add]、[Push Notification] の順にクリックします。
Mobile Services: プロジェクト作成時に Mobile Services をプロビジョニングする
プロジェクトの作成と同時に Mobile Services を作成し、開発/テスト環境として使用できるようになりました。これにより、関連する Mobile Services に開発中のプロジェクトをすばやく発行し、本番サービスで使用するコードを検証することができます。新しい Mobile Services をプロビジョニングするには、New ASP.NET Project ダイアログの [Host in the cloud] チェックボックスをオンにします。
Notification Hubs: デバイス登録を表示および管理する
Notifications Hubs ではテスト通知を各種デバイス (Windows Phone、Windows Store、iOS、Android、Kindle Fire) に送信することができますが、Visual Studio Update 3 では新たに、デバイス登録の表示、タグの編集、登録の削除が可能になりました。また、プラットフォーム別の登録件数もすばやく確認できるようになりました。これらのツールを使用するには、サーバー エクスプローラーの [Notifications Hubs] ノードを右クリックし、[Diagnose] をクリックします。
Virtual Machines: Virtual Machines を構成する
Azure SDK 2.4 リリースでは、Visual Studio から IaaS の Virtual Machines を使用する機能がさらに強化されています。Azure Virtual Machines で実行するサービスの構築や Virtual Machines を使用した開発/テスト環境のホスティングも、Visual Studio のツールを使用することで簡単に行えます。
Azure SDK 2.4 では、サーバー エクスプローラーの Virtual Machines のコンテキスト メニューに [Configure] オプションが追加されています。[Configure] をクリックすると、VM のプロパティ、さらにエンドポイント、拡張機能、VM のディスク構成の表示と編集が可能な Virtual Machines 構成ウィンドウが表示されます。開始、シャットダウン、接続、キャプチャなどの操作 (後ほど説明) もこのウィンドウから実行できます。
VM 構成ウィンドウでは、複数の VM を同時に開いて構成を簡単に比較できます。
エンドポイントを追加するには、使用可能なエンドポイントの一覧からエンドポイントの種類を選択し、[Add] をクリックします。エンドポイントを追加したら、必要に応じて名前やポートを変更できます。[Update] をクリックすると変更が VM に適用されます。
同様に、この構成ウィンドウから Virtual Machines に拡張機能を追加したり構成することもできます。Virtual Machines の拡張機能は、VM の機能を拡張するためのソフトウェア コンポーネントで、VM を指定の状態にしたり VM で最新のマルウェア対策ソフトウェアを実行するなど、さまざまな VM 管理操作を簡単に実行できます。詳細については、VM 拡張機能に関するブログ記事を参照してください。拡張機能を追加するには、使用可能な拡張機能の一覧から選択し、[Add] をクリックします。誤って拡張機能を追加してしまった場合も、[Update] をまだクリックしていなければ削除できます。
追加した拡張機能の種類に応じて構成を行う必要があります。拡張機能を選択して [Configure] をクリックします。拡張機能の構成の書式やスキーマは拡張機能の発行者が定義します。拡張機能の構成の詳細を確認するには、構成ダイアログの下にあるリンクをクリックしてください。
拡張機能の構成ダイアログからパブリックとプライベートの両方の構成を設定できます。パブリック構成は必要に応じて読み取りと更新が可能で、プライベート構成は書き込みのみ可能です。プライベート構成を適用すると拡張機能からのみ読み取り可能になり、Visual Studio、ポータル、その他のツールからは構成情報を取得できません。拡張機能の発行者はパスワードなどの重要な情報をプライベート構成に保存することができます。
Virtual Machines: スナップショットを使用する
スナップショットを使用すると簡単に VM イメージをキャプチャできます。また、この VM イメージを使用して同じ VM のレプリカを作成できます。スナップショットを活用することで、新しいサービスをインストールし、ファイアウォールを構成し、データ ディスクをアタッチするなど、自分の思いどおりに Virtual Machines を構成できるようになります。では VM イメージを作成して、カスタマイズし、レプリカを作成しましょう。
VM イメージを作成するには、VM 構成ウィンドウの [Capture Image] ボタンをクリックします。表示されるダイアログで VM イメージのラベルと説明を入力できます。Windows VM の場合は、VM で Sysprep を実行して Generalized VM イメージ (sysprep 済み VM イメージ) を作成します。Sysprep はシステム固有の情報を Windows から削除するので、新しい VM のテンプレートとして簡単に再利用できます。Sysprep を実行したら、[I have run Sysprep on the virtual machine] チェックボックスをオンにし、[Capture] ボタンをクリックして VM イメージをキャプチャします。
VM イメージをキャプチャすると、そのイメージのスナップショットを元に Virtual Machines を新規作成できます。サーバー エクスプローラーの Virtual Machines ノードのコンテキスト メニューにある [Create Virtual Machine] オプションをクリックすると、[Create New Virtual Machine] ウィザードが表示されます。ウィザードの [Select a Virtual Machine Image] ページの [Image Type] ドロップダウンで [Private Images – VM Images] を指定すると、キャプチャした VM イメージが表示されます。
以降のページで、マシン設定、クラウド サービス、エンドポイントといった新しい VM に関する情報を入力していきます。エンドポイントの構成が終了したら [Create] をクリックします。これでキャプチャした VM イメージを元に Virtual Machines が新規作成されます。
Virtual Machines: 32 ビット版 Virtual Machines のリモート デバッグ
Visual Studio で、Azure Virtual Machines が実行する 32 ビット アプリケーションのリモート デバッグがサポートされるようになりました。このため、サーバー エクスプローラーのコンテキスト メニューから Virtual Machines の特定のインスタンスのデバッグを有効化できます。
Storage: Visual Studio から読み取りアクセス地理冗長ストレージをプロビジョニングする
読み取りアクセス地理冗長ストレージでは、セカンダリ拠点に複製されたデータに「読み取り専用」でアクセスするため Storage アカウントの読み取りの可用性が向上します。Visual Studio から Storage アカウントを作成する際に、読み取りアクセス地理冗長ストレージを Storage の冗長化オプションとして選択できるようになりました。
Storage: Storage アクティビティ ログを表示する
Azure Storage のログ機能を使用すると、Storage アカウントに対して実行された要求の履歴を取得できます。また、この履歴は診断に使用することができます。BLOB コンテナー、Tables、または Queues のログが有効になっていると、$logs BLOB コンテナーにログが格納されます。同様に、$metrics Tables には BLOB コンテナーの容量に関する情報、および BLOB コンテナー、Queues、Tables のトランザクションに関する情報が格納されます。$logs BLOB コンテナーと $metrics Tables は Visual Studio のサーバー エクスプローラーから直接確認できます。
Cloud Services: Emulator Express が既定に、Full Compute Emulator が非推奨に
管理者権限がなくてもマルチロールの Cloud Services をローカルでテストできるようにしたいというユーザーの根強い要望にお応えするために、Emulator Express をリリースしました。新しいプロジェクトではこの Compute エミュレーターを既定で使用します。シングル コード ベースを主軸にするという投資方針に従い、今後は Emulator Express を優先し、Full Emulator は非推奨となります。
SDK 2.4 の新しい Cloud Services プロジェクトでは既定で Emulator Express が使用されます。なお、Emulator Express は 1 ロールにつき 1 インスタンスという制限がありますのでご注意ください。1 ロールで複数のインスタンスをテストする必要がある場合は、Full Emulator を利用してください。
Cloud Services: サービス モデルの新しいネットワーク機能
以下の機能はこれまでも PowerShell を通じて IaaS で使用可能でしたが、SDK 2.4 のリリースにより、サービス モデルを通じて Cloud Services (Web ロールおよび Worker ロール) でも使用できるようになりました。
内部負荷分散 (Internal Load Balancing: ILB)
ILB を使用すると、ユーザーは信頼の境界内 (今回の場合は Cloud Service) からのみアクセス可能な高可用性サービスを実行できます。内部ロード バランサーの設定はサービス モデルのデプロイメント レベルで定義されます。
以下の .cscfg のデプロイメント全体に関する NetworkConfiguration セクションにロード バランサーに関する情報が格納されるようになっています。
<NetworkConfiguration>
…
<LoadBalancers>
<LoadBalancer name="name">
<FrontendIpConfiguration type="private" subnet="subnet-name" staticVirtualNetworkIPAddress="static-IP-address"/>
</LoadBalancer>
</LoadBalancers>
</NetworkConfiguration>
内部ロード バランサーは .csdef のエンドポイント定義で参照されます。内部ロード バランサーの参照は InputEndpoints でのみサポートされています。また、全種類のロール (Worker ロールおよび Web ロール) でサポートされています。
<WorkerRole name="worker-role-name" vmsize="worker-role-size" enableNativeCodeExecution="[true|false]">
…
<Endpoints>
<InputEndpoint name="input-endpoint-name" protocol="[http|https|tcp|udp]" localPort="local-port-number" port="port-number" certificate="certificate-name" loadBalancerProbe="load-balancer-probe-name" loadBalancer="load-balancer-name" />
</Endpoints>
</WorkerRole>
Virtual Machines およびロール インスタンス用のパブリック IP アドレス
ユーザーがロール インスタンスの外部 IP を取得できるようになりました。これにより、これらのパブリック IP アドレスのトラフィックはどのポートのものでも、指定の VM またはロール インスタンスにリダイレクトされるようになります。
インスタンス レベルのパブリック IP はサービス モデルのデプロイメント レベルで定義されています。CSCFG スキーマにロールのすべてのインスタンスの外部 IP を追加する必要があります。例を以下に示します。
<NetworkConfiguration>
<VirtualNetworkSite name="VNet"/>
<AddressAssignments>
<InstanceAddress roleName="VMRolePersisted">
<PublicIPs>
<PublicIP name="public-ip-name"/>
</PublicIPs>
</InstanceAddress>
</AddressAssignments>
</NetworkConfiguration>
この構文は将来的に異なる種類の複数のパブリック IP アドレス (IPv4、IPv6) に対応するように設計されていますが、現在は 1 種類のパブリック IP アドレス (IPv4) に制限されています。
Azure Load Balancer の構成可能なアイドル タイムアウト
Azure Load Balancer では TCP アイドル タイムアウトを構成できます。受信接続のみ 4 ~ 30 分間に設定でき、何らアクティビティが発生していなくてもアプリケーションは TCP 接続を最大 30 分間維持できます。
Cloud Services のエンドポイント設定は .csdef にあります。Cloud Services デプロイメントの TCP タイムアウトを更新するには、デプロイメントのアップグレードが必要です。ただし、TCP タイムアウトがパブリック IP にのみ指定されている場合は例外です。パブリック IP 設定は .cscfg にあり、デプロイメントの更新およびアップグレードを通じて更新できます。
.csdef のエンドポイント設定の変更内容は次のとおりです。
<WorkerRole name="worker-role-name" vmsize="worker-role-size" enableNativeCodeExecution="[true|false]">
<Endpoints>
<InputEndpoint name="input-endpoint-name" protocol="[http|https|tcp|udp]" localPort="local-port-number" port="port-number" certificate="certificate-name" loadBalancerProbe="load-balancer-probe-name" idleTimeoutInMinutes="tcp-timeout" />
</Endpoints>
</WorkerRole>
.cscfg のパブリック IP のタイムアウト設定の変更内容は次のとおりです。
<NetworkConfiguration>
<VirtualNetworkSite name="VNet"/>
<AddressAssignments>
<InstanceAddress roleName="VMRolePersisted">
<PublicIPs>
<PublicIP name="public-ip-name" idleTimeoutInMinutes="timeout-in-minutes"/>
</PublicIPs>
</InstanceAddress>
</AddressAssignments>
</NetworkConfiguration>
まとめ
Visual Studio 2013 Update 3 (英語) と Azure SDK 2.4 を導入すると、リッチなクラウド アプリケーションの開発がこれまで以上に容易になります。今回リリースしたこれらの機能で開発をより楽しく効率的に行っていただくために、ぜひ Azure デベロッパー センターの .NET 開発者向けリソースをご活用ください。
Azure アカウントをまだお持ちでないお客様は、無料評価版にサインアップすることで今回ご紹介した機能をすべてお試しいただけます。これらの機能を使用したアプリケーションの構築方法の詳細については、Azure デベロッパー センターを参照してください。
謝辞
このブログ記事の執筆に協力いただいた Saurabh Bhatia と Azure Cloud Tools チームに心から感謝します。