日本ソフトウェア科学会第 39 回大会 (2022 年度) 講演論文集

変数名に対して開発支援を行うための調査と考察
松井亮介

蜂巣 吉成

吉田 敦

桑原 寛明

ソフトウェアにおいて識別子名は開発者がソースコードを理解するために重要な情報であり，名前のリファクタリングや命名支援に関する研究が行われている．先行研究では識別子名として関数名を扱うものが多く，変数名を使った研究は比較的少ない．ソースコードを理解するためには変数名も重要な情報である．本研究では，変数名に対する開発支援を行うために，オープンソースソフトウェアに対して変数の名前づけに関する規則の調査を行った．調査からユーザ定義の型から決まる変数名があること，変数名を区別する際にはナンバリングで区別している場合があるが，ナンバリングが適切でない例などが見つかった．ここで得られた知見を開発支援に応用する方法を考察する．という主張 [1] もある．それらを考慮し，本研究では1 はじめに識別子として変数に着目し，その中でも仮引数と局所ソフトウェアにおいて識別子名は開発者がソース変数の 2 つを扱う．なお，C 言語を対象言語とする．

コードを理解するために重要な情報である．識別子

本研究で目指す支援は，コーディング時における変は，開発者が理解しやすい語彙で，値が表す内容を的数名命名支援，またはリファクタリング支援である．

確に表現する名前が望ましい．しかし，開発者は常に命名支援の一例として，変数宣言を含む関数の名前や適切な識別子の命名を行えるとは限らず，ソースコー変数の型の名前から変数名の候補となる語彙を提示

ドにはしばしば不適切な識別子名が含まれる．

する方法がある．リファクタリング支援では，型や関本研究ではソフトウェア開発における識別子の命名数に見られる命名傾向に変数名が合致するか判定し，を支援する．先行研究では識別子として関数名やクラ修正が必要な変数の発見と修正候補を提示する方法がス名を扱うものが多いが，変数名も重要な情報であある．これらの支援を実現するためには，関数名や型る．変数のうち大域変数の利用は避けるべきとされ，名をはじめとした変数が出現する文脈と変数名の関保守作業効率化のために変数のスコープを縮めるべき係性を明らかにして規則として抽出する必要がある．
本稿では，変数名に対する開発支援に利用できる規Research and Discussions for Providing Support forVariable Names.
Ryosuke Matsui, 南 山 大 学 大 学 院 理 工 学 研 究 科 ソフ ト ウェア 工 学 専 攻, Software Engineering Major,Graduate School of Science and Technology, Nanzan University.
Yoshinari Hachisu, Atsushi Yoshida, 南 山 大 学 理 工学 部 ソ フ ト ウェア 工 学 科, Dept. of Software Engineering, Faculty of Science and Technology, Nanzan
University.
Hiroaki Kuwabara, 南 山 大 学 理 工 学 部 電 子 情 報 工 学科, Dept. of Electronics and Communication Technology, Faculty of Science and Technology, NanzanUniversity.

則について，事例調査および考察を行う．命名という観点で変数に関する情報を調査し，開発支援に適用可能な規則となりうる関係性について議論する．
本稿の構成は次のとおりである．2 章で関連研究について述べる．3 章では事例調査を行うための予備調査を説明し，4 章でリサーチクエスチョン (以降 RQ)の設定を行う．5 章では事例調査の内容と結果の提示を行う．6 章では事例調査の結果からソフトウェア開発支援への適用可能性の議論と，調査のレビュー，妥当性に関する議論を行う．

表12 関連研究柏原ら [2] は，メソッド名に用いる動詞の候補リストを提示する方法を提案している．メソッド名を動詞

OSS 名
darkforestgo†1
hashcat-legacy†2
openwebrtc†3

対象 OSS 一覧

C 言語ファイル数 総行数
23 12915
19 40962
45 20024と目的語の組とみなし，相関ルールマイニングという手法を用いて，識別子やその型などメソッド本体とメ

3. 2 予備調査から得られた知見

ソッド名に使われる動詞の関係を相関ルールとして予備調査の結果，得られた知見を次に列挙する．

