Team Foundation Serviceのビルド環境をローカルに構築する

Azure上でTFSの機能が使えるTeam Foundation Service(長いのでここではTFServiceとさせてください^ ^;)は、現在Preview版で誰でも使えます。(Microsoftアカウントが必要になります。)
チームプロジェクトを作成し、ローカルで作成したソリューションを登録すればビルドもAzure上でできるのでほんとにお手軽なのですが、個別のライブラリ(市販のパーツなど)を使用したいときには、ビルドサーバにライブラリを登録する必要があります。
方法としては
 ・ソース管理にライブラリ用フォルダを作成しておき、参照先を指定する
 ・ローカルのビルド環境を作成し、その環境にライブラリをインストールする
のどちらかになると思います。
今回は、ローカルのビルド環境を作成してみます。

※2012/08/19現在、TFServiceはPreview版ですので、RTM版とは異なる可能性があります。
 また、ライセンスについてはMSサポートに確認してください。

○TFS2012のインストール
 まずは、TFS2012をインストールします。
 ビルド環境のみなので、OSはクライアントOSでもかまいません。
 また、サーバOSにインストールする場合、SharePointFoudationも必要ありません。
 インストール完了後に自動起動されるウィザードはキャンセルしてください。
 ※確認はしていませんが、TFS2012 Expressは使えないと思います。
  (単体サーバでの使用が前提条件となっているので)

○Windows 8 SDKのインストール
 .NET Framework 4.5のビルドを正常に行うためには、ここからインストーラーをダウンロードします。
 インストーラーを実行すると、各種ファイルがネットからダウンロードされてインストールされます。
 ※今回自分が確認したのはWindows Server 2008 R2でしたが、.NET Framework4がターゲットのプロジェクトの場合はWindows 8 SDKなしでも正常にビルドできました。

○個別ライブラリのインストール
 ビルドするまでであればいつでもいいと思いますが、ビルドサーバ構築後にインストールすると再起動が必要になるかもしれないので、最初に個別ライブラリもインストールしておきます。
 (Windows Phone SDKとかも同様です)

○ビルドサービスの構成
 普通のビルドサーバと異なるのは、
 ・接続先サーバの指定をURLで直接行う
 ・接続時に認証が必要となる
 ことです。
 Team Foundation Server 管理コンソールから「ビルド構成」を選択し、「インストール済みフィーチャーの構成」をクリックすると、ウィザードが起動します。
 チームプロジェクトコレクションの選択画面で、参照先のサーバを「https://<使用するTFServiceのURL>」にします。

<接続先サーバの指定画面>
 「サーバー」ボタンを押下して、接続先サーバを追加します。

009_2

<接続先サーバの追加画面>
 「追加」ボタンを押下し、接続先Team Foundation Serverの名前のところにTFServiceのURLを指定します。

010

 TFServiceへのURLを指定し「OK」ボタンを押下すると、以下の接続中画面が表示されますので、ちょっと待ちます。

011

 TFServiceへの認証画面が表示されるので、TFServiceにログインする際のユーザ名/パスワードを入力し、サインインします。

012

 認証が完了すると、接続先サーバ追加画面に戻ります。

013

 接続先サーバの設定が完了すると、接続先チームコレクションの一覧が表示されますので、チームコレクションを選択し、「接続」ボタンを押下します。
(DefaultCollectionしかない?)

014

あとは、普通のビルドサーバと同様に設定していきます。
(エージェントの作成も忘れずに)

○ビルド定義の設定
 ビルド定義で、ローカルビルドコントローラーを使用するように設定します。
 
 「ビルドの規定値」にあるビルドコントローラーとして、ローカルサーバを指定します。
 (「Hosted Build Controller」がTFServiceで通常使用するビルドコントローラーです)

015_2

この状態でビルドを実行すると、こんな感じでローカルサーバでビルドが実行できます。

016

ほんとにお手軽に構築できます。
残念なのは、現時点ではTFS2010が使えないことです。
TFS2010で同様に環境構築してみたのですが、接続先サーバの追加時にエラーになってしましました。><

007

ぜひTFS2010でも使えるようにしてほしいものです。

TFS2010でWindowsPhone7プロジェクトを自動ビルド

