TFSの分岐について:ワークスペースの作成

TFSでは、TFSサーバ側で管理しているプロジェクトフォルダと、作業を行うコンピュータのローカルフォルダをマッピングするために「ワークスペース」というものを定義します。
※別プロジェクトのワークスペースまで消さないでくださいね

ソース管理エクスプローラー、もしくはチームエクスプローラーの「保留中の変更」からワークスペースの管理画面を開きます。

002


003

デフォルトだとコンピュータ名がワークスペース名となったワークスペースが1つ作成されていると思います。

004

一度このワークスペースを削除し、改めてMAINブランチ用のワークスペースを作成します。

005

設定後、最新ファイルの取得確認が表示されますので、「はい」で取得します。

006

これで、MAINブランチ用ワークスペースが作成できました。

同様に、DEVELOPMENTブランチ用ワークスペースも作成します。

010_2

ちなみに、なぜブランチごとにワークスペースを作成するのかですが、TFS/VSがワークスペースの定義を基準にしていろんな管理を行うためです。
たとえばですが、複数のソリューションを同じワークスペースで作業した場合、とあるソリューションで変更し、チェックインしようとしたときに、別ソリューションの変更中ファイルも合わせてチェックインしてしまいます。
これではブランチを作る意味がないので、ブランチごとにちゃんとワークスペースを作成するようにしましょう。

次は、作業中ワークスペースの確認についてです。

TFSの分岐について:分岐作成

前回からの続きで、分岐を作成します。
今回はDEVELOPERブランチを作成してみたいと思います。

分岐はチームエクスプローラーから作成します。
MAINブランチ(と思い込んだフォルダ)を右クリックし、「分岐とマージ」-「分岐」を選択します。

008_2

すると、分岐のターゲット名とかを指定する画面が表示されます。

009

このままだと、どのブランチかわからないのでターゲットを「$/BranchTest/BranchTest-分岐」から「$/BranchTest/BranchTest-Dev」に変更して「OK」ボタンを押します。
すると、ワークスペースのマッピングを指定する画面が表示されますので、マッピングするローカルフォルダを入力して「マップ」ボタンを押します。
(ローカルフォルダの名前も、ブランチ内容がわかるフォルダ名で指定したほうがいいと思います)

010

しばらくすると、DEVELOPERブランチが作成された状態(フォルダが作成され、よくわからないマークがついた状態)になりますが、まだチェックインされていないので、チェックインしてしまいます。
(ちなみに、MAINブランチである「BranchTest」のアイコンが分岐アイコンに変更されてます)

011

チェックインが終了すると、DEVELOPMENTブランチである「BranchTest-Dev」のアイコンも分岐アイコンに変更されます。

次は、ワークスペースの作成についてです。

TFSの分岐について:MAINブランチをどうするか

前回の「TFS 分岐ガイド」にある「基本」分岐計画によると、
 ・最初にMAINブランチを作成
 ・開発を行うときにはDEVELOPMENTブランチを作成、そこで開発差分をコントロール
 ・開発が完了したらMAINブランチに開発内容をマージ
 ・顧客にリリースするものが固まったときにRELEASEブランチを作成
 ・リリースしたものにバグがあったときはRELEASEブランチに対して修正を行う
  修正したもののうち、製品として取り込むべきものがある場合にはMAINブランチにマージする
といった感じになっています。
(TFSのゲートチェックインと自動テストを使えば、単一案件の開発はMAINブランチだけでコントロールすることもできると思いますが、今回はDEVELOPMENTブランチを作成することにします)

この計画に従うと、まずはMAINブランチを作成し、初期ソースを格納します。次にMAINブランチからDEVELOPMENTブランチへ分岐します。
・・・ですが、今まで分岐なんて考えていなかった場合、「MAINブランチなんて作ってない!」だと思います。(ええ、自分のそうです^ ^;)
となると、TFSに登録された状態はこうなっていると思います。
(チームプロジェクト「BranchTest」に対して、ソリューション「BranchTest」とプロジェクト「BranchConsole」「BranchTestLib」を登録しています)



001_2

新規作成時なら、一度削除してMAINフォルダを作成後、ソリューションをMAINフォルダの下に格納されるように再登録もできると思いますが、既に開発が進んでいると対応が難しいと思いますので、ソリューションフォルダをそのままMAINブランチと思い込むことにします。

次は、分岐の作成です。

TFSでの分岐について:基本的な考え方

今までVSSだったこともあり、そろそろちゃんとした分岐を使った修正について勉強しようと思い、確認したことをいろいろと残していこうかと。
(と言っているうちにUpdate2出てしまって、Gitも確認したくなってますが^ ^;)

