僕は、プログラムをする上で変数や関数に良い名前を付けるのはとても重要と考えています。
というのも、良い名前を付ければ、それだけでそのコードがしたいことの説明になり、コメントと同等の働きをすることもあるからです。
自分がちゃんとそれをできているのかはさておき、僕は普段から、できれば読みやすくて分かりやすい名前を付けたいと思っています。他の人も読むコードであれば、できればプログラムでよく使われるような単語を利用して書いた方がより分かりやすいです。
ただ、よい名前を考えるのって、ちょっと面倒くさいんですよね。僕はこれまで、英語の辞書を利用して、考えたりしていたのですが、「何か、プログラムでよく使われる単語をまとめたものはないか?」と探したら、ドンピシャのものがいくつかあったので、それらをまとめて以下で紹介します。
photo by Michael Coté
目次
codic
追記:codicは、バージョンアップされ、現在は日本語を入力すると英語名に変換する機能が追加されました。新しいver3で辞書機能を利用するには無料登録する必要があります。
プログラマーやシステムエンジニアのためのネーミング辞書です。
変数名、関数名はもとより、データベースのカラム名やプログラムのクラス名・メソッド名といったネーミング作業を、手軽に行うための和英辞書といった感じです。
日本語で検索すると、プログラムなどでよく使われている英単語が以下のようにリストアップされます。(※以下は「取得する」で検索した結果)
単語をクリックすると、詳しいニュアンスについて説明するダイアログが出ます。
例えば、通常何かを取得する関数名などは、get_page_title()みたいに書くことも多いかもしれません。けれど、これだとタイトルを、設定値からとるのか、データベースからとるのか、インターネットから取ってくるのか分かりません。
けれど、ネットを介して取ってくるのであればfetch_page_title()とした方が、「行って取ってくる」というニュアンスがあるので、「ネットを介して取ってくるのだな」ということがわかりやすくなります。加えて、処理コストの高い(時間のかかる)関数ということも何となく伝わるので、誤って乱用してしまうことも防げます。
と、こういったプログラムに利用する英単語を手軽に検索することができる辞書ツールです。今更なのかもしれませんが、僕は今回の調べものをしていて初めて知りました。
ユーザー登録をすれば、単語を追加することもできるので、辞書をどんどんパワーアップさせることもできます。
あと、プログラミングのネーミングに特化した開発者ブログも、とても勉強になります。
codic紹介記事。
関数名によく使われる英単語(動詞)の意味とニュアンス
関数名によく使われる英単語(動詞)の意味とニュアンス | PHP Archive
プログラムで、よく利用される動詞の種類が豊富なリストです。
動詞を見つけるなら、一覧になっているのでcodicで検索するよりも手軽かもしれません。
以下のような、よく利用される単語の、主な用途と細かい意味、ニュアンス、使い分けについてリストアップされています。
- 追加・作成
- 保存・出力
- 読み込み・解析・取得
- 編集・変更・修正
- 削除
- 検索
- 検査
- 許可・禁止
- その他
プログラミングに出る!英単語
名詞なども含めて、一般的に関数名などで使われる英単語を百数十個まとめてあるページです。
C言語編と書かれていますが、どのような言語でもよく利用されている単語ばかりなので、ここにある単語さえ押さえておけば、自分以外の人にも理解されやすい名前をつけることができるかもしれません。
うまくメソッド名を付けるための参考情報
プログラミング – うまくメソッド名を付けるための参考情報 – Qiita
メソッド名(関数名)のネーミング向けの単語が揃っています。紹介されているプレフィックス(接頭辞)とサフィックス(接尾辞)がとても参考になります。
CSSのクラス名を決めるときに使うリスト
CSSのクラス名を決めるときに使うリストをつくりました – Qiita
WEB制作者向け。サイト設計時のクラス名やID名に統一感のある命名をする時に役立ちます。
Naming -名前付け
メソッドに命名するときに便利な動詞がまとめられています。また、様々な文献から抽出した名前付けに関する情報を雑多についてもまとめられています。
プログラマなのに知らなかったら恥ずかしい英単語集
Rails – プログラマなのに知らなかったら恥ずかしい英単語集 – Qiita
プログラムによく利用される、基本的な英単語と意味がリストアップされています。似たような意味を持つ単語がまとめられているので、意味を比較して利用できます。
クラス名・関数名によく使われる英単語
javadocリファレンスをプログラムでテキスト解析した結果から、出現頻度が高い単語が上位からリストアップされています。
僕は、Javaは使ったことがないのですけど、上位の単語は他のプログラムでもよく見かける面々といった感じです。(※予約語とかも含まれています。)ここに出てくる単語を押さえて組み合わせて利用すれば、ある程度名前をつけられそう。
ゲーム向けの翻訳スプレッドシート
Common words translation for games
ゲームなどでよく使われる設定のキャプションやメッセージなどの翻訳一覧スプレッドシートです。英語、日本語、ドイツ語、ロシア語、イタリア語、スペイン語、韓国語、中国語、フランス語他などに対応しています。
Weblio辞書
結局、なんだかんだで最後に頼りになるのは、やっぱり辞書だったり。辞書もいろいろあるけど、Weblio辞書が、日本語で検索したとき、最も提案も多く、解説もあるのでネーミングには、使いやすいです。
以前、WEBのテキスト翻訳サービスを比較した時も、Weblioが質&操作性ともよかったです。
Thesaurus.com(類義語辞書)
Thesaurus.com | Find Synonyms and Antonyms of Words at Thesaurus.com
英単語の、類義語を検索することができます。
検索単語との関連性、単語の複雑さ・長さなどからワードを抽出することもできるので、「なるべく短くて関連性の高い類義語を探したい」なんて時にも便利です。(Twitterで教えてもらったので追記)
その他
その他ネーミングに役立つ記事やサービスをリストで追加していきます。
- 設計 – クラスの命名のアンチパターン – Qiita
- ネイティブと働いて分かった英語コミットメッセージの頻出動詞10つ – Qiita
- ChangeLog を支える英語 · GitHub
- commit-m: GitHubコミットメッセージの文例が検索できるサービス
まとめ
とこんな感じで、プログラミング単語のカンニングペーパーに便利なページを紹介しました。
いくつか紹介しましたが、これらの中で、気に入ったものを、いくつかブックマークに入れておけば、次からネーミングで迷ったときに、ちょっとした手助けになるのではないかと思います。
Global Language Monitorによると、2014年の1月時点で100万以上の英単語が存在しているそうです。現在でも、だいたい98分に1個のペースで英単語が生まれるそうです。ただ、プログラムは英数字で書くからといって、これらすべてを知る必要はありません。
今回紹介したページにある単語を200個ぐらいを適切に利用すれば、それだけでも結構読みやすいコードになるかと思います。
加えて、プログラム本としては異例のベストセラーである、リーダブルコードを読んでおくとより理解が深まると思います。