とある方から「Windows Phoneでも自動ビルドとか自動テストとかできますか~?」と聞かれ、「できます」と返答させて頂いたのですが、ちょっと気になって実際に確認してみました。
自動ビルドについては、「準備する環境に条件がある」だけでした。

○確認環境について
 ・ワークグループ環境
  AD環境でもあまり内容は変わりません。
 ・ビルドサービス用アカウントを別途作成
  今回は「DTFSBuild」というユーザを作成しています。
  権限はUsersで問題ありません。
 ・TFSサーバは構築済
 ・プロジェクトコレクションのビルドサービスアカウントにビルドサービス用アカウント(今回はDTFSBuild)を追加

005

○OS/SDKのインストール
 
 まず、ビルドするためにはビルド環境にSDKをインストールする必要がありますが、SDKのサポートOSはWindows VistaとWindows 7ですので、サーバ系OSは使えません。
 TFSはクライアントOSにもインストール可能ですのでWindows7環境を作成します。
 ここがこのネタの最大のポイントになるのですが、必ず「32bit環境」で作成
してください。
 Windows Phone7ネタというよりかはSilverlightネタになるのですが、「64bit版のMSBuildではSilverlightプロジェクトがビルドできない」という問題があります。
 
 ※Visual Studio Engineering Teamのブログに64bit版MSBuildでのネタが掲載されています。
 64bit版Windows7でビルド環境を構築し、ビルドを実行すると、こんな感じでエラーになります。

004

 自分はこの原因がすぐにわからず、結構な時間ハマってました。orz

 次に、現時点でのWindows Phone SDKの最新版である7.1をインストールします。

 また、ビルド生成物の出力/共有フォルダを作成しておきます。
 →とりあえずなら共有フォルダ/ローカルセキュリティともに「Everyone:フルコントロール」でOKです。

○TFSのインストール/ビルド構成
 TFS本体のサーバは構築済の前提とし、ビルドサーバのみ構築しますので、インストールする機能を「Team Foundation ビルド サービス」のみ選択してインストールします。

001

 インストールした後は構成ウィザードに従ってビルドサービスを構成します。
 
 「ビルドコンピュータの構成」でビルドサービスを実行するユーザとして「DTFSBuild」を指定します。

002

○TFSチームプロジェクトの作成/Windows Phone7プロジェクトの作成/Windows Phone7プロジェクトの登録
 これらは普通に行ってください。

○ビルド定義の作成
 基本的には普通に作成しますが、他のビルドエージェントで実行されないように、エージエントを固定します。
 ビルド定義の「プロセス」-「エージェントの設定」-「名前フィルター」に、Windows7環境のエージェント名を指定します。
 (通常は「[コンピュータ名] – エージェント1」という名前になります)

003

これで、チームエクスプローラーとかから普通にビルドを実行できるようになります。

TFSハンズオンで準備した環境

7/21にヒーロー島で開催させて頂いたTFSハンズオン用に準備した環境で、一部の方々から反応(強烈な内容だと、これ便利だから某支店に置きっぱなしにしろとかw)がありましたがので、「こんなスペックでできるんだ」といった感じで見て頂ければと思い、メモも兼ねて残しておきます。

持ち込んだPCは一部の方々にしてみれば普通のマシンスペックですw
○CPU:Corei73820K-C2
  6コア12スレッドです。
○メモリ:4GB×8枚=32GB
○ディスク
 ・2TB HDD SATA2×1
 ・512GB SSD SATA×1

OSとかは、すべて評価版で構築しています。
・Windows Server 2008 R2
 
・Windows 7 Enterprise
・Visual Studio 2010 Ultimate SP1
・Office Professional Plus 2010
・Team Foundation Servwe 2010 SP1

概要ですが、
○Hyper-V環境を構築
○TFSサーバ環境構築
 仮想マシンのスペックは
 ・論理CPU:2個
 ・メモリ:4GB
 ・ディスク:100GB(可変割り当て)
  実体は20GB程度しか使用していません。
  作成先はSSDです。
 ・普通にインストールすればOKです。
 ・ADは使用しません。
 ・接続用の全ユーザを登録します。(今回は40ユーザ)
 ・使用するチームプロジェクトを作成しておきます。(40プロジェクト)
 ・ファイアウォールはすべてOFFにします。
