特集
» 2012年02月01日 00時00分 UPDATE

特集・Visual Studioによるチーム開発:複数の開発者でソフトウェア開発を円滑に進めるには? (1/3)

複数の開発者が同時並行的にコーディングやテストをする際、それら作業をスムーズに進めるには何が必要か? 筆者のこれまでの経験から最低限必要なポイントを3つ紹介するとともに、「Visual Studio 2010」を用いたチーム開発の実践方法について解説する。

[太田 寛,@IT MONOist]

――今回は「Visual Studio」を使った“チーム開発”のお話です。

 機能要求が肥大化・複雑化する現在、製品向けソフトウェアのソースコードは時に数百万行に達することもあります。これほどの規模になると、さすがに1人の力だけで開発するのは不可能です。

 ソフトウェア開発にかかわる人数は、数人で済む小規模なものから数百人が絡む大規模なものまでさまざまですが、複数の人間が開発にかかわることに変わりはありません。当然、コーディングやテスト工程では複数の開発者の同時並行的な作業が発生することになります。

 本稿では、まず複数の開発者が同時並行的にコーディングやテストをする場合、それら作業をスムーズに進めるには何が必要なのかを説明し、その後、Visual Studioの機能を使って実際にどう進めるのかを説明します。なお、本稿では「Visual Studio 2010」の使用を前提に解説していきます。

 例えば、学生や初級技術者向けのコンテストである「ETロボコン(ETソフトウェアデザインロボットコンテスト)」も、大抵の場合、複数のメンバーがかかわるチーム開発です。本稿では、ETロボコン参加者にも参考になるようプログラミング言語はC/C++を想定し、チームによるソフトウェア開発について説明していくことにします。

複数の開発者でソフトウェア開発を円滑に進めるには

 まず、筆者がこれまでの経験から得た、同時並行開発を円滑に進めるために最低限必要なポイントを3つ挙げます。

  1. 各開発者が担当するソースコードの独立性が高いこと
  2. ソースコードを共有する仕組みがあること
  3. ソースコードの変更と変更理由がひも付いていること

 以降で、上記それぞれのポイントについて、順番に解説していきます。

1.各開発者が担当するソースコードの独立性が高いこと

 チーム開発の場合、各開発者は開発対象の一部をそれぞれ担当します。開発対象のソフトウェアは各開発者が作成したソースコードの集合体です。当然ながら、同じモノ(開発対象のソフトウェア)の“一部”をそれぞれが担当することになるので、他の開発者の作業の影響を受けることになります。誰かが1行ソースコードに変更を加えるたびに自分の作業に影響するようでは、変更内容の確認や変更へのすり合わせなどの作業が多発し、作業効率が著しく低下してしまいます。

 残念ながら、このような“他者の作業の影響”を完全に排除することは不可能です。しかし、なるべく他の開発者による作業の影響を受けないよう、開発対象のソフトウェアを“独立性の高いパーツ”に分割し、各開発者に担当を割り振ることで、同時開発をある程度円滑に進めることができます。

2.ソースコードを共有する仕組みがあること

 基本的にソースコードはテキストファイルで記述され、管理しやすい適当な大きさに分割された複数のファイルで構成されます。

 チーム開発の場合、他の担当者が作成したインタフェースの参照やヘッダファイルのインクルード、ライブラリとのリンクなど、自分以外の担当者が作成したソースコードやバイナリが、自分の作業を進める中で必要になってきます。そのため、他の担当者が作成したファイル群をヌケ・モレなく自分の開発環境に取り込む方法と、自分が作成したファイル群を他の担当者にヌケ・モレなく提供する方法が必要になります。

コードの共有 図1 コードの共有

 ファイルの更新時期は、自分の作業の区切りがついた時、チームとして開発フェーズを移行する時などさまざまですが、ファイルの更新作業そのものは定型的な作業です。つまらない作業ミスで時間を無駄にするのは非常にもったいないので、この作業は“自動化してしまう”ことが望ましいでしょう。また、変更の妥当性検証やある時点でのシステム状態の再現ができるよう、全ファイルについて、過去に行われた全ての変更が記録され、任意の時点のファイル内容がいつでも取り出せるようになっていることも、同時開発を円滑に進めるために大切な要素といえます。

3.ソースコードの変更と変更理由がひも付いていること

 ファイルの内容は作業の進捗(しんちょく)に応じて変更されていきます。予定していた機能の実現、レビュー結果の反映、デバッグやテストでのバグ修正、リファクタリングなど、理由はさまざまです。

 チームで作業を行う場合、誰が作成したかにかかわらず、今使っているファイルが“いつどんな理由で修正されたファイルなのか”を知っていることは非常に重要です。知っていることによって、自分がコーディングで使いたいインタフェースや機能は既に(他の誰かによって)実装されているのか、誰かが発見したバグは既に担当者によって修正されているかなど、“各担当者が次に実施すべき最も適切な作業は何か”を判断できるからです。

 ファイルを共有の場に上げるときは、その変更理由も併せて記録しておきましょう。その際、単なるテキストを付与するだけでなく、要求や機能、テスト項目、障害などと関連付けて変更を記録しておけば、蓄積されているソースコードの変更情報とプロジェクト管理を結合でき、進捗の確認や実装機能のヌケ・モレ防止などで威力を発揮することができます。

 以上、チーム開発に関する3つのポイントを説明してきました。これらの事項はどんなツールセットを使う場合でも実践すべきポイントといえるでしょう。開発環境はしょせん“道具”に過ぎません。目的を忘れて道具を使っても、効果は得られないばかりか、逆にチームの生産性や士気を落とす場合もあるので気をつけましょう。

 引き続き、これら3つのポイントを「Visual Studioでどう解決していくか」について具体的に解説していきます。

       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.