抽出，適用することで命名の際に動詞の候補を提示• 型名をそのまま変数名に使っているものがあるする．

• 変数名のナンバリングが 2 から始まることが多い

福田ら [3] は，識別子名の中でクラス名に着目し，型名をそのまま変数名に使っているものがあるとは，既に内容が存在するクラス名の命名時，システムがふ

例えば Board という型で宣言された変数名が board

さわしいと考える名詞句または修飾語句といったフであるといった，変数名と型名が同一である関係をレーズを開発者に推薦することで，対話的にクラス名指す．これらは特にユーザ定義の型で見られ，3 つのの命名を支援している．

OSS で合計 247 個の変数がこれに該当した．

Abebe ら [4] は，識別子名の提案を自動化する手法

変数名のナンバリングとは，値を交換するようなを提案している．識別子に含まれる自然言語情報を関数内で tmp1，tmp2 のように末尾に数字を振った利用して，既存のコードから名詞や名詞句などの概名前のことを指す．末尾に数字がある変数は 3 つの念と，動詞など概念に対する依存関係を抽出し，それOSS で合計 377 個あった．これらは常に 1 から順にを利用して入力途中の識別子名の補完や置換を行う．

数字を振るとは限らないことがわかった．

term preﬁx，neighboring concepts，synonym とい他にも一部で関数名に tree が含まれているとき，う 3 つの語句候補から，文脈との関係に応じて優先変数に parent という名前が使われているものや，変順位付けを行い識別子を提案する．

数名 db key のように db と key といった命名が推測

識別子に関する支援はクラス名や関数名を中心にできうる語彙が使用されるものが見られた．

さまざまな方法が提案されているが，変数名に関する手段は少ない．

4 リサーチクエスチョン
調査にあたって設定した RQ を次に示す．

3 準備

RQ1 型名と変数名にはどのような関係があるか

3. 1 予備調査について

RQ2 関数名とその関数内の変数名には関係があ

変数名に対して事例調査を実施するにあたり，RQを設定するための簡易的な調査を行った．以降これを予備調査と呼ぶ．オープンソース別に構文解析を行い，関数名と各関数に属する変数の型と名前を一覧化して目視で確認した．ここでは構文解析器 TEBA [5]るかRQ3 変数名が複数の単語で構成されるとき，それぞれの単語間には関係があるか

RQ4 変数名の末尾にナンバリングをして区別す
る際，どのようにナンバリングされるかを用いた．
今回対象としたオープンソースソフトウェア (以降OSS) は表 1 の 3 件である．これは github で C 言語で検索をかけた際に star が多い順に上位にマッチした 3 件である．なお，検索日は 2022 年 5 月 24 日時点のものであり，その時点で最新のコードを調査した．

5 事例調査本研究での事例調査として次のような調査 1，2，3，4 を実施する．
†1 https://github.com/facebookresearch/darkforestGo†2 https://github.com/hashcat/hashcat-legacy†3 https://github.com/EricssonResearch/openwebrtc

調査 1 型名と変数名における関係調査
調査 2 関数名とその関数内の変数名における関係調査

抽出したデータに対し，それぞれの型からの命名方法を目視確認し，命名方法の種類と該当数を調査する．

調査 3 変数名の単語間における関係調査

調査 1-2 について

調査 4 変数名のナンバリングに関する調査

調査 1-2 では変数名ごとにその変数の型をすべて集

これはそれぞれが RQ1，RQ2，RQ3，RQ4 に対応計する．調査 1-1 と同様の考え方で，ある変数名が特している．各調査の結果から対応する RQ に回答す

定の型で多く宣言されている場合にも型と変数名にる．なお，ここでの調査対象は予備調査と同様の方強い関連があると考え，10 回以上宣言されている変法で選別しており，予備調査と同じ OSS を利用した．

数名を集計対象とし，それぞれの変数ごとで宣言に使構文解析器には TEBA [5] を用いた．

用されたすべての型を母集合として 80%以上同一であった型とその変数を抽出した．例を図 2 に示す．