○クライアントベース環境構築
 仮想マシンのスペックは
 ・論理CPU:1個
 ・メモリ:1GB
 ・ディスク:100GB(可変割り当て)
  こちらは35GBぐらい使用しています。
  作成先はSSDです。
 ・コンピュータ名は適当に設定します。
 ・リモートデスクトップ接続の設定を行っておきます。
 ・Visual Studio/Officeを普通にインストールします。
 ・Windows Updateはこの環境で適用してしまいます。
 ・ファイアウォールはすべてOFFにします。
○個別クライアント環境構築
 ・ベース環境のディスクを親ディスクとして、差分ディスクで構築しました。
  CPU/メモリはベース環境と同一です。
 ・コンピュータ名/ハンズオンで使用するユーザ(今回は1台で1ユーザのみ)を登録します。
 ・IPアドレスの割り当ては、今回は固定IPアドレスで設定しました。DHCP割り当てという手もありますが、DHCPに登録しなければいけないので、手間はあまり変わらないかもしれません。

この環境だと、TFSサーバ+クライアント約20台ぐらいは同時使用できます。

○使用感
 今回、参加頂いたのが10名ちょっとでしたので、皆様に仮想環境を使用して頂きました。
 ハンズオンですので、あまりガツガツ使用することもなく、ヘビーなVSプロジェクトでもありませんが、結構サクサク動いてたようです。
 レポート表示したり、CIとかゲートチェックインで一斉にビルドが実行されるタイミングとかもありましたが、そんなに待たされることもなく実行できていました。

○おまけ
 ・今回の環境は、約3日ぐらいかけて作成しました。
 ・運搬する際に、SSDはつけたまま、HDDは外しました。
 ・個別クライアント環境の作成は、ほぼ手作業でヒーヒー言いながら作成していました。
 Windows Server 2012とWindows 8になれば、PowerShellでいろんなことが自動化できそうですので、次回作成することがあれば頑張ってみたいなと思います。
 ・MSさん、コミュニティ用にAzure利用枠ください。それが一番楽ですw
 

ヒーロー島 TFS Day in 広島 参加

7/21に開催されたヒーロー島は、TFS Dayということで、
 ・Developers Extreme Way @長沢さん
 ・Team Foundation Server 2012 「Express」って何?
 ・Team Foundation Server 2010 Hands on Labs
という内容でした。

今回、とある流れから広島でTFSのセッションをお願いしたところ快諾頂き、開催することができました。長沢さん、ヒーロー島スタッフの方々、その他ご支援頂きました方々、ありがとうございました。

○Developers Extreme Way
 
 プロジェクトの現状から始まり、ビジネスとITの関係、アジャイルコンセンサス、DevOps、Continuous Value Delivery、Visual Studio 2012の開発コンセプト、Visual Studio2012+TFS/Test Manager/Feedback Clientのデモなどなど、ここ数か月で長沢さんがいろんなセッションでお話されてきた内容が1つにまとまったような感じでした。
 しかも、長沢さんのセッションとしては珍しく、USTREAM中継も行われていたという贅沢なセッションでした。
 セッション資料はブログで公開されていますので、是非見て頂きたいです。

○Team Foundation Server 2012 「Express」って何? @自分
 今回、無償版のTFSであるExpress版でについての概要をお話させて頂きました。
 セッション資料は、こちらで公開しています。
 小規模が前提となりますが、「とりあえず、VSSから移行する」とか、「ちょっと使ってみたい」という環境であれば、無償ですぐに導入できるのでは?と思います。

○ハンズオン
 以前、名古屋で初開催されたTFSハンズオンの内容を広島で実施してみました。
 西日本では初開催ではないかと。
 要求事項/作業項目の登録から始まり、ユニットテストの作成、CI(継続的インテグレーション)環境の作成、レポート機能の確認、チェックインポリシー/ゲートチェックインなどなど、TFSで開発を行うにあたっての一通りの機能を一通り体験して頂きました。
 最後がグダグダになってしまい、参加頂いた方の感想をお聞きするのを忘れてしまったのが反省点です。

○その他
 きよくらさんがTogetterでまとめを作成してされています。ありがとうございます。

