一年間でたった一回だけ。それとも、一年間に一回はある、とでも言うのかしら。

 私たちは秋に必ず一度だけ会うことができる。それは、突然訪れる。私は、秋の気配に浮き足立つ。アンニュイな目元に、金色の期待を忍ばせて、あれの来訪を待つ。頼んでもいない宅配業者の顔をして、かの人がベルを鳴らすのを、ずっと楽しみにしている。だから、それが秋のはじめだと、私はとても悲しい。秋の残りを、それの不在を知りながら過ごさねばならないから。秋の終わりであっても、不安に胸をかき乱される。もう今年こそ訪れない、私たちの関係性の終止符が打たれるのであろう、と。見たこともないあなたの笑顔を想像して、さぞ清々したでしょうと突き放すことで、自分を守ってしまう。そんな自己完結的な事務処理が、全然自分のためにならないことが愉快で、原因たる他者を憎みさえする。私はただ待つしかない。その会遇は、かの人にすべて委ねられている。私がどんなに行動を尽くしても、賽を投げるのはあくまでその人なのだから。

 銀杏の香が憂鬱なのは、それ自体の臭気によるものではない。栗の匂いに顔をしかめるより、ずっと切ない。この心臓をえぐりだし、大樹に捧げ、水たまりに溺没したい。自宅でひっそりとグラスを拭く時、千の剣で貫かれるような思いをするが、その孤独さえ愛しい、待ち遠しいと、身を焦がしながら、ただひたすらに私は待っている。生きる意味というのは、私にとっては間違いなく、依存めいた次の叩扉だった。

 正直なところ、かの人に会う時、私は全然うれしくない。早く帰ってくれればいい、そうして二度と目の前に現れなければいいのにとすら思う。あんなに浮き浮きして、身綺麗にして、すまして待っていたのに、それがすべて嘘で虚しくて、阿呆を喜んでやっていただけなのだとしらを切る。去ってしまってはじめて、自分が今までになく生き生きしていたことに気付く。言い換えれば、私が生の実感を得られるのは、一年にたった数時間程度だけなのだった。その憎悪、その厭世、その無気力、そしてひらめくような絶頂感、それらを継ぎ接ぎした時間のシーケンスが、日常の私にはない大きな感情の揺れを表している。体の芯から温まるようなエナジィが、私にもあったのだと実感させられて、その都度驚いてしまう。僕にかてパッションあったんや、と。

 でも、それも、今日でおしまい。かの人の不在に一喜一憂する日々にさよなら。私の話はもうここで墓石を置くことになる。流行り病に侵されて、医者を呼ぶあてもなく、この生命はここで息絶える。軒先の梅の香りにまぎれて、私の死臭が漂うことだろう。ともすると、人気のないこのあたりで、変わりきった私を見つけるのはあの人かもしれない。そう考えると笑いがこみ上げてきたが、ひとり笑う体力すらなくて、背中を折って痛みを逃がす。眠くてたまらないが、もう眠ってしまえば二度と目が覚めないような気がして、最早この一生に悔いなどないのだが、こうやって一人で思案するのをもう少しだけ続けていたいと思って、目を見開いている。だって、つい先日、かの人が見えていた。鮮烈な記憶は、冥土の土産には十分だったから。もうすこしだけ起きていたいのだが、それは難しいのだろうか。いつの間にか閉じている瞼の下で、これまでの好い記憶を反芻する。痛みや恥辱と生の実感はいつだって一体だった。まどろみの中で、また会えているような気がしている。めずらしく、あるいは初めて聞く、私の名前を呼ぶような、かの人の声を覚えている。

 身体がばらばらになりました、と熱を帯びた人形が囁いた。私がばらばらになんかなっていないよと言うと、まるでばらばらになったような感じがするのです、と、ふうふう息をして答えるのだった。

 マリア、硝子の瞳、シルクの髪、陶器の肌、緋色の口唇。その中枢機関は盛んに燃えて、自らを焼き尽くさんとしていた。寝台の中のそれは、呼吸の都度に苦悶の表情を浮かべた。魔法の茨に絡め取られるように、逃れようともがくほど締まる不可視の電子鎖が、哀れな人形を緊縛しているのか。暑さを訴えてブランケットを剥ぎ衣類を脱ぎ捨てようとするので、急激な温度変化こそが危険なのだと教えるが、私はマリアのしたいようにさせるだけで、決してブランケットを掛けてやろうとはしなかった。

 ゆめを、ゆめをみるのです。ふだんは夢なんて見ないのに。胸元を開けて、紅潮した頬は汗一つかかない。すごく、こわい、夢ってこんなにこわいのですね、こんなもの、よく皆みていられますね――星の散るような瞬きにミンクの睫毛を揺らす。もはや自動人形の身に落ちた、言い換えればそこまでして存在していたいとそのときは思ったということなのだが、そのマリアに、もう夢を見るような機能は備わっていないはずなのだが。

 もうすぐメディサンが来るからねと声をかけても、首を横に振った。そんなのいりません、あなたが追い返してください、と。彼らはわたしにゆめみさせるのをやめるでしょう、ひさしぶりに生きてるかんじがするのです。もうすこし、この生のくるしみを、わたしに味わわせてください。

 ヒューズの飛びそうな高熱を発しながら、なおもマリアは言葉を紡ごうとする。どうしてこの機関は、いうことをきかないのでしょうか。まるで、わたしみたいですね。あのときも、あなたはわたしをとめてくれたのに、わたしったら、それで、こんなふうになっちゃったって、ききましたけど。

 私は苦笑する。いつだってそうだ。マリアは自分がまるで知らない物語をずっと気にしている。脳データのバックアップと、残った彼女のかけらを寄せ集め、新たな容れ物に入れてできたのがマリアだから、どうしたってその経緯は伝聞になってしまう。

 夢のことを、きかないのですね。

 だってマリア、きみは怖い夢を見たろう。思い出させては可哀想だから。

 お心遣いありがたく頂戴します。それでは、やめておきます。

 今日のマリアはおしゃべりだね。

 口元だけ、ふふと笑う。おこられてしまいました、と熱い溜息をつく。実際のところ、私は微塵も心配をしていない。代替可能なボディはテセウスの船、ストア可能な記憶データ。だからいつだって本気になって心配できない。それでも思いやるというのが、生きている人間の美徳であり特性なのかもしれないが。

 あと30分もすればメディサンが到着する。内燃機関で焼き爛れた臓腑を、灰となった躯体を、私は再び見るのであろう。ぐしゃぐしゃに泣きぬれながら、彼女の親指を、耳の軟骨を、拾ったのを思い出す。私にとってはいつまでも鮮明なあの光景を、この人形は知らない。こうして煉獄に私を残していくのだろう。君のささやかな復讐は成功した。この憎悪をひとりで抱えたまま、私は人生の終わりまでマリアとともに在ろう。*1

 