5. 1 調査 1 型名と変数名における関係調査
この調査の目的は，構造体などのユーザ定義型ではどのような変数名が使用されているか調べることである．そのために型名ごとに変数名を集計する．同時に変数名ごとの型名についても集計する．それぞれを調査 1-1，1-2 とする．

5. 1. 1 調査方法
調査 1-1 について
調査 1-1 では，型名ごとに宣言された変数名を集計
図2する．ある型において特定の変数名が多く宣言され調査 1-2 の抽出方法ているとき，型と変数名に強い関連があると考えた．

10 回以上変数宣言で使用されている型を集計対象と抽出したデータのうちユーザ定義型であるものにし，それぞれの型ごとで宣言されたすべての変数名を対し，こちらも同様に命名方法の種類と該当数を調査母集合として 80%が同一であった変数とその型を抽する．型は配列型とポインタ型を区別し，ユーザ定義出した．例を図 1 に示す．なお，基本型は対象外とし型は独立したものとして扱う．て配列型とポインタ型は区別して扱う．またユーザ定

5. 1. 2 調査 1 結果

義型はすべて独立した型とみなしており，元の型とは調査 1-1 の結果区別している．

OSS 別に抽出したデータに関する結果を表 2 示す．
抽出型数とは，ある型で宣言されたすべての変数のうち，80%以上同一の変数であった型の数であり，割合は基本型を除いたすべての型のうちの何%に当たるかを示す．
表2

調査 1-1 における型の抽出結果

OSS 名
抽出型数 全ユーザ定義型数
割合
darkforestgo
13121 10.7%
hashcat-legacy
9114 7.9%
openwebrtc
23260 8.8%
図1

調査 1-1 の抽出方法

表 3 は抽出結果の一例である．各 OSS のうち 5 件

ずつ例を示す．

命名方法としては型名の一部を使うことが最も多いとわかる．型名からの命名ではないと考えられるも

表3OSS 名darkforestgo

hashcat-legacy

openwebrtc

調査 1-1 の抽出結果例
型名Handle*
TreePool*GroupId4
ThreadInfo*
Region*db t*
digest t*
index t*words t*uint8 t*[ ]GparamSpec*
Gvalue*OwrSession*
GObjectClass*
GEnumValue[ ]

変数名
hp
ids
infor
db
digest
index
words
buf
pspec
value
sessiongobject classtypesのは平均約 17.8%存在した．
調査 1-2 の結果
調査 1-2 の抽出したデータに関する結果を表 5 に示す．抽出変数数とは，それぞれの変数を宣言したす
べての型のうち，80%以上同一の型で宣言された変数の数であり，割合にてすべての変数のうちの何%に当たるかを示す． 表 6 は抽出結果の一例である．
表5

表63 つの OSS における平均抽出型数は約 15 個，平均全ユーザ定義型数は約 165 個であり，おおよそ 8 か

調査 1-2 における変数の抽出結果

OSS 名
darkforestgo
hashcat-legacy
openwebrtc

OSS 名

ら 11%程度の型が抽出された．
次に，OSS 別の命名方法調査結果を示す．抽出しdarkforestgo

たデータの命名方法を調査した結果，次の 4 つの方法があると判断した．
方法 1 型名の頭文字を変数名にする
例：型名「Handle*」に対し，変数名が「h」

hashcat-legacy

方法 2 型名をそのまま変数名にする
例：型名「Board」に対し，変数名が「board」
方法 3 型名を部分的に引用し変数名にする
例：型名「ThreadInfo*」に対し，変数名が「info」

openwebrtc

抽出変数数213137

全変数数
676
820
687

割合
3.1%
3.9%
5.4%

調査 1-2 の抽出結果例
変数名board
playerrbl
PatternMove*
dbin
dgst
index
chain bufobject
pspec
user data
codec typetag

型名Board*StoneRegion*
TreeBlock*mvdb t*plain t*digest t[ ]index *
chain t*GObject*
GParamSpec*
gpointerOwrCodecTypegchar*

方法 4 型名の略語を変数名にする
例：型 名「GParamSpec*」に 対 し ，変 数 名 が「pspec」

