自動ビルドによるプログラミングの品質・保守の有効性

はじめにソフトウェアにおいてバグはつきものです。1人のプログラマが一度に書けるバグのないコードは最大で数十ステップといわれています。当然、業務システムは数万から数十万ステップにもなるわけですから、バグは存在していて当然です。

井上 浩司

2006年1月24日 20:00

はじめに

ソフトウェアにおいてバグはつきものです。1人のプログラマが一度に書けるバグのないコードは最大で数十ステップといわれています。当然、業務システムは数万から数十万ステップにもなるわけですから、バグは存在していて当然です。

そしてバグは、できるだけ早く見つけるに越したことはありません。早期に発見できたバグは、問題の追及が比較的楽になるからです。逆にかなり前から潜んでいたバグは、考慮すべきソースコードの範囲が広くなるために問題の追及が困難になってしまいます。

そこでXP(eXtreme Programming)などのアジャイル開発プロセスでは、常時結合(Continuous integration)というプラクティスが提唱されています。

これは、「最新のソースコードを常に自動テストし、常に動作するソースコードを入手できる状態にしておく」ことです。これにより開発の早い段階からバグを発見することができるため、品質が向上します。

またバグは、開発フェーズだけに存在している訳ではありません。本番運用後にも突如として発生するものです。そのため、保守フェーズにもテストは必要です。常時結合を考えると、つい開発フェーズだけに目を向けがちですが、保守フェーズまでも含めたテストの枠組みを考えておく必要があります。

というわけで本連載「チーム開発ここまできた、個人からチームの生産性向上へ」の最終回は、Visual Studio 2005 Team Foundation Server(VS2005 TFS)の自動ビルドによるプログラムの品質および保守面での有効性について考察していきます。

 

常時結合しないときの問題

Visual Studio 2005以前でもテストの自動化は行っていました。例えば、テスト自動化のためのツールであるNUnitを使い、テストプログラムを記述してきました。
 


しかしテストの自動化までは行っても、テストの実行を自動化する(常時結合)まで行っているプロジェクトそれほど多くはないと思います。そして、常時結合を行わない場合、次のような問題が発生する可能性があると考えます。

例えばプログラマは開発フェーズにおいて、とにかく自分の担当分の単体テストと実装が完了し、報告できればよいと考えます。ですから、テストプログラムで環境に依存するコードを記述していても気にしません。つまりデバッグ用のログを特定のドライブに出力するようにソースコードを記述するハードコードのような場合です。

このような場合、本番後に発生した問題の修正後、リグレッションテストのためにすべてのテストを実行しても、テストが動作しないことがあります。

環境依存しているテストプログラムの問題は保守フェーズに表面化するわけですから、開発フェーズの時にはそのプログラムに問題があるとは気づきにくくなります。

往々にしてプロジェクトの初期フェーズにおいては、開発チームの意見が取り入れられがちです。というのも、とりわけモジュールが完成することに注力しているからです。

そのためプロジェクトの立ち上げ段階で、「常時結合までは不要である」と判断されることが多いです。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30