SHOEISHA iD

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

連載記事

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

翔泳社では、「独習」「徹底入門」「スラスラわかる」「絵で見てわかる」「一年生」などの人気シリーズをはじめ、言語や開発手法、最新技術を解説した書籍を多数手がけています。プロジェクトマネジメントやチームビルティングといった管理職向けの書籍も豊富です。

ITエンジニアとしてのスキルアップ・リスキリングに、ぜひお役立てください。

書籍に関する記事を見る

'); googletag.cmd.push(function() { googletag.pubads().addEventListener('slotRenderEnded', function(e) { var ad_id = e.slot.getSlotElementId(); if (ad_id == 'div-gpt-ad-1659428980688-0') { var ad = $('#'+ad_id).find('iframe'); if ($(ad).width() == 728) { var ww = $(window).width(); ww = ww*0.90; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/728+","+ww/728+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/728+","+ww/728+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/728+","+ww/728+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/728+","+ww/728+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(90*ww/728)+"px;width:"+728+"px;}", 0 ); } else { if ($(window).width() < 340) { var ww = $(window).width(); ww = ww*0.875; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/320+","+ww/320+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/320+","+ww/320+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/320+","+ww/320+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/320+","+ww/320+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(180*ww/320)+"px;width:"+320+"px;}", 0 ); } } } }); }); } else { document.write('
'); document.write('
'); }
話題のあの人にインタビュー!(AD)

効果的な静的解析ツールを選ぶ3つのポイントとは?

――米Coverity チーフアーキテクト Andy Chou氏インタビュー

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

 開発のアウトソーシングやオープンソース利用、ソフトウェアの巨大化・複雑化により、静的解析ツールでソフトウェア品質を確保することが、組込み開発業界などを中心に一般的になりつつある。この静的解析ツールの1つ、「Coverity」の開発を担当する米Coverityのチーフアーキテクト Andy Chou氏に、静的解析技術の需要性や米国のトレンドについて話を聞いた。

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

 開発のアウトソーシングやオープンソース利用が進み、製品品質の担保が悩みの種となりつつある。巨大化・複雑化するソフトウェアの状況を考えてみても、手作業や目視ではなく静的解析ツールなどで自動化するのが現実解といえるだろう。

 静的解析ツールの一つに、米スタンフォード大学の研究室発の「Coverity Static Analysis」という製品がある。開発を手がける米Coverity社のチーフアーキテクト Andy Chou氏に、現在の開発動向から見た静的解析ツールの需要性や、最近の米国のトレンドについて聞いた。

米Coverity チーフアーキテクト Andy Chou氏
米Coverity チーフアーキテクト Andy Chou氏

効果的な静的解析ツールを選ぶ3つのポイント

――静的解析ツールが必要とされる背景に、開発業界におけるどのような変化があったのでしょうか

Chou氏:

組み込み開発においては、システム側でもデバイス側でも、ソフトウェアに対する価値が高まってきています。スマートフォンを例に挙げて考えると、ハードウェア、タッチスクリーン、ワイヤレスアクセスなどは昔から存在していましたが、対応するスマートフォンのアプリケーションは最近になってから出てきたものです。今後はそれらのソフトウェア開発に力を入れていくことで、製品の競争力が増していくと思います。

一方で、機能が増えてきたことによりコードサイズも非常に大きくなってきました。ソースコードの開発をアウトソーシングしたり、オープンソースから取り入れる場合などは、さらにコードは複雑化し、ソフトウェアの整合性を保つのが難しくなってしまうため、コストやリスクを軽減できる静的解析ツールの需要が高まってきたと言えます。

――静的解析ツールを導入する際のポイントを教えてください

Chou氏:

静的解析ツールを効果的に使用するには、3つのキーポイントがあります。1つ目は「静的解析ツールによって出力されたバグレポートの内容が正しいかどうか」という点です。誤検出が多いと、開発者にとってバグレポートは無意味なものとなってしまいます。2つ目は「バグレポートの内容に十分な情報が記載されているか」。3つ目は「現在ある開発プロセスの中に、そのツールがシームレスにフィットするか」です。

――では、静的解析ツール「Coverity Static Analysis」では、具体的にどのようにプログラムの解析が行われるのでしょうか

Chou氏:

「Coverity Static Analysis」では、プログラムの流れである「パス」を取り出して解析し、ソースコード中にインラインで表示します。ブランチのディレクション(各条件分岐でどちらを選択したか)は緑、エラー関係の情報は赤のイベントメッセージとしてソースコードの横に可視化されるため、開発者はプログラムのイベントやエラーの発生箇所を容易に把握できます。

