を招きやすい” といえるが，同時に “ある程度はコーオープンソース開発におけるコードクローン含有率のる）” ともいえる．ソフトウェア開発や保守が長期間に収束傾向に関する調査本田暁†

阿萬 裕久†† a)（正員）

佐々木隆志††川原稔††（正員）

Investigation of Convergence Tendency of Code Clone Ratio inOpen Source Development
Akira HONDA† , Nonmember, Hirohisa AMAN††a) , Member,††Takashi SASAKI, Nonmember, andクローンは解消され，やがては無害なクローンが残っていくのではないかと考えられる．
そこで本論文では，実際に広く使われているソフトまれるコードクローンの割合（含有率）が開発や保守の進行ととともにどのように変動していくのかという愛媛大学工学部情報工学科，松山市

Department of Computer Science, Faculty of Engineering,Ehime University, 3 Bunkyo-cho, Matsuyama-shi, 790–8577観点からコードクローンの調査と考察を行う．

2. 調査対象と方法

Japan
††

わたって進行していけば，その中で問題となるようなウェアに対してデータ収集を行い，ソースコードに含Minoru KAWAHARA†† , Member†

ドクローンが存在していても問題ではない（普通であ愛媛大学総合情報メディアセンター，松山市

Center for Information Technology, Ehime University, 3
Bunkyo-cho, Matsuyama-shi, 790–8577 Japana) E-mail: aman@ehime-u.ac.jp

2. 1 対象

調査対象ソフトウェアの一覧を表 1 に示す．調査の一般性を高めるため，主要開発言語が C/C++であるという以外には特別な基準を設けず，開発規模，開発あらまし コードクローンは保守を困難にする要因

期間並びにドメインは敢えて不揃いなものを選択した．の一つと言われているが，その一方で全てのクローン

なお，言語が異なった場合，コードクローンの生み出が有害とは限らないとの指摘もあり，全てを除去するされ方に違いが生じている恐れがあり，その種の懸念のが適切ともいえない．そこで本論文ではその適切なを排除するために今回は C/C++に限定した．他言語分量について検討するため開発・保守の進行に伴うクでも同様の調査を行うことは今後の課題としたい．

ローン含有率の動向を調査し，おおむね 20%程度に収2. 2 方束する傾向にあることを報告している．

対象ソフトウェアのソースファイルを 3ヶ月ごとにキーワード コードクローン，クローン含有率，メ法入手し，それぞれコードクローン検出ツールを用いてクローン含有率を算出する．検出ツールにはコードクトリックス，定量的指標

1. ま え が き

ローン研究で広く使われている CCFinderX を使用す産業界において，大規模かつ複雑なソフトウェアにる．クローン含有率としては CCFinderX で算出され対する効率的な保守は重要な課題の一つである．そのる CVRL を使用する．これは “クローンとなっている

際，コードクローンの存在は保守作業を困難にする要

コード断片の登場するソースコード行が全体に占める因になるといわれている [1]．コードクローンとはソー割合” を表したメトリックスである．

スコードの中に存在する互いに一致または類似したコード断片のことであり，あるコード断片に修正が必要な場合，それとクローン関係にある他の全てのコード断片にも同様の修正が必要となる可能性があり，それらを全て確認しなければならなくなる．それゆえコードクローン検出ツール（例えば CCFinderX [2]）表 1 調査対象ソフトウェア
Table 1 Surveyed software products.
ソフトウェア

データ収集期間

Firefox（注 1）

2004/11/09〜2013/08/06

Linux kernel（注 2）

1994/03/13〜2013/09/02

gimp-for-painters（注 3） 1997/12/01〜2013/06/01

を活用して該当する箇所を見つけ出し，そこにリファ

handbrake-jp（注 4）

2006/03/01〜2011/03/01

クタリングを施して保守性を高めるといった対応がな

Password Safe（注 5）

2002/03/01〜2013/09/01

Cool Reader（注 6）

2007/03/15〜2013/09/01

されている [3]．
しかしその一方で，全てのコードクローンがソフトウェア保守に悪影響を及ぼしているわけではないという報告も少なくなく [4]〜[7]，全てを除去するのが適切であるとも断言できない．直感的に言えば，“コードクローンが多すぎるというのは保守作業の困難化
電子情報通信学会論文誌（注 1）：http://www.mozilla.jp/firefox/（注 2）：https://www.kernel.org/（注 3）：http://sourceforge.jp/projects/gimp-painter/（注 4）：http://sourceforge.jp/projects/handbrake-jp/（注 5）：http://passwordsafe.sourceforge.net/（注 6）：http://coolreader.org/

c 一般社団法人電子情報通信学会 2014
D Vol. J97–D No. 7 pp. 1213–1215 1213

電子情報通信学会論文誌 2014/7 Vol. J97–D No. 7
表3

クローン含有率のソフトウェア間での平均と標準偏差の動向
Table 3 Changes in the mean value of CVRL and thestandard deviation value of CVRL withinsurveryed software products.
データ収集期間（%） 平均

図 1 クローン含有率の動向
Fig. 1 Changes in CVRL.

標準偏差100.389

0.336

20

0.340

0.281

30

0.339

0.320

40

0.213

0.107

50

0.202

0.057

60

0.202

0.031

70

0.200

0.022

80

0.204

0.018

90
100

0.207
0.205

0.020
0.020

であっても開発が終了していたわけではなく，それぞれ開発は継続的に行われていたことを付記しておく．

