Team Foundation Server 2008 SP1 プレビュー

VS/VSTS/TFS 2008 のための新機能が次々に登場しています (TFS Power Tools の更新 (英語) に関する最近の記事をお読みください)。ここで、TFS 2008 SP1 の新機能についてお話しましょう。ベータ版のリリースも近づいています (いつものことですが、日付は私にもわかりません。リリース後すぐに使いたい方は、まずリリース時期を把握する方法を解き明かさなければなりません)。

TFS 2008 SP1 もいつもと同様、優れたリリースとなるでしょう。小規模な戦略的機能を追加することによって、一般的なユーザーの要求に対応したり、領域を越えた新しい価値を提供したりするという伝統は、TFS 2005 SP1 (英語) から始まりました。TFS 2008 SP1 では、これを徹底することで非常に多数の新機能をお届けします。"新しい SP は前のバージョンよりも (安定性、速度などの点で) 優れていなければならない" という理論に従い、主としてお客様からのフィードバックに基づいた戦略的で "リスクの低い" 強化に重点を置いています。主要なシナリオ機能の追加のような大規模な変更は、メジャー リリースで行います。

以前、Rosario (次のメジャー リリース) で提供される機能について少しブログに書きました。Rosario の仕様 (英語) の一部や CTP (英語) を確認することはできますが、これらはこのブログ記事の目的ではありません。Rosario の詳細については、今後 2 ~ 3 か月のうちにブログに書くことにします。それまでは、TFS 2008 についてご紹介したいことがたくさんありますので、皆さんを困らせることはないと思います。

TFS 2008 SP1 では、膨大な数のバグ修正 (これについては、SP1 のリリースが近づいたときに公開する予定です) に加え、数多くの優れた新機能が提供されます。次にその新機能をご紹介します。

 

バージョン管理

 

  • ソース管理に追加 - [ソース管理に追加] ダイアログの操作性とスケーラビリティが向上しました。これには、フォルダ ツリーで表示されるコンテキスト メニューへのメニュー オプションの追加のような単純な変更も含まれます。また、追加操作は、ウィザードに変更されました。ウィザードの最初のページでは、追加する項目を選択できます。2 ページ目では、簡単な操作で追加する項目を確認し、表示する必要のない項目 (.pdb、.exe など) をフィルタで除外できます。

 

add1

 

add2

 

  • ドラッグアンドドロップ - Windows エクスプローラ (およびその他のファイル ドロップ ソース) からソース管理エクスプローラにファイル/フォルダをドラッグして追加する機能が追加されました。これは、新しい "ソース管理に追加" 機能と密接に連携します。ソース管理エクスプローラからドラッグする機能は現在は追加されていませんが、必要な場合はご提案ください。将来のリリースに含めることができるか検討したいと思います。 
  • 非バインドファイルのバージョン管理 - 私が個人的に気に入っている新機能の 1 つです。開いているソリューション内のバージョン管理されたファイルで入力を開始したときに、自動チェックアウトが実行され、続けて入力できることにお気付きでしょうか。ファイルがソリューション内に存在しないときは、奇妙にも読み取り専用で処理されていました。今後、このようなことはなくなります。バージョン管理されたすべてのファイルは、開いているプロジェクト/ソリューション内に存在するかどうかに関係なく同様に処理され、自動チェックアウト、差分、およびその他のバージョン管理動作がすべて提供されます。これにより、ソリューション外のファイルが読み込まれる場合のバージョン管理作業がとても簡単になります。 
  • 作業フォルダのマッピングの単純化 - "TFS の [ワークスペース] ダイアログはわかりにくい" と言ったとすると、その意味をおわかりいただけるでしょうか。ソース管理エクスプローラには、このダイアログをほとんど表示しなくてもよいように、機能が追加されています。ソース管理エクスプローラ内のフォルダを右クリックすることにより、作業フォルダの割り当て、割り当て済みフォルダのクローク、または作業フォルダの割り当て解除を実行できるようになりました。この方法により、ローカル ハード ドライブでのソースの格納場所を簡単にすばやく変更できます。これをさらに簡略化するため、ソース管理エクスプローラのパス バーにリンクが追加されました。これにより、フォルダにマッピングが作成されていないことが示されるため、クリック 1 回でマッピングを設定できます。 
  • チェックイン日付 / 時刻列 - ソース管理エクスプローラへのチェック日付/時刻列の追加を求める意見が多数寄せられました。このフィードバックは採用され、チェック日付/時刻列が追加されました。最終的には列表示全体を構成できるようにしたいと思いますが、当面は見送られることになりそうです。

 