3 つの OSS における平均抽出変数数は約 30 個，変抽出結果の変数名がそれぞれどの命名方法に該当数の個数平均は約 728 個であった．抽出された変数するか集計した結果を表 4 に示す．なお，その他とはは割合的に見て少ない．これはあらかじめ宣言回数で型名から命名されていないものを指す．

調査対象を選別したことと，型名は配列型やポインタ型を区別したことによる影響が大きい．

表4調査 1-1 の命名方法集計結果

OSS 名
方法 1 方法 2 方法 3 方法 4 その他 合計
darkforestgo
50305 13
hashcat-legacy
008019011642 23
openwebrtc

次に，命名方法集計結果を示す．命名方法は調査 1-1で示した 4 つで集計する．抽出した変数のうちユーザ定義型のものは darkforestgo が 11 件，hashdcat-legacy が 18 件，openwebrtc が 37 件であった．それらの変数名がそれぞれどの命名方法に該当するか集

5. 2. 1 調査方法

計した結果を表 7 に示す．

はじめに関数名とその関数内の変数名を単語に分
表7調査 1-2 の命名方法集計結果解し，関数の単語ごとに変数の単語を総当たりした組

OSS 名
方法 1 方法 2 方法 3 方法 4 それ以外 合計み合わせを集計する．
darkforestgo
21314 11hashcat-legacy
20916 18
調査にはある程度の数出現した組み合わせが良い
0021
115 37
openwebrtcと考え，OSS 内で 10 回以上使用されている関数の単語から得られた組で，かつ関数の単語が作る各組の命名方法としては型名の一部をそのまま使うこと数がその関数の単語の使用回数に対して 10%以上のが最も多いとわかる．型名の影響を受けていないと考割合となるものを調査対象として抽出した．例を図 3

えられる名前は平均約 37.9%ある．に示す．

また，調査 1-1 と 1-2 のどちらにも抽出された型名と変数名の組は darkforestgo は 3 件，hashcat-legacy
は 3 件，openwebrtc は 12 件あった．これらは型名と変数名がほぼ 1 対 1 で決まっている可能性が高いものだといえる．
以上の結果から RQ1 に対する回答を示す．

RQ1 に対する回答



調査 1-1 から，型名と変数名の間に命名関係があると考えられるものは，OSS 中のすべてのユーザ定義型のうち 8 から 11%程度が該当し，そのうち 82.2%は実際に型名から命名されていた．一方，調査 1-2 から，すべての変数のうち型名との命名関係があると考えられるのは 3 から 5%程度が該当すると考えられ，そのうちのユーザ定義型の 62.1%が実際に型名から命名さ図3れていた．命名関係の種類には 4 種類の命名が調査 2 における組の抽出方法考えられるが，そのうちの型名を部分的に引用
次に抽出した関数の単語と変数の単語の組を目視した命名方法が最も多い命名方法である．

確認する．関数の単語と変数の単語が同名であったり，概念として近い関連があると判断できるものは関5. 2 調査 2 関数名とその関数内の変数名における関係調査

数名から変数名の利用が推測できると考え，そのような関係性を持った関数の単語と変数の単語の組を

この調査の目的は，変数名中で利用される単語が関調査する．その後，これに該当する組を 1 つでも持っ数名から推測できるような関係があるかを調べるこた関数の単語を抽出する．ただし，接頭辞や接尾辞のとである．ここでは関数名や変数名を分解し，より小ような汎用的な単語だと判断されるものは，その単語さな単位である単語に焦点を当てる．そのために関数同士の組に関連はないものとする．

名を構成する単語と，その関数内における変数名を構

5. 2. 2 調査結果

成する単語同士の組み合わせを集計し，関数名から変調査 2 の結果を表 8 に示す． 表 9 は抽出結果の一数名の単語利用の推測可否を調査する．

例である． 調査 2 の結果として，変数名の推測ができる関数の単語は 3 つの OSS で平均約 11.7 単語見つ

表8単語の作る組のうち 10%以上がどちらの単語も同一

調査 2 の抽出結果となる組であったものを調査対象として抽出した．例

抽出した
OSS 名
関数の単語数 関数の全単語数 割合
darkforestgo
7423 1.7%
5368 1.4%
hashcat-legacy
openwebrtc
23342 6.7%

表9OSS 名darkforestgo

hashcat-legacy

openwebrtc

を図 4 に示す．

調査 2 における抽出結果の例
関数の単語
Board
heap
tree
digesthashcathashing
rendererservervideo

推測できる変数の単語
board
parentparentsalt
digestssalt
rendereraddress
fps

かった．1 語につき推測可能な変数名は，平均約 1.9
図4単語であった．

調査 3 における組の抽出方法

以上の結果から RQ2 に対する回答を示す．

RQ2 に対する回答 次に抽出した変数の単語の組を目視確認する．単語

関数名とその関数内の変数名には，単語単位で同士に概念として近い関連があると判断できるもの見たとき関数名から変数名の命名が推測できるは単語から単語の利用が推測できると考え，そのよものはごくわずかにある．それらは関数名の命うな関係性を持った変数の単語の組を調査する．その名に使用されたすべての単語のうち，およそ 1

後，調査 2 同様にこれに該当する組を 1 つでも持っから 7%程度，平均にして約 3.1%の関数の単語た単語を抽出する．ここでも汎用的な単語だと判断でにおいて確認され，各単語約 1.9 単語が推測できるものは，その組に関連がないものとする．目視確認の例を図 5 に示す．

きる．



5. 3 調査 3 変数名の単語間における関係調査
この調査の目的は，変数名中においてある単語の利用が別の単語から推測できる関係はあるかを調べることである．そのために複数の単語で構成される変数を対象に，単語同士の組み合わせを集計し，単語利用の推測可否を調査する．

5. 3. 1 調査方法
はじめに複数の単語から構成される変数名を単語に分解し，変数別に組み合わせを総当たりで作成し集計する．調査 2 と同様の考えで，調査にはある程度の数出現した組み合わせが良いと考え，OSS 内で10 回以上命名に使用された単語の作る組で，かつ各

図5

調査 3 における組の目視確認例

5. 3. 2 調査結果

5. 4. 1 調査方法

調査 3 の結果を表 10 に示す．

調査 4 では，末尾にナンバリングされている変数をすべて抽出し，変数ごとに番号がどのように振られ表 10

調査 3 の抽出結果ているかパターン別に集計する．数字が飛ばされず 0抽出した
OSS 名
変数の単語数 全単語数 割合
darkforestgo
2222 0.9%
hashcat-legacy
6255 2.4%
7249 2.9%
openwebrtc

か 1 から順に振られているものを正しいものとして，ナンバリングの分類についても集計する．

5. 4. 2 調査結果
調査 4 の結果を表 12，13，14 に示す．ナンバリン
グパターンとは変数名に割り当てられた数字の組み

表 11 は抽出結果の一例である．
表 11

OSS 名
darkforestgo

hashcat-legacy

openwebrtc

合わせを示す．例えば，a と a2 という変数名があったとき，これらのパターンは「なし,2」に該当する．

調査 3 における抽出結果の例
変数の単語
black
time
time
db
digestsnoncetransport
rtcp
video

他にも，a2 という変数のみがあったときは「2」とい推測できる変数の単語
winelapsed
limit
key
sha
clientagent
port
rendererうパターンに該当する．それらのパターンに該当する組み合わせの数を該当数にて示す．
表 12

darkforestgo の集計結果

ナンバリングパターン 該当数なし,219212
11
1,21
1
1なし,2,3なし,0,1,21
合計45調査 3 の結果として，関連する単語の利用が推測できる単語は 3 つの OSS で平均約 5 単語見つかった．1語につき推測可能な単語は，平均約 1.5 単語であった．
以上の結果から RQ3 に対する回答を示す．

RQ3 に対する回答



変数名が複数の単語で構成されるとき，単語から関連のある単語の利用が推測できるものはごくわずかにある．それらは変数名の命名に使用されたすべての単語のうち，およそ 1 から 3%程度，平均にして約 2.1%の単語において確認され，各単語約 1.5 単語が推測できる．



