LL Futureに出演しました

LLFutureのLL Golfに出演した。JUSのLLイベントで毎年やっている「キミならどう書く?」という企画のバリエーションで、今年はLLでコードゴルフをやってみようということらしい。コードゴルフとは、仕様を満たすプログラムをのコードの短さを競う競技である。

私はコードゴルファーとしては初心者なのだけれども良いのだろうかと企画側に聞いたら、Rubyistとしてコメントしてくれればよいと言われたので喋ってきた。当日はゴルフ場anarchy golfを運営しているshinhさんも来てくれたので、プロゴルファーの技を見せるのはそちらにお願いできた。

RubyKaigi2008のゴルフではゴルフ場としてanarchy golfを利用したのだけれども、今回はどう書く.org。ここで事前に広く投稿を受け付けて、当日はその中で面白い投稿を解説・表彰するという形だった。私はその解説役。

RubyKaigiのゴルフと違うのは、どう書く.orgの投稿されたコードが完全に公開されるという特性だ。そもそも、どう書く.orgは普段はゴルフ場ではなくてコードを見せ合って競う場だからね。

短いコードを目指すという1つの価値基準を中心としながらも、コードが公開されることでいろいろなメリットが生まれていたと思う。

  • 短く書き得ない言語のユーザーの開き直りっぷりの潔さ
  • アイディアを取り込み合ってどんどんとコードが短くなっていくさま
  • 発想の面白さをも競い合うこと

RubyKaigi以前は私はゴルフにはあまり手を出していなかった。ほんのちょっとanarchy golfに投稿した程度のものだ。意味がある行為とは思えなかった。けれども、やってみるとこれは違う。

真にコードを短くするためには言語のライブラリを使い切らなければならない。これは、普段使っている言語をより深く知ることに通じる。

また、アルゴリズムも徹底して工夫しなければならない。特定の小さな問題に対していくつものアルゴリズムを考えることは良い訓練になる。しかも、コードゴルフでは時間的/空間的効率は問題にならない。どんなに実行時間を食ってもリソースを食っても、とにかくコードが短ければよい。だから、「これは効率が悪いから駄目」という早すぎる枝刈りをすることなくアルゴリズムを検討する機会になる。ここから新しいものが生まれることもある。