LiveCoding #5に行ってきました

昨日、大阪で開催されたLiveCoding#5に行ってきました。

まず、ひと大杉ワロタ。50人ほど。こんなマニアックなイベントにこれだけ人が集まるというのはすごい。これもujihisaの求心力のなせる技か。さらに、忘れてはならないのはポイントは小飼弾さんがゲストとして参加していたこと。まじかで感じたの弾節は、壮絶でありました。言語のキワイ話やライフゲームのお話など盛り上がれたりして、楽しかった。ぜひ、またお会いしたいところです。

今回僕は、Coderとしては参加せず、基本的に、プロジェクタの横でustream配信のお手伝いをしていました。カメラの性能が悪くてディスプレイがあまり見えなかったのと、マイクの方向がいまいちだったため、伝わりにくかったかもしれません。雰囲気だけでも伝わったかな? 見ていた方で、次回の参考のために指摘があればおねがいします。

このLiveCodingのCoderは5+飛び入り3人の合計8人の方でした。

nitoyonさん(LiveCoding#5 でコーディングしてきた)

ActionScriptによる、はてぶビューワ。ActionScriptなのに開発環境が秀丸+ターミナルなのにおどろいた。後でお聞きした所によると、費用ゼロでできるらしいので、ちょっとためしてみたいところです。
ActionScriptのコードはほとんど見たことなかったんですが、型があるんですよね。

var url : URLLoader = new URLLoader();

URLLoader型だとこんな感じだっけ。メソッドの返り値も、

private function hello(str) : void {
    ...
}

こんな感じに指定していた。型が使えるのはかっこいいーなー。

yharaさん (LiveCoding#5に出演しました)

BiwaSchemeによるZu処理系。一つのセッションの中に、HTML、JavaScript、Scheme、Zu、Rubyの五つの言語が飛び交って、脳内の言語のコンテキストスイッチがかなりたいへんでした。yharaさんもRubyなのに//でコメントしてたりして、若干の混乱が見られた模様。
ずという言語はyharaさんの作成した言語です。yharaさんは、さしずめZuのMatz、もしくはLarryというところ。brainf**kバイトコードへの変換なども可能になっているらしく、これからが楽しみな言語ですね!

ikegamiさん(LiveCoding#5に行ってきました)

HaskellでRay Tracingというお題。
内容の抽象度がたかすぎて、途中からまったく、おいかけることができなくなってしまった。newtypeしまくられたあと、関数を引数をなんこもとるような関数の定義があったりするともう大変。自分の脳内スタックのサイズが小さすぎますね。最近OCaml勉強したところだったので、もう少しすんなりわかるかと思ったんだけどなぁ。
やはり、すでに思考が頭の中に出来上がってから書かれているんですかねぇ。うちなんかは、考えながらtry and errorで書くことが多いので、逆のタイプかもしれません。ちゃんとテストを書いてから、コードを書き始めると、ある程度思考がすんでいるのですんなり書ける気がするな。思考が大切なのか。
型が合っていても正しく動かないこともあります。

サイロスさん (サイログ)

Miyakoでアニメーションというお題。Rubyでアニメーションするプログラミングがさくさくできていました。やっぱ、お手軽そうでいいな、Miyako。アニメーションしていたのは、最近流行のネギを振り回すあのキャラでした。鈴のほうもあるのでしょうか。気になります。

wintermelonさん

Flashでtwitterビューワ。nitoyonさんとは、ちがってAdobe Flashを使ってのプログラミング。普通はこういうスタイルなんでしょうね。まず絵を描くところから始まるプログラミングで、不思議な感覚でした。みためが面白いプログラムが楽につくれるのは楽しそうですね。あ、でもエディタがTextMateでかなりかっこよかった。TextMateぜひ導入したいです。(が日本語対応がなぁ)
吹き出しの枠は手書きで二重にするとかわいく見えます。これ、テストに出るので覚えておきましょう。
あと、マウスを使わずにペンタブレットだけで操作する人は、いままでで知っているだけで二人目。あれを使いこなせる気はしないな…。
開発マシンがiBook G4だったため、現代のFlashを動かすのには少々つらそうでした。

oxyさん (LiveCoding#5終了)

倉庫番プログラム。ACM/ICPC出場者の性能は化け物か!
たぶん、本当に化け物であると思われます。尋常でないタイピングのスピードと正確さ。さらに、アルゴリズムにも迷いがない。すばらしいです。

printf("%d%d%d", i,j,k);

とか書くときに、%dのところでキー入力のスピードが減速しないのはどういう仕組みだろう。%と入力するのとdと入力するのが同じスピードなんだよな。あと、変数やスペースにも無駄がありません。

int q[SIZE];
int *qt,*qh;
int n;
n=1;

このコードはoxyさんのコードではなく、うちが説明のために再現したので、正確ではありません。このように変数名の長さや代入時のスペースができるかぎり省略されています。ちなみにqはqueue、qtはqueueのtail、qhはqueueのheadの意味だったりするようです。プログラミングコンテストではこういうテクが多用されているんですかね。ちなみにコンパイルするときは、シェルで

$ g a.cpp

gがgccのエイリアスになってるYO!

そんなoxyさんも20分でプログラムを作成するのには若干手間取る部分もあったりで、逆にLiveCodingの難しさが証明されたとも言えます。

dankogaiさん(404 Not Found)

任意のJavaScriptを実行するJavaScriptのおはなし。ブラウザさえあれば、JavaScriptをフォームに書いて試せるページのデモ。ソースの中でstdoutとstderrが定義されているのがおもしろい。ラムダ式の実現とかかなりおもしろいことも、ブラウザ内で手軽にできてしまう。
うーん、今の子はめぐまれているよなー。うちが、中高生の頃はJavaScriptはまだまだで、ここまで手軽にプログラミングに触れることはできなかった。

えびちゃん (LiveCoding#5いってきた)

ONEProxyのプラグイン実装。これは僕も、解説者として参加しました。
ZEROProxyの強化版であるところのONEProxyのプラグインの開発です。ZEROProxyはhttpを純粋に中継しているだけだけど、ONEProxyではW-ZERO3内部の情報も利用することが可能になるようです。今回は、W-ZERO3のToDoを取り出してiPod touchで表示するというデモでした。
やはり、強力だと感じたのはVisualStudioのコード補完やデバッグ機能。抽象クラスを継承すると実装が必要なメソッドのスケルトンが自動で作成されたりします。便利すぎる。
このプログラムはW-ZERO3上で動作するものだったのですが、VisualStudioでは、なんと実機を使った上でデバッグ実行が可能なのです。W-ZEOR3上でうごくプログラムに対してブレークポイントを指定したり、ステップイン実行したり。やるな、マイクロソフト。
最後には、文字化けはしていたもののなんとか動作していてよかったです。

というわけで、

だーっと感想を書いてみました。このほかにも、休憩時間なんかにもいろんな人とおはなしができました。ほんとに楽しい時間でしたね。もっと、いろんな人と会ってみたいなぁ。

こういうイベントをものすごい勢いで開催してくれているujihisa++。彼は、関西勉強会の牽引役といえそうである。

会場を用意していただいた株式会社グッデイさん、スタッフのみなさん、ujihisaさんどうもありがとうございました!