パスを解析してイベントメッセージを表示している画面
パスを解析してイベントメッセージを表示している画面

――他の製品と比べてCoverity Static Analysisはどういった特長があるのでしょうか

Chou氏:

弊社製品の一番の強みは、誤検出率が非常に低いことです。通常で誤検出率を平均20%未満に抑えることができます。また、ソースコードが1,000万行を超えるような大規模システムの解析も可能です。

速度の面でも、使用しているハードウェア次第ですが、数百万行であれば数時間以内に行うことができます。大規模システムのようにコードが1,000万行以上だと、解析に1日~数日かかる可能性もありますが、差分のみを解析することで時間を抑えることができます。

さらに、クラッシュを起こすような欠陥、セキュリティーエラーなど、さまざまなタイプの欠陥を検出できる点、また、マッピング機能により特定の欠陥を使用して作られた製品ラインおよび他のバージョンへの影響を容易に確認できる点も類似製品との違いだと言えるでしょう。

最も重要なことは、開発者にとって有益であるという結果を速くきちんと出すことなので、私たちは常に精度が高く、情報として充分な数を、高い解析技術により短期間で検出することに注力しています。

静的解析ツール「Coverity Static Analysis」(最新版Coverity 5)スクリーンショット
静的解析ツール「Coverity Static Analysis」(最新版Coverity 5)スクリーンショット

次のページ
米国における静的解析ツールのトレンド

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
話題のあの人にインタビュー!連載記事一覧

もっと読む

この記事の著者

中川 香菜子(編集部)(ナカガワ カナコ)

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

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5237 2010/06/25 14:49
" ); }

おすすめ

アクセスランキング

  1. 1
    C# 13の新機能を理解する――暗黙的なインデックスアクセスとallows ref struct
  2. 2
    オープンソーステキストエディタ「Emacs 30.1」リリース NEW
  3. 3
    「オブザーバー・パターン」 ~マンガでプログラミング用語解説
  4. 4
    C++からRustに移行した「Fish Shell 4.0」、正式リリース NEW
  5. 5
    ソフトウェアエンジニアの業務効率化を支援する「Kurogo」、フルリニューアルでコード検索機能とWeb情報収集機能が追加
  1. 6
    モバイルデバイス向けのLinux Sailfish OS、バージョン5.0を発表
  2. 7
    【超時短テクニカルライティング】生成AIを活用しながら文章を見直して、よりわかりやすい文章にしよう
  3. 8
    フロントエンドの定番ライブラリ「React 19」の新機能を紹介──React Server Componentsとその他の改善点
  4. 9
    ゲーム業界で働くプログラマ・エンジニア、8割超が現在の職場のスキル評価に満足
  5. 10
    Webはどんどん複雑になっている? これまでのWebシステムのトレンドを振り返る

アクセスランキング

  1. 1
    C# 13の新機能を理解する――暗黙的なインデックスアクセスとallows ref struct
  2. 2
    オープンソーステキストエディタ「Emacs 30.1」リリース NEW
  3. 3
    「オブザーバー・パターン」 ~マンガでプログラミング用語解説
  4. 4
    C++からRustに移行した「Fish Shell 4.0」、正式リリース NEW
  5. 5
    ソフトウェアエンジニアの業務効率化を支援する「Kurogo」、フルリニューアルでコード検索機能とWeb情報収集機能が追加
  6. 6
    モバイルデバイス向けのLinux Sailfish OS、バージョン5.0を発表
  7. 7
    【超時短テクニカルライティング】生成AIを活用しながら文章を見直して、よりわかりやすい文章にしよう
  8. 8
    フロントエンドの定番ライブラリ「React 19」の新機能を紹介──React Server Componentsとその他の改善点
  9. 9
    ゲーム業界で働くプログラマ・エンジニア、8割超が現在の職場のスキル評価に満足
  10. 10
    Webはどんどん複雑になっている? これまでのWebシステムのトレンドを振り返る
  1. 1
    ITエンジニア本大賞2025、技術書部門とビジネス書部門の大賞が決定!
  2. 2
    「オブザーバー・パターン」 ~マンガでプログラミング用語解説
  3. 3
    C# 13の新機能を理解する――暗黙的なインデックスアクセスとallows ref struct
  4. 4
    マイクロソフト、VSCodeの新機能「Copilot Next Edit Suggestions」のプレビュー版公開
  5. 5
    3/5まで書籍全文が無料公開 『Pythonで動かして学ぶ!Kaggleデータ分析入門』
  6. 6
    AIや統計の数式を解説する美少女VTuber「AIcia Solid Project」生みの親が語る、継続できるアウトプット活動とは?
  7. 7
    Linuxディストリビューション「EndeavourOS Mercury」が一般提供開始
  8. 8
    ITエンジニア本大賞2025のプレゼン大会をレポート、最終決戦に臨んだ本に込められた想いとは
  9. 9
    開発者のOSS活動が会社から評価される世の中にしたい──日立製作所が専門組織設立に込めた情熱
  10. 10
    GitHub、あらゆるエディタやIDEとGitHub Copilotとの統合を可能にする「Copilot Language Server SDK」を一般公開

