ある日の日記

2013-05-14

クラス名・関数名によく使われる英単語

「理系は英語が苦手」という説がある。
真実かどうかは分からないけれど、プログラム書くのに英語は必要*1

たとえばandroid公式リファンレスが英語しかないMSDNも、言語選択を英語にすると日本語モードより多くページが出てくる*2。そのほかの場所でも、日本語ページは一部のみ、残りは英語だけ、ということがある。
本だと代表的な機能しか載ってないから、詳細を知りたいときに英語が読めないと困ってしまう*3。最低でも、クラス名、関数名ぐらいは訳せないと、どんな機能かが分からない。

というわけで、クラス名・関数名に多く使われている単語を調べてみようと思った。手集計…は到底無理なので、javadocリファレンスプログラムでテキスト解析。
実験対象はJDK6のリファレンス*4。これはきちんと日本語の全訳があるのだけれど、代表的なリファレンスということで。

  • 対象はクラス名と関数名のみ。解説文や引数の名前は無視。
  • 関数名については同じ関数名は1回とみなす。たとえばwrite(String str) とwrite(char[] buf)は1個と数える。
  • 複数のクラスで同じ関数名が実装されていても1回とカウント。toString()やインターフェース関数のカウントが多くなりすぎたから。
  • フィールド、定数名はカウント外。「MODE_〜」などの接頭辞の頻度が増えすぎるから。
  • 複数形や過去分詞は別々のカウント(手抜き)。

つまり「getAccessibleKeyBindingCount」みたいなクラス・関数名をユニークに取り出して、それから単語に分割して数える仕組み。

やってみた結果(リストは長いので「続きを読む」に)。
難しい単語は上位98個にほとんどなかった。これは意外。「get〜」「set〜」「add〜」と一緒に使われる名詞が上位を埋め尽くしてる気もする。
100位以下だとnotificationとかcertificateとかの専門用語ぽい単語が多くなる。「serialize」が頻度1になってるし、数え方が悪いかもしれない。
ほかは「to」「at」の前置詞が思ったより上位なこと、「max」が78で「min」が30と開きがあることなど、色々。ちなみに「exception」とつくクラスは402個あるみたいです。全部暗記したら自慢できそう。

本来の目的、憶えた方が良さそうな単語を抜粋。


単語カウント
attribute158
context158
factory143
helper130
handler105
accessible97
policy97
tree88
map77

contextは「文脈」じゃなくウィンドウや呼び出しの親子関係とか。Beanにも多い。
factoryデザインパターンfactory。たぶん。
helperはなんとなく「ヘルパー」…あとで調べよう。
accessibleはOSのユーザー補助機能。なんでこんなに多いのか分からなかったんだけれど、GUI部品が「Accessible〜」というメソッドをたくさん持っているからの様子。
treeとmapはおそらくjava.utilやDB系。

関数名+クラス名で1万個以上あるのに、単語に分けると2500単語=暗記本1冊程度になるっていうのは、テクニカルライティングとしてすごいのかなーと。
大した情報にならなかったけど、「ほとんどは中学英語でも理解できる」ということで、あとは分からん単語を順次つぶしていけばなんとかなるのかなと思います。

集計がバグっていないことを祈りながら本日は終了したいとおもいます。

上位98単語(〜頻度70)

(全単語数は2467)


get3700
set1445
is625
exception432
create409
type317
listener301
key267
name266
event224
value218
default217
add202
paint199
to192
remove177
text169
border168
stream165
attribute158
context158
write157
bean155
menu155
data154
row149
size149
object148
factory143
selection143
read142
file139
class138
component136
input132
icon131
helper130
image127
info124
model124
path124
element122
pane118
string114
index111
list109
service109
update106
handler105
count104
for102
focus101
accessible97
color97
policy97
action96
format96
source96
editor94
column93
engine93
layout93
print92
new89
tree88
line87
parameter86
button85
table85
all84
frame84
basic81
node80
error79
supports79
at78
manager78
max78
supported78
tab78
document77
map77
method77
mouse77
property77
time77
background76
change76
drag76
in75
next73
state73
view73
content72
filter71
server71
start71
output70

99〜231(頻度〜30)


selected69
insert68
thread68
window67
bar66
resource66
as65
holder65
field64
scroll64
buffer63
cell63
current63
listeners62
provider62
changed61
end61
invalid61
has60
location60
mode60
control59
box58
item58
not58
check57
child57
fire57
popup57
header56
of56
spec56
system56
bounds55
job55
metal55
enabled54
request54
attributes53
char53
entry53
length53
socket53
dyn52
names52
operations52
position52
array51
id51
notification51
reader51
xml51
impl50
visit50
internal49
abstract47
and47
code47
instance47
point47
binding46
certificate46
offset46
writer46
multi45
root45
target45
double44
message44
reference43
result43
visible43
drop42
from42
last42
open42
style42
byte41
cert41
font41
parse41
process41
spi41
adapter40
character40
group40
by39
float39
long39
width39
connection38
label38
date37
flavor37
kit37
number37
seq37
tool37
client36
desktop36
first36
separator36
permission35
relation35
role35
short35
version35
address34
can34
channel34
combo34
edit34
no34
on34
local33
namespace33
page33
parameters33
store33
any32
metadata32
renderer32
sequence32
user32
children31
auto30
fault30
height30
init30
java30
maximum30
min30
register30






*1:語彙が足りないと変数名つけるときに悩みます:)

*2:言語選択で「日本語」にしておくと、翻訳のあるページしかインデックスに出てこない

*3:最近はオープンソースが多いから、「リファレンスじゃなくソースを読むから大丈夫」という人もいるかもしれない:)

*4http://docs.oracle.com/javase/jp/6/api/

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/fortrand/20130514/p1