連載:Team Foundation Server 2010入門

第4回 Team Foundation Server 2010の自動ビルドを使ってみよう

WINGSプロジェクト りばてぃ(監修:山田 祥寛)
2010/10/26
Page1 Page2 Page3

自動ビルド(=ビルド定義)の実行

 トリガーを手動に設定したビルド定義は、これから示す手順で明示的に実行を指示しない限り、ビルドが実行されることはない。また、手動以外に設定しているビルド定義でも、明示的に実行したい場合には同様の手順で実行することができる。このため、下記の実行方法はきちんと押さえておいていただきたい。

 実際に実行するためには、図14に示すように、([チーム エクスプローラー]における)ビルド定義の右クリック・メニューから[新しいビルドをキューに配置]を選択する。

図14 ビルドの実行

 メニューの名前に少々違和感があるが、こういうものだと思って慣れてしまうしかない。メニューを選択すると、図15に示すような、ビルドをキューに配置するためのオプション画面が開く。

図15 ビルド配置のオプション

 この画面では、ビルド定義で決まっている内容からいくつか変更を行えるようになっていて、例えば[ビルド コントローラー]や[このビルドの格納フォルダー]がそれに該当する。

 図15の上部にある[パラメーター]タブを選択すると、実行時に渡す各種ビルド・プロセス・パラメータを設定することができ、[プロセス]の設定の際にも出てきたものと同様の設定を行える(前述したビルド定義の設定エディタでの設定例では、既定値のままにした)。

 一通り内容の確認や変更が完了したら、[キューに登録]ボタンをクリックすれば、「ビルドの実行待ち」状態にすることができる。例えば今回のような場合には、キューに配置後、速やかにビルドが開始されるが、すでに実行中のビルドがある場合などには、それが終了してから実行されるので、しばらく時間がかかることになる。

 ビルドの現在の状態は、(キューへの)ビルドの配置後に表示される[ビルド エクスプローラー]から確認できる。なお、([チーム エクスプローラー]において)チーム・プロジェクト内の対象のビルド項目の右クリック・メニューから[ビルドの表示]を選択しても、同様の画面を開くことが可能だ。

 [ビルド エクスプローラー]では、図16のような内容を確認することができ、どのビルド定義を基に実行されたか、それがどのような状態になっているかを確認できる。

図16 [ビルド エクスプローラー]

 また、現在実行中のビルド定義は[キューに挿入済み]タブに、すでに終了しているものは[完了]タブに一覧として表示される。なお、チーム・プロジェクト内に複数のビルド定義がある場合には、この[ビルド エクスプローラー]からすべてのビルド定義の情報を確認することができ、必要に応じて一覧の上部にあるドロップダウンを利用してフィルタリングを行うといった使い方になる。

自動ビルド(=ビルド定義)の実行結果の確認

 最後に、自動ビルドが実施された後に生成されるレポートの内容について確認していこう。

 先にも触れたように完了済みのビルド定義は[ビルド エクスプローラー]の[完了]タブ内に表示される。何度かビルドを実行した後に表示すると図17のようになる。

図17 完了済みビルド定義の確認

 一覧上では、成功したビルド定義は緑丸のレ点が、失敗したものは赤丸の×マークが、途中で停止したものは停止マークが付与されて表示されている。

 この確認画面の使い方として、例えば成功したビルド定義を右クリックして、表示されるコンテキスト・メニューから[格納フォルダーを開く]を選択すれば、ビルドに成功したモジュール群を入手することが可能だ。

 また、失敗したビルド定義はその詳細を調べなければならないので、対象のビルドをダブルクリックして詳細画面を開こう。すると図18のような画面が開く。