5. 4 調査 4 変数名のナンバリングに関する調査
この調査の目的は，変数名を区別する際にはどのよ

表 13

hashcat-legacy の集計結果

ナンバリングパターン 該当数
1,2500,124
0,1,2,315
1,2,37なし,26233
1なし,0,1231
10なし,11なし,1,21合計114

うにナンバリングされているか調査することである．
そのためにナンバリングされた単語を抽出し，番号の振られ方に関して集計する．

ナンバリングパターンには大きく分けて 3 種類の分類がある．
分類 1 0 か 1 から順番にナンバリングされている例：「idx1，idx2」，「temp0，temp1」

表 14

援への適用可能性について議論する．

openwebrtc の集計結果

調査 1 について

ナンバリングパターン 該当数1,22
1
1なし,21
合計
4

調査結果から変数名に対する開発支援に対し適用できると判断した．OSS から命名関係があると期待できる結果が，すべてのユーザ型のうち 10%程度確認されたからである．命名方法をパターンとして定義

分類 2 番号なしとナンバリングが混在しているすることで規則へ発展できると考えられる．

例：「ids，ids2」，「p，p1，p2」

調査 2 について

分類 3 誤っている

調査結果から変数名に対する開発支援に対し適用

例：「id2」のみ，「b2」のみするのは難しいと判断した．関係が認められる調査結

このうち，分類 1 は正しく番号が振られていると果がごくわずかであったからである．

言えるが，分類 2 は番号によって正しいと扱えると調査 3 については限らないことがある．

調査結果からは変数名に対する開発支援に対し適

表 15 で OSS 別に変数のナンバリングがそれぞれ用するのは難しいと判断した．調査 2 同様，関係が認どの分類に該当するか集計した結果を示す．

められる調査結果がごくわずかであったからである．
調査 4 について

表 15

ナンバリングの分類についての集計結果

調査結果からは変数名に対する開発支援に対し適OSS 名
分類 1 分類 2 分類 3 合計
darkforestgo
11211345
hashcat-legacy
96108 114
openwebrtc
2114

用できると判断した．結果からナンバリングされる変数は番号を飛ばして数字を振ることがプロジェクトによっては多く，その分修正箇所となりうる箇所があるといえるからである．

調査 4 の結果から，3 つの OSS におけるナンバリ

次に調査結果から考えられる変数名命名支援とリングされた変数の平均数は約 54.3 個だった．そのうファクタリング支援への適用について考察する．

ち約 13.5%は誤ったナンバリングをされていた．ただ命名支援はコードを作成する際に行う支援である．

し，OSS の内容によってあらかじめ想定される変数そこまでに記述したコードを入力し，型名に関する規の数は異なるために，その数には大きな差が出た．

則を用いて変数名の命名候補を出力する．ここではあ以上の結果から RQ4 に対する回答を示す．

RQ4 に対する回答

らかじめ既存のコードから抽出した規則を利用する．

 リファクタリング支援は一度作成したコードを修正今回の OSS において，変数名の末尾にナンバリする際に行う支援である．修正したいコードを入力ングをして区別する際は，1 からまたは 2 からし，型名に関する規則やナンバリングに関する規則を番号が振られる場合が多い．ナンバリングをさ用いて修正が必要な変数や修正案を出力する．修正しれている変数のうち，誤ったナンバリングをさたいコードには既に何かの規則に従っている変数があれているものは 3 つの OSS の平均で約 13.5%ると考えられるので，あらかじめ抽出した規則と修正であった．数値計算のようなあらかじめ複数のしたいコードの規則を比較しながら適用すべき規則

変数の使用が想定される場合は正しいナンバリを選択する必要がある．
現状の調査結果から，型名に関しては 4 種類の命ングをされることが多い．

6 考察

名方法が規則化できる可能性がある．しかし，命名方法について語の略し方などさらなる詳細化の余地が

6. 1 ソフトウェア開発支援への適用についてあり，その内容を今後議論し正しい規則を精査する必

