コードを読まずに品質を測定する
ではコード品質を測定する方法を見ていきましょう。実はコードの中身を見なくてもコードの品質は測定できます。まずはそのような測定方法を紹介します。
例えば、あなたがチームの開発速度の低下を感じているとしましょう。大量の重複コード(クローンコード)があったり、何万行も続く長大関数があったり……コードの品質が落ちてくると、コードの変更・追加に予想以上の時間がかかるようになります。コード品質は開発速度と相関があるのです。そこで開発速度を測定します。
では、「開発速度が遅くなっているなぁ」と課題を感じるあなたは、どんな指標を使って開発速度を測定しましょうか? 一つピンとくるのは、『LeanとDevOpsの科学』で提唱されている4つのKey Metrics(DevOps Four Keys)のうちの一つ、「変更のリードタイム」です。
- 変更のリードタイム:first commitからそのcommitが本番にリリースされるまでの時間
他には、アジャイルチームのパフォーマンスを向上させるための定量化とデータ収集法を紹介した書籍『アジャイルメトリクス』にある「手戻り数」や「手戻り率」も開発速度を測定するのに使えそうです。
- 手戻り数:プロジェクト管理システムにおいて、プロセスの前段に戻ってきたタスクの数。例えば、あるタスクを「完了」に移動したが、実際にはバグがあった場合、タスクは前段に戻され「手戻り」となる。
- 手戻り率:プロジェクト管理システムにおいて、プロセスの前段に戻ってきたタスクの割合。タスクが戻った回数をB、タスクが進んだ回数をFとすると、手戻り率は (B / (F + B)) * 100 で表せる。
これらの指標は、一度数値化して終わりにするのではなく、定期的に数値化して時系列で並べることで、数値の傾向を見ることができます。このデータをどう使うかはあなた次第です。メンバーが常に見るところに提示してコード品質への意識改革を図るのもいいでしょう。経営陣にこの数値を提示し、改善のための予算をもらうということも考えられます。
筆者が若手のころは、まだまだ「20230831_final2.zip」などというファイル名のzipでソースコードを固めて管理……などという恐ろしい現場もありました。今はソースコード管理システムやプロジェクト管理システムなど、支援システムが豊富で、そこにはコード以外にも様々な有益な情報が保存されています。これを活用しない手はありません。上記の「変更のリードタイム」や「手戻り率」を調べて開発速度、つまりはコード品質を測定するのもその一例です。