一般社団法人 電子情報通信学会
THE INSTITUTE OF ELECTRONICS,
社団法人 電子情報通信学会
INFORMATIONAND COMMUNICATION ENGINEERS

信学技報
IEICE Technical Report
SS2021-57(2022-03)

信学技報
TECHNICAL REPORT OF IEICE.

THE INSTITUTE OF ELECTRONICS,
INFORMATION AND COMMUNICATION ENGINEERS

プロジェクトコーパスを用いたソフトウェア概要推測手法の実験的評価
寺川 航平†思楠†陳

中村 匡秀†,††† 神戸大学 〒657–8501 神戸市灘区六甲台町 1–1†† 理化学研究所・革新知能統合研究センター〒103-0027 東京都中央区日本橋 1-4-1
E-mail: †{odajin,chensinan}@ws.cs.kobe-u.ac.jp, ††masa-n@cs.kobe-u.ac.jp
あらまし

過去に開発されたソフトウェアは時間とともに次第に利用されなくなる．しかし，そうしたソフトウェアのソースコードには再利用可能かつ資産的価値の高い情報も数多く含まれているため，既存ソフトウェアの特徴を把握することで新しいソフトウェアの開発を行う際に活かすことができる．先行研究では，プロジェクトコーパス（ corpusP j ）を用いた既存システムの概要推測手法を提案し，実現可能性を検証する予備実験を行った．その結果．

corpusP j からはシステムの目的や機能，使用技術に関する推測が可能であると判明した．本稿では，先行研究で検討されていない視点から corpusP j の有効性を確かめる．検証項目を 3 つ設定し，corpusP j を用いてシステムのもつ機能，システムの利用技術，システムの概要の推測を行う実験を実施する．実験結果から，プロジェクトの推測は 2 つの要因に左右されることが確認できた．1 つ目は corpusP j がシステムの持つ情報を正しく反映していること，2 つ目
は回答者がコーパス内の単語に関する知識を備えていることである．
キーワード

ソフトウェア開発, 技術的負債, アップサイクリング, コーパス

Experimental Evaluation of Inferring Software Description
Using Project Corpus
Kohei TERAKAWA† , Sinan CHEN† , and Masahide NAKAMURA†,††† Kobe University Rokkodai-cho 1–1，Nada-ku，Kobe，Hyogo，657–8501 Japan†† Riken AIP, 1-4-1 Nihon-bashi, Chuo-ku, Tokyo 103-0027
E-mail: †{odajin,chensinan}@ws.cs.kobe-u.ac.jp, ††masa-n@cs.kobe-u.ac.jp
Abstract Software developed in the past is gradually discontinued over time. However, the source code of such
software contains a lot of information that can be reused and has high asset value, so understanding the characteristics of existing software can be utilized when developing new software. In a previous study, we proposed amethod for inferring the outline of an existing system using a project corpus (corpusP j ), and conducted preliminary
experiments to verify its feasibility. The results are as follows. As a result, it was found that corpusP j can beused to infer the purpose, function, and technology of a system. In this paper, we conﬁrm the validity of corpusP jfrom a viewpoint that has not been examined in previous studies. We set three veriﬁcation items and conduct anexperiment in which we use corpusP j to infer the function of the system, the technology used in the system, and theoutline of the system. From the results of the experiment, we conﬁrmed that the guessing of the project depends
on two factors: ﬁrst, the corpusP j correctly reﬂects the information of the system, and second, the respondents’knowledge of the words in the corpus.
Key words Software Development, Technical debt, Upcycling, Corpus
的価値の高い情報も数多く含まれているため，既存ソフトウェ

1. は じ め にアの特徴を把握することで新しいソフトウェアの開発を行う際

過去に開発されたソフトウェアは環境の変化や技術的負債 [1]に活かすことができる．

の蓄積などの要因により，次第に利用されなくなる．しかし，既存のソフトウェアプロダクトの再利用を行うため，我々はそうしたソフトウェアのソースコードには再利用可能かつ資産

ソフトウェアアップサイクリングという考え方について検討を- 90 -—1—
This article is a technical report without peer review, and its polished and/or extended version may be published elsewhere.
Copyright ©2022 by IEICE進めている．ソフトウェアアップサイクリングでは既存プロ

2. 先行研究: クラス名構成単語に基づく既存プ
ロジェクトの目的・機能の推測 [2]ジェクトの目的・機能を把握し，再利用可能なアイデアや設計を見つけ出すことが重要である．
そこで我々は，既存プロジェクトの概要把握に関する先行研

2. 1 着目する課題

究としてプロジェクトコーパス, corpusP j を用いたシステムのソフトウェアの再利用を行う手法として，ソフトウェアアッ

目的・機能の推測手法を提案した．これを用いて予備実験を行プサイクリング [3] がある．ソフトウェアアプサイクリングとい，有効性を検証した．

