SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

実例で学ぶ、コード品質の高め方

どうやってコード品質を測るのか? ソースコード品質の測定指標とその活用

第2回 コード品質の定量的な測定指標を理解しよう

  • X ポスト
  • このエントリーをはてなブックマークに追加

 前回の記事で、コード品質についての概要をご紹介しました。今回は、「どうやってコード品質を測るのか?」と題して、コード品質を決める指標と、その指標をどのようにして測定するのか、具体的な方法やツールについて説明していきます。

  • X ポスト
  • このエントリーをはてなブックマークに追加

品質を測定するとは?

 技術的負債、という言葉を知っていますか? 技術的負債とは、“何らかの理由により、必ずしも最善とは言えないが、実現が容易な手法を選択した結果生じる、将来の追加コスト” のことです。コード品質の世界にも技術的負債はあります。例を挙げれば、“納期に追われて安易にコードをコピペしちゃう”、とかですね。その場は切り抜けられるかもしれませんが、そのコピペに関連する様々な不具合を将来にわたって負債として引き受けることになります。

 さて、この負債。負ってしまったらどうしましょう? 真面目な方はすぐ返済したくなるかもしれませんが、負債の大きさが許容範囲内であれば、とりあえず利息だけ払って借り続けるという選択もありえます。コード品質の負債も、無理にコードを直して返済しない方がよいことがあります。コードを直すのにも費用がかかるので、開発予算や開発スコープなどと天秤にかけると、そのままにして将来にわたって注意を払うだけ(これが利息です)にする方がよいこともありえます。

 技術的負債を返済するにせよ借り続けるにせよ、行き当たりばったりはいけません。どちらにするか、意識的に「制御」しなくてはなりません。「測定できないものは制御できない」よく引用される名言です。私も何度もこの言葉を聞く機会がありました。企業戦略論の大家、ピーター・ドラッカーがそのように述べたというのが通説になっていますが、どうも出自ははっきりしないようです(Who said "You can't manage what you can't measure"?)。

 ソフトウェア工学分野で有名なトム・デマルコも、同様の発言をしたとして引用されることが多いようです。もっともデマルコは2009年に「“測定できないものは制御できない”は誤りだった」と述べているそうですが(An Idea whose Time Has Come and Gone?)。

 コード品質についての技術的負債も制御が必要[1]です。制御するにはコード品質を「測定」しなければなりません。現在のプロジェクトのコード品質に対し、今すぐ改善の手を打つべきか、あるいは現状をキープし他のことを優先するのか、その決断の拠り所がメンバーの肌感覚というのでは、なんとも心許ないと思いませんか。特に組織の中で開発している場合、チームとしての決断を周囲に承認してもらうためにも、品質を定量的に測定することが必須となってきます。

[1] 最新の研究では、全米で低品質ソフトウェアのコスト(Cost of Poor Software Quality)は2020年から2022年の2年間で16%増加し、313兆円(2.41 Tririon USD)と試算されています(米国における低品質ソフトウェアのコスト)。問題となっているもので影響の大きいものとしては、以下が挙げられています。

  1. 既存ソフトウェアの脆弱性に起因するサイバー犯罪の被害額の急増
  2. 基盤となるサードパーティ・コンポーネント(特にオープンソース・ソフトウェア)に関するソフトウェア・サプライチェーン問題の増加
  3. 既存のコードベースに変更を加える際に障害となる、技術的負債の増大

 このうち3つ目の技術的負債が、試算された「低品質ソフトウェアのコスト」の半分以上を占めています。これだけ大きなコストになっているのですから、測定せずに見て見ぬ振りはできません。

次のページ
コードを読まずに品質を測定する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
実例で学ぶ、コード品質の高め方連載記事一覧

もっと読む

この記事の著者

浅原 明広(株式会社Sider)(アサハラ アキヒロ)

 日本IBM、株式会社フィックスターズなどで、半導体製造装置や医療画像機器など、大小様々な組み込み製品向けのソフトウェア開発プロジェクトに従事。 現在、フィックスターズ子会社の株式会社Sider にて、ソースコードのコピペ管理ツール『CloneTracker』を開発・提供。最新のツールや方法論を用いた、ソフトウェア開発者体験の向上に強い関心を持つ。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

千葉 滋(東京大学情報理工学系研究科教授)(チバ シゲル)

東京大学 情報理工学系研究科 創造情報学専攻 教授

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/18337 2023/09/22 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング