gauche.nightとプログラミングGauche

今日は[gauche.night|http://practical-scheme.net/wiliki/wiliki.cgi?gauche.night]に行ってきた。

3/14発売の[プログラミングGauche|http://www.oreilly.co.jp/books/9784873113487/]を先行販売していたので購入。
最後のページのタイトルが間違っていて訂正シールが張られているレア物だ。

最初にプログラミングGaucheの本ができるまでについて、川合さんやオライリーの中の人などのお話。はじめはHacksシリーズにすることも考えられていたらしい。でもえんどう氏からの「動物の表紙にしたい」オーラを感じて今の形になったようだ。

第一部は「R6RSを斬る」ということでScheme界隈の人たちによる座談会。一部Schemeあまり関係ない人もいる感じも。
内容は...Scheme初心者には正直難しくてよくわからんかった。とりあえず批判的な人が多かった。理由の詳細はよく理解できなかったが、要は理論的なバックグラウンドが弱くなってAlgorithmicでなくなってしまった、ということらしい。表紙にAlgorithmic Language Schemeと書いてあるとおり、AlgorithmicであることはSchemeの根本であるのにそれをなくしてどうするのかと。
実際、R6RS策定途中に多くの人が抜けてしまったらしい。その中のある人が「もう君らの好きにしてくれればいいけど、とにかくそれをSchemeと名乗ってくれるな」と言って抜けてしまった、なんて話も出ていた。

第二部はデモ大会gauche.gong。一人5分でデモをやっていくという、ライトニングトーク的なもの。5分経つと強制的に打ち切られて画面も切り替えられてしまうというなかなかシビアなもの。中にはデモをできなかった人もいた。あの形式のときはなるべく先にデモを持ってきた方がいいかも。

個人的に面白いと思ったのは鹿野桂一郎氏の発表。オーム社の人らしい。なんと社内の編集ツールとしてGaucheで作ったアプリケーションを使っているとのこと。本の内容が20MBくらいのS式になっているんだとか。てかそれ人が打ち込むんですか?5分しかないので細かいワークフローの話はなかったけどちょっと気になる。

会場でメモしてたわけではないのであとはなんとなく覚えている範囲で。

そうだ Scheme もどきを作ってみよう!
Schemeの初心者がScheme処理系を作った話。JavaScript上に作り、JavaScriptと連携可能。
Gaucheで誤植共有
Gaucheを使ったWebアプリケーション。誤植を共有する、という発想がなかなかアレゲだ。
Cyber Earth
Google Earth電子国土を連携させるツールらしい。Google Earthはちょっと田舎の方だと高精細な地図がないため、それを国土地理院提供の地図で補う、というもののようだ。時間切れでデモが見れなかったのが残念。
Gaucheで作るPIC電子工作
電子工作のプログラムにSchemeを使ってみたらしい。Schemeで求めた最大公約数をLEDに表示していた。といっても答えが3ならランプを3回点滅するというアレゲなもの。

本人からコメントを頂きました。ちゃんと2進数(0011)で表示していたそうです。

Gauche on Rails
Ruby on RailsGauche版。Todo管理アプリケーションを作るデモもやっていた。
OldType
Emacsやviがないと生きていけないOldTypeな人向けのWikiエンジン。データをSubversionで管理していて、ブラウザがなくてもテキストエディタ+svn commitで更新できるらしい。確かにブラウザ上で書いていてうっかり戻るボタンを押しちゃったりする泣けるから結構いいかも、とか考えていたらどこら辺がSchemeと関係あるのか忘れてしまった。
PHPGaucheの夢を見るか?
PHPからGaucheを呼び出す機能を作ったそうだ。Gaucheを呼び出すことよりもPHPのこき下ろしっぷりの方が記憶に残っている。
BiwaSchemeでAjax&Comet
JavaScriptで作ったScheme処理系。Prototype.jsっぽい機能もあって、Ajax的なことが簡単にできる。
glint - Gauche用コードチェックツール
Schemeのコードを解析してバグを見つけるツールGauche本体とKafuaに対して使ってみたらそれぞれ5個のバグを見つけたとのこと。
ステップ実行eval
evalを細かく制御するものらしい。無限ループするようなものをevalすると当然抜け出せなくなるが、それを「10000ステップ実行したら終わる」などとできる。デモでは二つのスクリプト同士を戦わせる、というゲームっぽいものをやっていた。