は既存のソフトウェアプロダクトの設計や実装に着目し，新たしかし，予備実験には課題点がいくつか残されている．このに手を加えることで価値あるソフトウェア資産（コード，サー

先行研究では 3 名の被験者に対して予備実験を行ったが，さらビス等）に転換することを指す．よって，ソフトウェアアップ

に被験者を増やして実験を実施し，提案手法の有効性を検討す

サイクリングでは既存プロジェクトの目的・機能を把握し再利る必要がある．また，実験方法にも改善の余地が存在する．予用可能なアイデアや設計を見つけ出すことが重要である．

備実験により corpusP j から技術的な手がかりが得られること

しかし，組織や会社などの現場において全てのソフトウェアプが判明した．そのため，使用技術の把握という観点からもプロロダクトが資産的に管理されているわけではない．READM E

ジェクトコーパスの有効性を検証する必要がある．

といったプロダクトにまつわる説明書が欠けている，または不そこで本研究では，先行研究に加えて新たな視点から corpusP j

十分である等のケースも存在する．アップサイクリングを促進の有効性を検証することを目的とする．そのため，以下のようさせるには，説明書の有無に関わらずプロジェクトの概要把握に RQ を設定した．

を行うことが課題となる．

RQ1: corpusP j によってシステムのもつ機能を把握できるか

2. 2 提 案 手 法

RQ2: corpusP j によってシステムが利用している技術を把握できるか

先行研究では，既存プロジェクトを README などの説明書に頼らず概要把握を行う手法を提案している．クラス名構成単RQ3: corpusP j によってシステムの概要を把握できるか語から corpusP j を作成し，これによりシステムの目的や機能

さらに，先行研究と比較してより多くの被験者に対して調査の推測を行う．

を実施し，結果の分析を行う．

概要を図 1 で示す．MP3PlayService というプロジェクトに実験に用いる corpusP j は，先行研究での提案手法を用いてついて提案手法を適用した例を示している．STEP1 ではリポ作成する．corpusP j とは，ソフトウェアの文脈におけるコー

ジトリマイニングを行い，存在するクラスのクラスファイルパスを指す言葉として，提案手法の中で定義した用語である．

名をすべて取得する．STEP2 では，取得したクラス名を単語

コーパスとは一般に言語学の分野で用いられ，テキストや発話に分割する処理を行い，得られた単語群を corpusP j とする．

を大規模に集めてデータベース化した言語資料を指す．すなわ

STEP3 では，STEP2 で得られた単語群を辞書順に並べ替え，ち，ソフトウェアにおけるコーパスとはプロジェクトに含まれ単語の出現頻度による重みでタグクラウド [4] 画像を生成する．

る情報から作成される，プロジェクトを要約した資料を意味

STEP4 では 2 種類で表現した corpusP j を用いて，元のプロする．

ジェクトの目的・機能を推察する．

先行研究における提案手法では，キーアイデアとしてクラス

2. 3 プロジェクトコーパス

名構成単語に着目した．クラス名はプロジェクトの目的や機能提案手法では，クラス名分割処理によって得られた単語群をに深く関連すると予想し，クラス名構成単語を抽出する．得らcorpusP j と定義した．コーパスとは一般に言語学の分野で用れた単語群を抽出元のプロジェクトの性質を反映しているとみいられ，テキストや発話を大規模に集めてデータベース化したなし，これを参考にプロジェクトの概要推測を行う．

言語資料を指す．

実験は以下の 5 つのステップで構成される．

つまり，corpusP j とはソフトウェアの文脈におけるコーパ

Step1: プロジェクト，被験者の選定

スを意味する．具体的には，プロジェクトに含まれるクラス名

Step2: コーパスの準備を収集し単語に分割する．得られた単語群は抽出元のプロジェ

Step3: 質問の設計

クトの性質を反映しているとみなし，これを参考にプロジェク

Step4: 被験者による回答

トの概要を推測できれば，README が存在しないプロジェク

Step5: 回答の採点

トについても概要把握が容易に行える．

実験の結果，正答率の高い問題，低い問題が存在することが

2. 4 予備実験の結果判明した．分析の結果，プロジェクト概要の把握は大きく分けて 2 つの要因に左右されることが確認できた．

提案手法を用いて，三名の被験者に対して予備実験を行った．
全員が半数以上の問題に正答し，クラス名構成単語がプロジェ

まず，corpusP j がシステムを正しく要約できているかといクト概要の把握に一定の効果を持つことが明らかとなった．

う点が重要である．さらに，推測には既存技術に関する知識や

しかし，課題点もいくつか存在する．この先行研究では 3 名

ソフトウェア工学の経験がある程度必要であると判明した．

の被験者に対して予備実験を行った．さらに被験者を増やして実験を実施し，提案手法の有効性を検討する必要がある．
また，予備実験の考察により，corpusP j から技術的な手がか- 91 -—2—