LastCheckinColumn

 

  • ローカルパスのリンク - Windows エクスプローラでフォルダを簡単に開くことができるように、ソース管理エクスプローラのローカル パス ヘッダーがリンクに変更されました。 
  • ソースの場所を編集可能 - ソース管理エクスプローラのサーバー フォルダを表示するフィールドを編集できるようになりました。ツリー ビュー内を移動する代わりに、ソースの場所を入力するだけで新しいフォルダに簡単に変更できます。 
  • ストリームへのファイルのダウンロード - TFS の拡張機能をビルドすると、この機能を簡単に追加できます。ファイルを一時ファイルにダウンロードし、データを読み取ってから、その一時ファイルを削除する代わりに、コンテンツをメモリに直接ダウンロードして処理できます。今年の夏には、この新機能を利用した便利で新しい Power Tools をいくつかお届けできると思います。

 

作業項目トラッキング

 

  • Office 2007 のリボンのサポート- TFS 2008 と Office 2007 を使用する場合の煩雑な "アドイン" の代わりに、関連するすべての TFS 操作に対して、見栄えがよく使いやすいリボンのサポートが提供されます。

 

image

 

  • 作業項目の簡単な電子メール送信 - チーム エクスプローラには、作業項目や作業項目の一覧を簡単に電子メールで送信するためのサポートが追加されています。この電子メールには Team System Web Access へのリンクが含まれるため、関連した作業項目を探すための優れた機能が受信者に提供されます (Team System Web Access を使用している場合)。

 

TFS Build

 

  • TFSBuild.proj ファイルへの簡単な移動 - チーム エクスプローラ内にビルド定義の右クリック メニュー項目が追加されています。これを使用して、ソース管理エクスプローラの TFSBuild.proj ファイルに移動できます。 
  • 開始するビルドの条件設定 - ビルド スクリプトがどのように開始されたかを検出するためのビルド スクリプト用機能が追加されています。これにより、CI、スケジュール、手動などのビルドで少しずつ異なる動作を実行できます。 
  • テスト結果の検出 - ビルドが失敗しても、テストの結果を検出してビルド スクリプトの条件を設定できるようになりました。 
  • 動的に作成されたプロパティ - ビルド内で動的に作成されたプロパティを、ソリューション/プロジェクトに渡すことができるようになりました。 
  • ビルドログのノイズの低減 - プロジェクトの参照間で生じる "ノイズ" が除去されます。各ビルド ログには、1 つのメッセージだけが記録されます。 
  • チームプロジェクト間でのビルド定義のクエリ - チーム プロジェクト間でビルド定義のクエリを実行するためのオブジェクト モデル API が追加されています。

 

Visual SourceSafe 移行ツール (vssconverter.exe)

VSSConverter を VSS から TFS に移行しようとしたときに発生する問題について、多数の報告が寄せられました。TFS 2008 SP1 では、テストおよびバグ修正に多大な労力を注ぎました。ここで取り上げたいくつかの高レベルの問題以外にも、多数のバグを修正しました。その多くは、ユーザーの皆さんによって報告されたものです。テストにも多くの時間をかけ、20 を超えるお客様の VSS データベースを収集し、それらすべてが VSSConverter によってシームレスに処理されることを確認しました。この新しい VSSConverter を以前のバージョンすべてで使用することを強くお勧めします。パフォーマンスが著しく向上していることを体感していただけるはずです。このことに関してまだ解決できない問題がありましたら、ぜひお知らせください。

 

  • 名前空間の競合の解消 - ファイルの削除後に、別のファイルの名前を、削除したファイルと同じ名前に変更した場合 (および一部の類似シナリオ) でも、ファイルが正常に変換されるようになりました。これは、現在のコンバータを使用した場合に発生する最も一般的な問題でした。 
  • ソリューションの自動再バインド - ソース ツリーを変換する際に、すべてのソリューション ファイルおよびプロジェクト ファイルのバインディングが、SourceSafe ではなく、TFS にバインドするように自動的に変更されます。これにより、変換後の手動の処理に時間をかけずに済みます。 
  • タイムスタンプの問題の修正 - 多くの VSS データベースには、一貫性のないタイムスタンプが含まれます (この問題は、サーバーのタイムスタンプではなく、クライアントのタイムスタンプを VSS が使用するために発生します)。新しいコンバータは、この問題を混乱することなく調整します。 
  • ログの強化 - 変換ログ メッセージは、よりわかりやすいものに変更され、変換プロセスで処置が必要になった場合に、問題のある箇所を診断するための情報をより豊富に提供します。

 

