コードクローンの特性に対する開発者の熟練度の影響に関する調査に向けて堀田圭佑†1

本稿では，開発者の熟練度と，その開発者が生成したコードクローンの特性との間に関連があるかについて，その調査の必要性，有用性を議論する．また，関連分野の研究動向に触れると共に，調査を進める上で検討すべき事柄について議論する．

Toward Investigating Relationshipbetween Abilities of Developers and Quality of Clones
Keisuke Hotta†1
This paper discusses the need and the availability of revealing relations between abilities ofdevelopers and clones created by them. It mentions related work followed a discussion of how
to perform the analysis.

開発者の熟練度とコードクローンの特性との関連が1. ま え が き明らかになり，熟練者の生成するコードクローンの方

コードクローンとは，ソースコード中に存在する同が経験の少ない開発者が生成するものと比較してがソ一の，あるいは類似するコード片のことをいい，コピーフトウェア保守に与える悪影響が小さいことが立証さ

アンドペーストによる既存コードの再利用がその主たれれば，どのような状況でどのようなコード片を再利る生成要因であるといわれている1) ．一般的にコード用すればよいのかという指標を熟練者から学ぶことがクローンの存在はソフトウェア保守を阻害すると考えできる．これにより，経験の少ない開発者でも安全にられており，これまでにコードクローンの管理技法にコード片の再利用を行うことが可能になる．

2)

関する研究が盛んに行われている ．
また近年，多くの研究者によってリポジトリマイニングを用いたコードクローンに関する定量的分析が行われている．これらの研究では，コードクローンと本稿では，関連分野の研究の動向について触れた後，調査を進める上で検討すべき事柄について議論する．

2. 関 連 研 究

不具合の関連3) ，コードクローンの修正されやすさ4) ，これまでに，開発者とソースコードの品質との関連

コードクローンの生存期間5) など，コードクローンにを調査する研究がいくつか行われている7),8) ．それら関する様々な特性が調査されている．の研究の報告では，多数の開発者が関わっているコー

しかし，これらのコードクローンの特性と，生成者ド片より，特定の開発者が集中的に関わっているコーの熟練度との関連性は明らかになっていない．例えば，ド片の方が不具合が少ないことが報告されている．換

経験の少ない開発者が生成したコードクローンは，経言すれば，そのコード片にあまり関わっていない，そ験の豊かな開発者が生成したものと比較して，不具合のコード片に対する経験の少ない開発者が関わることの混入率や同時修正を必要とする確率が高いのではな

により，コード片に不具合が混入する確率が高くなる．

いかと考えられる．これは，経験の少ない開発者は再また，コードクローンとそのコードクローンに関わっ利用対象のコードに対する理解が不十分なまま再利用た開発者の数との間の関連を調査した研究が Harderを行う傾向にあること6) に起因する．

によって行われた9) ．その報告によると，複数の開発者が関わっているコードクローンよりも，単一の開発†1 大阪大学大学院情報科学研究科
Graduate School of Information Science and Technology, Osaka University

者のみが関わっているコードクローンの方が多数存在していた．また，関わっている開発者数による不具合数の差異を計測した結果，開発者数の違いによる差異はないことが報告されている．

4. あ と が き

さらに，コードクローンがなぜ生成されるのかにつ

本稿では，コードクローンとその生成者の熟練度といて調査した研究もいくつか存在する10),11) ．これらの間の関連を調査することの必要性を検討した．また，の研究では，コピーアンドペーストによるコードの再関連分野の研究動向について触れると共に，調査を進利用は頻繁に行われていると同時に，様々な要因からめていく上で検討すべき事柄について議論した．

避けがたいものであることが報告されている．この結果から，コピーアンドペーストによる再利用を禁止しコードクローンの生成を完全に抑止することは困難であるといえる．従って，“どのような場合にコピーアンドペーストによる再利用を許容するのか” を検討することは極めて重要であり，本研究が成就することにより一つの指標を提示できるものと考えている．

3. 研究の展望
開発者の熟練度とコードクローンの特性を調査する上で検討すべき事柄として，以下のものが挙げられる．

• コードクローンが生成された時期，箇所をどのように特定するか• どのような研究課題を設定するか• 開発者の熟練度をどのように計測するか
コードクローンが生成された時期や箇所の特定については，我々の研究グループが開発したコードクロー
ン追跡技法12) を用いることを予定している．この技法をソースコードリポジトリに適用することで，コードクローンが生成された時期や箇所を自動的に特定することができる．
コードクローンに関する研究分野では，コードクローンに関する特性として，不具合の有無，一貫性のない修正の有無，修正されやすさなどが調査されている．本研究では，これらの特性を調査対象として研究課題を設定する予定である．また，ある特定のプロジェクトに対する熟練度の高い開発者は，そのプロジェクトに関する知識を多数持っているため，再利用可能なコード片がどこに存在するのかをよく知っていると考えられる．このように，本研究では，生成されるコードクローンの特性だけでなく，コピーアンドペーストによるコードの複製に対する開発者の熟練度の影響を幅広く調査したいと考えている．
また開発者とソースコードの品質の関係を調査した
既存研究では，各開発者が行った対象プロジェクトに行ったコミット数を用いて開発者の熟練度を計測している．本研究ではこれに加え，Github などのリポジトリホスティングサービスを用いてそれぞれの開発者が他のプロジェクトにどの程度貢献しているのかを計測し，調査に用いたいと考えている．

謝辞 本稿は，日本学術振興会特別研究員奨励費 (課題番号：25・1382) の支援の下で作成された．

参考文

献1) 肥後芳樹，楠本真二，井上克郎：コードクロー
ン検出とその関連技術，電子情報通信学会論文誌，
Vol.91-D, No.6, pp.1465–1481 (2008).
2) Zibran, M. F. and Roy, C. K.: The Roadof Software Clone Management: A Survey,
Technical Report, University of Saskatchewan(2012).
3) Juergens, E., Deissenboeck, F., Hummel, B.
and Wagner, S.: Do Code Clones Matter?,
ICSE’09, pp.485–495 (2009).
4) Harder, J. and Göde, N.: Cloned code: stablecode, Journal of Software : Evolution and Process (2012).
5) Kim, M., Sazawal, V., Notokin, D. and Murphy, G. C.: An Empirical Study of CodeClone Genealogies, ESEC/FSE’05, pp.187–196(2005).
6) Singer, J., Lethbridge, T., Vinson, N. and Anquetil, N.: An Examination of Software Engineering Work Practices, CASCON’97, p. 21(1997).
7) Rahman, F. and Devanbu, P.: Ownership, Experience and Defects: A Fine-grained Study ofAuthorship, ICSE’11, pp.491–500 (2011).
8) Bird, C., Nagappan, N., Murphy, B., Gall, H.
and Devanbu, P.: Don’t Touch My Code!: Examining the Eﬀects of Ownership on Software
Quality, ESEC/FSE’11, pp.4–14 (2011).
9) Harder, J.: How Multiple Developers Aﬀect
the Evolution of Code Clones, ICSM’13, pp.
30–39 (2013).
10) Kim, M., Bergman, L., Lau, T. and Notokin,
D.: An Ethnographic Study of Copy and Paste
Programming Practices in OOPL, ISESE’04,pp.83–92 (2004).
11) Zhang, G., Peng, X. and Zhao, Z. X. W.:
Cloning Practices: Why Developers Clone andWhat can be Changed, ICSM’12, pp.285–294(2012).
12) Higo, Y., Hotta, K. and Kusumoto, S.: Enhancement of CRD-based Clone Tracking, IWPSE’13, pp.28–37 (2013).