LiveCoding #11

昨日見物人として参加してきたLiveCoding #11のメモ。

Node.js + Twitter API + jpg.to + 画像アップロードアプリ

@hakobeさんによるライブコーディング。

Twitterのタイムラインから#livecoding11というハッシュタグのついたツイートを拾い出し、そこに含まれている言葉をjpg.toというサイトに投げて、それが返した画像のURLをNode.jsで作られた画像投稿アプリ?に追加する、というもの。 jpg.toというサイトは、例えばhttp://hoge.jpg.to/というURLにアクセスすると、"hoge"に関する画像を返す。

開発はタイムラインを取得するところと、そこから拾った言葉をjpg.toに投げる処理まではスムーズに進んでいたが、Node.jsでHTTPのPOSTリクエストを送るAPIがわからず、焦りなのか癖なのか、ドキュメントではなくソースを検索して使い方を調べるという行動に走り、時間を食われていた。

WebRTC

最近一般のChromeでも使えるようになったWebRTCを使って、Macのカメラから映像を取得してvideoタグに出す、というもの。 コードは合ってるっぽいのにvideoタグの中は真っ黒なままで、「なんでや、なんでや」と焦る状態が長く続き時間をロスする。結局、video要素のplay()メソッドを呼ぶ必要があった、というオチだった。

WebRTC + Canvas

@hitode909さんの飛び入りでのコーディング。

WebRTCを使っているのを見て思いついたのか、WebRTCを使って取得したカメラ映像から定期的に画像を取り出し、それをcanvas要素(でしたっけ?)に突っ込んではページに追加する、という内容。

飛び入りなので他の人の半分の時間という条件だったが、先に行われたWebRTCを使ったパフォーマンスでの失敗も参考になったのかあっさりとカメラ映像は表示できた。

その後も順調に開発は進み、0.1秒毎とかでサンプリングしてたのか猛烈な勢いでカメラ画像をページに挿入してブラウザのスクロールバーがみるみる縮んでいくプログラムを完成させた。 監視カメラに使えるらしいです。

タイピングが早かったのと、こまめにalert()を入れて動作確認をしつつ1ステップずつ確実に進めていくスタイルが印象的だった。

Common Lispでブログアプリ

@nitro_idiotさんによるCommon Lispを使ったブログアプリのライブコーディング。

Common Lispは昔ちょろっとかじっていたので懐かしさを覚える。 Common Lisp + Emacs + SLIMEという開発環境で、変更した関数とかだけを評価し直すと起動中のLisp処理系の挙動が即座に変わるってのは今見ても便利そうに思う。

開発では、自作らしいClackというWSGIやRack的なものをベースにWebアプリを作っていた。 途中、微妙に手こずりつつも記事を投稿できるところまで完成。

Emacs上でnilがφ、lambdaがΛと表示されていた。

Clojure + BukkitでMinecraftいじり

@ujmさんによるライブコーディング。

Minecraftというゲーム(?)の環境をいじることのできるBukkitというJavaライブラリを、Clojureから使ってなんかやります、という内容。 プレイヤーを無敵にしたり、敵を一撃で倒せるようにしたり、指定した位置に敵を出現させてみたりしてた。 ちょっとした神様気分を味わえる。

Lispなのにコードをjarにするためにコンパイルしたりするのが奇妙な感じ。 最初にuberjarでビルドした後は、ちょっと修正してはその変更がすぐにゲームに反映されてたような気がするけど、あれはどうやってたんだろう。

ところでMinecraftの8bit風3Dを見てたらペルソナ4のこの人を思い出した。

人が生でLispを書いてるのを見るのは今回がはじめてだったかもしれん。。