プログラミングで関数などのネーミングに頭を悩ませている人は結構おられるかと思います。
僕もその1人で、自分の名付けの何かヒントになればと以前、以下の記事を書きました。
で、この記事の最初にcodicという、ネーミング辞書を紹介しました。
そのcodicを久々に覗いてみたら、バージョンアップしていて、ネーミングにかなり便利になっていたので紹介です。
目次
codicとは
codicは、日頃、変数名や関数名に頭を悩ませるプログラマのためのネーミング辞書です。
以前は、プログラマ向けの単語辞書といった感じだったのですが、Ver.3からは、「日本語を入力すると、ふさわしい名前を勝手に生成してくれる」という仕様になりました。
例えば関数名を作るのに、「従業員数を取得する」と入力するだけで「get_employee_count」という名前を勝手に生成してくれます。
これだけでも、かなり便利なんですが、codicにはその他にも、プログラミングのための便利な機能が満載だったので、その使い方などを紹介したいと思います。
codicの使い方
codicの主な機能は、日本語を入力すると、勝手にネーミングを生成してくれると言うことです。
ただ、ちょっとした使い方次第で、より便利に利用できるので、その使い方などの紹介です。
基本機能
まずは、基本的な機能、「日本語→英語ネーミング」機能です。
普通に入力欄に日本語で入力すれば名前を生成してくれます。
例えば以下のように「ページタイトルを取得する」と入力すると「get_page_title」と勝手に名前をつけてくれました。
この名前生成機能は、もちろん変数のネーミングなどで利用しても良いかと思います。
単語を変更したい場合
例えば先程の「ページタイトルを取得する」から生成した「get_page_title」ですが、ページタイトルを「ネット上のページから取得する」という動作をしたかったとします。
そういった場合に、getのような単なる「取得する」という意味だと「設定から取得するのか」「DBから取得するのか」「ネットから取得するのか」分かりません。
そういった「getでわからないので、より意味を持った単語に変更したい」なんて場合は、変更したい単語(今回はget)をクリックします。
すると、その他に有効な候補が表示され、「(>)調べる」をクリックすると微妙なニュアンスの違いなどを表示してくれます。
今回は、「他のページからページタイトルを取得する」という意味なので「(行って物を)取ってくる」という意味のある「fetch」を選択しました。
こうして、「fetch_page_title」としたことで「行って取ってくる」と言う意味が付加され、コストの高い処理ということも、以前より分かりやすくなります。(fetchとしたことで以前よりも処理に時間のかかる関数と分かりやすくなる)
辞書機能は、無料ユーザー登録をしないと利用できません。
Boolean(真偽値)を返す名前を付ける
trueやfalseを返す関数名などをつけたいときは、「〇〇は有効か」とか「〇〇は作成されたか」といったように「~か」といったような日本語を入力するとBool値を返す名前を生成できます。
例えば、「広告を表示するか」と入力すると「should_show_ad」と命名してくれます。
他にも、いろいろ試してみると、以下のような名前も一発で生成できました。
「ファイルは作成されているか」→「is_file_created」
「有料プランか」→「is_paid_plan」
「正規表現検索は有効か」→「is_regexp_search_enabled」
「ウェブサイトを持っているか」→「has_website」
こんな感じで、結構いい感じの名前を提示してくれます。
複数形に対応する
例えば、先程の「広告を表示するか」の「should_show_ad」なんですが、WEBサイトに表示する広告などは、通常ひとつではなく複数です。
そういった使用状態に合った名前を付けるには「広告」を複数形にする必要があります。
複数形にするには、複数形にしたい単語の末尾にsを付けると目的の単語が複数形になります。(sは半角でも全角でも可)
「should_show_ad」→「should_show_ads」
もちろん、変則的な複数形にもある程度対応しています。
「person」→「people」
全ての単語が登録されているわけではないので、登録されていない単語はユーザーが辞書に追加することでアップデートされます。
ケース変換
メニューから簡単にケース変換を行うこともできます。
変換できるのは以下。
- PascalCase
- camelCase
- snake_case
- SNAKE_CASE
- ハイフネーション
- 変換なし
これにより、「Delphi(Pascal)に適した書き方」、「PHPに適した書き方」、「jQuery等に適した書き方」、「class名などに適した書き方」、「定数等に適した書き方」、などと使い分けることができます。
変換なしは、英語のエラーメッセージの生成などにも使えそうです。
プラグインで呼び出し
eclipseとExcel VBAからは、APIを利用してネーミングエンジンを利用することもできるようです。
個人的に楽しみなのは、僕も今利用しているSublime Text3のパッケージが「Coming soon」となっていることです。
パッケージが公開されたら、かなりの頻度で使うかも。
追記:現在出ているSublime Textのパッケージを利用したcodicの手軽な利用方法を書きました。
追記(2015年11月):Sublime Textパッケージが公開されました。
その他の機能
その他の機能として、以下のような機能もあります。
単語の複合機能
Shiftキーを押しながら生成されたネーミングの複数の単語をクリックすると、単語を結合して1つの単語にし、異なる訳語を設定できる。
単語の並び替え機能
Ctrlキーを押しながら生成されたネーミングの単語をドラッグ&ドロップすると、並び順を変更できる。
その他
大体の機能は無料で使えますが有料プラン(準備中)だと、これらに加えて「ユーザー管理機能」が追加されたり「CSVインポート」機能などもあるようです。
詳しくは以下を参照してください。
まとめ
こんな感じで、常日頃、プログラムなどをしていてネーミングに苦悩しているなんて場合は、かなり役立つ機能が揃っているのではないかと思います。
もちろん、まだ登録されていない単語などもあるので、全ての変換で思い通りの結果を得ることはできないかもしれません。ただそれに関しては、今後のユーザーによる辞書の更新でどんどん改善していくのではないかと思います。
ということで、「英語の名前を考えるのが面倒」とか「とりあえずネーミングの参考となる辞書が欲しい」なんて場合には、codicは強力な手助けになってくれるかと思います。
とりあえず、ローマ字で入力するよりは、よい名付けができるのではないかと。
これは面白いソフトですね。
私もちょっとプログラムを囓っているんですが、これが災いして、「はい、この古いプログラム手直ししといて」なんて言われたことがあります。
そのプログラムは変数がaやらbやらで宣言されていて、読んでいて意味不明で苦痛だから直してくれ、と。
もちろん一応動いてはいるので、下手に変数を変えようものならプログラムのそこここで参照されている部分も修正しなきゃいけないし、読んでいってみたら別の内容の数値にもたまたま同じ値だからと変数を全然別のことに流用して参照していたり、使い終わった変数に別の値を代入して違うことに使い始めたりと見ていてゲンナリしてくるスパゲッティコード。そしてそこここに残っている、動いていないコードの残骸。
ただでさえこんがらがったスパゲッティと格闘しながら英語の知識も総動員して変数名も考えているのに、後からのぞき込んだ先輩が「その変数名、もうちょっとカッコイイのにできない?(笑)」とか注文を付けてくるので殺意が湧いたことがあります。
これを使えば、変数名は丸投げして純粋にコードとの格闘だけに集中できますね。