プログラマなら誰もが悩む変数名や関数名の名付け共有サイトを作ってみた

プログラマの皆様、

  • 「ここの変数名、何て付けよう?」
  • 「こういう機能の意味の英単語って何だっけ?」
  • 「こんな処理の関数って普通どんな名前付けるんだろう?」

なんて悩んだ事はありませんか?

「みんな悩むんなら、みんなで共有しちゃえばいいじゃん!」という事で、変数名や関数名にどんな名前を付けるかを共有するサイトを作ってみました。
名付けて.ね〜む

使い方

検索する

調べたい言葉を、単語または文章で入力して検索します。入力された言葉から名詞または動詞が抽出されて、該当する単語に対してみんなが付けた訳語を見る事ができます。

例えば、ユーザを検索するメソッドを作ろうとしていて、名前をどうしようか悩んでいた場合*1、「ユーザを検索する」と入力して検索してみます。

そうすると、"ユーザ"と"検索する"が単語として抽出されて、それぞれ"user"・"search"なんかが訳語の候補として登録されている事が分かります。

登録する

まだ登録されていない単語が検索された場合、「この単語はまだ登録されていません。」と表示されて、「登録する」というリンクが現れますので、リンクをクリックしてぜひ登録して下さい。

訳語についても自由に登録できますので、「自分ならこういう変数名を付ける」というような候補があれば、どんどん登録してやって下さい。

コメントする

意味語・訳語、それぞれのエントリ毎に自由にコメントする事ができます。

「こういう場合はこの訳の方がいいよね。」とか「この言語だとこう書く事が多い。」など補足的に使ってもらったりなど、コミュニケーションの場としてご利用下さい。

特長

自然言語による単語検索

変数名や関数名は、「こういうような処理をする関数」とか、比較的あいまいな感じで名前を調べたい事も多いだろうと思うので、文章で検索できるようにしました。

入力された文章を形態素解析に掛けて、名詞と動詞を検索単語の候補として抽出するようにしています。

場合によっては必要な単語が抽出されない事があるかもしれませんが、その辺りは単語の抽出方法を少しずつ改良していくようにしたいと思っています。

バックエンドとしてAtomPubサーバを利用

普通にWebサイトを利用している分には全く関係ないところなんですが…裏ではAtomPubサーバに対してHTTPリクエストを投げて処理をしています。

その為、あまりレスポンスが良くない時があるとは思いますが、ご了承の程を…。

AtomPubのAPIについて

バックエンドで動いているAomPubサーバに直接アクセスする事もできます。

現在、以下のコレクションURLに対して、GETによる情報の取得と、POSTによる情報の登録を行う事ができます。

  • http://www.stellaqua.com/naduketename/api/meanings/
  • http://www.stellaqua.com/naduketename/api/meanings/{意味語}/comments/
  • http://www.stellaqua.com/naduketename/api/meanings/{意味語}/namedwords/
  • http://www.stellaqua.com/naduketename/api/meanings/{意味語}/namedwords/{訳語}/comments/
  • http://www.stellaqua.com/naduketename/api/meanings/{意味語}/namedwords/{訳語}/stars/

※{意味語}はUTF-8でURLエンコードされている必要があります。
※starsリソースに登録する事は可能ですが、現バージョンでは何の意味も持っていません。将来的に、スターの数による並べ替えなどができるようにする予定です。

(例)意味語"作成する"に登録された訳語"create"に対するコメント一覧を取得する
GET http://www.stellaqua.com/naduketename/api/meanings/%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B/namedwords/create/comments/

情報の登録を行う際は、各コレクションURLに対して、以下の形式のXMLをPOSTして下さい。

<entry>
 <author>
  <name>{投稿者名}</name>
 </author>
 <title>{単語名}</title>
 <content>{コメント}</content>
</entry>

※"comments"・"stars"のリソースの場合は、"title"は不要です。

POSTリクエストの結果によって、以下のステータスコードが返されます。

  • 正常に作成できた場合:201
  • URLで指定した単語が存在しない場合:404
  • 既に同じ名前の単語が登録されていた場合:409
  • リクエストが不正だった場合:400
  • その他のエラーの場合:500

制限事項

  • 現バージョンでは、一度登録した意味語・訳語・コメントは修正/削除する事はできません。
  • AtomPubのAPIについてもGET/POSTのみ許可していて、PUT/DELETEはできません。*2
  • ページング機能が無いので、古いエントリを見る事ができません。(それぞれの最新20件のみ表示されます。)
  • 現在、開発途中のアルファバージョンの為、不具合があったり、予告無しでサービス停止する場合があります。予めご了承下さい。

実装したい機能

ページング機能
AtomPubのAPI側には早めに実装したいと思っています。Webサイト側は登録エントリが増えてきてから対応する予定です。
Twitterでの検索・登録
Twitterを使って検索とか登録ができたら面白そうかなと。
ユーザ管理
各ユーザが、自分が登録したものに関して修正/削除もできるようにしたい。ユーザ管理機能ができたところでベータ版リリースにしたいと思っています。
VimEmacsからの利用
できるだけ開発環境に近いところで使えた方が便利だと思うので、いつかVimとかEmacsから検索できたりするようにもしてみたいです。
類語推薦機能
検索した単語と似ている単語も検索結果に一緒に表示して、「近い意味の単語でこんなのがありますよ」というような推薦機能も付けたいですね。
自動名付け機能
現状、単語単位で検索結果が出力されますが、複数候補の組み合わせで、自動的にメソッド名とかの候補を複数生成できたりすると面白いかなと。

今後の予定

"名付けて.ね〜む"に関する情報は、しばらくは当ブログにて発信していきたいと思います。"名付けて.ね〜む"関連エントリを見たい場合は、以下のURLでどうぞ。
http://d.hatena.ne.jp/stellaqua/archive?word=%2a%5b%cc%be%c9%d5%a4%b1%a4%c6%2e%a4%cd%a1%c1%a4%e0%5d

作者の独り言

ブログのAtomPub関連記事で作っていたものが一応動くところまでいったので、以前からずっと作りたいと思っていた"名付け共有サイト"として立ち上げてみました。

プログラミングしていると、こういう名付けで時間を取られる事って結構多いんじゃないかと思うんですが、それともギークな方々は、悩むような事でも無かったりするのかしらん。(笑)

サイトのデザインはもっと懲りたかったんですが、自分のデザインセンスでは無理と判断して、そこそこなところで諦めました。とは言え、検索結果の見栄えはもうちょっと何とかしたいところですが…。

内部的な処理のところは、また追々書いていこうと思います。(形態素解析のところとか、AtomPubのところとか…。)

という事で、ぜひ使ってみて下さいね。

*1:こんなので悩む事は無いとは思いますが、まぁ例として…。

*2:「それじゃAtomPubじゃないじゃないか。」というツッコミは…受け付けません。<オイ