はじめに
変数(や関数)の命名にあたっては、明確な名前をつけよう、とよく言われる。たとえば、このあたりのトピックで有名な書籍『リーダブルコード』では、「名前に情報を詰め込む」ために
- 明確な単語を選ぶ
- 汎用的な名前を避ける(あるいは、使う状況を選ぶ)
ことが推奨されている。他にも、以下のような記事で似た内容が書かれている。
一方で、変数名に使う英単語はなるべく短くしたいというニーズもある。そうでないと、何度も改行が必要になってコードが読みにくくなったり、アプリを構成するファイル名がエディタで表示しきれなくなったり、などの不都合が起きる。
したがって変数の命名にあたっては、なるべく短く、かつ元の形が推測できるようにしたまま単語を省略したい。この2つの条件を満たす省略法があれば、「このワードは変数名に入れた方がいいけど長くなるから止めよう」といった理由で情報量が不十分な変数名をつけてしまう事態も避けられるはず。
以上の目的から、変数名の省略にはどのような方法があるかを整理してみたい。
省略の4方式
1. acronym(pwd
方式)
ここで紹介する省略法のうち、おそらく最も分かりやすいのがacronym(和訳は「頭文字語」らしいが、しっくりこないのでそのままacronymと呼ぶことにする)かと思う。何かというと、語句を構成する単語の先頭だけを取る形で省略したもの(ただし、REpresentational State Transfer
が略されてREST
になるように、頭文字より後ろの文字も使われる場合がある)。
たとえばUNIXコマンドの一つにpwd
があるが、これはPrint Working Directory
を略したacronym。他にも、このタイプの略語としては以下のような例がある。
cd # Change Directory
re # Regular Expression
html # Hyper Text Markup Language
ただ、世の中に浸透していないacronym(たとえばピコ太郎が登場する以前の「PPAP」)を急に使ってしまうと当然通じないので、オリジナルの略称を作る場合にはあまり適さないかもしれない。
2. ある子音より後を削る(app
方式)
acronymほど単純ではないけれどよく見るのが、単語の中である子音より後を削る省略法。iOSアプリのプラットフォームApp Storeなどにも含まれるapp
という言葉がapplication
のl
より後ろを略した形であることから、ここではapp
方式と呼ぶことにする。
以下ではRailsでの開発やPythonによる分析をしていてよく目にするapp
方式の略称を並べてみたが、このあたりは言語を問わず広く使われているのでは。
dev # development
env # environment
col # column
const # constant
末尾になる子音の選び方としては、なるべく前方の文字を選ぶけれど、これより前にある文字まで削ると意味が曖昧になってしまう、ぎりぎりのラインを目指すということかと思う。
例として、category
を省略したい場合を考えてみる。最後のory
を落とすのはいいとしても、さらに2文字削ってcat
としてしまうと、読む人に「これはcatenation
かもしれないしcatch
かもしれない」などと考えさせることになる。だからcateg
ぐらいが適当なのでは、といった具合に調整するのがよさそう。
ちなみに、特定の母音より後ろを削るタイプの省略法もなくはない。たとえば日本語ではSFと略されるScience Fictionは、英語圏だとSci-Fiと呼ばれている。が、このパターンは上述のものと比べて稀なので、そういうパターンもある、くらいの認識をしておけば十分かもしれない。
3. 重要な文字だけを残す(img
方式)
app
方式はある文字より後ろをばっさり削るというものだったが、単語の先頭や末尾などポイントになりそうな文字だけ残してその他を間引くアプローチもある。このアプローチは、image
からa
とg
を落とした略称img
(これはHTMLのタグ名でもある)に倣って、img
方式と呼ぶことにしてみる。
btn # button
usr # user
idx # index
ここで挙げたidx
は単にi
と略されることも多いが、文脈によってinteger
とかid (identification)
の略ではないことを明確にしたい場合は使う価値がある。
ちなみに日本語で対応する例も考えてみると、「ありがとうございます → あざす」や「ウッチャンナンチャン → ウンナン」などは、同じ発想による省略と言えそう。
4. 2と3の合わせ技(jp
方式)
tmp # temporary
このパターンは頻出ではないもののたまに見る。
japan
をjp
と略すのはもはや慣例になっているが、よく考えてみるとapp
方式ではjap
、img
方式ではjpn
までしか短くできないところで、この二つが併用されてjp
という形になっていることが分かる。
まとめ
いろいろ見てきたが、コーディングの現場で変数名を決めるにあたっては短さより分かりやさが重視されることが多い。分かりやすさを損なわない方法としては、基本的にapp
方式が無難なのではと思う(とはいえ他の方式も、省略形から原形を推測するにあたっては役に立つ)。
省略法を知っていることは、名前の衝突を避けたい場合も役に立つ。たとえばPythonの開発や分析では、リスト(一般的なプログラミング用語では配列)を意味するためにlst
という変数名が使われることがある。ここでlist
の代わりにlst
という変数名を使うことには、list()
という予約語(メソッド)を上書きしてしまう問題を避けるメリットがある。
なお、この記事では変数の例を中心に単語の省略法を見てきたが、これらは、関数、カラム、ディレクトリ、ファイルなどの命名にも当然ながら応用できる。