個人的にですが、分岐は「何かしらの修正を行うときに、今までの内容を保全し、安心して別の追加開発/変更を行うための管理方法の一つ」だと思っています。
それだけであればフォルダ管理でもVSSでも対処できると思いますが、当然複数人での開発/管理作業(履歴・差分照会/案件との紐づけなど)の効率を考えると、ちゃんとしたバージョン管理システムを使うことになります。

バージョン管理システムはCVS/Subversion/Gitなどなどありますが、大抵のシステムは「分岐/ブランチ」という方法で追加開発/変更を行えるようになっています。
何かしらの開発/変更が発生したとき、修正元となるベース(トランク/Mainブランチ)からソースファイルを分岐し、分岐先に対して変更をかけ、必要であれば分岐先から分岐元に修正内容を反映させる(マージ)ことになります。

どういう開発のときにどういった分岐をさせるとよいのかは千差万別のようですが、一例として「TFS 分岐ガイド」なるものがあります。
最新版はVS2012版のv2.1ですが、英語しかありません。
日本語はVS2010版のv1がありますので、(自分もですが)勉強したいけど英語は読めませんという方は日本語でも大丈夫かと思います。

次からは、分岐ガイドの「基本」分岐計画を参考にさせてもらいながら、実際にVS上でどうすれば分岐が作れるかを書きたいと思います。
(自分は、最初の分岐をどう作るかとか、VSのワークスペースをどうすればいいのかがすぐにわからない子でしたので(;´Д`))

第80回 CLR/Hに参加しました

去年の12月にCLR/Hさんのカソウ化デイに参加させてもらいましたが、3/2のCLR/HさんとTFSUGの共催ALMデイに参加しました。

午前中はTFServiceハンズオンということで、TFServiceを使用してチームプロジェクトの作成・プロダクトバックログをWeb/VS/Excelから登録・ソースコードチェックイン・自動ビルド定義作成をざっくりと行いました。

午後からは通常のセッションでした。
長沢さんのノートPCでプロジェクタに接続できない(映らない)トラブルがあり、急きょ中村さんからセッション開始。
今まで使ったことのあるいろんなツールのいいところ、いやなところを主観ベースで挙げてました。
自分としては「適材適所」が必要だと思いました。
(Linux OnlyのところにTFSを持っていくのは難しいです)

次はLT&おやつタイムでした。
Dsc_0163
Dsc_0164
が、おやつタイムの修行が想像以上に厳しく、正気を保つので精いっぱいでしたw

その後は、USB-VGAアダプタを現地調達された長沢さんのセッションでした。
開発者が押さえておきたい考え方(継続的な価値の提供)についてでした。
内容もそうですが、いつもながらのパワポ職人芸もあり、聞きごたえ十分なセッションでした。

自分のセッションについては後回しにしますw

最後は「JUnit実践入門」の著者である渡辺さんによる「テスト駆動開発のはじめ方」でした。
「ユースケース駆動開発」という単語は聞いた(見かけた)ことがある程度でしたが、「なるほど!」とその場で思えるほどわかりやい説明でした。
(最後の書籍紹介にあった「ユースケース駆動開発実践ガイド」は購入してみようと思います)

後回しにした自分のセッションですが、今回もTFS+JavaでCI構築例について話させて頂きました。

基本的には1月にTFSUGでお話したものと一緒ですが、今回はデモメインで行いました。
(XP SP3+VB6+MSSCCIで、作業項目と関連付けしてチェックインとか、CentOS上のEclipseからTEEを使ってTFSに接続し、ビルド結果まで確認するというデモもやりました)

毎回言ってますが、複数言語で開発している部署で、1つでもVSで開発するものがあれば、統合リポジトリとしてTFSは有効な選択肢の1つだと思います。

※セッション中に、放送事故しなくてほっとしていますw

その後の懇親会も楽しく参加させて頂きました。
また機会があれば参加したいので、よろしくお願いします。

「ヒーロー島バレンタイン・スペシャル」でスピーカーしました

ヒーロー島で毎年恒例のバレンタイン・スペシャルでした。

今回はおなじみジニアス平井さんと椎野さんに来ていただき、スペシャルデモ集とUX関連セッションを見せて頂きました。

ジニアスのデモは新作も何作はあり、体力が必要でしたが(謎)、とても楽しめるものばかりでした。流石です。

椎野さんには、UX再確認・VS小技集・コードスニペット・ストーリーボーディングなどなど、いろんなネタを披露して頂きました。

自分はというと、「こんな開発からあんな開発に!」というタイトルで、
 ・とりあえず実装
 ・手動テスト
 ・Excel管理
 ・バージョン管理はフォルダで
という開発から
 ・TDD
 ・自動テスト
 ・TFSでの作業項目管理/バージョン管理
にしてみませんか?ということを話させて頂きました。

TDDのところは実際にVS2012でライブコーディングしてみたのですが、完全にテンパってしまい、ぐたぐたなセッションになってしまいました。すいません<(_ _)>
(ゲートチェックインなどのネタが抜けてしまいました)

それでも、最低限開発者に知ってほしいキーワード/情報へのリンクは入れたと思いますので、いろいろたどってみてください。

あと、神のお告げ(?)で2冊購入してました「SCRUM BOOT CAMP THE BOOK」を1冊ほどジャンケン大会の景品に出させて頂きました。
ゲットできた方は是非感想をお聞かせください。
(ゲットできなかった方も是非読んでもらいたい本です。)

それと、読書コーナーとしてこんな本を置いていました。
「読んでみたい」という方がいらっしゃれば、また持っていきます。
485204_474117752655280_1157556769_n
(Windowsストアアプリは別な方が持ってこられた書籍ですので持っていません)

次は3/2に北海道のCLR/HさんでTFS+Javaでお話させていただく予定です。
これだけお話させて頂く機会があるのはとてもありがたいです。

今回気づいたこと:広島で00ネタは難しいかも

SCRUM BOOT CAMP THE BOOK購入

先日のTFSUGで、@ryuzeeさんが「これ超大事!」と言われてたので、購入しました。
しかし、地元(広島)で3軒ぐらい書店を回りましたが全くなく、出張先でさらに3軒ぐらい回ってようやく購入。
とても読みやすく、買った当日になんとか読み切りました。
最近「フィードバック重要」と洗脳されているので、「スクラムを実施したことない人間が読んだ感想」を書いてみました。

内容ですが、「基礎編」と「実践編」に分かれてます。
基礎編は、「スクラムはこんな感じでやるんですよ」という全体概要を説明した内容になっています。TFSUGで@ryuzeeさんが説明される内容に近いものですので、個人的にはすんなり読めました。
(「スクラムを1枚の図に書いたもの」の中に書かれている人物が書籍の人物に変更されているのは「細かいところまで凝ってるなぁ」と感じました)

実践編ですが、実際に主人公がスクラムでプロジェクトを進めていきながら、いろいろな問題に対処するというストーリー仕立てになっています。
こういうストーリー仕立てだと、自分のようなスクラムを実施したことがない人間でも簡単にイメージすることができるので、とてもわかりやすいです。
自分が読んだことのある書籍の中では、トム・デマルコの「デッドライン―ソフト開発を成功に導く101の法則」が近いと思います。

それに加えて、問題点に対する対応について、必ず「目的」「理由」が記載されています。
よく「~しないといけない」とか「~したらいいです」とか書いてあると思いますが、「目的」「理由」がないと、単なる「作業」になってしまい、応用ができないなと思うことがあります。
しかし、この書籍ではちゃんと「目的」「理由」が書かれていますので、それをしっかり押さえれば「なんかやれそうかなぁ」と思える感じになります。

出てくる問題点も、著者の方々が実際に遭遇した内容をもとに書かれており、頭の中で「こんな問題がでたらどうするんだろう」と思ってたことがほぼ書かれていました。

多分ですが、「今からスクラムやります」とか「つい最近スクラムやり始めました」というチームに1冊あるととても助かる内容ではないかと思います。

2013年の開発トレンド先取りセミナーに参加してきました

2013/02/01に開催されたMicrosoftとTFSUG 共催イベント「2013年の開発トレンド先取りセミナー」に参加してきました。
今回、平日の昼から開催でしたが、ほぼ満席状態となりました。

いろいろありすぎて書ききれませんが、個人的に印象に残ったのは
・AUM Summit 3で発表されたVisual Studio/TFS Update 2 CTP版リリース
・ALM Summit 3でのトレンド
 Build, Measure, Lean virtuous cycle
 Customer:discovery→Validation→Creation→Building
 Reporting:Measure→Know→Change→Lead
 一定のサイクルで開発を回すこと/「開発をどうするか」ではなく「価値(顧客)をどう創造するか」に完全にシフトしていること
 もはや「Agile」「継続的デリバリー」について語られないというのは衝撃的でした。

登壇者のセッション資料はこちらに上がっています。
 ・中村さん
  Microsoft社 × TFSUG 共催イベントを開催しました
 ・吉羽さん
  [資料公開]Scrumの概要 (2013年の開発トレンド先取りセミナー)
 ・飛び入り参加された亀川さん
  TFSUGと業開中心会議で飛び入りでしゃべってきました
 ・長沢さんのALM Summit 3最速レポート
  ALM Summit 3 の最速参加レポート
 ・当日のツイッターまとめ
  「2013年の開発トレンド先取りセミナー」のまとめ
自分も「TFSは.NET専用じゃないですよ~」ということで、JavaでTFSの構築例についてお話させて頂きました。

まずはUpdate2でVisual Studio/TFSがGit対応するので、Git本買って勉強します^ ^;

なんか忙しくなってます

まだ2013年になってから1ヶ月経ってませんが、いつの間にか2月に2回もコミュニティーでお話させて頂けることになってました(;^ω^)

○2013/02/01 2013年の開発トレンド先取りセミナー@TFSUG(品川)
 もう2週間を切ってますが、マイクロソフトとTFSUGの共催で半日セミナーを開催します。
 海の向こうで開催されている「ALM Summit」の現地とのLive中継あり、日本有数のアジャイルコーチである吉羽さん(@ryuzee)のセッションあり、TFSUG主催者であり、これまた日本有数のKinectエバンジェリストである中村さん(@kaorun55)のセッションありと、タイトル通りの先取りセミナーとなっていますので、ぜひとも参加してみてはいかがでしょうか?
 ※定員が50名とのことですが、募集サイト公開後数時間で既に10名以上の申し込みがあったようです。

 自分はTFSでJavaのCI環境を構築する例についてお話させていただきます。
 (自分のセッションはクールダウンセッションですw)

○2013/02/26 ヒーロー島バレンタイン・スペシャル@ヒーロー島&Windows Phoneハンズオン(広島)
 こちらは、毎年恒例のバレンタイン企画です。
 (そして、祝30回です。おめでとうございます!)
 
 ・いつも目が離せないジニアス平井さんのセッション
 ・VS開発界隈では有名で、いつの間にかマイクロソフトに移籍されていた椎野さん
 ・WindowsPhone&ストアアプリのシーラカンスさん
 ・OfficeSystemといえばこの方上本さん など
 といった豪勢な一日となっています。
 今のところ、また自分が話すネタを決めきれていませんが、せっかくの機会ですので、品川でのセミナーの内容を少しでも取り入れられればと思ってます。

ご都合があえば、ぜひとも参加頂ければと思います。

ソース編集で配色とかがおかしくなるときの対処

ある日突然ですが、IDEがこんなエラーを発するようになりました。

Snapcrab_microsoft_visual_studio_20

(ユーザ名のところは消しています)

エラーが発生すると、単語単位で変更される予約語の配色とか、エラーがある部分に対する波線とかが崩れてしまいます。

001

エラーメッセージに書いてあるActivityLog.xmlをブラウザで開くとエラー内容が記録されています。

Snapcrab_activity_monitor_log_windo

System.InvalidCastException: 型 ‘System.__ComObject’ の COM オブジェクトをインターフェイス型 ‘Microsoft.VisualStudio.Editor.Implementation.IVsTextStreamEvents_Private’ にキャストできません。IID ‘{96FC7D44-BCDD-4F00-AE4D-07E26B2C0E52}’ が指定されたインターフェイスの COM コンポーネント上での QueryInterface 呼び出しのときに次のエラーが発生したため、この操作に失敗しました: インターフェイスがサポートされていません (HRESULT からの例外: 0x80004002 (E_NOINTERFACE))。   場所 System.StubHelpers.StubHelpers.GetCOMIPFromRCW(Object objSrc, IntPtr pCPCMD, IntPtr& ppTarget, Boolean& pfNeedsRelease)    場所 Microsoft.VisualStudio.Editor.Implementation.IVsTextStreamEvents_Private.OnChangeStreamText(Int32 iPos, Int32 iOldLen, Int32 iNewLen, Int32 fLast)    場所 Microsoft.VisualStudio.Editor.Implementation.VsTextBufferAdapter.OnTextBufferChanged(Object sender, TextContentChangedEventArgs e)    場所 Microsoft.VisualStudio.Text.Utilities.GuardedOperations.RaiseEvent[TArgs](Object sender, EventHandler`1 eventHandlers, TArgs args)

上記エラーコードとIIDを検索するとKBでこんなものがヒットしました。
Visual Studio 2010 crashes after installing MSDN Library for Visual Studio 2008
英語ですが、内容としては「レジストリがぶっ飛んでるから、再登録して」ということみたいです。
対象はVS2010となっていますが、VS2012でも同じ対応で問題ありませんでした。

OSによりレジストリの位置と登録内容が若干異なります。
○32-Bit Windows
 ・レジストリの位置
   [HKEY_CLASSES_ROOT\CLSID\{73B7DC00-F498-4ABD-AB79-D07AFD52F395}\InProcServer32]
 ・登録内容:「(規定)」に以下の内容を登録します。
  C:\Program Files\Common Files\Microsoft Shared\MSEnv\TextMgrP.dll

○64-Bit Windows
 ・レジストリの位置
   [HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{73B7DC00-F498-4ABD-AB79-D07AFD52F395}\InProcServer32]
 ・登録内容
  C:\Program Files (x86)\Common Files\Microsoft Shared\MSEnv\TextMgrP.dll

VSの再インストールでも対処できるのですが、さすがに再インストールは大変ですので、まずはこちらの手順でどうぞ。