クラス名・関数名によく使われる英単語
「理系は英語が苦手」という説がある。
真実かどうかは分からないけれど、プログラム書くのに英語は必要*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個あるみたいです。全部暗記したら自慢できそう。
本来の目的、憶えた方が良さそうな単語を抜粋。
単語 | カウント |
---|---|
attribute | 158 |
context | 158 |
factory | 143 |
helper | 130 |
handler | 105 |
accessible | 97 |
policy | 97 |
tree | 88 |
map | 77 |
contextは「文脈」じゃなくウィンドウや呼び出しの親子関係とか。Beanにも多い。
factoryはデザインパターンのfactory。たぶん。
helperはなんとなく「ヘルパー」…あとで調べよう。
accessibleはOSのユーザー補助機能。なんでこんなに多いのか分からなかったんだけれど、GUI部品が「Accessible〜」というメソッドをたくさん持っているからの様子。
treeとmapはおそらくjava.utilやDB系。
関数名+クラス名で1万個以上あるのに、単語に分けると2500単語=暗記本1冊程度になるっていうのは、テクニカルライティングとしてすごいのかなーと。
大した情報にならなかったけど、「ほとんどは中学英語でも理解できる」ということで、あとは分からん単語を順次つぶしていけばなんとかなるのかなと思います。
集計がバグっていないことを祈りながら本日は終了したいとおもいます。
上位98単語(〜頻度70)
(全単語数は2467)
get | 3700 |
set | 1445 |
is | 625 |
exception | 432 |
create | 409 |
type | 317 |
listener | 301 |
key | 267 |
name | 266 |
event | 224 |
value | 218 |
default | 217 |
add | 202 |
paint | 199 |
to | 192 |
remove | 177 |
text | 169 |
border | 168 |
stream | 165 |
attribute | 158 |
context | 158 |
write | 157 |
bean | 155 |
menu | 155 |
data | 154 |
row | 149 |
size | 149 |
object | 148 |
factory | 143 |
selection | 143 |
read | 142 |
file | 139 |
class | 138 |
component | 136 |
input | 132 |
icon | 131 |
helper | 130 |
image | 127 |
info | 124 |
model | 124 |
path | 124 |
element | 122 |
pane | 118 |
string | 114 |
index | 111 |
list | 109 |
service | 109 |
update | 106 |
handler | 105 |
count | 104 |
for | 102 |
focus | 101 |
accessible | 97 |
color | 97 |
policy | 97 |
action | 96 |
format | 96 |
source | 96 |
editor | 94 |
column | 93 |
engine | 93 |
layout | 93 |
92 | |
new | 89 |
tree | 88 |
line | 87 |
parameter | 86 |
button | 85 |
table | 85 |
all | 84 |
frame | 84 |
basic | 81 |
node | 80 |
error | 79 |
supports | 79 |
at | 78 |
manager | 78 |
max | 78 |
supported | 78 |
tab | 78 |
document | 77 |
map | 77 |
method | 77 |
mouse | 77 |
property | 77 |
time | 77 |
background | 76 |
change | 76 |
drag | 76 |
in | 75 |
next | 73 |
state | 73 |
view | 73 |
content | 72 |
filter | 71 |
server | 71 |
start | 71 |
output | 70 |
99〜231(頻度〜30)
selected | 69 |
insert | 68 |
thread | 68 |
window | 67 |
bar | 66 |
resource | 66 |
as | 65 |
holder | 65 |
field | 64 |
scroll | 64 |
buffer | 63 |
cell | 63 |
current | 63 |
listeners | 62 |
provider | 62 |
changed | 61 |
end | 61 |
invalid | 61 |
has | 60 |
location | 60 |
mode | 60 |
control | 59 |
box | 58 |
item | 58 |
not | 58 |
check | 57 |
child | 57 |
fire | 57 |
popup | 57 |
header | 56 |
of | 56 |
spec | 56 |
system | 56 |
bounds | 55 |
job | 55 |
metal | 55 |
enabled | 54 |
request | 54 |
attributes | 53 |
char | 53 |
entry | 53 |
length | 53 |
socket | 53 |
dyn | 52 |
names | 52 |
operations | 52 |
position | 52 |
array | 51 |
id | 51 |
notification | 51 |
reader | 51 |
xml | 51 |
impl | 50 |
visit | 50 |
internal | 49 |
abstract | 47 |
and | 47 |
code | 47 |
instance | 47 |
point | 47 |
binding | 46 |
certificate | 46 |
offset | 46 |
writer | 46 |
multi | 45 |
root | 45 |
target | 45 |
double | 44 |
message | 44 |
reference | 43 |
result | 43 |
visible | 43 |
drop | 42 |
from | 42 |
last | 42 |
open | 42 |
style | 42 |
byte | 41 |
cert | 41 |
font | 41 |
parse | 41 |
process | 41 |
spi | 41 |
adapter | 40 |
character | 40 |
group | 40 |
by | 39 |
float | 39 |
long | 39 |
width | 39 |
connection | 38 |
label | 38 |
date | 37 |
flavor | 37 |
kit | 37 |
number | 37 |
seq | 37 |
tool | 37 |
client | 36 |
desktop | 36 |
first | 36 |
separator | 36 |
permission | 35 |
relation | 35 |
role | 35 |
short | 35 |
version | 35 |
address | 34 |
can | 34 |
channel | 34 |
combo | 34 |
edit | 34 |
no | 34 |
on | 34 |
local | 33 |
namespace | 33 |
page | 33 |
parameters | 33 |
store | 33 |
any | 32 |
metadata | 32 |
renderer | 32 |
sequence | 32 |
user | 32 |
children | 31 |
auto | 30 |
fault | 30 |
height | 30 |
init | 30 |
java | 30 |
maximum | 30 |
min | 30 |
register | 30 |