読者です 読者をやめる 読者になる 読者になる

unkode-mania でウンコ 300 個ゲットした

設計

 食事はお済みでしょうか?ウンコの話を書きます。

 先日 GIGAZINE でも話題になった『ウンコード・マニア』というサイトがあります。このサイト、要はウンコみたいに酷いプログラムを投稿してシェアしようぜ、という旨のサイトです。投稿されたコードは誰でも見る事ができ、「これはウンコだなぁ」と思ったらウンコマークをつけられます。つまりウンコマークが多ければ多いほど臭いコードだというわけです。

 ウンコードといえば少し前に @lalha2 さんがこういうことを呟いていましたね。

この呟きではウンコードというネガティブな表現を「ひよコード」というプリティな表現に転化させていて素晴らしいと思いました。とはいえ実際は、ひよこはひよこ、ウンコはウンコだなぁというのが僕の開発経験による率直な所感です。

 さて、このサイトは結構面白い企画だなぁと思っていて、僕もちょぼちょぼと投稿していたんですが、先日めでたく獲得ウンコ数 300 を超えたので感じた事とかを書いておこうと思います。あ、ちなみに僕が投稿したのは以下 11 件。

タイトル 言語 ウンコ数 コメント数
お前は何も分かっちゃいない C++ 49 6
名前が似てると気付かないよね Ruby 18 3
無限ループ楽しい C 20 11
n × 4 バイト C 37 7
short から int への変換 C 30 10
NULL と 8 の何故 C 52 10
インド人を右に Java 15 6
switch-caseは現場の臭いがする C 44 16
WinMainの1行目からウンコ C 5 3
ダイナミック型変換 C++ 15 0
スベテカンスウ Java 45 13

1. ウンコにも質がある
 現在サイトには多数のウンコードが投稿されていますが、その中にはウンコマークが山ほどついているものもあれば全然ついていないものもあります。良質のウンコードは誰が見ても明らかにダメダメなコードですが、そうでないものは何処がどの様にウンコなのかが分かりにくかったり、「それはウンコではないよ」と指摘が入っていたりと、色々理由が見つかります。一部では投稿者のレベルが高すぎて見ている人がついていけないケースも見受けられますが、おおむねウンコードの質というのはウンコがウンコたる様子をいかに伝えられているかという点に強く依存して決まるように感じます。

2. ウンコを見つめていると美しいコードを書く事の難しさが分かる
 ウンコードを眺めていると、「これがウンコである指摘は出来るけど、じゃあコレを完璧に正しく美しいコードに修正するとしたら、どう書くのが良いだろう?」と悩んだりします。まぁもちろん "それは状況によって変動するから完璧なんて無い!" 的な発想はあるとしても、ダメなコードを知る事は美しいコードを書くことの難しさを知る事に直結するように思います。

3. ウンコの排出されやすさが、プログラミング言語の質を物語っている
 @ichiro_satoh さんが↓こういうことを呟いていました。

僕はウンコードを見てバカにして笑うことと工夫を考えることは別の事だと思っているので、バカにして笑ったところで技術屋としての資質を疑ったりはしませんが、ウンコードにならないようにする取り組みが実際の開発現場において有益であることは間違いないでしょう。「完璧なコード」とまでは言わなくとも、「ウンコードではないことそれ自体」は現実的に獲得可能な価値であるということです。ウンコードの投稿数を言語別で見てみると、ウンコードを量産してしまいがちな言語とそうでない言語があるのが分かります。

言語 投稿数
Java 44
C 38
JavaScript 19
PHP 18
C++ 17
C# 12
VB.net 10
Python 3
Ruby 1

 もちろんユーザーの多い言語ほどウンコードの投稿数が多くなる傾向が強いのですが、Pyhon と Ruby の投稿数の少なさには注目すべきだと思います。Ruby なんかは日本でユーザーも多いし、もっと投稿があっても良さそうな気がします。しかし僕も Ruby のウンコードを投稿しようとしてようやく気付いたのですが、Ruby って比較的ウンコードを作りにくい言語なんですね。Twitter や勉強会でよく「Ruby は書くのが楽しい」とか言われてるのを目にしますが、それってつまり Rubyist が能天気なのではなく、Ruby がダメなコードになりにくい言語仕様に仕上がっているという事なんだろうと思います。

4. 「ウンコード・マニア」というサイト自体のウンコっぷり
 僕はこのサイトに対しておおむねポジティブに捉えているのですが、サイトの主たる機能がウンコを晒すことである以上このサイト自体のウンコっぷりを(要望受付を通さずに)晒すことはアリだと思っているので、いくつかウンコっぷりを書こうと思います。

i.コードの微修正でウンコマークの位置がずれる。
 このサイトでは投稿に対してウンコマークがついた後でも、コードを修正することができます。コレ自体は良いのですが、ウンコマークの位置を恐らく行数で管理しているのでしょう、ウンコマークの位置がずれます。コードが変わったのだから多少の食い違いはしょうがないのですが、例えば空行を削除しただけでウンコマークの位置がずれるのは嬉しく無いです。コードの変更を許可するなら、diff を使ってウンコマークの位置を補正すべきでしょう。プログラムソースを扱うサイトなんだし。

ii.コードの最大文字数が 1024。
 どう考えても短いです。ウンコードとは長くなりがちなものだというのに。

iii.ウンコマークが付けば付くほどソースが読みづらくなる。
 人気な投稿ほど可読性が下がるとかアリエナイ。投稿されたウンコードの質が下がります。恐らく、それを考慮して「ウンコマーク非表示ボタン」が用意されているのでしょうが、それだと企画の面白さそのものが損なわれます。例えば 10 個ウンコマークが溜まったら大きいウンコになる等の演出をするべきでしょう。

iiii.(8/23 11:05 追記)「まいた」
 


5. サイト利用者がウンコにならないために
 すごく大事で当たり前のことなのですが、実際に仕事で書かれたコードを投稿するのは避けましょう。業務で書いた/見つけたコードをこういう場所に晒すとか、コード以前に人格がウンコです。サイトの about ページにも創作に限定しろと注意書きがありますし、投稿時にも著作権を侵害しない旨のチェックボックスが置かれています。