関数や変数のネーミングに悩んだら「codic」に日本語名を入力するとある程度解決するかも

プログラミングで関数などのネーミングに頭を悩ませている人は結構おられるかと思います。

僕もその1人で、自分の名付けの何かヒントになればと以前、以下の記事を書きました。

僕は、プログラムをする上で変数や関数に良い名前を付けるのはとても重要と考えています。というのも、良い名前を付ければ、それだけ...

で、この記事の最初にcodicという、ネーミング辞書を紹介しました。

その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」

変則的な複数形にもある程度対応している

全ての単語が登録されているわけではないので、登録されていない単語はユーザーが辞書に追加することでアップデートされます。

ケース変換

メニューから簡単にケース変換を行うこともできます。

codicでケース変換

変換できるのは以下。

  • PascalCase
  • camelCase
  • snake_case
  • SNAKE_CASE
  • ハイフネーション
  • 変換なし

これにより、「Delphi(Pascal)に適した書き方」、「PHPに適した書き方」、「jQuery等に適した書き方」、「class名などに適した書き方」、「定数等に適した書き方」、などと使い分けることができます。

変換なしは、英語のエラーメッセージの生成などにも使えそうです。

プラグインで呼び出し

エクリプスからcodicのネーミングエンジンを利用

eclipseとExcel VBAからは、APIを利用してネーミングエンジンを利用することもできるようです。

個人的に楽しみなのは、僕も今利用しているSublime Text3のパッケージが「Coming soon」となっていることです。

Sublime Text3のcodicパッケージが間もなく公開されるかも

パッケージが公開されたら、かなりの頻度で使うかも。

プラグインと拡張

追記:現在出ているSublime Textのパッケージを利用したcodicの手軽な利用方法を書きました。

先日、日本語名を入力すると英語の関数名などを出力してくれるcodicについて書きました。このサービス、ネーミングで悩...

追記(2015年11月):Sublime Textパッケージが公開されました。

先日、日本語から、英語の関数名や変数名に変換してくれるサービスのcodicを紹介しました。そのcodicを久しぶりに...

その他の機能

その他の機能として、以下のような機能もあります。

単語の複合機能

Shiftキーを押しながら生成されたネーミングの複数の単語をクリックすると、単語を結合して1つの単語にし、異なる訳語を設定できる。

単語の並び替え機能

Ctrlキーを押しながら生成されたネーミングの単語をドラッグ&ドロップすると、並び順を変更できる。

その他

大体の機能は無料で使えますが有料プラン(準備中)だと、これらに加えて「ユーザー管理機能」が追加されたり「CSVインポート」機能などもあるようです。

詳しくは以下を参照してください。

プランの比較

まとめ

こんな感じで、常日頃、プログラムなどをしていてネーミングに苦悩しているなんて場合は、かなり役立つ機能が揃っているのではないかと思います。

もちろん、まだ登録されていない単語などもあるので、全ての変換で思い通りの結果を得ることはできないかもしれません。ただそれに関しては、今後のユーザーによる辞書の更新でどんどん改善していくのではないかと思います。

ということで、「英語の名前を考えるのが面倒」とか「とりあえずネーミングの参考となる辞書が欲しい」なんて場合には、codicは強力な手助けになってくれるかと思います。

とりあえず、ローマ字で入力するよりは、よい名付けができるのではないかと。

『関数や変数のネーミングに悩んだら「codic」に日本語名を入力するとある程度解決するかも』へのコメント

  1. 名前:灰色プログラマー 投稿日:2017/03/17(金) 00:24:07 ID:00b36412d

    これは面白いソフトですね。
    私もちょっとプログラムを囓っているんですが、これが災いして、「はい、この古いプログラム手直ししといて」なんて言われたことがあります。
    そのプログラムは変数がaやらbやらで宣言されていて、読んでいて意味不明で苦痛だから直してくれ、と。
    もちろん一応動いてはいるので、下手に変数を変えようものならプログラムのそこここで参照されている部分も修正しなきゃいけないし、読んでいってみたら別の内容の数値にもたまたま同じ値だからと変数を全然別のことに流用して参照していたり、使い終わった変数に別の値を代入して違うことに使い始めたりと見ていてゲンナリしてくるスパゲッティコード。そしてそこここに残っている、動いていないコードの残骸。
    ただでさえこんがらがったスパゲッティと格闘しながら英語の知識も総動員して変数名も考えているのに、後からのぞき込んだ先輩が「その変数名、もうちょっとカッコイイのにできない?(笑)」とか注文を付けてくるので殺意が湧いたことがあります。
    これを使えば、変数名は丸投げして純粋にコードとの格闘だけに集中できますね。

  2. アバター画像 名前:わいひら 投稿日:2017/03/17(金) 12:53:12 ID:015aec417

    そのプログラムは変数がaやらbやらで宣言されていて、読んでいて意味不明で苦痛だから直してくれ、と。

    これはキツイ…。
    僕も絶対読みたくないコードです。
    まとめて置換しようにもaとかbだと、そこら中でヒットしてまともに修正も出来ないですもんね;(正規表現的なものを使うのもありだけど面倒だし)
    読みやすさ的にも、修正のしやすさ的にも、できることなら、変数・関数名は意味のある名前が欲しいですよね。

    後からのぞき込んだ先輩が「その変数名、もうちょっとカッコイイのにできない?(笑)」とか注文を付けてくるので殺意が湧いたことがあります。

    これは確かに殺意がわくかも(笑)

    ほんと、下手に僕のような英語&コードネーミングの素人が適当に名前をつけるより、こういったツールに一任してしまった方が統一性も取れるような気がします。
    僕の場合、後からコードを見返してみて「ああ…、こことここの命名規則(法則性)が全然違うな…」なんてことが結構あったりするので。