67(3

67(3033OD\6HUYLFH&ODVVQDPH&ODVVQDPH

03/LVWMDYD
03/LVW3OD\HUMDYD
030XVLFMDYD
033OD\6HUYLFHMDYD
033OD\HUMDYD
0DLQMDYD

5HSRVLWRU\

67(303 0XVLF
3OD\HU/LVW/LVW
0DLQ 3OD\03
03 6HUYLFH
03

03 e /LVW e MDYD

67(3νήέϧΤχ

&RUSXVB3M

ʀ/LVW ʀ 03 ʀ 3OD\HU
ʀ/LVW ʀ 03 ʀ 3OD\HUʀ 03 ʀ 0DLQ ʀ 6HUYLFH
ʀ 03 ʀ 0XVLF
ʀ 03 ʀ 3OD\

03 /LVW

03
3OD\HU 0XVLF/LVW 036HUYLFH
03

FRUSXVB3M&RUSXVB3M

03/LVW3OD\HUMDYD
030XVLFMDYD
033OD\6HUYLFHMDYD
033OD\HUMDYD
0DLQMDYD
03/LVWMDYD

3OD\
0DLQ

ࣛॽॳ

4SXUSRVH"
4IXQFWLRQ"

ʀ/LVW ʀ 03 ʀ 3OD\HU
ʀ/LVW ʀ 03 ʀ 3OD\HUʀ 03ʀ 0DLQ ʀ 6HUYLFH
ʀ 03ʀ 0XVLF
ʀ 03ʀ 3OD\

図 1 先行研究での提案手法の流れりが得られることが判明した．回答者によっては機能と使用技

3. 3 STEP1: プロジェクト，被験者の選定術に関する記述が混在しており，どの程度技術的な事項を把握

本実験に使用するプロジェクトは，研究室で管理する Gitlab

しているのかを切り分けることができなかった．そのため，使に含まれている Java プロジェクトを利用する．

用技術の把握という観点からも corpusP j の有効性を検証する必要がある．

ここから 10 個のプロジェクトを無作為に抽出し，これを実験用データとする．実験に用いたプロジェクトの詳細を，表 1に示す．本実験では，著者の所属する研究室に所属する 12 名

3. 評 価 実 験の学生を対象に実験を行う．

3. 1 実験の目的

3. 4 STEP2: コーパスの作成

本研究での目的は，先行研究で検討されていない視点から提先行研究の提案手法により，corpusP j を作成する．実験用

案手法の有効性を検証することである. そのため，以下のようの 10 個のプロジェクトに対してリポジトリマイニングを行い，に RQ を設定する

クラス名構成単語を抽出する．具体的には GitlabAPI を利用

RQ1: corpusP j によって，システムのもつ機能を把握できしてマイニングを行い，得られたデータを Python を用いてクラス名分割処理を行う．これにより，10 個のプロジェクトのそるか

RQ2: corpusP j によって，システムが利用している技術をれぞれについて corpusP j を作成する．
得られた corpusP j を辞書順に並び替え，単語の出現頻度を把握できるか

RQ3: corpusP j によって，システムの概要を把握できるか

重みとしてタグクラウド画像を作成する．表 2 に，作成した

3. 2 実験の概要

corpusP j とタグクラウド画像を示す．
3. 5 STEP3: 質問の設計

RQ への回答を行うため，実験を行う．実験は以下の 5 つのプロジェクトへの理解度を図るため，以下の 3 つの質問を設ステップで構成される．

Step1 プロジェクト，被験者の選定: 自研究室で管理する

計する．
（Q1）: このシステムにはどんな機能があるか，思いつく154 個のプロジェクトを対象とする．
Step2 コーパスの作成: 先行研究における提案手法により，だけ箇条書きで書いてください（Q2）: このシステムはどのような技術や仕組みで動作しcorpusP j を作成する．
Step3 質問の設計: RQ への回答のために，3 つの質問を設ているか，思いつくだけ箇条書きで書いてください（Q3）: corpusP j から推察される，システムの概要を 1〜定する．

Step4 被験者による回答: google フォームを用いて，自然

2 行程度で記述してください．
Q1, Q2, Q3 は RQ1, RQ2, RQ3 に対応している．各質問に言語で回答を入力してもらう

Step5 回答の採点:

各プロジェクトを理解している人が採対する分析を第 4 章で行い，これを RQ への回答とする．

3. 6 STEP4: 被験者による回答

点を行い，評価を行う．

作成した corpusP j を google フォーム上で提示し，被験者が- 92 -—3—

表 1 実験に用いたプロジェクトの詳細໲ୌ൬ߺ ֕གྷ

‫ؽ‬೵

࢘༽ٗढ़



NewLINEAgentService
LINE Bot䜢౑䛳䛶䠈LINE䝯䝑䝉䞊䝆䜢㏦ಙ䛩䜛䝃䞊䝡䝇

䞉LINE䝯䝑䝉䞊䝆䜢㏦ಙ䛩䜛䞉䝴䞊䝄䛾཭㐩䜲䝧䞁䝖䜢ྲྀᚓ䛧䠈䝥䝻䝣䜱䞊䝹䜢Ⓩ㘓䛩䜛䞉䝯䝑䝉䞊䝆䛾䝻䜾䜢ಖᏑ䛩䜛Webhook, LINE Messaging API,
Jersey, MongoDB, NextCloud

KobeDemographicAPI⚄ᡞᕷ䛾ྛ⏫୎┠䛾ேཱྀ䝕䞊䝍䜢ྲྀᚓ䛩䜛API䞉⣽⢏ᗘ䛺ேཱྀ䝕䞊䝍䜢ྲྀᚓ䛩䜛䞉⏫୎┠䛛䜙⏫䝁䞊䝗䜢ྲྀᚓ䛩䜛

JerseyMySQLLifeActivityMailer⎔ቃ䝉䞁䝃䛻ኚ໬䛜䛒䛳䛯㝿䛻䝯䞊䝹䛷㏻▱䛩䜛䝃䞊䝡䝇䞉⎔ቃ䝉䞁䝃䝪䝑䜽䝇䛾ኚ໬Ⅼ᳨▱䝃䞊䝡䝇䜢ぢᙇ䜛䞉ኚ໬䛜㉳䛣䛳䛯㝿䛻䠈䝉䞁䝃䛾ᡤ᭷⪅䠄⟶⌮⪅䛻䠅䝯䞊䝹䛷㏻▱䛩䜛

JavaMail䝉䞁䝃䝪䝑䜽䝇ኚ໬Ⅼ᳨▱䝃䞊䝡䝇
(SBCPDService)(SBCPD =SensorBox Change Point
Detection)

䞉BLE䛾⏕䝕䞊䝍䜢ゎᯒ䛧䠈ᶆ‽ⓗ䛺ID䛻ኚ᥮䛧䛶䠈䛩䜜㐪䛔DB䛻䝫䝇䝖䛩䜛䞉୚䛘䜙䜜䛯ሙᡤ䜢䠈䛩䜜㐪䛔DB䛻䝫
䝇䝖䛩䜛Java Web䝃䞊䝡䝇XML

BLEAdapter
BLE䠄Bluetooth Low Energy䠅䛾䝕䞊䝍䜢ᩚᙧ䛧䠈䛩䜜㐪䛔䝣䝺䞊䝮䝽䞊䜽䛻㐺ྜ䛥䛫䜛䜰䝎䝥䝍䛩䜜㐪䛔䝣䝺䞊䝮䝽䞊䜽䛸䛿䠈ᵝ䚻䛺㏆᥋㏻ಙᢏ⾡䜢㥑౑䛧䛶䠈䝴䞊䝄ྠኈ䛾䛩䜜㐪䛔䜢᳨▱䛩䜛ᯟ⤌䜏ᮏᐇ⿦䛿䠈BLE䛻䜘䜛䛩䜜㐪䛔䜢䝣䝺䞊䝮䝽䞊䜽䛻㐺ྜ䛥䛫䜛䜰䝎䝥䝍䞉Android䝰䝞䜲䝹䞉䜰䝥䝸䜿䞊䝅䝵䞁䛾䝰䝑䜽䝰䝑䜽䛺䛾䛷⏬㠃䛰䛡䠊ఱ䜒⾜䜟䛺䛔

Android䜰䝥䝸SDK

enishi_mock
Enishi䠄⦕䠈䜶䝙䝅䠅䛾䝰䝞䜲䝹䞉䜰䝥䝸䜿䞊䝅䝵䞁䛾䝰䝑䜽
Enishi䛸䛿䛩䜜㐪䛔䝣䝺䞊䝮䝽䞊䜽䜢ά⏝䛧䛶䠈⾤㢌䛷ồே䝬䝑䝏䞁䜾䜢⾜䛖䝃䞊䝡䝇ồேഃ䛸ồ⫋ഃ䛾ዲ䜏䜢䜽䝷䜴䝗䛷⟶⌮䛧䠈ዲ䜏䛜㏆䛧䛔୧⪅䛜⾤㢌䛷㏆᥋䛧䛯㝿
䛻䠈㏻▱䜢㏦䜚䝬䝑䝏䞁⾜䛖

ENISHI
Enishi䛾䝞䝑䜽䜶䞁䝗䝃䞊䝡䝇䝰䝑䜽⏝䛻ᶵ⬟䛜䛛䛺䜚⤠䜙䜜䛶䛔䜛䞉䝴䞊䝄⟶⌮ᶵ⬟䞉ồே᝟ሗྲྀᚓ
䞉ồ⫋⪅᝟ሗྲྀᚓ

JerseyFirebaseMySQL

MP3PlayService୚䛘䜙䜜䛯URL䛻ᇶ䛵䛝䠈MP3䜢෌⏕䛩䜛䝃䞊䝡䝇෌⏕䝸䝇䝖䛻䜘䜛෌⏕䜒ྍ⬟

䞉MP3䜢෌⏕䛩䜛
䞉MP3䛾䝸䝇䝖䜢෌⏕䛩䜛䞉෌⏕䜢೵Ṇ䛩䜛䞉෌⏕୰䛾URL䜢ྲྀᚓ䛩䜛䞉ḟ䛾᭤䜈㐍䜑䜛

Apache Axis2 Web䝃䞊䝡䝇
JLayer(MP3෌⏕䝷䜲䝤䝷䝸)

virtual-care-giver䞂䜯䞊䝏䝱䝹䜶䞊䝆䜵䞁䝖䜢⏝䛔䛶䜿䜰䝅䝘䝸䜸䜢ᐇ⾜䛩䜛Web䜰䝥䝸䜿䞊䝅䝵䞁ኌ᥃䛡䠈ᛀ䜜≀䝸䝬䜲䞁䝗䠈ணᐃ⟶⌮䠈YouTube෌⏕➼䜢⾜䛖䞉䜿䜰䝅䝘䝸䜸䛾ᐇ⾜䞉ኌ᥃䛡䞉ၥデ䞉Youtube䛾෌⏕䞉฼⏝⪅᝟ሗ䛾⟶⌮Java WebSocket
REST Web䝃䞊䝡䝇
JavaScriptthin-cas
ECA䝹䞊䝹䛻䜘䜛䝁䞁䝔䜻䝇䝖䜰䜴䜵䜰䝃䞊䝡䝇(CAS)䜢ᐇ⾜䛩䜛㍍㔞䛺䝁䝬䞁䝗䝷䜲䞁䜰䝥䝸䜿䞊䝅䝵䞁

䞉ECA䝹䞊䝹䛾Ⓩ㘓䞉ECA䝹䞊䝹䛾ホ౯䠊䜰䜽䝅䝵䞁䛾ᐇ⾜Pure Java

StateCacheService䜰䝥䝸䛾≧ែ䜢䜻䝱䝑䝅䝳䛩䜛Web䝃䞊䝡䝇௵ព䛾≧ែ䞉᝟ሗ䜢䠈㆑ูᏊ䠄䜻䞊䠅䛸Json䠄䝞䝸䝳䞊䠅䛾䝨䜰䛷ಖᣢ䞉≧ែ䛾グ᠈ (set state)䞉≧ែ䛾ྲྀᚓ (get state)䞉඲㆑ูᏊ䛾ྲྀᚓ (get all IDs)䞉඲≧ែ䛾ྲྀᚓ (get all states)

Jersey

回答を入力する．corpusP j については Step2 で用意した 2 通りの表現を用いる．回答に要した時間を計測するため，回答開始時，回答終了時の時間を記録してもらう．

3. 7 STEP5: 回答の採点
Step4 で得られた回答への採点を行う．実験対象のプロジェ
クトの詳細について把握している者が採点を行う．採点基準を
表 3 に示す．ここでは以下の 5 段階によって大まかに評価を行う．

4. 実験結果と考察
4. 1 結果の概要

図 2 Q1 に対する採点結果の内訳

実験の結果，12 人の被験者の全員から回答を得た．ここで，本実験における正解率を定義する．◎，◯の採点は概要把握に成功したとみなし，これらの 2 つの合計が占める割合を計算す
る．以下に計算式を示す．
正解率 (%) ＝ (◎と◯の合計) ÷ (総回答数) × 100△，×，？の 5 段階の評価を行ったため，各問題につき合計で12 個の評価が回答として得られた．このグラフは各問題における採点結果の内訳を示しており，表示が濃いほど良い評価を表している．グラフにおいて問題 3, 7 は◎、○が 8 割以上を占め(1)

各問題の 3 つの質問 Q1, Q2, Q3 に対する正解率を以下の表 4に示す．問題 7 が Q1 Q3 を通して最も正解率が高く，反対に問題 5 は正解率がすべて 0 となった．

ており，正答率が高いとわかる. 一方，問題 4, 5 については正答率が低く，採点結果は×，？が 7 割以上を占めている．．
正解率が高くなった原因を考察するため，問題 3 の LifeAc-

tivityMailer に着目する．概要に示すように，プロジェクトは

4. 2 RQ1 に対する分析
図 2 に Q1 に対する各問題の採点結果を表す．12 名が◎，◯，センサーボックスの値を検知し，変化が起こった際にセンサー- 93 -—4—

表 2 本実験で作成したコーパス
໲ୌ൬ߺ

FRUSXVB3M%HDFRQ&ORXG&RQWHQW&RQWUROOHU'$2'$2 '$2 '$2 'DWH
'ULYH(YHQW(YHQW (YHQW (YHQW (YHQW (YHQW (YHQW (YHQW (YHQW(YHQW )ROORZ+DQGOHU+DQGOHU +DQGOHU +DQGOHU +DQGOHU +DQGOHU+DQGOHU +DQGOHU +WWS+WWS ,QIR,QIR -RLQ/,1(/,1( /,1( /,1(/,1( /,1( /,1(%27/,1(%27 /,1(%27 /HDYH/LVWHQHU
/LVWHQHU /LVWHQHU /RJ/RJ 0HVVDJH0HVVDJH 0HVVDJH 0HWKRG
0RQJR1H[W3RVWEDFN 3URrOH3URrOH 5HVSRQVH6HUYLFH7HVW
7LPH8QIROORZ8QNQRZQ8VHU8VHU 8WLOV 8WLOV 8WLOV 8WLOV:HEKRRN:HEKRRN :UDSSHU$UHD&RQQHFWRU'HPRJUDSK\'HPRJUDSK\ (UURU*VRQ+HOOR/LVW/LVW 0HVVDJH0\3RSXODWLRQ5HVW5HVW 64/7HVW
7RZQ7RZQ 7RZQ 7RZQ ELQFRQQHFWRUMDUP\VTO

%R['HWHFWLRQ/LVWHQHU/RFDWLRQ0DLOHU0DLOHU 0DLOHU 0DLOHU
0DQDJHU0RGHO1RWLI\6%&3'6%&3' 6FRUH6HQVRU6HUYLFH
6HUYLFH 6ROYHU6WUHDP7DVN$GDSWHU%/(%\&RUUHFWRU'DWH)DFDGH)UDPHZRUN-HUVH\
2SHUDWRU3DVV5HVSRQVH

表4 正 答LPDJH

問題番号$FWLYLW\$FWLYLW\ $GDSWHU$SS$SSOLFDWLRQ%DVH%DVH &RPSRQHQW([DPSOH([DPSOH )UDJPHQW)UDJPHQW ,QVWUXPHQWHG,WHP/LVW
0DLQ0DLQ 0RGXOH0\0\ 6DPSOH7HVW7HVW 8QLW8WLO/LVW/LVW 0303 03 03 03 0DLQ0XVLF3OD\3OD\HU
3OD\HU 6HUYLFH

$GPLQ$JHQW$QVZHU%HDQ%HDQ %HDQ %XWWRQ&DUH&DUH &DUH
&KHFN&RQWUROOHU'%'LVSOD\*LYHU+HOSHU+WWS,PDJH,PDJH/LVW0DLQ0DQDJHU0DQDJHU 3DJH3DJH 3DWLHQW4XHVWLRQ
4XHVWLRQ 4XHVWLRQ 4XHXH5HVRXUFH5HVXOW5RXWHU6FKHGXOH
6FKHGXOH 6FKHGXOH 6FKHGXOH 6HDUFK6HDUFK 6HUYHU6HUYHU
6LQJOH6XEWLWOH7HVW8WLOV 9LUWXDO9LUWXDO :6<RXWXEH

Q2

Q3

1

58% 83% 75%

2

58% 92% 58%

3

92% 67% 67%

48%

42% 0%

5

0%

0%

6

42% 83% 25%

7

92% 75% 100%8

83% 83% 58%

958% 42% 42%

10

50% 17% 50%

0%示す．
（機能 1: センサーボックスの値を検知）Sensor, Box, Score,$FFRXQW$FFRXQW $FFRXQW $FFRXQW $FWLYLW\$FWLYLW\$GDSWHU$GDSWHU $SS$SSOLFDWLRQ$SSOLFDWLRQ %DVH%DVH &OLHQW&RPSRQHQW&RQWUROOHU&RQWUROOHU &RQWUROOHU 'HWHFWRU(QLVKL([DPSOH)DFDGH)DFDGH )LUHEDVH)UDJPHQW)UDJPHQW)UDJPHQW )UDJPHQW )UDJPHQW )UDJPHQW )UDJPHQW ,QIR,QIR ,QIR
,QIR ,QIR ,QIR ,QIR ,QIR ,QIR ,QIR ,QIR ,QIR ,QIR ,QIR ,QIR ,QIR ,WHP
-HUVH\/LVW/LVW /LVW /LVW /LVW /LVW /LVW /LVW 0DLQ0DLQ 0DS
0DWFKLQJ0HVVDJLQJ0RGXOH0\0\ 0\ 0\ 0\VTO 1HZV
2⒐HUHU 2⒐HUHU 2⒐HUHU 2⒐HUHU 2⒐HUHU 2⒐HUHU 3DUVHU3DVVE\
3DVVE\ 3DVVE\ 6DPSOH6HHNHU6HHNHU 6HHNHU 6HHNHU 6HHNHU
6HHNHU 6HUYLFH6HUYLFH 6HUYLFH 7HVW7HVW 8QLW8VHU8VHU 8VHU
8VHU 8VHU 8WLO 9LHZ:HE;POELQELQ FRQQHFWRUFRQQHFWRU MDUMDUP\VTO P\VTO



Q1

率

Detection（機能 2: センサーの所有者にメールで通知）Mailer, Notify
一般的に，センサーがなにかの値を検知するという振る舞いは明らかであるため，回答者の多くが corpusP j から Sensor とScore，Detection といった単語に着目したと考えられる．以上より，回答者が意味的に関連性のある単語同士を結びつける
ことによって，システムのもつ機能を推測していることが判明

&OLHQW&RQWH[W&RQWH[W &RQWH[W &RQWH[W &RQWH[W &RQWH[W '$2'$2 '$2 '$2 '$2 '$2 (QGSRLQW(QGSRLQW (QGSRLQW (QGSRLQW(QJLQH(QJLQH (QJLQH (YDOXDWLRQ(YDOXDWRU(YDOXDWRU (YHQW
(YHQW )DFDGH)DFDGH )DFDGH )DFDGH )DFDGH )DFDGH +HOSHU+WWS+WWS +WWS 0DLQ0RFN0RFN 0RGHO0RGHO 0RGHO 0RUSKLD
2EVHUYHU5HVRXUFH5RXWHU5XOH5XOH 5XOH 5XOH 5XOH 5XOH 7HVW
7HVW 7HVW 7HVW 7HVW 7HVW 7HVW 8WLO

&DFKH6WDWH

した．
正解率の低かった原因を考察するため，問題 5 に着目する．
表 1 の示すように，このプロジェクトの実態は別プロジェクトのための画面設計である．Android SDK によってプロジェク
トが作成されたため，コーパスには Activity, Fragment といった Android SDK 特有のコンポーネント名が含まれている．これらは Android のアプリ開発で用いられる概念であり，具体的な動作とは関わりがない．以上より，コーパス内に予測に必要

表3な情報が十分に含まれていない場合，機能の推測は困難である

実験における評価基準

ことが明らかとなった．

評価 基準
◎

正解

◯

概ね正解

△

一部正解，一部不正解含む

x

間違っている?

わからない4. 3 RQ2 に対する分析の所有者にメールで通知するという 2 つの機能をもつ．これらについて 12 人中 7 名が正しく記述しており，◎の採点結果となった．ここで，表 2 中で示した問題 4 に関するコーパスを以下に列挙する．

•Box Detection Listener Location Mailer Mailer Mailer
Mailer Manager Model Notify SBCPD SBCPD Score

図 3 Q2 に対する採点結果の内訳

Sensor Service Service Solver Stream Task
ここには，LifeActivityMailer の持つ 2 つの機能に関連する単図 3 は，Q2 に対する各問題の採点結果を表している．問題語が含まれていることがわかる．以下に機能と関連する単語を

1, 2, 6, 7, 8 については採点結果の 7 割以上が○、◎を占めた- 94 -—5—

一方，問題 4,5,10 については正答率が低く，×または？が目

様々な種類のケアを提供するという概要を正しく把握した回答

立ったは 12 人中 3 つにとどまった．不正解となった回答では，動画正解となった回答では，コーパス内の単語をそのまま記述す

再生やスケジュール管理のシステムであるという回答が多い．

る例が多く見られた．具体的に問題 6 を例に上げる．表 1 に示

このように，一部機能をシステム全体の主な概要として捉えてすように，問題 6 の機能はユーザ情報を DB とやりとりするいる例が多く見られた．以上より，概要把握のためにはシステことである．これは MySQL を用いて実現しており，コーパス

ムがもつ複数の機能の把握と，それらを要約してシステム全体

内には MySQL という単語が含まれていることが確認できる．

の概要を推測する必要があると明らかになった．

回答では 12 人中 10 人が使用技術に MySQL を記述し，同時

4. 5 全体の考察に Q1 への回答として CRUD にまつわる記述を行っていた．

RQ1, 2, 3 に対する分析より，プロジェクトの推測は 2 つのMySQL という単語の存在から，システムに DB への CRUD を要因に左右されることが確認できた．1 つ目は，corpusP j がシ行う機能が存在すると解釈したと考えられる．以上より，コー

ステムの持つ情報をどれだけ正しく反映しているかという点でパス内に使用技術に関わる単語が存在する場合，回答者は技術ある．RQ1 の分析では，corpusP j にプロジェクトの機能に関用語を用いて規定の動作を推測することが分かった．

わる情報が欠如している例を挙げた．corpusP j はクラス名構

一方で，回答者によって解釈が分かれた例も存在する．問題 4 では，半分以上の回答で？（わからない，無記名）という成単語から作成するため，抽出元のクラス名はシステムの特徴を表している必要がある．

回答であった．表 1 に示すように，問題 4 の機能は BLE で得2 つ目は，回答者がコーパス内の単語に関する知識の有無でたデータを DB にポストすることである．表 2 中の問題 4 のある．RQ2 の分析では，コーパス内に使用技術に関わる単語がcorpusP j を確認すると，コーパス内に BLE という単語が含ま含まれる例を確認した．こうした既存技術を正しく解釈するた

れていることがわかる．BLE とは、Bluetooth の拡張仕様の一めには回答者の知識が必要であり，その結果単語から得られるつである．極低電力で通信が可能であり，これを生かして各種

情報量は各人で異なる，また，RQ3 ではシステムの機能や使センサーに用いられる．しかし，BLE を使用技術として記述

用技術の把握が必ずしもプロジェクト全体の正しい概要推測にし，BLE のセンサーとしての働きを読み取った例は 3 名しかつながらないことを確認した．システムは様々な機能を備えるいなかった．以上より，使用技術から読み取れる情報量は回答が，それらを総合してシステム全体としては何を目的として動者によって異なることが判明した．

作するのかを推測する必要がある．そして，与えられた情報か

4. 4 RQ3 に対する分析

ら正しく推測を働かせるためには．ソフトウェア工学の知識や経験が必要である．

4. 6 今後の課題
今回の提案手法に関する課題として，クラス内に含まれる情報を含めてコーパスを構造化することが挙げられる．一つのクラスの中にどれだけの機能や役割を持たせるかは開発者によって異なる．複数のメソッドを持つクラスに対して提案手法を用いた場合，そのクラスの持つ機能や目的を取りこぼしてしまう恐れがある．よって，ファイル内部のメソッド名・メンバ変数などを取得することでクラスの保つ役割をより正確に corpusP j
へ反映できると期待される．
また，今回の実験では回答者ごとの性質の違いを考慮しな
図 4 Q3 に対する採点結果の内訳

かった．RQ に対する分析で，corpusP j を用いた推測には回答

図 4 は，Q3 に対する各問題の採点結果を表している．RQ1

験や知識の有無に加え，着目した単語や読み取った情報などを者の知識や経験が影響することが判明した. 今後は回答者の経のグラフと比較して，正答率の高い問題，低い問題が共通して調査して考察に取り入れたい．

いる．しかし，問題 3，問題 6，問題 8，問題 9 に関しては正答

5. ま と め

率が Q1 と比較して低下している事がわかる．

Q1 と比較して最も正答率の下がった問題 8 の virtual-caregiver に着目して，その原因を考察する．表 1 に示すように，

本研究では，先行研究における提案手法の有効性を詳細に分析するための実験を行った．

このプロジェクトは様々な種類のサービスを備えており，それ具体的には，質問項目を再考し，corpusP j によって得られるらをヴァーチャルエージェントが提供するというシステムであ情報をプロジェクトの機能・使用技術・概要の 3 つの軸から評る．12 人すべての回答者はシステムの備える機能である動画

価した．さらに，先行研究と比較してより多くの被験者に対しの再生，質問を通した会話などのいずれかを記述していた．特て調査を実施し，結果の分析を行った．

に，スケジュール管理を行う機能に関しては 12 人中 11 人が把実験の結果，12 人から回答を得た．これにより，プロジェク

握していた．一方で，Q3 においてヴァーチャルエージェントがト概要の把握は corpusP j がシステムを正しく要約できている- 95 -—6—

か，回答者が推測できるだけの知識を持つかの 2 点に左右されることが判明した．
今後の課題としては，クラス内に含まれるメソッド名やメン
バ変数を抽出し，より多くの情報をコーパスに加えて構造化することを考えている．また，実験により問題の正誤には回答者にも要因があるとわかった．よって，推測に用いた情報や手順を記録することで， 回答者の基礎知識が結果に及ぼす影響を調
査したい．
謝辞

本 研 究 の 一 部 は JSPS 科 研 費 JP19H01138,

JP18H03242,

JP18H03342,

JP19H04154,

JP19K02973，

JP20K11059, JP20H04014, JP20H05706 および，立石科学
技術振興財団の研究助成を受けて行われている．
文

献[1] P. Kruchten, R.L. Nord, and I. Ozkaya, “Technical debt:
From metaphor to theory and practice,” Ieee software,vol.29, no.6, pp.18–21, 2012.
[2] 寺川航平，陳 思楠，中村匡秀，“クラス名構成単語に基づく既存
プロジェクトの目 的・機能の推測手法に関する予備的検討，”電
子情報通信学会技術研究報告，第 121 巻，pp.1–6，Jan. 2022．
長崎県建設総合会館．
[3] B. Bridgens, M. Powell, G. Farmer, C. Walsh, E. Reed,
M. Royapoor, P. Gosling, J. Hall, and O. Heidrich, “Creative upcycling: Reconnecting people, materials and placethrough making,” Journal of Cleaner Production, vol.189,
pp.145–154, 2018.
[4] S. Bateman, C. Gutwin, and M. Nacenta, “Seeing things in
the clouds: the eﬀect of visual features on tag cloud selections,” Proceedings of the nineteenth ACM conference onHypertext and hypermedia, pp.193–202, 2008.

- 96 -—7—