東京、ベトナム・ハノイ、同ホーチミンでシステムを開発するGMOインターネット。オフショア開発であるうえ、オフショア拠点も分散している。同社チャン ドゥック ウィ氏(次世代システム研究室 アーキテクト)は「ツールを使った品質の可視化をしないと、ソースコードの品質は確保できなかった」と話す。品質のメトリックス(指標)の可視化やコードレビューの効率化で、コードの品質維持プロセスがスムーズに回るように工夫。新サービスを素早く、高品質に生み出す原動力とした。

 今オフショアやニアショアなど、ソースコードの品質を下げる要因は増加している(図1)。日立ソリューションズの細美彰宏氏(技術開発本部 生産技術部 部長)は「準備不足の現場では、ソースコードの書き方の不統一、理解不足による仕様の未実装が後になって判明する」と警鐘を鳴らす。

図1●環境変化でコード品質の重要性が高まる
図1●環境変化でコード品質の重要性が高まる
ソースコードの品質確保プロセスを整備して、効率的に品質を高める必要がある
[画像のクリックで拡大表示]

 プロジェクトの短納期化や大規模化も品質を下げる要因だ。ソースコードの規模に対し、品質確保のための活動に割ける時間が少なくなる。

 その一方でソースコードに求められる品質が高まっている。継続的な機能拡張の必要性、セキュリティ脅威の増大、モバイルの普及といった環境変化が理由だ。保守性、拡張性、可読性が高いソースコードになっていないと、機能強化やセキュリティ対応などの保守開発の工数が大きくなる。ループ処理内にSQL文があるなど性能の足を引っ張るソースコードだと、サーバーの性能や台数を強化しても、モバイルの普及によるトラフィック増に対応できなくなる。

 実際、ソースコードの品質の良しあしは、保守開発に大きく影響する。サイボウズのSaaS「Cybozu.com」を支えるミドルウエアの開発を担当している青木 翔氏(開発本部 ミドルウエア開発グループ)のチームは、障害時の修正や機能追加に掛かる工数が大きいという問題を抱えていた。ソフトウエアのバグが多いうえ、可読性や保守性が悪かったのが原因だ。そこで徹底的にリファクタリング(ソースコードの修正)を実施した結果、「新機能追加に掛かる時間を3カ月から1カ月に短縮できた」(青木氏)。

品質可視化でプロセス実行を確実に

 ソースコードの品質は、実装工程で高めるしかない。具体的には、単体テストとコードレビューをきちんと実施し、問題が見つかれば修正する。マネジャーやリーダーは、そのプロセスを作り、スムーズに回る状態を保たなければならない。

 単体テストは、自動テストツールやCI(継続的インテグレーション)ツールの登場で効率化の道筋が見えてきた。一方、コードレビューはいまだ多くの現場でボトルネックになっている。その最大の理由は、レビューアーの負荷が大きいからだ。