SHOEISHA iD

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

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

読者参加型企画(AD)

【読者参加型企画】2,000行のJavaソースコードを読むのに何分かかりますか?

~ ソースコード理解とパッチ適用判断問題で腕試し ~

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

 コードレビューなどで、他の人のソースコードを読んだり理解したりする速度が気になることはありませんか? 私たちの研究グループで実施した観察でもソースコードを読む速度は個人差が大きいことを確認しています。この読者参加企画では、オンラインのコードレビューハンズオンにご協力いただくことで、ご自身のスキル確認やスキル向上に役立ていただくとともに、研究にも活用させていただくことを期待しています。

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

ソースコード読解力は個人差が大きい

 コードレビューなどで、他の人のソースコードを読んだり理解したりする速度が気になることはありませんか? また、読む速度や理解する速度がとても速い人がいると感じたり、自分が周りの人よりも速いと思ったりすることがあるのではないでしょうか。私たちの研究グループで実施した観察でもソースコードを読む速度は個人差が大きいことを確認しており、同じソースコードを理解するための時間に6倍の差がある事例を確認しています。

 では、自分自身のソースコードを読む速度や理解する速度が、平均と比べて速いのか遅いのかを知るためにはどうしたらよいでしょうか? 最も簡単な方法は、社内などの身の周りの人とコードレビュー時間を比べてみることでしょう。他にも、参加者全員でソースコードを読むような社外勉強会に参加する方法もありそうです。

文献からは大まかな速度を知ることができる

 書籍、標準、論文の情報も参考になるでしょう。表1は国際標準や文献に掲載されているコードレビュー速度の一覧です。文献によっては、プログラミング言語が明記されていないものもあります。他にも、どのようなプロジェクト、前提、手順で実施したものかも勘案する必要があるので、これらのコードレビュー速度は大まかな指標として捉えるのがよいでしょう。

表1 標準や文献での参考値
文献名 コードレビュー速度
(1時間あたり)
公開年
IEEE: IEEE Standard for Software Reviews and Audits(1028-2008) 100~200行(Technical reviews) 2008
ワッツハンフリー: TSPi ガイドブック(Introduction to the Team Software Process)、秋山義博 監訳、JASPIC TSP研究会訳、翔泳社 200行以下(インスペクション) 2008(1999: 原著)
M. Fagan: "Design and code inspection to reduce errors in program development", IBM Systems Journal, vol. 15, No. 3, p 181-211 700~900行(問題発見)、500~700行(問題指摘)、(インスペクション、COBOL, コメント行含まず) 1976

ハンズオンワークショップでの事例

 私たちの国際研究グループが主催した「ソフトウェアインスペクションワークショップ2009」では、レビュー観点をセキュリティに限定し、1時間10分で4,500行のJava言語から欠陥の発見をするハンズオンを実施しました(図1)。ワークショップ参加者は、実務でソフトウェア開発に携わる様々な企業に所属する方です。事後アンケートから、参加者93名のうち32名が普段の業務でのコードレビューのほうが速い(時間当たりに読み進めるソースコード量が多い)と回答しました。表1の値とはずいぶん異なりますが、特定の観点に限定することで読むべき部分を限定し、みかけ上の読む速度が上がることもあると考えることができそうです。

図1 ワークショップでのレビューの様子
(この後、参加者どうしでグループディスカッションをしました)
図1 ワークショップでのレビューの様子(この後、参加者どうしでグループディスカッションをしました)

オンラインでもハンズオンワークショップを

 紹介したハンズオンのアンケートをはじめ「オンラインでもできるものを」という要望をたくさんいただいています。そこで、対象ソースコード、読みすすめ方など、条件をある程度そろえ、参加者の結果を共有できる題材(ハンズオン題材)を用意することを考えました。ハンズオンは、参加者にとっては腕試し、私たち研究グループにとっては研究題材になります。題材の準備や研究テーマは奈良先端科学技術大学院大学 博士前期課程の保田 裕一朗氏が中心となって進めています。

次のページ
ハンズオンの題材

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

  • このエントリーをはてなブックマークに追加
この記事の著者

森崎 修司(モリサキ シュウジ)

国立大学法人 奈良先端科学技術大学院大学 情報科学研究科 助教ソフトウェアレビュー/ソフトウェアインスペクション、ソフトウェア計測を専門とし、研究・教育活動をしている。奈良先端科学技術大学院大学にて工学博士を取得後、情報通信企業でソフトウェア開発、開発管理、レビューに従事。現在、同大学院に奉職。研究成果を業界に還元していくことをミッションの1つと位置付け、ソフトウェアレビュー研究の国際連携ワーキンググループの主導、多数の企業との共同研究、文部科学省「次世代IT基盤構築のための研究開発: StagEプロジェクト」に従事。研究グループのWeb、ブログ。

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング