ソフトウェアライセンスが コピーアンドペーストによる 再利用に与える影響の調査 鹿島 悠†,早瀬 康裕††,吉田 則裕†††, 真鍋 雄貴† ,井上克郎† †: 大阪大学 ††:東洋大学 †††:奈良先端科学技術大学院大学 1 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University ソフトウェア再利用 • ソフトウェア再利用の目的 – 信頼性の高いソフトウェアの開発 – ソフトウェアの生産性の向上 • 本研究ではソースコードのコピーアンドペースト (C&P)に着目 – ソースコード再利用の基本的な方法の一つ 2 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University オープンソースソフトウェアと ライセンス • オープンソースソフトウェア(OSS) – ソースコードの再利用が可能 – OSSの増加により,再利用可能なソースコードが増 加している • OSSライセンス – 多様な開発者の意図を満たすため様々なOSSライセ ンスが存在 – ライセンスごとにソフトウェアを利用する条件は異なる • 再利用はソフトウェア利用の一形態であり,ライセンスによ り制限または許可されている 3 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 代表的なOSSライセンス • BSD 3項ライセンス(BSD3) – 著作権,免責事項,ライセンス条文を明記すれば異なるライセンスで 配布されているソースコードに対してC&Pして配布することを許可し ている • Apache License Version 2 (Apachev2) – BSD3と同じく,他のライセンスで配布されているソースコードにC&P して配布することを許可している – 著作権,特許,商標に関する条件は,元のまま保持されなければな らない • GNU General Public License Version 2(GPLv2) – 再利用したソースコードを組み込むソフトウェアのライセンスもGPLv2 にしなければならない • ライセンスごとに再利用の条件は異なっている 4 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University ライセンスとC&P • C&Pする際には,コピー元のライセンスとコ ピー先のライセンスの両方を守る必要がある • どちらかのライセンスを変更しない限り,C&P した後配布ができなくなる場合がある BSD3 GPLv2 Apachev2 GPLv2 コピー コピー コピー コピー 5 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University C&Pに対するライセンスの影響 • 仮説 – ライセンスごとに再利用のされ方に違いがある • C&Pが行われる頻度 • コピー先のソースコードが利用するライセンスの種類 • C&Pによる再利用をライセンスの観点で分析 した研究は確認されていない • そこで実際のOSSに対して調査を行う 6 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 実験 • 目的 – 実際のOSSを対象にした,C&Pによる再利用に対するラ イセンスの影響の調査 • ただし,本実験は予備的実験であり実験対象は小規模 – 本手法が大規模な対象に適用可能か検証 • 概要 – 実際のOSSを対象に以下の2つを調べ,両者を統合した 結果を調査する • ライセンスの分布 • C&Pの分布 – ソースコードから直接C&Pの検出を行うのは難しいため,コードクローン の検出を利用する » コードクローンとは,他のコード片と一致または類似しているコード 片を指す 7 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 実験方法 ソフトウェアX ライセンスA ライセンスA 手順1. ライセ ンス の特 定 ライセンスB 手順2. コード クロー ンの検 出 ライセンスAが含ま れるクローンセット の集合 ソフトウェアY ライセンスA ソースファイル 集合 ライセンスA ライセンスB 手順3. コード クロー ンの数 え上げ ライセンス #コード 片 ライセンスA 10 ライセンスB 3 … … 不明 8 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 手順1.ライセンスの特定 • Ninka[1]を利用 – ファイル中のライセンス記述を解析し,ライセンスの 特定を行うツール – 特定されたライセンスが間違っている可能性は低い • ライセンスの特定が出来なかったファイルは対 象から除外 – ライセンス記述が無いファイル – 未知のライセンス記述が使用されているファイル [1] D. M. German, Y. Manabe and K. Inoue: “A sentence-matching method for automatic license identification of source code files”, ASE 2010, pp. 437–446 (2010) 9 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 手順2.コードクローンの検出 • CCFinder[2]を利用 – 異なるソフトウェア間で発生したコードクローンのみ抽出 • ソフトウェア内のC&Pはライセンスの影響が少ないと考えた • C&P以外の理由で生成されたコードクローンを除外 – LNRを利用[2] • 非繰り返し要素のトークン数 • LNR50以下のコードクローンを除外 ソフトウェアX ソフトウェアY ソフトウェアZ ライセンスA ライセンスB ライセンスC [2] T. Kamiya, S. Kusumoto and K. Inoue: “CCFinder: A multilinguistic token-based code clone detection system for large scale source code”, IEEE Transactions on Software Engineering, 28, pp. 654–670 (2002) 10 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 手順3.コードクローンの数え上げ 1. 調査対象とするライセンスで配布されているコード片を含むクローン セットを抽出 – クローンセットとはコードクローンの同値類を指す 2. クローンセット中に含まれるコード片を,コード片が所属するライセンス で分類して数え上げる • クローンセット中にはコピー元のコード片とコピー先のコード片が含まれ ており,C&Pの検出の代わりとなると考えた 調査対象とするライセンスとC&Pの関係にあるライセンスを調べる • ソフトウェアX ソフトウェアY ソフトウェアZ ライセンスA ライセンスB ライセンスC ライセンス #コード片 ライセンスA 2 ライセンスB 1 ライセンスC 2 11 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 実験対象 • Debian GNU/Linux 5.0.2のMainセクションの Javaファイル • 対象に選んだ理由 – ソースファイルのライセンスに,多様なライセンスが 利用されている – Ninka,CCFinderは共にJavaファイルの解析が可能 – 実験対象の規模として適切であった パッケージ数 ファイル数 行数 452 77,452 8,530,896 12 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 実験対象中のライセンスの分布 20000 18000 16000 14000 12000 10000 8000 6000 4000 2000 0 13 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 実験結果(BSD3) • BSD3のコード片が含まれるクローンセット中のコード片をライセンスで分類し, 数え上げた表 • BSD3で配布されているコード片がどのライセンスで配布されているコード片と C&Pの関係にあるのかと,その頻度を示している ライセンス BSD3 割合 #コード片 613 92% GPLv2+ 20 3.0% Apachev2 16 2.4% LesserGPL2+ 14 2.1% GPLv2,ClassPathException 1 0.15% LesserGPL2.1+ 1 0.15% • BSD3で配布されているコード片どうしのC&Pが多いと考えられる 14 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 実験結果(Apachev2) ライセンス #コード片 割合 1533 77% • Apachev2で配布されている 316 16% LesserGPL2.1+ 42 2.1% コード片どうしのC&Pが多い と考えられる MPLv1.1 33 1.6% BSD3 29 1.5% MX4JLicensev1 16 0.80% GPLv2+ 4 0.20% LibraryGPL2+ 3 0.15% MPLv1.0 2 0.10% MITX11noNotice 2 0.10% Public Domain 1 0.050% Subversion+ 1 0.050% EPLv1 1 0.050% Apachev2 Apachev1.1 • Apachev1.1で配布されてい るコード片が多く見られたの はApachev2へライセンスが 変更されているためと考えら れる 15 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 実験結果(GPLv2+) ライセンス #コード片 割合 GPLv2+ 268 44% GPLnoVersion,GPLv2+,LinkException 225 41% BSD3 28 5.1% LibraryGPLv2+ 20 3.6% Apachev2 4 0.73% LesserGPLv2.1+ 4 0.73% • GPLv2+で配布されているコード片どうしのC&Pが多いと考えられる • GPLnoVersion,GPLv2+,LinkExceptionで配布されている コード片が多く見られた • GPLnoVersion,GPLv2+,LinkExceptionで配布されているコード片を C&PしてGPLv2+で配布するのは許可されているためと考えられる • GPL系列のライセンスが見られるのは,GPL系列のライセンスで配布されている コード片をGPLv2+で配布されているコード片にコピーして配布することが許可されてい るためと考えられる 16 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 各ライセンスのファイル数と コード片の数 #コード片 BSD3 Apachev2 GPLv2+ #ファイル #コード片/#ファイル 665 2181 0.305 1983 16350 0.121 549 8160 0.0673 • BSD3,Apachev2,GPLv2+の順に再利用が活発に行われて いると考えられる 17 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 全体のまとめ • 全ライセンスに共通する特徴 – 同じライセンス,または同じ団体が規定したライセンスで配布されて いるソースコード間でC&Pが多く行われていた • 同じ開発団体内でC&Pが行われたためと考えられる • Apachev2は多数の種類のライセンスとのC&Pが見つかった – Apachev2は13種類,BSD3とGPLv2+は6種類 – 考えられる理由 • Apachev2は実験対象中で最もファイル数が多かった • GPLv2+と比べて多かったのは,GPLv2+よりもApachev2の方が再利用 の条件を満たすのが容易であることも影響している • BSD3,Apachev2,GPLv2+の順に再利用が活発に行われてい ると考えられる 18 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 妥当性 • 結果をOSS一般に適用するのは不適当 – 実験対象の規模が小さい – Javaファイルしか対象にしていない • CやC++のファイルに比べ歴史が浅い – C&Pも余り行われていないと考えられる • 実験対象と同じライセンスの分布を持つソースファイ ル集合には適用可能と考えられる • C&Pの検出でコード片を重複して数えている可能性が ある コード片A コード片B 19 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 大規模な対象への適用可能性 • 各ステップの大規模対象への適用可能性 – ライセンスの特定 • Ninkaはファイルを一つずつ処理するだけなので大規模な 対象にも適用可能 – コードクローンの検出 • CCFinderは,入力を分割し,出力を統合することで大規模 な対象にも適用可能 – コードクローンの数え上げ • 大規模な対象にも適用可能な統計処理 • 全ステップが大規模対象に適用可能なため, 本手法は大規模対象に適用可能 20 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University まとめ • C&Pに対するライセンスの影響を調査する予備 的実験を行った – Debian/GNU LinuxのMainセクション中のJavaファ イルを調査 • 同じライセンス,または同じ団体の規定したライ センスで配布されているソースコード間のC&P が多く見られた • BSD3,Apachev2,GPLv2+の順に再利用が活 発に行われていた • 本手法が大規模な対象にも適用可能なことを確 認した 21 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 今後の課題 • 大規模なソースファイル集合に対する本手法 の適用 • 実験では,どのコード片からどのコード片へと C&Pが行われたのかを特定出来ていない – C&Pの向きの特定する手法の適用 • 同じ開発団体内でC&Pが行われたという考 察の検証 22 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
© Copyright 2024 ExpyDoc