懇親会で、「1回で終わらせるのはもったいない」などのうれしいお言葉を頂いたこともあり、またTFS関連のセッションができればと思います。
(今回スケジュールの都合でお越し頂けなかったあの方の広島召喚も頑張ります)

第10回 TFSUG : ざっくりわかるScrum and Team Foundation Server に参加しました

今回のTFSUGは、スクラム界隈では有名な@ryuzeeさんによる「ざっくりわかるScrum and Team Foundation Server」でした。
滅多に聞ける内容ではないと思い、休暇取得&自腹で参加してきました。

大半の内容はスライドに綺麗にまとめられていますので、個人的なメモを少しほど。
(スライドはこちらで公開されています)

・プロダクトオーナーがいないのであれば、仕事をしてはいけない
 →「無駄なものを作る」ことになる
・最初のスプリントに対してある程度正確な見積もりができないのは当たりまえ。実績がないから。
 スプリントの結果をフィードバックして見積もりも正確にしていく。
・ツールとアナログは排他ではない。
・スプリントの期間
 →プロダクトオーナーがどのぐらい黙っていられるかw
  →どのぐらいの期間で価値が変動しそうか?/作成した製品(価値)が欲しいか
・チームの能力によってスケジュールが決定する
 チームの能力が上がれば、最初のことは5ポイントでできていたことが3ポイントとか2ポイントでできるようになる。
・絵に書けないようなプロセスで仕事をしてはいけない

胸にグサグサと刺さること多数の内容でしたが、最後の一言がずっしりときました。
絵に書けないということは、複雑怪奇なプロセスだったり、自分がプロセスを理解できていないということであり、そんな状態で仕事しても良いものはできないということが明確にわかる一言です。

7/21(土) ヒーロー島はTFS Day!

最近、ALM(Application Lifecycle Management)界隈がホットな感じですが、
このたび、マイクロソフトの長沢さんに来ていただけることになりました。

詳細/申し込み方法についてはこちらから。
.NET 勉強会 / ヒーロー島 [7月21日(土) ] TFS Day in 広島 を開催します

長沢さんのセッション/名古屋で大反響だったTFSのハンズオンと豪勢な内容になっています。
たぶんですが、西日本のコミュニティでTFSのハンズオンは初めてではないかと思います。

自分もTFS2012 Expressについて話させて頂きますが、期待しないでください^ ^;

TFS触ったことがない方、(TFS関係なく)アジャイル/スクラムについて長沢さんとお話ししたい方、自分のプロジェクト/チームの改善のヒントが欲しい方などなど、ぜひこの機会にご参加ください。
(先月は大阪でTFSのユーザーグループであるTFSUG主催の勉強会、今月はヒーロー島とTFS(ALM)関連の勉強会が西日本で勃発、これから先も西日本で何件かイベントがあるみたいで、「今が旬」って感じです!)

第8回 TFSUGアジャイルなんとか書籍発売記念! 参加

6/20に開催されたTFSUGですが、今回のTFSUGは東京と大阪の同時開催でした。
そして、なぜか東京での参加です^ ^;

☆「はじめての TFS FROM A TO Z」 長沢さん
 VS/TFSにどんな機能があって、どんな風につかっていくかといった感じの内容でした。
 TFSの全体像を簡単に俯瞰できる内容でした。
 あんな風に社内説明できれば、少しは導入も簡単になるかなぁと。

☆「TFSを使ったアジャイル開発」 @YASUOHOSOTANI さん
 1月に東京で1度セッションを実施されていましたが、そのグレードアップバージョンといった感じでした。
 中でも、「CEGTest」に関する内容(ツールそのものの使い方、TFSのリソースとしての取り込み方など)については「なるほど!さすが!」という感じでした。
 twitter上でも反響大きかったみたいです。

☆「TFSと継続的デリバリー」 @SHIBAO800 さん
 内容は「プロセス改善・継続~」でした。
 何回聞いても「心洗われる」というか、「目指すべきものがそこにある」というか、そんな感じです。
 大阪の方にも大うけだったみたいです。

☆「Scrum BootCamp 体験記」 @shioi さん
 いつかは参加してみたいScrum BootCampですが、セッション・スライドの内容がてんこ盛りで、ますますそそられる内容でした。