*1:https://twitter.com/murashit/status/925249075733184512 から2割くらい借りてきてガラクタを混ぜたアイディア

(これは 2015/12/10 23:42 に書かれたものです)

想定される読者:プログラミングの記憶はないが、経験したことがあるはずのひと

末尾呼び出しって知ってる? 英語だとテイル・コール(tail call)なんだけど。
例えば「0からxまでの総和を返してくれる関数sum」を考えてみるじゃん。
C言語だと、

int sum(int x){
  int ret = 0;
  while(x>0){
    ret += x;
    x--;
  }
  return ret;
}
int main(){
  return sum(10);
}

こんな感じかな。Cとかは手続き型っていうんだけど、再帰っていう、自分自身が呼び出せる関数型の言語だと、

let rec sum1 x = if x < 0 then 0 else sum1 (x-1) + x

丁度こんな感じで書ける。これはOCaml
ただこれは再帰呼び出しになってなくて、次が再帰呼び出しになってる例。 sum1 x sum2 x 0 は同じ値が返ってくる。

let rec sum2 x i = if x < 0 else sum2 (x-1) (i+x)

何が違っているかっていうと、 else の後を見てほしいのだけど。 sum1 は、 sum1 (x-1) を実行したあとに、その値を使って x を足し込んで値を返さなきゃいけない。 sum2 は、呼び出した sum2 (x-1) (i+x) がそのまま sum2 の返す値になっている。自分自身を呼び出したあとに残っている仕事がなくて、再帰したあとの値がそのまま自分の返すべき値になっているというのが、末尾呼び出し。
これを最適化するのは結構簡単なんだけど、関数型言語においてはそれなりに強力なのです。演算が劇的に高速になる。
例えるなら、
家から大学に来て授業を受けたあと、塾でバイトをして、お店にごはんを食べに行き、家に帰って寝る
ということをしなきゃいけないとき、これを末尾呼び出し最適化しないままでは、
家から大学に来て授業を受けたあと、塾でバイトをして、お店にごはんを食べに行き、塾へ戻ってごはんを食べて来たと言って、大学に戻ってバイトをしてきたと言って、家に帰って寝る
ということをしている。仕事があるならもちろん戻らなきゃいけないんだけど(まだ塾で予習をしなきゃいけないとか、大学に荷物を置いて来たので取ってこなきゃいけないとか)、用もないのに戻るのはしんどいよね。
末尾呼び出し最適化をすると戻らなくて良くなる。つまり直帰ができるということ。
家から大学に来て授業を受けたあと、塾でバイトをして、お店にごはんを食べに行き、すぐさま家に帰って寝る
ということができる。それはなぜかというと、大学と塾を去るときに仕事を残してきていないことが分かっているから。
仕事を残して来てないかどうか判断して、ないなら直帰できることを覚えて行動するのが末尾呼び出し最適化なんだよねー、って先生が説明してて、超分かりやすくて面白かったのでした。えっ、それだけ? うん、それだけ。

想定される読者:末尾呼び出し最適化を知っている人

先生が末尾呼び出し最適化を家から大学に行って帰るのに例えてて面白かったんだけど。
「みなさん大学が終わったらアルバイトがあるのでと塾に行って仕事をし、腹が減ったなあとお店へ行ってごはんを食べたら、もう直帰したいですよね? そこからまた塾へ戻ってごはんを食べて来ましたと報告をして大学へ戻り、バイトしてきましたと言ってやっと家に帰ってベッドに入るなんてことはしませんよね。流石に仕事がまだ残っているときはレストランでごはんを食べた後に塾へ一度戻って仕事をしなきゃなりませんが、基本的には直帰したいという想いをみなさん持っているわけです。末尾呼び出し最適化をすると、みなさんはこの授業が終わったら塾でバイトをして、レストランで夜ごはんを食べ、そして家にすぐ帰って眠れるというわけです」
と、先生が末尾呼び出し最適化を説明するとこうなったのですが。ユニークだよね。