開発ツール・手法

ソフトウェアメトリクス そふとうぇあめとりくす

ソフトウェアメトリクス循環的複雑度技術的負債コード品質DORAメトリクス保守性
コードの品質ってどうやって測るの?

簡単に言うとこんな感じ!

コード品質は「複雑さ」「重複度」「テストカバレッジ」「変更頻度」などの数値で測れるよ!勘で「このコードは汚い」と言うんじゃなく、「循環的複雑度が30超えてるから分割が必要」と数値で議論できるんだ。チームのデプロイ頻度や障害復旧時間も「DORAメトリクス」で測って改善できるよ。


ソフトウェアメトリクスとは

ソフトウェアメトリクス とは、ソフトウェアの品質・生産性・保守性を定量的に測定するための指標群です。

主観的な評価ではなく客観的な数値でコードの状態を把握し、改善の優先度を判断するために使います。


コード品質メトリクス

メトリクス概要目安
循環的複雑度(Cyclomatic Complexity)関数内の条件分岐の複雑さ10以下が理想、20超えは要分割
認知的複雑度(Cognitive Complexity)人間が理解しにくさを測る新指標SonarQubeが採用
コード重複率コピー&ペーストされたコードの割合5%以下が望ましい
テストカバレッジテストされているコードの割合80%以上を目標とすることが多い
コード行数(LOC)ファイル・関数のサイズ感関数200行以上は要分割検討

DORAメトリクス(開発チームの生産性)

GoogleのDevOps Research and Assessment(DORA)チームが定義した4つの指標です。

指標内容ハイパフォーマーの目安
デプロイ頻度本番デプロイの頻度1日複数回
変更リードタイムコミットから本番までの時間1時間未満
変更失敗率デプロイによる障害の割合5%未満
MTTR(平均復旧時間)障害から復旧までの時間1時間未満

主な計測ツール

ツール用途
SonarQubeコード品質の総合ダッシュボード
CodeClimateGitHub連携のコード品質分析
Codecovテストカバレッジの可視化
Four KeysDORAメトリクスの計測ツール(Google製)

歴史と背景

  • 1976年:McCabeが循環的複雑度を提唱
  • 2018年:DORAメトリクスがDevOps研究として発表
  • 現在:SpaceメトリクスやDXメトリクスなど開発者体験の指標も登場

関連用語