イベント

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

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

メールバックナンバー

アクセスランキング

  1. 1
    C# 13の新機能を理解する――暗黙的なインデックスアクセスとallows ref struct
  2. 2
    オープンソーステキストエディタ「Emacs 30.1」リリース NEW
  3. 3
    「オブザーバー・パターン」 ~マンガでプログラミング用語解説
  4. 4
    C++からRustに移行した「Fish Shell 4.0」、正式リリース NEW
  5. 5
    ソフトウェアエンジニアの業務効率化を支援する「Kurogo」、フルリニューアルでコード検索機能とWeb情報収集機能が追加
  1. 6
    モバイルデバイス向けのLinux Sailfish OS、バージョン5.0を発表
  2. 7
    【超時短テクニカルライティング】生成AIを活用しながら文章を見直して、よりわかりやすい文章にしよう
  3. 8
    フロントエンドの定番ライブラリ「React 19」の新機能を紹介──React Server Componentsとその他の改善点
  4. 9
    ゲーム業界で働くプログラマ・エンジニア、8割超が現在の職場のスキル評価に満足
  5. 10
    Webはどんどん複雑になっている? これまでのWebシステムのトレンドを振り返る

アクセスランキング

  1. 1
    C# 13の新機能を理解する――暗黙的なインデックスアクセスとallows ref struct
  2. 2
    オープンソーステキストエディタ「Emacs 30.1」リリース NEW
  3. 3
    「オブザーバー・パターン」 ~マンガでプログラミング用語解説
  4. 4
    C++からRustに移行した「Fish Shell 4.0」、正式リリース NEW
  5. 5
    ソフトウェアエンジニアの業務効率化を支援する「Kurogo」、フルリニューアルでコード検索機能とWeb情報収集機能が追加
  6. 6
    モバイルデバイス向けのLinux Sailfish OS、バージョン5.0を発表
  7. 7
    【超時短テクニカルライティング】生成AIを活用しながら文章を見直して、よりわかりやすい文章にしよう
  8. 8
    フロントエンドの定番ライブラリ「React 19」の新機能を紹介──React Server Componentsとその他の改善点
  9. 9
    ゲーム業界で働くプログラマ・エンジニア、8割超が現在の職場のスキル評価に満足
  10. 10
    Webはどんどん複雑になっている? これまでのWebシステムのトレンドを振り返る
  1. 1
    ITエンジニア本大賞2025、技術書部門とビジネス書部門の大賞が決定!
  2. 2
    「オブザーバー・パターン」 ~マンガでプログラミング用語解説
  3. 3
    C# 13の新機能を理解する――暗黙的なインデックスアクセスとallows ref struct
  4. 4
    マイクロソフト、VSCodeの新機能「Copilot Next Edit Suggestions」のプレビュー版公開
  5. 5
    3/5まで書籍全文が無料公開 『Pythonで動かして学ぶ!Kaggleデータ分析入門』
  6. 6
    AIや統計の数式を解説する美少女VTuber「AIcia Solid Project」生みの親が語る、継続できるアウトプット活動とは?
  7. 7
    Linuxディストリビューション「EndeavourOS Mercury」が一般提供開始
  8. 8
    ITエンジニア本大賞2025のプレゼン大会をレポート、最終決戦に臨んだ本に込められた想いとは
  9. 9
    開発者のOSS活動が会社から評価される世の中にしたい──日立製作所が専門組織設立に込めた情熱
  10. 10
    GitHub、あらゆるエディタやIDEとGitHub Copilotとの統合を可能にする「Copilot Language Server SDK」を一般公開