表 2 データ収集最終日におけるクローン含有率
Table 2 CVRL on the ﬁnal day of data collection.
ソフトウェアCVRLFirefox

0.222

同様にオープンソースソフトウェアにおけるクローン含有率を調査した先行研究として Uchida らの論
文 [9] がある．文献 [9] では多数のオープンソースソフ

Linux kernel

0.180

トウェアを対象にクローン検出を行い，その割合の平

gimp-for-painters

0.228

均値やクローンの内容について考察している．今回のhandbrake-jp

0.182

調査では，ソフトウェアの成熟を経てクローン含有率

Password Safe

0.212

Cool Reader

0.204がそれぞれ一定値に収束しているという傾向が見られたが，それとともにソフトウェア間での “個体差” も小さくなっているということも見てとれた（表 3）．つ

適切なデータ収集間隔の設定については議論の余地

まり，先行研究で含有率の平均が一つの目安として報があるが，これが短すぎるとその間にソースコードの告されていた（注 7）が，ソフトウェアが成熟するにつれ変更がほとんど起こらず，クローン含有率の動向をう

ソフトウェア間での “分散” も小さくなり，いずれもまくつかめない恐れがある．今回の分析対象とは異な同様の値（約 20%）へ収束していく傾向を確認できた

るが，Eclipse の開発で “同一のソースファイルに対しことが本論文の貢献である．て複数回のコード変更が起こる間隔の期待値が約 100

今回は含有率の動向について調査を行い，その値の日であった” という報告 [8] を参考にし，ここでは 3ヶ収束傾向を確認できた．しかしながら，現実にどのよ月を一つの目安として調査を行うこととした．

うなコード断片がコードクローンとして残り続けてい3. 調 査 結 果

るのか，逆にどのようなコード断片は途中でクローン結果を図 1 及び表 2 に示す．図 1 は各ソフトウェでなくなっていくのかという観点では十分に追跡できアにおけるクローン含有率（CVRL）の動向を表したていない．その点についても詳細に追跡していき，保グラフである．グラフの横軸は，データ収集開始日を守性への影響について考察していくことは重要な今後0，最終日を 100%として正規化した期間になっていの課題としたい．

る．縦軸はクローン含有率である．表 1 はデータ収集

4. む す び

最終日におけるクローン含有率をまとめたものである．

本論文ではコードクローンの含有率に着目し，そのいずれのソフトウェアのクローン含有率も 20%程度

値がソフトウェアの成熟とともにどのように変化してに収束していく傾向にあることが見てとれる．なお，紙面の都合上詳細は割愛するが，いずれのソフトウェ
アもクローン含有率の変動が小さくなり安定した時期
1214（注 7）：文献 [9] ではクローン含有率の平均値として 11.3%という数値が報告されている．ただし，これはトークン数の割合に基づいた数値であるため，本論文の結果（行単位での含有率）と直接比較するのは難しい．

レ タ ー

いくかを調査した．規模やドメインの異なる 6 種類のソフトウェアについて追跡していくといずれも 20%程

pp.43–56, Nov. 2011.
[4]

cloned code?,” Proc. 13th Int. Working Conf. Source

度に収束していく傾向が観測された．
通常，どのようなソフトウェアであっても多少のCode Analysis and Manipulation, pp.57–66, 2008.
[5]

コードクローンは存在していると思われるが，今回のClones, pp.75–76, 2010.
[6]

neering, pp.65–74, 2011.
[7]

かという観点から保守性への影響について解析するこ[8]

言語の違いについても考察する必要がある．
文
[1]

献

井上克郎，神谷年洋，楠本真二，“コードクローン検出” コンピュータソフトウェア，vol.18, no.5, pp.47–54,
法，Sept. 2001.

[2]

T. Kamiya, “the archive of ccﬁnder oﬃcial site,” Aug.
2010. http://www.ccﬁnder.net/[3]

肥後芳樹，吉田則裕，“コードクローンを対象としたリファ” コンピュータソフトウェア，vol.28, no.4,
クタリング，

堀田圭佑，肥後芳樹，楠本真二，“生成抑止，分析効率化，不具合検出を中心としたコードクローン管理支援技術に関” コンピュータソフトウェア，vol.31, no.1,
する研究動向，pp.14–29, Feb. 2014.

は残り続け，どういったクローンは除去されていくのとが挙げられる．また，他言語でも同様の調査を行い，J. Harder and N. Gode, “Clone stability,” Proc. 15th
European Conf. Software Maintenance and Reengi-

まざまな生成要因が混在しているため，それらを分類しつつ開発過程を解析していき，どういったクローン

T. Kamiya, “Classifying code clones with conﬁguration,” Proc. 4th ICSE Int. Workshop on Software

調査結果はその適度な量を議論する一つの資料になると考える．今後の課題として，コードクローンにはさJ. Krinke, “Is cloned code more stable than non-[9]

阿萬裕久，“オープンソース開発におけるソースコード” 情処学ソフトウェア工学研報，の安定性予測について，vol.2006, no.125, pp.57–64, Nov. 2006.
S. Uchida, A. Monden, N. Ohsugi, T. Kamiya, K.
Matsumoto, and H. Kubo, “Software analysis by code
clone in open source software,” Journal of Computer
Information Systems, vol.45, no.3, pp.1–11, April
2005.

（平成 26 年 2 月 5 日受付，2 月 28 日再受付）

1215