図18 ビルド結果の詳細
各番号に対する説明は、下記の本文中にある。

 ここではいくつかポイントがある。

 1つ目は図18ので[割り当てられた品質]という部分を(コンボボックスのリストから)決定することだ。リストにはあらかじめ決められたいくつかの項目があり、この中からビルド結果に該当するものを選択する。こうすることで、図17の一覧表示の際に利用者がフィルタ要素として利用できるようになり、注目すべきビルド結果を特定しやすくなる。ただし、この値はチーム内での合意形成のために設定されるもので、設定したからといってTFS内で何か不都合が起きるというものではない。なお、この値は独自の項目を追加することもできる(詳細はMSDNライブラリの「ビルドの品質評価の値の追加または削除」を参照)。

 2つ目はの[最新のアクティビティ]という部分だ。ビルド定義を作成する際にビルド・プロセス・テンプレートを特に変更していない場合(つまり、先ほどの説明と同じように「既定テンプレート」のままにした場合)、ビルドに失敗すると、図18にもあるように、ここには「バグ 1」と表示される。このバグは今後解説予定のTFSの「作業項目」という機能を利用しているもので、ビルドのエラーが今後の作業としてTFS上に登録されていることを示している。

 3つ目は、(の部分を少し飛ばして)の[関連付けられた変更セット]という部分だ。変更セットについては、ソース管理の回で説明しているので割愛するが、今回のビルドを行うにあたり関連のある変更セットが自動的にひも付いている。これは前回のビルドから今回のビルドまでにチェックインされたものが含まれるようになっていて、今回のビルドまでにどんな変更があったかを確認しやすくするというメリットがある。

 最後になるが、4つ目はの[概要]の部分で、ここにはビルド・エラーの情報が表示されていて、例えば図18では「Form1.cs (21): ; が必要です。」とリンクで表示されており、このリンクを開けば該当のソース・コードを確認できる。今回は単純なコンパイル・エラーのレベルで確認しているため、この程度であればVisual Studioでソースを編集している過程で見つけ出せるので、「あまり意味がない」と感じられるかもしれない。

 しかし、実際に自動ビルドを利用するシーンでは、(もちろん1人でも利用する意味はあるが)数人から数十人の開発者が携わり、自分の担当外のところを含むすべてをまとめてビルドすることになる。このため、ほかの開発者が担当するソース・コードと合わせた際に初めて発覚するようなビルド・エラーを簡単に見つけ出せるというわけだ。

ビルドの使い分け

 結果確認のところで少し触れたが、通常のコンパイル・エラー程度であれば、Visual Studioでソリューションやプロジェクトをビルドする方がよっぽど速く見つかる。また、そもそも明示的にビルドせずとも[エラー一覧]ウィンドウにはコンパイル・エラーの情報がリアルタイムに表示されているので、わざわざビルドせずとも修正することさえできてしまう。

 確かに、自分が担当する範囲の単なるコンパイル・エラー程度の内容であれば、わざわざ自動ビルドを使う必要性はほとんどない。また、ほかの開発者が担当する部分でも、最新のソース・コードを取得しながら行えば同様であるようにも思う。

 しかし、ほかの開発者の分を取り込んだ状態で、Visual Studio上でビルドを行い、自分のソースに問題があれば修正するという作業は、思いのほか時間がかかる。特に変更量が多い場合の最新ソース・コードの取得には、手間と待ち時間が必要だ。

 この点に関しては、取りあえず自分の分にはコンパイル・エラーがない状態でチェックインを行い、自動ビルドの機能により背後でビルドし、エラーがあれば後から直していくという作業の方が効率的になるだろう。

 また、次回に詳細を述べる予定だが、静的コード分析や単体テストによるコンパイル後のチェックを行う場合、自分の担当分だけであっても待ち時間は長くなるため、このような場合も自動ビルドにより背後で行ってしまった方が効率的だろう。

 このように、単純には、自分の担当外部分を合わせたビルドや、時間のかかるビルドを、自動ビルドに回してしまうと、作業効率を上げることができる。継続的インテグレーションやゲート・チェックイン(次回詳説)を使うことが自動ビルドであるかのように思ってしまう場合もあるが、そのような使い方ではなくとも、効率を上げるすべが(自動ビルドには)あるということは認識しておいていただきたい。

 もう少し別の視点で(自動ビルドを使う必要性を)考えると、自動ビルドの結果はすべてTFSで管理されるという点がある。これにより、先ほど軽く触れた作業項目への連携や変更セットとの関連付けもそうだが、ほかにもビルドの変遷がレポートで出力される、Visual Studioが持つ各種のテスト機能と連携できるなどのメリットが生まれる。

 つまりこの視点においては、効率がどうのこうのでなく、管理するかしないかを考えることが重要になる。この視点で自動ビルドを使う必要性がある場面としては、(「管理したいビルド」と「そうではないビルド」の境目は難しいが)例えば仕様変更後や管理されているバグの修正後のビルドを、自動ビルドで行っておくといった使い方が考えられる。

まとめ

 今回は、TFSが持つ自動ビルド機能の基本的な使い方とVisual Studio上で行うビルドとの違いについて紹介してきた。これだけでも効果を発揮していくことは十分可能だが、せっかくなのでもう少しいろいろなことにもチャレンジしてみたい。

 次回は、今回いくつかキーワードが出てきていたコンパイル後の各種チェックとの組み合わせなど、少し高度な内容について紹介していく予定だ。end of article


 INDEX
  [連載]Team Fourndaiton Server 2010入門
  第4回 Team Foundation Server 2010の自動ビルドを使ってみよう
    1.自動ビルド利用前の準備
    2.自動ビルドのためのビルド定義の作成
  3.自動ビルドの実行/実行結果の確認/ビルドの使い分け

インデックス・ページヘ  「連載:Team Foundation Server 2010入門」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間