☆その他
 ・Community Open Dayでも使用されていましたが、やはりLyncはすごいです。
  スライド画面が共有できるのは強力です。
 ・LifeCamのコスプレでシ○アのマスクがあの方にセットできれば最高だったかも。
 ・実は、なんとか書籍についてどのセッションでも紹介されなかったという事実w

次回予告はまだ出ていないようですが、何やら面白そうな内容みたいですので、是非スケジュール調整をして出たいです。

Community Open Day 2012参加

毎年開催されるCommunity Open Dayですが、今年は東京で参加です。
(一応ですが、東京に来てたのはたまたまですw

ざっとメモした内容を書き起こしてみます。詳細はスライドとかUSTが出てくると思いますのでそちらにて。

〇ゼネラルセッション/キーノート
 ・午前中のセッションはNDAなので・・・

〇Visual Studio 11 beta とスレートPCを使ったデバッグ講座
 シミュレータ環境、リモートデバッグ時の小技などでした。
 ・シミュレータはローカルマシンのメニューなどを共有するので、汚れた環境だとシミュレータ環境も汚れる。
 ・リモートデバッグ時、ローカルにログを出力するという手もあるが、TCPサーバを別に立ててログ情報を飛ばすということもできるとのこと。

〇Visual Studio 11 de Debugging
 デバッグ時に使えるツールについてでした。
 ・IntelliTraceは開発者側だけUltimateが必要。テスター側はTestManagerだけでOK。
 ・IIS7.0/7.5向けスタンドアロン版IntelliTrace Collector(2MBしかない!)が追加(.NET 3.5以降)
 ・Windows Error Reporting(WER)
 ・Windows Debugging Hook
   Global Flags→メモリ/ハンドルリークも(がんばれば)調査可能

〇TFSを使ったアジャイル開発事例@りばてぃさん
 実際にアジャイルで開発を進めている状況報告でした。(TFSUGでも4月にありました)
 ・細かすぎたバックログ:「要求」ではなく「仕様」を書いていた
 ・長い計画ミーティング:2週間スプリントなのに9時間
  通常は2週間スプリントだとミーティング時間は4時間
 ・リリース判定時に、「終了条件が足りない」→リリースできない
 ・2点見積もりを元に、ズレを把握
  →ズレを確認してみると、プロジェクトが進むにつれて誤差が小さくなっている
 ・小さくてもよいから「成功」を積み重ねること

〇TFSを使ったアジャイル開発事例@SHIBAO800さん
 こちらは今までどうやってアジャイル開発を行ってきたか、どんな風に改善し続けてきたかについてでした。
 (TFS導入+アジャイルにより、チームから外され「ぼっち」になったそうですw)
 ある意味、アジャイル開発の理想形ではないかと感じました。
 ・常に「振り返り」を実施している
 ・チームの意識統一を重視している
 ・イノベータ理論
 ・カナリヤリリース
  積極的に使ってもらえ、意見を言ってくれるユーザに先行リリースし、早い段階でフィードバックを得ることで、よりよいものをさらに早く取り込む。
  この環境は、提案だけ実施し、構築はチームが行ったのを見てただけ。
  →それだけチーム力が向上していることの証し

〇DeveloperのためのUI設計入門 ~Metro Style AP を開発する前に~
 UIを設計するための基礎知識についてでした。
 ・Usability:「特定の人が」
 ・Universal Design:「できるだけ多くの人が」
 ・Web Accessibility JIS X8341-3:2010
 ・「使いやすい」
  学習しやすさ/エラーの少なさ/記憶のしやすさ/効率性
 ・記憶のしやすさ
  手続き記憶/プライミング記憶/意味記憶/短期記憶/エピソード記憶
 ・GUIでは短期記憶で情報を処理
  処理能力:7±2
  チャンキング
   情報をいくつかのまとまりとしてとらえること
    リボンのグループ化
 ・「直観的にわかりやすい」と言われるが、「直観」は過去の経験(習慣)による。
 ・目的に早く到着させることを意識する
  目的の場所が見つからないのが一番イライラする
 ・デザインした理由が説明できること

〇偉大なDeveloperの思考回路
 「良い(できる)Developerになるために気を付けてほしいこと」についてでした。
 ・結構細かいところまで気を使っている
  「使う人が」時間をかけない←使い方が一見してわかる←ステータスバー
 ・無理してひと手間かけるのではなく、技術力を磨くことで使う人を気遣ったアプリを短期間で作成することができる
 ・妥協しないことが重要←自分次第
  SIer系の仕事は楽ができる←ソースを見られないから
  作り方に対するチェックが入らない、テストに対してはギチギチ。
 ・昔は一人で開発できた。今はチームで作成しないと成功しない。
  →やろうとすれば、いくらでも手を抜ける
 ・いろいろなことを知り尽くしていると、組み合わせでよりよいアプリが開発できるようになる
 ・相手が何を考えているかを意識する
 ・大切にすべきことは、セッションや書籍、サンプルコードに内在する思想や美学、考え方を受け取ること。
  All-In-One Code Framework/codePlex personal statement Hiroyuki Kawanishi

〇懇親会
 ・なぜか、会場設営のお手伝いに。こんなものぶら下げてましたw。
Dsc_0200

 ・豪勢なプレゼントがたくさんありましたが、ジャンケン勝てませんでした...orz。

〇その他
 ・広島の人間が東京会場から広島のセッションをチラ見するとかw
 ・Lyncはすごかった。TV会議システムなんていらない。
 ・できれば、UST/SlideShareで一通り内容を見てみたい。
 ・運営スタッフの皆様/ご支援頂いたMSの皆様、ありがとうございました。
 ・また来年も参加します。場所は聞かないでくださいw

NUnitとNUnit Test Adapterのインストール

2012/06/01にいろんなものが発表されました。
・Windows 8 Release Preview
・Windows Server 2012 Release Candidate
・Visual Studio 2012 Release Candidate
・Team Foundation Server 2012 Release Candidate

早速インストールして使ってみてますが、ちょっと引っかかったことがあったので備忘録。

前に、VS11 Beta(名前がw)ではNUnitなどのMSTest以外のテストフレームワークが使えるようになったと書きました。
VS IDEの「テストエクスプローラー」から使うためには「Test Adapter」なるものを入れる必要があるのですが、IDEからインストールする場合、「NUnit」と「NUnit Test Adapter」ではインストール方法が異なります。

「NUnit」ですが、まずは「プロジェクト」-「NuGetパッケージの管理」を選択します。
Nunitinst01

その後、「オンライン」を選択し、右上の検索キーワードとして「nunit」を入力すると、一覧に「NUnit」が表示されます。
Nunitinst02
「インストール」を押下すると、NUnitがインストールされます。

次に「NUnit TestAdapter」ですが、「ツール」-「拡張機能の更新」を選択します。
Nunitinst03

その後、「オンライン」を選択し、右上の検索キーワードとして「nunit」を入力すると、一覧に「NUnit Test Adapter」が表示されます。

Nunitinst04
「ダウンロード」を押下すると、NUnit Test Adapterがインストールされます。

最初、半日ぐらい使えないと悩み、Twitter上でつぶやくところまで至りました。w
またもや@biacさんからのフォローで気が付きました。ありがとうございます<(_ _)>

書籍感想:アジャイルソフトウェアエンジニアリング

巷で噂の「アジャイルソフトウェアエンジニアリング」を購入してみました。

読み手のスキル/コンテキストによって思いはそれぞれあるかと思いますが、
 ・基本的にはアジャイル(スクラム)開発の考え方・進め方を説きつつ、TFS/VSを使用する具体的な手法が書かれていて、「理論と実践」が融合している内容。
 ・VSに搭載された機能が生み出された背景(搭載された意図)がわかるので、「機能をどう使うのが理想的か」がイメージしやすい。
 ・実例として、MSで実施された内容が記載されている。
 ・なんとなくですが、通常のアジャイル本に比べて、単語/言い回しが分かりやすい
といった感じで、今の自分にとっては読みごたえのある内容でした。

仕事では.NETも使ってませんしアジャイル開発も行っていませんが、.NETでの開発チームがアジャイル(スクラム)で開発を始める/行き詰ったときに、「まずはこの本を見ればいい」と言える感じです。
(ウォーターフォール開発してたり、JavaでTFS使ったりしている方でも十分参考になると思います)