Visual Studio 2013
Visual Studio Online の概要
Ed Blankenship
チームでも個人でも、Visual Studio Online を使えば、非常に要件の厳しいアプリケーションをどこからでも簡単に計画、作成、構築、ビルド、テスト、および監視できます。大規模なインフラストラクチャ チームは必要ありません。サーバーに触れる必要すらありません。コンサルタントとして、何百もの Team Foundation サーバー (TFS) のインストールとアップグレードを行ってきましたが、毎回必要になるこの種のやっかいなメンテナンス作業が過去のものになったことをうれしく思います。Visual Studio Online は、自動的かつ継続的に最新機能に更新されるため、開発者にとって最も重要なアプリケーションの構築に専念できます。
新機能
「Visual Studio Online は要するにクラウドに配置された TFS ではありませんか」と、よく聞かれます。答えはイエスとも、ノーとも言えます。
TFS は 8 年前にリリースされ、Team Foundation サービスの発表と共に 2012 年にクラウドホスト型のアプリケーション ライフサイクル管理 (ALM) サービスへの移行が始まりました。発表初日から多くの導入が行われ、新興の開発チームだけでなく、中規模企業までもがオンプレミスのインフラストラクチャからの移行を選択しました。非常に重要な点は、TFS 製品グループがチーム内で繰り返し行われる開発をまとめあげ、数週間ごとに新機能を提供することです。アカウント所有者は、Features Timeline (bit.ly/17DV8Yl、英語) を見るか、Twitter の VSOnline などのソーシャル メディア (twitter.com/vsonline、英語) をフォローすることで、新着情報を確認できます。
したがって、先の質問の答えは、Visual Studio Online は TFS および Team Foundation サービスの進化版であり、クラウド型の ALM の基礎を提供するものであるという点ではイエスですが、まったく同じではないという点ではノーと言えます。
マイクロソフトがデバイスとサービスの企業へと変貌を遂げたことから、多くの開発者は「これは開発者にとってどのような意味があるのか」と自問したことでしょう。Visual Studio Online により、マイクロソフトは、個人でプロジェクトに取り組んでいる開発者と、チームで大規模システムに取り組んでいる開発者のどちらにとっても便利なサービス プラットフォームを所有することになりました。今回は、マイクロソフトが提供するサービスをいくつか紹介します。
ALM を超える
クラウドベースにすることで、Visual Studio Online は次のような強力なエクスペリエンスを提供します。
クラウド内でのビルド。サーバーは必要なく、オーバーヘッドもありません。ビルドの実行は、毎回クリーンなサーバー イメージのコードから開始されます。これまでは依存関係やマシン構成がよくわからないことが頭痛の種になっていましたが、もう過去のものになります。ビルドは Visual Studio Online のソース リポジトリにも格納されるため、ビルドへの完全なアクセスが維持されます。もっと複雑なセットアップが必要であれば、高度にカスタマイズしたワークフローやインフラストラクチャには貴重なオンプレミス リソースを使用し、継続的インテグレーションなどの基本作業には Visual Studio Online を使用するハイブリッド ソリューションを検討します。
クラウドでのロード テスト。個人でも、新興事業でも、大規模チームでさえ、適切なパフォーマンス テストやロード テストを実行するのは困難です。このようなテストにはセットアップやリソースに大きなコストがかかり、時間も要します。ビルドしているアプリケーションが売れるかどうかわからないのに、このようなコストを正当化できるでしょうか。とりあえず始めてみて後は運を天に任せるのではなく、完全な機能を備えたロード テストをサービスとしてマイクロソフト インフラストラクチャで実行できるようになります。このインフラストラクチャには最新版のロード テスト ソフトウェアが常備されます。備品室をあさり、古いコンピューターを持ち出して、インストールや構成が必要なものを調べるのに時間をかけることなく、実際の実行に必要な方法でテストをセットアップして拡張できます。100 人の仮想ユーザーを追加することも、休暇に間に合うようにテストの速度を上げたいときでも、ロード テスト サービスは必要なものを必要なときに処理できます。
360 度、リアルタイムのアプリケーション監視。運用システムの状態と健全性を監視するために、フルタイムのサービス センター監視が必要になることがあります。Visual Studio Online によって、これが可能になります。Visual Studio Online の Application Insights は、オンプレミス、Windows Azure、サードパーティのクラウド プロバイダー、およびこの 3 つのハイブリッド方式でも、運用、パフォーマンス、および顧客の使用状況についての豊富な情報をアプリケーションから集めます。ただ監視するだけでなく、使用状況をプロアクティブに監視し、次にビルドするとびきりの機能を決めることができます。このサービスは、運用中に生じる問題を調査するのに役立つアプリのメタ情報 (ビルドや配置の情報など) も利用し、あらゆる環境 (運用環境を含む) のソリューションやソース コードに戻れるようにします。メタ情報は他の ALM 情報と同じデータ ストアに存在し、既に把握しているため、時間が節約されます。
独自の IDE を持ち込むか、ブラウザーの簡易コード エディターを入手する。Visual Studio Online では、方法、時間、場所を問わずコードを簡単に更新できます。当然、Visual Studio を利用するので、クロスプラットフォーム開発プロジェクトの場合は、真の Git リポジトリを使用して Eclipse、Xcode などの多数の IDE にシームレスに接続できるようになります。それ以外のプロジェクトではシンプルに、"Monaco" (コードネーム) という新しい軽量の Visual Studio Online コード エディターにより、任意の最新ブラウザーからその場で更新できます。このコード エディターは、デスクトップでの Visual Studio の使用を補完するものです。
これまでユーザーが行っていたのと同様に、マイクロソフトは 3 週間ごとに Visual Studio Online に重要な新リリースを提供して継続的な価値提供に取り組みます。機能に関するすばらしいアイデアをお持ちの方は UserVoice から意見を具申できます。今すぐ始められます。visualstudio.comにアクセスしてください。最初の 5 ユーザーと MSDN サブスクリプションの特典を無料で利用でき、従量課金制サービスには導入割引があり、他のチーム メンバー向けに追加の Visual Studio Online ユーザー プランがあります。ストレージ、トランザクション、帯域幅、コンピューティング サイクルはユーザー プランと従量課金制サービスに含まれているため、これらの追加について心配する必要はありません。
ゼロから始めてヒーローに: 成功に向けプロジェクトを立ち上げる
では、とっておきのアプリを新たに提供したいとしたら、Visual Studio Online をどのように利用すればよいでしょう。ここではあるシナリオを用意して、Visual Studio Online を使った最初のイテレーションの例を説明します。TFS や Team Foundation サービスを使用したことがあれば、一部は馴染みがあるはずです。
次のようなシナリオを考えます。アプリケーションのすばらしいアイデアを持ちながら、利用できるリソースが限られている小さなチームの主任開発者がいます。すぐに着手すべきですが、このアプリケーションは一定期間使われることが期待されるため、このプロジェクトを継続的に運用したいと考えています。インフラストラクチャ、配置パイプライン、テスト ハーネスのセットアップに時間を浪費したくありません。できる限り早くアプリケーションをビルドして、顧客の手元に届けたいと思っています。
迅速かつ容易に開始でき、やっかいな作業もありません。visualstudio.comに移動して、右上にある [無償利用の開始] のリンクを探し、フォームに入力するだけです。
アカウントを用意したら、自分とチームが作業する場所を確保します。Visual Studio Online の最上位レベルのコンテナーはチーム プロジェクトなので、まずこれを 1 つ作成します。ここで、2 つの重要な決め事が必要です。
- 使用するソース管理リポジトリの種類
- 作業項目の追跡に最適なプロセス テンプレート
ソース管理は、Git を備えた分散型のバージョン管理と、TFS で使い慣れた従来型のバージョン管理のいずれかを選択します。たとえば、チームは現在 Windows Phone 8 アプリとそのバックエンド サービスを作成していますが、最終的には iPhone デバイスや Android デバイス向けにモバイル アプリとして移植することを計画しているとします。このような場合、複数のプラットフォームやさまざまな IDE で作業することになるため、ソース管理リポジトリは Git にします。Team Foundation バージョン管理サーバー (TFVC) と Git のどちらを選択するかの詳細については、Channel 9 のビデオ (bit.ly/16XPcUK、英語) を参照してください。
プロセス テンプレートはワークフローを定義します。つまり、作業項目の名前、作業項目やその他のメタデータを操作するときに遷移する状態を定義します。スクラム、アジャイル、および能力成熟度モデル統合 (CMMI) という 3 つのテンプレートから選択できます。チームが CMMI のような正式プロセスを実行する場合、このテンプレートを使用します。アジャイル チームの場合、または特定のプロセスがない場合は、アジャイル テンプレートまたはスクラム テンプレートを使用します。2 つの大きな違いは、バグの処理方法とバックログ項目に使う名前です。アジャイル テンプレートはバグをタスクとして扱うのに対し、スクラム テンプレートは他のバックログ項目と共にバックログに表示します。どちらが適しているかわからなければ、既定値のスクラム テンプレートをそのまま使用します。こちらのテンプレートが既定値になっているのにはわけがあります。スクラム テンプレートを選択したからといって必ずしもスクラムを実行する必要があるわけではなく、単に作業項目の種類にスクラム用語が使用されるだけです。スクラムは要件をプロダクト バックログ項目 (PBI) と呼び、アジャイル テンプレートは要件をユーザー ストーリーと呼びます。チーム プロジェクトにおける作業とプロセス テンプレートの主な違いの詳細については、https://msdn.microsoft.com/ja-jp/library/vstudio/ms400752.aspxを参照してください。
アカウントとチーム プロジェクトを用意したら、チーム メンバーを追加します。チーム メンバーを追加するには、Microsoft アカウント (旧 Live ID) があることを確認し、プロジェクトのホームページ (myawesometeam.visualstudio.com) に移動して、図 1に示すフローに従います。
図 1 チーム メンバーの追加
アクセス許可などの管理の詳細を調整する場合は、上部の歯車アイコン (設定) を使用します。
軌道に乗せる: 最初のイテレーションをセットアップする
管理の詳細を設定したら、作業の開始です。スクラム テンプレートを選択しましたが、チーム (5 人すべて) は正式なスクラムを導入するために必要なものをすべて提供していません。イテレーション単位に作業し、機能するコードをできるだけ早く提供し、顧客からのフィードバックを次回のイテレーションに組み込みたいと考えています。また、進行中の作業と次に行う作業を追跡し、それぞれの作業に優先順位を付けます。
作業項目で作業を始める前に、いくつか詳細を簡単に見ておきましょう。スクラム テンプレートを選択しているので、主にフィーチャー、PBI、バグ、およびタスクを使って作業することになります (他の種類の作業項目もありますが、ほとんどはサポートとして使用します)。図 2は、これらの作業項目の種類の関係をおおまかに示しており、作業項目のリンクで管理されています。
図 2 作業項目の関係
一般に、フィーチャーは各イテレーションをまたがる作業量を表しており (エピックと呼ばれることもあります)、PBI は 1 回のイテレーションで完了できるカスタマー値の単位で、タスクは数日で完了できる作業の単位です。この方法で使用することで、ポートフォリオのレベルから詳細に至るまで、プロジェクト ビューのスコープをその時点に適した任意の粒度で設定できます。ここで説明したのは作業項目のごく一部なので、詳細については MSDN の関連記事を参照することをお勧めします。
作業項目での作業についての最後の注意ですが、フィールドがあるからと言ってそれを使用する必要があるわけではありません。チームにとって意味のあるフィールドを使用し、それ以外は無視します。過去に多くのチームをサポートしてきた経験からのアドバイスはできるだけシンプルに保つことです。
次にバックログの入力を開始するために、プロジェクト ページの [Work] (作業) タブをクリックします。これにより、プロダクト バックログが表示されます。
左側のメニューでビューのスコープを適切なレベルの粒度に設定でき、右側のリストからそのレベルに項目を追加できます。PBI を縦方向に並べ替え、バックログに優先順位を付けます。
プロダクト バックログにいくつか作業を含めたので、最初のイテレーションについての検討を開始します。チームはすばやい行動を考えているため、毎週火曜日に実運用することを目標にイテレーションの単位を 1 週間にします。まず、イテレーションに日付を設定します。これは、設定メニューで実行するか、ビューのスコープを特定のイテレーションに設定している場合は、[Set Dates] (日付の設定) リンクで実行します。
イテレーションに日付を割り当てたら、右側からドラッグして、左側の適切なイテレーションにドロップすることで、バックログからイテレーションへの PBI の割り当てを開始できます。PBI をイテレーションに割り当てたら、チーム メンバーに個別のタスクを分担させます (図 3 参照)。
図 3 イテレーション計画
これは、アジャイル計画ツールで実行できることのほんの一部にすぎません。チームが拡大し、ニーズが複雑化するにつれて、キャパシティ計画、予測、テスト計画管理などを追加します。今のところ、これ以上複雑にする必要はないので、PBI を完了することに取り掛かります。
バックログに項目を書き込むにつれ、進行中の作業を追跡する必要があります。チームがイテレーションの現状についての感覚をつかめるように、翌日のスタンドアップ ミーティングでイテレーション タスク ボードを示します。
このボードは、それぞれの PBI の状態についての優れた見取り図となり、日々のスタンドアップ ミーティングを軌道に乗せるのに役立ちます。イテレーション タスク ボードは、ドラッグアンドドロップ操作やタッチ操作が可能なので、ミーティング中にすばやく更新し、ボード (および作業項目の状態とチームの割り当て) を最新状態に保つことができます。
イテレーション タスク ボードは作業の追跡には適していますが、チーム内で価値を共有するには、PBI またはフィーチャーのレベルにスコープを設定したボードが必要です。そこで、プロダクト バックログからアクセスできるかんばんボードに切り替えます。
このボードで、列ごとに進行中の作業の制限事項を設定し、作業のフローを追跡し、チームの累積フロー ダイアグラムを確認できます。かんばんボードはチームのワークフローを反映するため、[Customize Columns] (列のカスタマイズ) ボタンをクリックし、適切な変更を行います。列の名前を変更し、必要に応じて、新しい列を追加します。この方法が優れている点は、それぞれのチームが他のチームに影響を及ぼすことなくニーズに合わせて列をカスタマイズできることです。
ここで、最初の投資家を見つけたとします。残念ながら、この投資家は事業に口出ししないタイプではなく、収益性を見守るために、リリースする価値と製品品質についてのステータスを毎週更新することを求めています。これには、多くのオーバーヘッドが必要になるように思えます。さいわい、図 4に示すような、作業項目のグラフの作成方法がわかっているので、これにより必要なレポートを迅速かつ簡単に生成できます。
図 4 作業項目のグラフ
10 分後には投資家が満足し、顧客を満足させるための仕事に戻ることができます。作成した作業項目グラフをチームのダッシュボードにピン留めすることもできます。
価値を提供する: アプリケーションをビルドする
コーディング方法がわかりました。一定の品質を保つことが顧客にとって非常に重要なこともわかっています。残念ながら、主任開発者も開発メンバーも新しいアイデアをたくさん持っており、現在のアイデアを完全に具体化する前に、新しいアイデアを実現するための行動を起こしがちです。
コード ベースは、常に正常にコンパイルされるわけではありません。少し考えた後、チームは自動ビルドの使用を始めて、継続的インテグレーション (CI) ビルドを使用するか、ゲート チェックインを設けてリポジトリから不適切なコードを取り除く必要があると判断しました。このインフラストラクチャはなく、オンプレミスのビルド サーバーを独自にセットアップする時間もありません。ここで役に立つのが、Visual Studio Online のクラウド ビルド サービスです。
Visual Studio IDE のチーム エクスプローラーでビルド ページを選択してから、[ビルド定義の新規作成] を選択します。新しい定義に名前を付け、トリガーを選択して、ウィザードの残りを完了します。完了したらビルド定義を忘れずに保存します。
CI ビルド (または、他のトリガーの種類) だからと言って、必要に応じて予定外のビルドを手動で開始できないというわけではありません。当然、チーム エクスプローラーから開始できますが、そのどこが興味深いのでしょう。使い慣れたブラウザーを取り出し、プロジェクト ページの [ビルド] タブに進みます。左側のリストからビルドを選択し、[キュー ビルド] をクリックします。
CI ビルドをセットアップ後とその進行中に、チーム ルームに急いで移動し、結果を表示して、良いニュースをチームで共有します。ビルドの詳細については、https://msdn.microsoft.com/ja-jp/library/vstudio/ms181709.aspxを参照してください。
オンデマンドのロード テスト
ユーザー ベースは急速に拡大していますが、ユーザーはサイトに大きな遅れがあると報告しています。遅れの原因を突き止めることができないので、いくつか現実的なパフォーマンス テストとロード テストを作成し、遅れの発生場所を明らかにしたいと考えます。まず、Visual Studio Ultimate でいくつか Web パフォーマンス テストを記録します。それぞれのテストは、ユーザーがサイトを操作する典型的な方法を代表しているため、これを代理トランザクションと呼びます。
次に、パフォーマンス テストを組み合わせ、システムでの典型的な負荷のシミュレーションを行います。後でいくつか他のシナリオを作成する計画を立てますが、ここでは通常うまく進むシナリオだけを考えます。
ロード テストとパフォーマンス テストのバランスを取ったら、テスト設定ファイルを開き、Visual Studio Online を選択することで、Visual Studio Online で実行するロード テストを設定します。その後、データが入ってくるのを監視します (図 5 参照)。
図 5 ロード テスト結果の表示
このとおり、1 時間以内にこれを実行できました。詳細なチュートリアルについては、https://msdn.microsoft.com/ja-jp/library/vstudio/ms182594.aspxを参照してください。
監視と継続的学習: テレメトリ データの収集
アプリケーションとアプリケーションがサポートする Windows Azure サイトやサービスはライブで運用中です。ユーザーは何かをダウンロードしようとしているように思われます。ユーザーがサイトを閲覧し、クライアント アプリがサービスのバックエンドに達しているようです。少なくとも、何かが起こっているように思われます。その内容はよくわかりませんが。
そこで、アプリケーション全体からのテレメトリ データの収集を開始する必要があります。Web ページ、サーバー パフォーマンス、および Windows Phone 8 アプリだけでなく、Windows Azure のデータ層だけでもありません。エンドツーエンドのユーザー エクスペリエンス フロー全体にまたがる完全なビューが必要です。Visual Studio Online の新しい Application Insights サービスを紹介します。
Application Insights サービスを開始するには、Visual Studio Online アカウントのホームページに移動し、[Application Insights] タイルをクリックします。現在このサービスは制限付きのプレビューなので、招待コードにアプリケーションを登録する必要があります。これを行ったら、シンプルなテストをセットアップして URL を ping し (New Single URL Test)、データが流れ始めるのを監視します。これは基本的な Ping テストの例ですが、前にロード テストのために Web パフォーマンス テストとして作成した代理トランザクションも利用できます。これで、基本的な Ping テストまたは代理トランザクション使って、世界中の複数のデータセンターからアプリを監視できます。
Microsoft Monitoring Agent を構成して、アプリ パフォーマンス監視データを Application Insights サービスに報告することもできます。このサービスは、データベースなどのサービスを含め、それぞれの依存関係でアプリケーションのサービスが動作する方法について、よりわかりやすい表示を提供します。
ほとんどのサイトや接続型のアプリでは、稼働時間が最も重要になります。今回のアプリケーションも同様で、サービスは稼動していると思っていましたが、残念ながら、停止していることが顧客から報告されました。テストが失敗したかサイトが稼働を停止した場合にユーザーよりも早く把握できるようにするため、常時実行されている継続的な監視が必要です。まさにこれを実現するのが Application Insights です。
サイトが利用可能かどうか把握できたら、非常に便利です。遅れ生じているコード行やストアド プロシージャを正確に把握できればもっと良いでしょう。パフォーマンス監視サービスから問題となっているコード行に IDE で直接移動できたら、すばらしいとしか言いようがありません。Application Insights は依存関係を発見し、新しい配置が行われた時点を表示し、すべてのパフォーマンス情報を集約してアプリケーションで最も遅れが生じている上位 10 か所がわかるようにします。
Application Insights でパフォーマンスを監視できるようになったため、サービスの修復や復旧にかかる平均時間が大幅に短縮されます。
最初にアプリケーションを市場にリリースしたときは、アプリケーションが実行することと、顧客の使い方は明確に理解していました。しかし、顧客のニーズが高まってきたため、アプリケーションもそれに合わせて進化する必要があります。顧客のエクスペリエンスを向上させる方法について多くの仮説をたてられますが、想定や仮説を検証するにはテレメトリ データとメタテレメトリ データが必要です。Application Insights の使用状況の監視を含めることで、今後アプリのどのような側面に投資すべきかの判断材料となる多面的なデータが得られます (図 6 参照)。
図 6 Application Insights ダッシュボード
チームが Application Insights に慣れてくるにつれて、ソフトウェアのビルド方法についてのパラダイム シフトが行われたことを実感し始めるでしょう。こうした洞察はもう結果論ではなくなり、このプロセスはアプリケーションのライフサイクルの確かな手順として組み込まれ、アプリケーションについてのチームの考え方は大きな影響を受けます。SDK を使えば、ダッシュボードで追跡できるカスタムのビジネス メトリクスの報告を開始することや、開発者独自の追跡イベントを送信することも可能です。
Application Insights は、開発者と、顧客がアプリケーションを使用する方法の間の接点を生み出します。これにより、ユーザーがアプリケーションをどのように操作しようとしているか、新しい変更がパフォーマンスにどのように影響を及ぼしているか、どのようにしてアプリケーションをほぼ完全に使用可能に保つかといった課題についてライフサイクル全体を通して話し合われることになります。
まとめ
今回は、Visual Studio ファミリーの最新メンバーの概要を示しました。Visual Studio Online は、アプリケーションの計画、配置、および管理に役立つツールとサービスのクラウドベースのプラットフォームです。Visual Studio Online は、TFS および Team Foundation サービスから進化し、Microsoft ALM プラットフォームをクラウドに導入し、Application Insights、オンライン IDE などの新しいサービスで強化します。そして、これは始まりにすぎません。TFS をオンプレミスで使用する場合でも、必要に応じて、ロード テストや Application Insights など Visual Studio Online のサービスを利用できます。Visual Studio Online チームは、数週間ごとの重要な更新と、継続的に価値を提供することに取り組んでいます。
Ed Blankenship は、マイクロソフトの Visual Studio Online および Visual Studio ALM の製品マネージャーです。マイクロソフトに入社する前は、2010 年の Microsoft MVP (Visual Studio ALM、Team Foundation サーバー) を受賞し、5 年間にわたり Microsoft MVP でした。彼は、『Professional Team Foundation Server 2012』(Wrox、2013 年) を含む、Team Foundation サーバーに関する 2 冊の本の主執筆者です。
この記事のレビューに協力してくれた技術スタッフの Andrew Clear と Cheryl Hammond (Northwest Cadence の ALM コンサルタント) に心より感謝いたします。
Andrew Clear と Cheryl Hammond は、Northwest Cadence の ALM コンサルタントです。Visual Studio ALM に関する多くの記事を執筆し、プレゼンテーションを行っており、企業の機敏性トレーニング シリーズを共同作成しているうえ、北米、ヨーロッパ、およびアジアでさまざまな規模のクライアントのコンサルタントを行っています。