良いネーミングをするために覚えておきたい英語のルール5つ
Photo by muraterturk
こういった記事って、ネーミング規則や慣習の視点から書かれていることが多いんですけど、この記事では、英文法に視点を置いて、参考になりそうなことをいくつかピックアップしてみたいと思います。
「省略形は使わない」などの規約的なものは、各プロジェクトのルールに従えばいいので、ここでは書きません。あくまで英語という視点から書いているということを、ご理解ください。
Rule 1 : “検索”は名詞
一般的な英語辞書のルールでは「検索」は、動詞ではなく「検索する」が動詞になります。「検索」は、検索することの名称 だと考えられるため、動詞ではなく名詞として扱います。
英語辞書には、日本語の品詞ごとに表記のルールがあります。これが理解できていると、和英辞書などで品詞を意識して検索できるようになります。以下に、一般的な英語辞書の表記ルールをまとめてみました。
<各品詞の例>
品詞 | 例 | 辞書での検索方法 |
名詞 | 名前 : name 実行 : execution 高さ : height |
「~がある」に当てはまる形(主語にできる) |
形容詞 | 赤い : red 一意の : unique 壊れた : broken 高い : high 空の : empty |
-い、-の で終わる形(例外もある) |
動詞 | 実行する : execute 検索する : search 見つける : find 空にする : empty |
-る、-うで終わる形(例外もある) |
副詞 | 再帰的に : recursively 厳密に : strictly 昨日は : yesterday |
-は、-に で終わる形(一概には言えない) |
※ 大半の日本人向け英語辞書は、ここで紹介したルールだと思いますが、辞書によっては違ることもありますので、自分が使っている辞書のルールを調べてください。
Rule 2 : 自動詞は目的語をとらない
動詞には、自動詞と他動詞があります。この2つの動詞の違いは、他動詞は目的語をとり、自動詞は目的語をとらないところにあります。目的語とは、動詞の後ろに来る「~を」の部分だと思ってください(超てきとー)。簡単な例を挙げると、下記の例の場合、data が目的語になります。
- find data
データを見つける
この目的語をとらないのが、自動詞になります。自動詞の代表的な例は、exist や sleep があります。なので、英文法から考えると exist は目的語をとらないので、#existsFile() とはできないということになります。
- ○ File exists.
ファイルが存在する
- × It exists file.
それがファイルを存在させる
わかりにくかったら、exist は、存在するとは訳せるが 存在させる とは訳せないと覚えておくといいかもしれません。
ただし、ネーミングにおいては、絶対的に existsFile がNGだというわけではありません。コーディング規約や言語などの特性により、existsFile の方が利便性が良いと判断することもあると思います。そのため、何を優先すべきは個々のプロジェクトのコーディング規約などで決定すべきだと思います。
余談ですが、#isExists() は問題外です。なぜかは、要望があれば記事として書きます。
Rule 3 : 副詞
副詞と聞くとなんじゃそらーと思うかもしれませんが、意外にできる子なんです。例えば、中学校でこんな英文を習ったと思います。
- He plays tennis well.
彼は、上手にテニスをする。
この well が副詞です(覚えていましたか?)。副詞は、動詞を使うメソッド名で威力を発揮します。 副詞を使えば、メソッドの動作の微妙なニュアンスを補足できるんです!以下は、メソッド名のネーミングで使えそうな副詞の例です。
- recursively : 再帰的に
- strictly : 厳密に
- safely : 安全に (safeも副詞)
- repeatedly : 繰り返して
問題は、メソッド名のどこに置くか?ということですが、通常の英語の文章の場合、動詞の前にも置いたりします。しかし、メソッド名では、動詞を重要視するので、文末に置くことが多いようです(※ kodersで調べたら両方のパターンがあったので、この辺りは、ネーミング規則に従うべきですね)。以下はメソッド名で使った例です。
- #deleteDirectoryRecursively()
ディレクトリを再帰的に削除する
- #findStrictly()
厳密に探す
どうでしょうか、微妙な動きのニュアンスを表現できますね。
是非、副詞の使い方を覚えてください。
Rule 4 : 過去分詞は形容詞になる
過去分詞は、完了形で使うと覚えている人もいるはず。でもこの過去分詞、「~した」「~された」「~済みの」という形容詞として使うこともできるんです。例えば、send(過去分詞はsent)を例に挙げると
- sent message
送信済みのメッセージ
というような使い方ができます。この場合の sent は、「削除された」「削除済みの」という動作が完了した、またはその状態を表す形容詞的に使われています。このような使い方を形容詞的用法といいます。以下に、過去分詞を形容詞として使った例をいくつか挙げます。
- deleted rows : 削除された行(削除行)
- duplicated rows : 重複した行
- nested list : ネストしたリスト
- distributed processing : 分散された処理(分散処理)
- supported OS : サポートされたOS
- defined function : 定義された関数(定義関数)
- selected row : 選択された行
現在分詞も形容詞に
現在分詞 (-ing)も「~している」という意味で、形容詞的な使い方ができます。
- existing file.
存在しているファイル
このような用法は、いろんなところで見かけますので、意識して見つけてみてください。理解できるようになったら、#isDeleted() や #isExisting() が文法的に説明できるようになると思います。
辞書に登録されていない?
日本の英語辞書では、broken のような、一般的に形容詞的な用法が認められる場合のみ、形容詞として見出し語登録されます。しかし「辞書には掲載されていないが IT業界では普通に形容詞的に使う」単語もあるので、辞書に掲載されているかではなく、en.wikitionary や Koders などでそういった使い方がないか、チェックした方がいいと思います。
Rule 5 : 接頭辞と接尾辞
英語には、とても便利な接頭辞や接尾辞があります。これらを知っておけば、ベースとなる単語さえ知っているだけで、ボキャブラリが増えますよー。
例えば、動詞にableを付けることで、「~できる」「~可能な」という形容詞を作ることができます。send は、「送る」という動詞ですが、sendable とすることで、「送信可能な」という形容詞を作ることができます。
<よく使いそうなパターン>
パターン | 例 |
pre+動詞 = 前に~する | pre + append → prepend : 先頭に追加する(アナグラムらしいです) pre + process → preprocess : 前もって処理する |
re+動詞 = 再び~する | re + do → redo : やり直す re + deploy → redeploy : 再配備する |
名詞+ize = ~化する | serial + ize → serialize : 連続化する Roman + ize → Romanize : ローマ字化する camel + ize → camelize : ラクダ文字化する normal + ize → normalize : 標準化する parameter + ize → parameterize : パラメータ化する (※ parametrize とも書く) |
動詞+able = ~可能な | serialize + able → serializable : シリアライズ可能な send + able → sendable : 送信可能な compare + able → comparable : 比較可能な |
このような派生語についても、辞書には掲載されていないが、IT業界では普通に形容詞的に使う単語などもありますので、辞書に掲載されているかではなく、en.wikitionary や Kodersなどでそういった使い方がなされていないか、チェックした方がいいと思います。
最後に
余談ですが、IT関係の単語を調べるなら、en.wiktionary をお勧めします。英英辞書ですが、コンピュータ分野での訳語が圧倒的に多いので、最新のIT英語を調べることができます。例えば、populateのコンピュータ分野の訳語があったりします。
こんな感じのTipsなどを Twitter や Facebook で定期的に配信しています。ボキャブラリが少ないと感じている方や、英語に苦手意識を持っている方は、是非フォロー / 購読してみてください。
-- 追記 (3/14 20:00)
ご指摘があり、他動詞と自動詞の説明が反対に
なっていたのを修正しました。
-- 追記 (3/15 20:00)
ご指摘があり、例文中の search の意味を誤用していたため
find に修正しました。
・search data
データ内を検索する
↓
・find data
データを検索する