Kahuaプロジェクトのメインプログラマだけど最近はサボり気味。Schemeと歌と変拍子が大好き。野良育ちなので高水準の話は苦手。もっぱら高水準のインタフェースを安定させるべく、低水準の泥臭いところをねちねちと改良し続けている。
Gaucheの他には、Firebird RDBMSについても少しばかり。メジャーなものは好まないが、かと言ってドマイナーなものを使うほどの根性はない。結果として、概ね"第三の選択肢"を選ぶことになる。NetBSDしかりFirebirdしかり。でもGaucheは第五の選択肢(Perl、Python、Ruby、PHPの次)かな。
最近はランニング(特にトレイルランニング)にどっぷりとハマっていて、ここもほとんどランニング日記と化している。2008年は4戦(トレイル×3+ロード×1)走って全て完走。
2009年のレース結果
(2009/10/04 07:44:20 PDT): 参加してきた。命からがらという体たらくだったが、何とか完走した。結局、道志村以降トレーニングらしいトレーニングを全くしていなかったことを考えるとほとんど奇跡と言える。もちろん、それなりに知恵はついてきているから、今回はタイムリミットぎりぎりでの完走狙いに絞ったレースをした。
概ねうまくいった。おかげで、去年より10分ほどタイムは悪かったが、ダメージは少なめ(と言っても決定的にトレーニング不足だから推して知るべしだが)。去年は新宿で長距離バスを降りたらまともに歩けず、新宿からうちまでタクシーを使ったのだが、今年は普通に新幹線を使って帰ってこられた。まぁ、明日以降どうなるかわかったものではない。
それにしても、今回のレースは最高の天気に恵まれた。スタミナが落ち切っていることもあって、登りは死んだ方がマシと思えるほどキツかったが、リタイヤすることは脳裏を掠めもしなかった。途中で止めるなんてもったいなくて。だから、とにかく足切りを喰らわないように、関門の通過時間だけは死守すべく、動かない身体に鞭を打ったのだった。もはや、完全に健康のためではなく、身を削る趣味になってしまった。
追記(2009/10/04 23:01:02 PDT): リザルト出た。見事な低空飛行っぷり。でもこのレースは、完走することが大事だったのだ。ここのところ、ちょっとモチベーションも下がってたし、棄権癖がつき始めてたから。今年のレースはこれで打ち止め。来年からは、参加レースを絞り込んで、もっときちんと準備をしたいと思う。
(2009/07/05 19:21:34 PDT): 道志村以降、公私にいろいろあってほとんどトレーニングができず(言い訳)、すっかり忘れていた前泊の手配がうまくいかなかったことですっかりモチベーションが落ちてしまい、あえなくDNS。棄権癖がついちゃったみたいで、よくないなぁ。興味の対象が激しく音楽に向かっているのも一因だろう。2つ以上のことに同時に打ち込めない性格なのだな。
(2009/05/31 08:51:00 PDT): 現在ハンブルグ在住の友人を訪ねてドイツに来ている(現在はベルリンに滞在)。基本的に家族サービス的観光旅行なのだが、今回は斑尾の申込開始日と旅行日程がばっちりと重なってしまったため、runnet.jp経由での申込のためだけにMacBook Pro 17インチを持って来た。申し込み開始の6/1 0:00(JST)は、ベルリン時間で5/31 17:00。観光スケジュールを途中で抜けてホテルに戻り、部屋の有線インターネット接続サービスを使おうとするも、なぜかリンクすら上がらず、接続できない。サポートに電話し、壊れた英語で何とかしろと喚くものの全く埒があかない。申込の時刻は刻一刻迫る。仕方がないので日本語で捨て台詞を吐いて電話を切り、無線LANサービスを使うべくロビーに下りる。部屋では無線LANが使えないというのがまた怒りに油を注ぐ。よくあるWebベースの申込画面でクレジットカード番号を入力して24h/18€という馬鹿高いサービスを買って接続。これはすんなり。部屋のトラブルはどう見てもハードウェアトラブルだから当たり前と言えば当たり前。で、勇んでrunnet.jpにつなぐも、今度は全く応答がない。去年の斑尾申込の時もそうだったが、runnet.jpは負荷に弱く、ちょっと人気の大会の申込日はいつもこの状態になるのだ。画面に向かって「PHPなんか使って作るからだこの○○○○」と罵り声を上げている東アジア人は、ホテルのロビーで相当顰蹙を買っていただろうな。結局20分以上かかって申込完了。今年も無事申し込むことができた。信越五岳と両立できるかどうか極めて怪しいが、あの素晴らしいコースを今年も走れるのはうれしい限り。
(2009/05/21 20:21:31 PDT): 道志村トレイルレース屈辱のDNFにもめげず、信越五岳100kmトレイルレースに参加申込してしまった。はい、全然懲りてません。今度は相当気合いを入れてトレーニングを積まないと絶対に完走できないことがわかっているので、きっとトレーニングにも身が入るだろうという目論みもある。制限時間22時間というロングレースなので、ナイトランの練習もどっかでしなきゃならんな。ひとりで練習するのはなかなか難しいところなのだが(夜間山行の経験はないことはないが走りはしなかった)、どこかでナイトランのセッションないかな。
(2009/05/17 22:04:33 PDT): 人生初DNF。一応第一関門タイムオーバーだが、関門の5km手前で気持ちが折れていたので、実質的には途中棄権と言っていい。距離と累積高度、設定タイムから見て、北丹沢よりは楽なのだろうと高をくくっていたのが第1の敗因。1度でも試走してればそういう思い違いもなかったろうが、アクセスが悪いせいもあって試走をサボったのが第2の敗因。他にも山のように挙げられるが、要は力不足、準備不足ということですな。それにしてもとんでもないコース設定だった。高低差は大したことなさそうに見えるんだが、これがすごい斜度の直登の連続。しかも小ピークの連続で、せっかく稼いだ高度を激下りであっという間に吐き出してまた登り。これが延々と続く。しかもミゾレ混じりの雨と強風で気力体力はがんがん削られる。路面はぐちゃぐちゃ、埋まった木の根や岩が全く見えないおかげで足は取られるわ滑るわ。2回ほど派手にすっこけた。激下りでスリップすると、止まらんのよ。大けがしなくてよかった。
率直に言って歯が立たなかった。タイムオーバーでゴール地点に護送されてきたら、もう先頭の選手はゴールしてた。同じ人類とは思えない。来年の開催も確定したようだが、かなり性根を据えて鍛え直さないと、今度こそ怪我をするんじゃなかろうかと思う。
(2009/05/15 06:23:10 PDT): ということで、明後日は道志村トレイルレース。明日日中に現地入りの予定。何しろ車のない人だからして、現地に入るのが大変なのよ。土日はバスすらもないということで、都留市駅からタクシーというお大尽ぶり。これで当日雨だったら泣くなぁ、と思ったら雨時々曇りらしい。丹沢もそうだが、道志の山というのも、この季節雨が降ると蛭地獄になる。さすがに走ってる時は大丈夫だろうが(それでも、上から降って来る可能性はある)、立ち止まろうものなら、地面から湧いて出て来るからね。もう10年以上前の梅雨時、西丹沢の箒沢から、今はダムに沈んだ宮ヶ瀬まで雨の中を縦走した時、登山口を出て振り返ったら「ヒルに注意」という看板が立ってた。慌てて身体中を調べたら、100匹以上も蛭がたかってて、何匹かは雨合羽の下に潜り込んでいた。いまだにあれを思い出すと肌が粟立つ。
(define-class <ungettable-input-port> (<virtual-input-port>) ((ungetc :init-keyword :ungetc))) (define (open-ungettable-input-port input) (let ((src input) (ungotten '())) (define (getb) (read-byte src)) (define (getc) (if (null? ungotten) (read-char src) (pop! ungotten))) (define (ready c?) (cond ((pair? ungotten) #t) (c? (char-ready? src)) (else (byte-ready? src)))) (define (close) (set! ungotten '()) (close-input-port src)) (define (ungetc c) (with-port-locking src (lambda () (push! ungotten c) (undefined)))) (make <ungettable-input-port> :getb getb :getc getc :ready ready :close close :ungetc ungetc))) (define-method unread-char (c . input) ((slot-ref (get-optional input (current-input-port)) 'ungetc) c))
chatonのGuache部屋でのShiroさんとの会話に触発されてちょっと書いてみた、これ以上ないくらい素朴な実装。無限にpush backできるのは<char>のみ。文字とbyteをまぜこぜにpush backしちゃうといきなり話がややこしくなるから(破綻するとも言う)。
(2009/05/12 06:26:12 PDT): ちょっと修正。unread-charは標準的な仮想ポートの枠組みとは違うAPIなので、ポートのロックは自動的には行われない。だから、push backした文字を保持するバッファに競合が発生する恐れがある。内部で保持している入力ポートをmutexがわりにロックしてみた。
(2009/05/12 09:30:44 PDT): さらに修正。実は、getbスロットを設定しない状態でこのポートにcall-with-input-conversionをかぶせると化けるor入力エラーになる。考えてみれば、getcしかない状態では、read-byteされた時、元の入力エンコーディングでread-charしたのをbyteに分割して返しているのだから、あったり前の話だ。だけど、上記の手抜き実装だと、unread-charした直後にバイナリ読み込みすると、push backした文字は無視されてしまう。やっぱり、真面目に実装しないと使い物にならないね。
(2009/03/01 23:28:02 PST): ふと気がついたらもう北丹沢の申し込みが始まっていたので、慌てて申し込み。今年はウェイブスタートのルールが変わって、39歳以下男子先行ではなく、昨年完走者及びフルマラソンの持ちタイム上位者が先行することになったそうな。なので手続き上間違いがなければ先行スタートできる。確かに、40歳以上だろうが女性だろうが、速い人はとてつもなく速いわけで、妥当なルールだと思う。
ただ、この方式が広がると、初めての大会ではやっぱりフルマラソンの持ちタイムがモノをいう。やっぱり1本走っとくべきだったかなぁ。この冬はもう遅いけど、今年のトレイルシーズンが終わったら1本参加することにしよう。でも、トレイル用の練習ばかりすると、ロードが遅くなるんだよね。
(2009/03/01 20:56:50 PST): Shibuya.lispテクニカルトーク#2に参加してきた。遅ればせながら出演者、スタッフの皆様お疲れ様でした。最近こういうイベントに参加するのが本当に億劫になってしまってめったに顔を出さないのだけど、ひさしぶりに楽しめました。懇親会ではYpsilonの藤田さんと同じテーブルで楽しい話(リアルピンボールにおける裏技とか)が聞けたしね。あと、日本人がScheme Guruになるには「ひげとCG」がポイントだとわかりました(笑)。higeponさん、ひげだけじゃ足りないみたいだよ。
んで、次回の予定が未確定ながら7/4なんだそうで。その日は北丹沢の前日で、さすがに参加は難しい。できれば7/11のセンで是非(とか言ってみよう)。
(2009/02/22 19:28:14 PST): 人生初DNS(Did Not Start)。脚の大事を取ったのと、外せない契約ごとがあったので決断した。あんまり気分のいいものじゃない。どうやらオリエンテーリングがらみのものらしくて、計測システムがちょっと変わっていて楽しみだったのだが、残念だ。
次は5/17の道志村トレイルレース。道志山塊は友人とハイキングしたことがあるくらいだがいい山だ。今度はちゃんとトレーニングを積んで、最後まで故障なく走りたいもんだ。
(2009/02/09 23:17:20 PST): 今年の初レースとして参戦、何とか完走した。速報掲示も見ず(そもそもあったのか?)にとっととホテルに引き揚げてしまったし、オフィシャルリザルトもまだなので何とも言えないが、7時間3分40秒くらいで、130位/175人(出走)といったところ。35kmあたりまでは、トレーニング不足の割にはいい感じでいけて、これなら6時間30分くらいかと思ったら、そこから左足首とスネが痛み出し、あとはほとんどレースにならなかった。やっぱりトレーニングは嘘をつかないってことですな。それでもだましだまし完走できたあたり、妙な危機対応能力だけが磨かれているような気がしてならない(笑)。
で、その晩は左足の痛みがひどくてほとんど眠れず、今日いつもの先生に見てもらうと、足首の腱鞘炎とスネの肉離れ、ひょっとすると疲労骨折もあるかも、という話。今は腫れがひどくておそらくレントゲン写真では写らないだろうから、土曜日あたりに撮ってもらえ、だそうな。レースでここまでひどい故障は初めてだ。これで九分九厘、2/22のレースはDNSだね。
追記(2009/02/16 00:08:12 PST): オフィシャルリザルト出た。7時間3分38秒(126位(総合)/173人(完走))。かなり後ろの方だ。悔しいけどこれが現在の実力ということで納得せざるを得ない。せめて7時間は切りたかったんだけどな。なお、左足は順調に回復してて疲労骨折もなかった。例の先生からは「トカゲ並みの再生力」とお墨付きをもらったんだが、諸般の事情により、やはり22日の鎌倉アルプス・トレイルラン大会はDNSが確定した。