第4回 TFSUG http://kokucheese.com/event/index/26350/
2012.2.20第4回TFSUG#tfsug@int128
View Slide
自己紹介INTRODUCTION
いわてぃ@int128http://d.hatena.ne.jp/int128/SIerに勤務するエンジニア。WordやPowerPointより、コードを書いているほうが好きです。2007 20122008 2009 2010 2011インフラエンジニア プログラマスーツ的な仕事?
私事ですが…
2012年3月、結婚式を挙げます※写真はイメージです
アジャイルな結婚式準備
本題
はじめに※本発表の内容は、私の所属する会社や組織の方針を反映するものではありません。とある開発プロジェクトでTFSを運用した事例を紹介します。http://d.hatena.ne.jp/int128/20111221/1324487491
プロジェクト概要2010年10月〜2011年3月末• あ2011年4月〜2012年3月末
チームマネジメント開発フェーズ• 朝会• スタンドアップミーティング要件定義フェーズ• 朝会• プロジェクタでTFSのタスクリストを表示しながら※私はマネージャでもリーダでもないです
ポータルサイトポータルサイトを上手く運用するとチームの情報共有が進む。メールではなくRSS購読、情報の受身ではなく発信者へ。お知らせTips(参考情報)リンク
開発環境• 当初は VS2008+Subversion(AnkhSVN)を利用• 他案件ですでに導入済み• Expression Blend 3• 後に VS2010+TFS に変更• Visual Studio 2010• SQL Server 2008 R2 Express• Expression Blend 4• .NET Framework 3.5(制約)
開発サーバ• その辺に転がっているデスクトップPC• Windows Server 2008 R2• Team Foundation Server 2010(後にSP1)• SQL Server 2008 R2 Enteprise• Office SharePoint Server 2007• システム構成• シングルサーバ• ドメイン参加• 日次バックアップ
リポジトリやビルドサーバは拠り所。シングルポイントになってはいけない。• 速いマシン• 信頼できる構成• 運用しやすい仕組み
TFS2010のセットアップはとても簡単短時間でCI環境を構築できる。Windows Serverが使える人ならTFSを運用できる。「ビルド管理者」の一極集中を軽減できる。
ソースコード管理VS2010+TFS2010を全面的に採用した。• チェックイン、チェックアウトの操作に慣れればSVNとあまり違わないと思う。• 分岐とマージについては説明資料を作った。• 将来のバージョンで、Git+SVNのように分散バージョン管理の美味しいところを取り入れてくれたら嬉しい。
お約束• バグやタスクの関連付け• TFS+VSではチェックイン時にバグやタスクを画面で選択して関連付けられる。バグIDを手入力する必要はない。• チェックインの必須項目にはしなかった。• 最低でも1日1回のチェックイン• トラディショナルな開発スタイルに慣れた人は、最初から完成品を目指してしまう。• チェックインは怖くない!• コードの共同所有文化• リファクタリング
シェルブを使う作業中のソースコードをサーバに一時的に保管しておける。• git stash• 作業履歴• ちょっと大きな変更を加えるときに成果物を保管する。• コードレビュー的なもの• 他人がシェルブしたコードも見られる。• シェルブに入れたコードを相談や議論のネタにする。「動かないんですけど…」「俺のコードを見てくれ、どう思う?」
チェックインポリシーチェックイン時に制約を設けることが可能• ビルドの通らないコードはチェックインできない。• ユニットテストの通らないコードもチェックインできない?• ユニットテスト?美味しいの?• 開発に習熟したチームでないと難しいと思う。• 品質ゲート
コード分析
ユニットテストVS2010 Unit Testを採用した。• テストケースの自動生成• カバレッジ
ブランチラインの運用
データベースの管理スキーマとデータをリポジトリで管理する。• データファイル(MDF)をチェックイン• アプリとデータベースの食い違いがなくなる。ファイルアタッチ機能を利用• 開発環境でアプリを実行するとき、データファイルをローカルのSQL Serverに自動的にアタッチしてくれる• 開発環境のデータベースを同一に揃えられるため、環境に起因するトラブルがなくなる
落とし穴大きなデータファイルはディスクと時間を食いつぶす• TFSのビルドではいくつもの作業コピーを作られるため、MDFがコピーされないように設定するSQL Server Standard以上ではファイルアタッチドDBを利用できない• ビルドサーバにアタッチ済みのデータベースを用意し、テストのsetUpで接続文字列を書き換える
ビルド標準的なビルドなら、TFSの設定画面から数ステップで設定できる• 設定しやすいことは非常に重要• 「ビルド担当者」のシングルポイントを取り除くVSとTFSのビルド設定がシームレス
通知
デプロイメントCD-Rリリース• お客様拠点にCD-Rを持ち込み、手動でインストール• 顧客端末へのリリースは人力でやるしかなくて、煩雑な手順が問題になった。• サーバどこに置いてるの?• 管理者アカウント?限られた状況で• CD-Rを焼くまでは誰でもワンクリック• 成果物をビルドサーバの共有フォルダに出力
まとめ短時間でCI環境を構築できるメリットは大きい。TFSのインストールや管理は簡単。ビルドエラーや警告から目を背けて、赤い日々や黄色い日々を過ごしてはいけない。