« 2014年8月 | トップページ | 2014年10月 »

2014年9月

2014年9月27日 (土)

作業項目の「残存作業」の気軽な使い方

今回は小ネタです。

TFSでは「作業項目」(他システムだと「チケット」「Issue」とかですかね)を登録・管理することができます。
VSSなどの純粋なバージョン管理システムから移行された方にはぜひ使ってほしい機能です。作業項目にリンクすることで、いろんな管理ができるようになります。
(「この作業項目で修正したソースファイルは?」など)

作業項目の中に「残存作業」という項目があります。
通常は、ウォーターフォール開発だと「作業見積時間」、アジャイル系だとチーム内で話し合った作業量(ベロシティ)を設定することになるかと思います。
(作業見積時間だと、単位は分・時間・日などプロジェクトで共通化されていればなんでもいいのですが、「時間」を設定すれば一番きれいに使えます。ベロシティを設定する場合は、単位なんてありません)
これを設定し、開発者が定期的に残存作業を更新していれば、TFSが持っているレポート機能で「バーンダウンチャート」を出力し、進捗度を簡単に捉えることができます。

ただ、「厳密な進捗管理は別管理なのでTFSで入力すると2重管理になる」といった理由がある場合、「残存作業」には何も入力しなくても作業項目は登録できるのですが、せっかくのレポート機能が生かせなくなります。

「ちょっともったいない」と感じた方、こんな使い方があります。
 ・作業項目作成時、「残存作業」に'1'をセットする
 ・開発者は残存作業は変更しない
 ・対象作業が完了した際は、「状態」を「作業完了」に変更する
こう使うことで、時間レベルでの残存作業管理ではなく、作業項目単位での残存作業管理となります。バーンダウンチャートは「どれだけの作業項目が消化できたか」という視点でのチャートになります。
また、「残存作業」は最初にセットするだけなので、開発者の負担が増えることはありません。
作業項目に対する作業量が一定量ではないので、「進捗管理はこれでバッチリ!」というわけにはいきませんが、進捗度合いを確認するきっかけには使えるかなと思います。

2014年9月 1日 (月)

ワークスペースはどう作ればいいの?:具体例編

「ワークスペースはどう作ればいいの?:前提編」の続きです。
どの単位でワークスペースを作成するかは、「どの単位でソースコードの管理をしたいか?」に依存しますが、以下のような条件により、管理単位が変わると思います。

・端末を共有するか?
 複数の開発者で端末を共有するのであれば、最低限開発者単位でワークスペースは作成しないといけません。そうしないと、別の開発者が変更していたソースファイルをチェックインすることになります。
・複数のプロジェクトを兼任するか?
 変更中のプロジェクトとは別のプロジェクトで変更していたソースコードを間違ってチェックインさせないためには、ワークスペースを分離して作成しないといけません。
・分岐(ブランチ)を使うか?
 変更中の分岐を使用しているときに作業中ではない分岐で変更したソースコードをチェックインさせないためには、ワークスペースを分離する必要があります。

具体例だと、こんな感じになるかと。※あくまで例です。
1.1人の開発者が端末を独占し、関わるプロジェクトは1つだけ。ブランチも切らない。
  デフォルトで作成されるワークスペース(ローカルワークスペース/プライベートワークスペース、ワークスペース名がコンピュータ名)を使用。

2.1人の開発者が端末を独占し、関わるプロジェクトは複数あるけど。ブランチは切らない。
  チームプロジェクト毎にワークスペースを作成。(ローカルワークスペース/プライベートワークスペース、ワークスペース名はチームプロジェクト名か、それに関連する名称)

3.1人の開発者が端末を独占し、関わるプロジェクトは複数あり、分岐を使う。
  チームプロジェクト+分岐毎にワークスペースを作成。(ローカルワークスペース/プライベートワークスペース、ワークスペース名はチームプロジェクト名か、それに関連する名称+分岐名)

4.複数の開発者が端末を独占し、関わるプロジェクトは複数あり、分岐を使う。
  チームプロジェクト+分岐毎にワークスペースを作成。(ローカルワークスペース/プライベートワークスペース、ワークスペース名はチームプロジェクト名か、それに関連する名称+分岐名)
  これだと、3.と同じなので「複数の開発者が同じワークスペース名を使えないんじゃ?」という疑問が湧きますが、「ワークスペースは所有者(OSログインユーザ)毎に管理される」ので、同じワークスペース名でも問題ありません。
  但し、マッピングするローカルフォルダは開発者ごとに分けないといけません。

通常はこんな感じでいいのですが、これで対処できなかったパターンがあります。
それは、「Visual StudioとEclise(+Team Explorer Everywhere)を両方使用する」場合です。
実際にやってみると、
VS上でチームプロジェクトを作成する
 ↓