その他の領域

  • SQL 2008 のサポート - TFS 2008 は、リリース時点では、その当時入手できた SQL 2008 ビルドとの互換性が保たれていました。残念ながら、その後、SQL 2008 に TFS との互換性が失われる変更が加えられました。TFS 2008 SP1 には、最終の SQL 2008 ビルドと連携して動作するために必要な変更が含まれています。TFS 2008 SP1 を SQL 2008 と共にインストールするには、いくつか "特別な" 手順があります。このインストール方法の詳細に関する今後の記事に注意してください。 
  • Team System Web Access のリンク - チェックイン通知メールのファイル名の横にあるリンクをクリックしたことがあるユーザーは、がっかりした経験がおありでしょう。残念ながら、このリンクをクリックしても、目的の情報は得られません。TFS 2008 SP1 では、Team System Web Access をインストールしている場合にこれらのリンクが有効になり、TSWA の相違ビューアを使用して変更を直接表示できます。リンクが追加されたのは、ここだけではありません。多くの通知メール ("作業項目が変更されました" など) にも追加されています。全体的に見て、チーム エクスプローラを使用することにこだわらない限り、操作性がはるかに向上します。 
  • サーバーあたりのプロジェクト数 - サーバーあたりのプロジェクト数に関する制約については、これまでかなり書いてきました。TFS 2008 SP1 では、いくつかの重要な強化が行われています。メモリをリフレッシュするときの主要な問題は、TFS クライアントがダウンロードするキャッシュのサイズがサーバーあたりのプロジェクト数に正比例することです。このキャッシュは非常に大きくなる可能性があり (数十メガバイト)、パフォーマンスが低下してユーザビリティに影響する場合があります。SP1 では、次のような変更が行われています。

 

    • ユーザーがアクセスできるプロジェクトのメタデータだけをダウンロードします。ユーザーが必要とするプロジェクトへのアクセスだけを許可することにより、ユーザーがダウンロードするメタデータのサイズが劇的に減少します。 
    • 使用されなくなったキャッシュから古いデータを削除するためのキャッシュの最適化機能が実装されています。特定の状況では、これによって 30% 以上の改善が見られました。 
    • 一覧に多数のプロジェクトが含まれる場合の "Team Foundation Server に接続" での速度が改善されています。社内サーバーの 1 つでは、約 80 倍の改善が見られました。

 

  • スクリプトによるチームプロジェクトの作成 - これは、TFS 2005 が最初にリリースされて以来、最も多かった要望の 1 つですが、ついに実現されました。チーム プロジェクトを作成するために使用するすべてのクライアントにチーム エクスプローラをインストールする必要がありますが、この作業はスクリプト化できます。これを行うための新しい Visual Studio API (近いうちに、サンプルをブログに掲載します) が提供されています。また、より簡単な方法としては、2008 年 3 月にリリースされた TFS Power Tools に含まれる新しいコマンド "tfpt createteamproject" をコマンド ラインまたはバッチ ファイルで実行します。

 

