Loading
|
@IT > Visual Studio 2008快適活用ガイド 第2回 |
1人で開発できるのならどんなに気楽だろう……。日々の開発作業の中でそんなふうに感じながら仕事をしている開発者は少なくないのではないだろうか。 とにかく複数人で行うチーム開発は大変だ。まず、それぞれの作業項目(=ToDo)をきっちり分けて、お互いの進行を確認しながら協調的に作業を進めなければならない。そのため、ドキュメントやミーティングなどによる情報共有が不可欠であるし、作業項目を管理するための仕組みも必要だ。そのような体制を整えてしっかりとコミュニケーションを取って開発を進めていても、チームに起因する問題は依然として発生し得る。例えば、同じソース・ファイルを2人の開発者が同時に編集し、片方の開発者が、もう一方の開発者の編集したコードを上書きし、コードが失われてしまうなどだ。そういう問題を回避するためには、ソース・コード管理ツールが欠かせない。チーム開発には実施すべきことや準備すべき環境がたくさんある。……1人ならこんな面倒は味わわないのだ。 だからといって、ソフトウェア開発をビジネスにしている会社に所属する開発者であれば、誰しもチーム開発からは逃げられない。現代のシステム開発はますます大規模化してきており、1人ですべてを構築することは不可能に近いからだ。だとすれば、チーム開発の困難に真っ向から立ち向かうほかない。具体的には、チーム開発ならではの無駄や面倒を徹底的に省き、チーム間の情報の流れを円滑にして、作業効率をできる限り「1人の開発」に近づけるわけである。 そのために開発者は何を行えばよいのか。その解決手段としては「チーム開発ツールの導入」が手軽で有効である。チーム開発ツールというと、プロジェクト管理機能やプロセス管理機能などを想像してしまい、「いまひとつ自分とは縁遠いツール」と感じる開発者も少なくないだろうが、実は現場で働く開発者にこそメリットがある機能がそろっている。ここでは、そのようなツールの1つとして、マイクロソフトの「Visual Studio Team System 2008」(以降、VSTS)と「Visual Studio Team System 2008 Team Foundation Server」(以降、TFS)を取り上げ、チーム開発支援の実際についてご紹介しよう。 なお本稿では、より開発者が理解しやすいように、ありがちな機能紹介ではなく、「開発者の1日の作業の流れ」を追いながら、VSTSとTFSによってチーム開発がどう改善されるのかを説明していく。
本題に入る前に、前提知識として、簡単にVSTSとTFSについて紹介しておこう。 VSTSの主目的は、アプリケーション(=システム)を構築する際の「分析・設計、開発・テスト、運用・保守」という一連のライフサイクルを包括的にサポート・管理して、アプリケーションの品質を高めることだ。ライフサイクルの個々の領域で主に使用するのは、VSTSを構成する次の4つのエディションである。 Architecture Edition:「運用・保守」を想定した「分析・設計」機能を備える。 加えて、上記すべてのエディションをまとめたTeam Suiteという製品も用意されている。以降で単に「VSTS」と表記した場合は、このTeam Suiteを指す。 一方、TFSはこのVSTSと連携して、各種情報・データの収集、収集されたデータを管理・保持するリポジトリの提供、情報ポータルやデータ分析結果のレポーティング機能などを提供するもので、まさに“Team Foundation Server”という言葉どおり「チーム開発用の基盤サーバ」である。
今回の舞台となる開発チームは、とあるシステムにおける業務ロジックの開発担当チームで、1人のチーム・リーダーと5人のチーム・メンバーで構成される比較的小規模なものである。このうちチーム・リーダーは、プロジェクト・マネージャとしての仕事も行いつつ、自らも開発に加わっているため、実質的には合計6人が日々の開発に携わっている。始業は午前8時だ。 ■ ◆午前 8時〜9時 各開発者が出社して最初に行うのは、メール・チェックと今日行う作業項目の確認だ。作業項目を確認するために、Visual Studio 2008(VSTS)のIDEを立ち上げ、[チーム エクスプローラ]を表示する。[チーム エクスプローラ]には、TFS(サーバ)に集約されているあらゆる開発プロジェクト関連情報がツリー形式で表示される。 ツリーから[<TFS(サーバ)の名前>]−[<チーム・プロジェクト名>]−[作業項目]−[チーム クエリ]フォルダを開き、その中にある[担当作業項目]をダブルクリックする。これで、自分が担当する作業項目の一覧が表示される。
一覧(の[作業項目の種類]列)を見ると、自分の担当作業項目として、複数の通常の「タスク」(=作業)に加え、「バグ」対応が1件あることが分かる。まず午前中は、このバグ退治から始めることにした。 ◆午前 9時〜12時 開発中のソリューションをIDEで開き、該当個所のバグ除去作業を開始。ソース・コードの編集を開始すると、自動的に(無意識のうちに)ソース・ファイルが「チェックアウト」される。チェックアウトとは、TFSのソース管理機能で、管理しているソース・ファイルを「変更中」としてマークすることだ。ソース管理機能は、2人以上のチーム開発者が同じファイルを同時に編集したときに発生する上書きの問題を防止したり、ソース・ファイルの変更履歴を保存・管理したりする機能である。
バグの修正は11時には終わった。だが、ソース・コードの編集を完了する前に、このコードが正しく動作するのか検証しておかなければならない。これを行うのが、VSTSのテスト実行機能だ。 テストを実行するには、IDEのメニューバーから[テスト]−[実行]−[ソリューションのすべてのテスト]を選択する。これによりテストが行われ、その結果が次の画面のように表示される。
実行されたテスト(この場合は単体テスト)の結果を見ると、一部が失敗しているのが分かる。どうやら今回のバグ対応によって、新たなバグ(=エラー)を作ってしまったようだ。そこで、上記画面の手順 に沿ってエラーの該当個所を表示し、バグを修正し、もう一度テストを実行すると、今度はすべてのテストが成功した。 バグ修正が完了したので、編集したソース・ファイルを「チェックイン」する。これには、[保留中の変更]ウィンドウを利用する。なお、チェックインとは、先ほどのチェックアウトと逆の作業で、ソース管理に戻して「変更完了」としてマークすることである。 メニューバーから[表示]−[その他のウィンドウ]−[保留中の変更]を実行して、[保留中の変更]ウィンドウを表示する。そして次の画面の手順で、作業完了を指定しながらソース・ファイルのチェックインを行った。VSTSでは、チェックインのついでに「作業項目の完了(=解決)」を指定できる。つまり、この機能によって、口頭でチーム・リーダーに作業完了報告するという手順を省略できるのだ。
以上で午前中の作業は終わった。 ◆午後 1時〜4時 さて午後の仕事開始だ。再び[チーム エクスプローラ]の「担当作業項目」の一覧を眺め、最も優先度の高い「タスク」から順に作業していくことに決めた。 今度の作業では、ある機能を実装するクラスを1つ追加する。この作業は15時ぐらいにほぼ完了した。だが、このクラスのプロパティやメソッドが正常に動作するかを検証するための単体テストをまだ作成していない。そこでVSTSの単体テスト作成機能を活用することにした。 次の画面の手順でクラスの単体テストを作成すると、単体テスト・クラスのひな型コードが自動生成される。 後は、単体テスト・クラスを完成させて、先ほどのバグ修正と同様に、テストを実行し、最後にチェックインを行うだけだ。これらの作業を16時過ぎまでに完了させた。 ◆午後 4時〜5時 先ほどの作業中に新たなバグを発見した。本日の最後の仕事として、このバグの登録を行うことにした。 メニューバーから[チーム]−[バグの追加]を実行して、次のような「バグ項目の入力画面」を表示し、バグの詳細や優先順位、担当者の割り当てなどを入力する。
入力し終わったら[Ctrl]+[S]キーで保存する。これによって、バグ・データがTFSに保存される。翌朝見る[チーム エクスプローラ]の「担当作業項目」の一覧に表示されることになる。 こうして、この日の開発作業は終わった。 ◆午前 3時 誰もいない仕事場でTFSサーバがひとりでに動き始める。自動ビルドと自動テストが開始されたのだ。 実行されたビルドの結果は[チーム エクスプローラ]の[<TFS(サーバ)の名前>]−[<チーム・プロジェクト名>]−[ビルド]フォルダのビルド定義項目をダブルクリックすることでいつでも参照できる。またテスト結果の詳細は、次の画面の手順で知ることができる。
■ 以上がチーム開発ツールを使った場合の日常である。 もちろんVSTSとTFSを導入したからといって、それだけでチーム開発が成功するというわけではない。しかし、チーム開発で発生する機械的な手続きの多くを自動化するとともに、厄介な履歴管理も同時に実行できる。これにより開発者は、ソフトウェア開発という本来の作業に集中できる。例えば、作業項目やバグ項目をMicrosoft Excel(表計算ソフト)などで手動入力している開発者も多いだろうが、VSTSを使えば、前述したバグ登録支援機能により、開発環境からその場で情報を直接入力できる。さらに、こうして入力されたバグ情報は、すべての開発者が常時使用する開発環境の中で通知され、共有される。 つまり、開発プロジェクトがいまどのようなステージにあるのか、チームで何が起こっているのかを、最低限のコストで共有できるわけだ。一般に開発プロジェクトは、規模が大きくなるほど、開発者同士のコミュニケーションにかかる負担が増加するため、一人あたりの生産性は低下しがちだ。VSTS&TFSを活用すれば、そうしたチーム開発の構造的なコストを効果的に低減することができるだろう。 なお、本稿はここまで開発者の視点からVSTSとTFSの機能を概観したが、VSTS&TFSにはプロジェクト・マネージャやチーム・リーダーの作業を効率化する機能も多く備わっている。残念ながら本稿では、紙面の関係上、それらの機能を実際に紹介することはできない。これらの詳細については「@IT Special:.NETエンタープライズ新時代」シリーズの記事をぜひご一読いただきたい。
提供:マイクロソフト株式会社 企画:アイティメディア 営業局 制作:デジタル・アドバンテージ 掲載内容有効期限:2008年5月31日 |
|