VS上でチームプロジェクトのルートフォルダを対象にしてワークスペースを作成する
 ↓
Eclipse上でチームプロジェクトに接続する
 ↓
Eclipse上でチームプロジェクトのルートフォルダを対象にしてワークスペースを作成しようとする
 ↓
「(ローカルフォルダは)別のワークスペースで既に使用されている」と怒られる( ;∀;)
015

という状態です。

ちょっと悩みましたが、どうもIDEが違うと別のワークスペースとしての管理になるっぽいです。
対処としては2パターンあるかと思います。
1.ワークスペースのアクセス許可をパブリックワークスペースに変更
  同じフォルダを使用することができますが、VSで変更中のソースがEclipse側でも検知されてしまいます。
  JNI作成のような、C++とJavaの変更を同期を取って作業する場合にはこれでもいいかもしれません。
  ただ、
   ・非同期の変更(変更内容が別々)
   ・TFS上の作業項目に対するチェックイン時関連付けが必須なプロジェクトで、Java側とC++側の作業項目が別々に作成されている
  ような場合は使いづらいと思います。
  →VS側でチェックインするときは、Java側の変更対象を除外しないといけない。(逆もそうです)

2.IDEごとに別々のワークスペースを割り当てる
  通常はこちらが使いやすい気がします。
  ※C++/.NET側とJava側で使用するフォルダをきれいに分ける必要がありますが、普通ごちゃまぜにはしないと思いますので...。

ちなみに、「ワークスペース」はTFVC(元々TFSで使用するバージョン管理システム)のみで使用するもので、Gitでは使用しません。
一人で調べものする際はあまり気にしないので、ちょうどいい整理になりました。

(そろそろ仕事場でも分岐は使いたいけど、VB6/VC++6がメインじゃ・・・orz)

ワークスペースはどう作ればいいの?:前提編

Visual StudioとEclipseを両方使う環境(例:JNIを使用するアプリを作成する)で、どうワークスペースを作ればいいかいろいろ悩んだので、メモ代わりに書いてみます。
まずはワークスペースの前提知識の整理です。

○ワークスペースについて
Team Foundation Serverを使用した開発で意識しないといけないものに「ワークスペース」があります。ワークスペースは、TFS上で管理されているソースコードをローカル環境のどのフォルダで変更するかのマッピングを管理するためのものです。

まっさらな環境で、1つのチームプロジェクトだけを対象に開発をするのであれば意識しなくてもよいのですが、複数のチームプロジェクトを対象にする場合、
 プロジェクトAの開発作業を行っている
  ↓
 プロジェクトBの緊急変更対応が入る
  ↓
 プロジェクトBの変更が完了したので、チェックインする
  ↓
 プロジェクトAの開発内容までチェックインされてしまう( ゚Д゚)
といったことが発生してしまいます。
チェックイン時にプロジェクトBの変更内容を対象外にすれば大丈夫なのですが、急いでいる場合はうっかりチェックインしてしまう可能性があります。

これを避けるには、ワークスペースをチームプロジェクト毎に作成し、ソースコードの変更管理がチームプロジェクト単位で分離できるようにします。
(分岐を使用する際にワークスペースを分岐ごとに作成するのもこのためです)
※チームプロジェクトコレクション配下をすべて1つのワークスペースに割り当てることもできますが、通常はチームプロジェクト単位、もしくは分岐するフォルダ単位で割り当てます。

○ワークスペースの種類
Team Foundation Server 2010/Visual Studio 2010以降は、
・サーバーワークスペース
・ローカルワークスペース
の2種類のワークスペースが作成可能です。
※Visual Studio 2010以前の環境で使用できるのはサーバーワークスペースだけです。

MSDNの「ローカル ワークスペースとサーバー ワークスペースのどちらを使用するかを決定する」(http://msdn.microsoft.com/ja-jp/library/bb892960.aspx)に詳細はありますが、大雑把には
・デフォルトはローカルワークスペース
・ワークスペース内に大量のファイルがある/Visual Studio 2010より前のバージョンを使用するときはサーバーワークスペース
・オフラインで作業することがある場合はローカルワークスペース
ということです。

○ワークスペースのアクセス許可
ワークスペースに対するアクセス許可として
・プライベートワークスペース
・パブリックワークスペース
・パブリックワークスペース(許可)
があります。
デフォルトはプライベートワークスペースですが、1台の端末で複数の開発者(OSログインユーザ)が同じワークスペースを使用する場合はパブリックワークスペースを使用します。
詳細はMSDNの「ワークスペースの作成と操作」(http://msdn.microsoft.com/ja-jp/library/ms181383.aspx)にあります。

次は本題の「ワークスペースをどう作ればいいか」についてです。

« 2014年8月 | トップページ | 2014年10月 »

無料ブログはココログ