パフォーマンスおよびスケール

 

  • Active Directory ID の同期の向上 - 当社のテストでは、200,000 人のユーザーを持つグループを同期すると、処理時間が 69 分から約 10 分に短縮することがわかりました。したがって、多数のユーザーを持つシステムでは、バックグラウンド オーバーヘッドが著しく低減される可能性があります。 
  • チェックインの同時実行の向上 - チェックインは、グローバルにシリアル化されます。つまり、2 つのチェックインは (重複しているかどうかに関係なく) 順に処理され、2 番目のチェックインは最初のチェックインが完了するまで待機する必要があります。SP1 では、チェックインの全体的な速度を改善するだけでなく、ブロッキングを低減することができました。ブロックしている期間は、チェックイン時間の約 1/3 に過ぎません。 
  • tf branch /checkin - ブランチが大きい場合 (当社の場合は約 1,000,000 ファイル)、新しいブランチを作成するのに時間がかかる場合があります。このため、ブランチをより高速に作成するためのオプションを作成しました。tf branch /checkin を実行すると、ブランチを作成する際に、変更を保留にして以降のチェックイン操作を要求する処理が省略されます。その結果、ブランチの作成速度が約 10 倍改善されます。 
  • オンラインでのインデックスの再構築 - SQL Enterprise を TFS と共に使用する場合、TFS はオンラインでインデックスを再構築します。これにより、メンテナンスのためのダウンタイムが短縮されます。SQL Standard (TFS に付属) を使用する場合は、これまでどおりオフラインでインデックスが再構築されるため、週次メンテナンス ジョブ中に TFS が応答しなくなります。TFS データベースが小さい場合はそれほど問題はありませんが、テラバイト レベルのデータベースではオンラインでのインデックスの再構築は必須です。 
  • 大規模なチェックインのためのチームビルドのサポート - TFS 2008 以前のバージョンでは、対規模なチェックイン (数十万ファイル) を実行すると、TFS Build 内でメモリ不足エラーが発生し、CI ビルドが開始されない可能性があります。SP1 では、メモリ不足の問題が修正されたため、すべてのチェックインで正常にビルドが開始されます。 
  • セキュリティマネージャの高速化 - バージョン管理のセキュリティ マネージャ内で O(N^2) アルゴリズムが見つかったため、O(N) アルゴリズムに置き換えました。これにより、全体的なバージョン管理パフォーマンスが向上します。これは、(数十万ファイルを取得する) 大規模な Get 操作で確認しました。この変更により、セキュリティ マネージャの処理時間が 5 ~ 6 分から数秒に短縮されました。結果として、これらの Get 操作が約 2 倍高速化されました。 
  • tf get /remap - 多少複雑な機能ですが、必要な場合に使用すると便利です。これは、あるブランチから同じコード ベース内の別のブランチにワークスペースを切り替える場合に使用するように設計された tf get の新しいオプションです。まずワークスペース マッピングを変更してから、tf get /remap を実行します。関連付けられている 2 つのブランチでは大部分のファイルが同一であることが多いため、このコマンドはそれを最適化します。すべてのコンテンツをダウンロードするのではなく、2 つのブランチ間の差分だけをダウンロードします。大規模なワークスペースの get では、処理時間を数十分から数秒に短縮できます。 
  • その他 - これらは、提供されるパフォーマンス強化の一部にすぎません。いつものことながら、各リリースには、当社内部の TFS ドッグフーディングに関して行われたパフォーマンス強化のロールアップが含まれます。このリリースも同様です。パフォーマンスを強化するための多数の追加の修正が含まれています。大規模なインストールでは、全体的な応答性が改善されていることに気付かれることでしょう。

 

お気付きのように、このサービス パックには多数の機能が詰め込まれています。それらすべてによって、お客様の日常作業が少しでも改善されることを願っています。いつものことながら、皆さんからのフィードバックは大歓迎です。現時点では、サービス パックがほぼ完成したばかりですので、膨大な新機能の要望にお応えし、このリリースに含めることができていませんが、次のリリースで実現する機能の一覧に載せておきます。ベータ版が使用可能になったら、すぐにお知らせします。皆さんからのフィードバックをお待ちしています。

Brian

投稿 : 2008 年 4 月 28 日 (月) 午後 4 時 20 分 bharry

Brian Harry さんのブログ - https://blogs.msdn.com/bharry/archive/2008/04/28/team-foundation-server-2008-sp1.aspx   より。