各調査結果から変数名に対するソフトウェア開発支要がある．ナンバリングに関する規則には，変数名が0 または 1 から番号順に振られている状況を正しい規ないので，本来考えられる規則から外れたものを調査則として採用することができる．

している可能性がある．加えて，今回は予備調査にて調査した OSS を事例調査にも利用しており，調査結

6. 2 調査方法のレビュー

果が他の OSS においても同様のことが言えるという本研究で調査を実施したところ，調査 2，3 では開ことが担保されていないという点も懸念点である．

発支援に適用できる結果を得られなかった．考えられる要因としては次のものが挙げられる．

構文解析が正確でない可能性があること
本研究での調査の際は，プログラマが読むコードを1. 関係性がそもそも希薄である

そのまま構文解析している．つまり構文解析の前処理

2. 関係性を適切に集計できていないをしていない．しかし，本来は前処理を実施したコー

まず 1 つが関係性そのものが希薄である場合であドでないと正確な構文解析はできないので，調査結果る．前提として本研究では仮引数と局所変数に主眼をは構文解析結果が不正確である可能性がある．

置いて調査を実施しているが，それらは限定的な範囲で使用され，関数やクラスとは違いそれ自体が入出力

7 まとめを持たない．よって関係性そのものが希薄になりがち

本稿では，変数名に対する開発支援に必要な規則だと言える．調査の際には数で調査対象を選別したこに関する事例調査を実施し，結果から開発支援へのともあり，関係性があったとしてもそれらを調査でき適用について考察した．調査 1，4 については，開発ていない可能性がある．

支援へ適用可能性を持った関係性があるという結論

2 つ目が関係性はあるものの，それを適切に集計でに至ったが，調査 2，3 については，開発支援へ適用きていない場合である．この場合は集計方法を改善す可能な結果は十分に得られなかった．今後の課題としることで関係性の発見が期待できる．例えば変数名にて，妥当性を担保するように調査方法を見直すこと，対して行った調査 3 について，変数の構造には接頭開発支援方法を提案することが挙げられる．

辞や接尾辞といった単語の使用場所にも傾向があると考えられることから，変数内における単語の使用場所

謝辞

本研究の一部は 2022 年度南山大学パッへ奨

励金 I-A-2 の助成を受けた．

に関する集計を行うといった案が挙げられる．
参 考 文 献6. 3 妥当性への脅威
本研究で実施した調査について，妥当性の観点から懸念点となるものを次に示す．

• 調査方法が主観的であること• 調査対象が例外的であるリスクがあること• 構文解析が正確でない可能性があること
調査方法が主観的であること
本研究にて実施した調査にはいずれも目視確認による定性的な判断で実施している部分がある．今回の調査ではこの調査を 1 人の視点から実施しており主観が含まれている．
調査対象が例外的であるリスクがあること
本研究では妥当性を考慮し，調査対象の OSS はgithub で C 言語で検索したうち数件を扱っている．
しかし命名に関する品質が保証されているわけでは[1] Boswell, D. and Foucher, T.: リーダブルコード: より良いコードを書くためのシンプルで実践的なテクニッ
ク, Theory in practice series, オライリー・ジャパン,
2012.
[2] Kashiwabara, Y., Onizuka, Y., Ishio, T., Hayase,Y., Yamamoto, T., and Inoue, K.: Recommending
verbs for rename method using association rule mining, 2014 Software Evolution Week - IEEE Conference on Software Maintenance, Reengineering,and Reverse Engineering (CSMR-WCRE), 2014,pp. 323–327.
[3] 福田宏樹, 早瀬康裕, 北川博之: クラス名命名を支援
する段階的なフレーズ推薦手法, 研究報告ソフトウェア
工学 17, 2016.
[4] Abebe, S. L. and Tonella, P.: Automated Identiﬁer Completion and Replacement, 2013 17th European Conference on Software Maintenance andReengineering, 2013, pp. 263–272.
[5] 吉田敦, 蜂巣吉成, 沢田篤史, 張漢明, 野呂昌満: 属性付
き字句系列に基づくソースコード書き換え支援環境, 情報処理学会論文誌, Vol. 53, No. 7(2012), pp. 1832–1849.