ふつーのプログラマです。主に企業内Webシステムの要件定義から保守まで何でもやってる、ふつーのプログラマです。

クリスマスキャロル (終)

»

 その夜、日付が変わる直前、ぼくはコメントを追記した。

/*
 返事を待ってます
 m.h
*/

 きっと君は来ない。翌朝、そんな気分でソースを開いたぼくは、e.k さんの返事が書き込まれていることを発見して小躍りしたくなった。内容を読んだとたん、その熱は一気に冷めてしまったが。

/*
 返事をしなくてごめんね。
 もうこの通信は止めにしよう。
 きっと理由を訊きたいんだろうね。でも話せない。
 話すと書いたのに、約束を破ってごめん。あんなことを書かなきゃよかった。
 そもそもm.hさんのコメントに私が応答しなきゃよかった。するべきじゃなかった。
 素敵な言葉、そう思った。
 脳の中がパッと明るくなったみたいだった。
 どうしてあんなこと書いたんだろう。
 無視したってよかったのに、つい返事を書かずにはいられなかった。
 とにかくもう終わりにしよう。私に言えるのはこれだけ。
 なんだか別れ話みたいになっちゃったね。
 e.k
*/

 みたい、ではなく、別れ話に他ならない。
 ぼくは納得できない思いを、そのままキーボードにぶつけた。

/*
 どういうこと? ちょっと一方的だと思うんだけど。
 せめて理由ぐらい教えてほしい。
 ぼくが何か気に障るようなことを言った? それなら謝るよ。
 それとも、ぼくたちが時間を超えて(この認識は間違ってないよね?)通信をやってることに関係があったりする?
 たとえば何かのパラドックスに引っかかりそうだとか。
 e.k さんの言うタイムリミットが、25日のことだとしたら、お互い、あと2 回しかやり取りできない。
 お願いします。
 m.h
*/

 ソースを保存したとき、藏見がわざわざ席を立ってぼくの横にやってきた。手にメモを持っている。
 「今、佐分利さんから電話があったぞ」藏見はメモを見ながら言った。「切り替えの件、どうなっていますか、と訊いてる。何か問題があるなら折り返し欲しいって」
 「ああ、すまん」
 急いで切り替える、と言ったにも関わらず、いまだに旧リポジトリを使っているので、わざわざ確認の電話をしてきたのだろう。申しわけなく思ったものの、まだ新リポジトリに切り替えるわけにはいかない事情があるのだ。
 「折り返しておく」
 「かなり立て込んでるみたいだな」藏見はメモを手の中で丸めながら、ぼくの顔を覗き込んだ。「疲れが溜まってるんじゃないか?」
 「いつものことだ」
 「何か手伝うか?」藏見の顔は心配そうだった。「佐分利の件、俺の方で対応してやろうか。早い方がいいんじゃないか?」
 「そっちもヒマじゃないだろ。気持ちだけもらっとく」
 「そうか。たまには日付が変わる前に帰れよ」
 ぼくは頷いたが、その言葉に従うつもりはなかった。今日は午前0 時を過ぎても会社に残っている予定だ。

 ◇ ◇ ◇ ◇ ◇

 山積している仕事を片付けながら、ぼくは何度も時間を確かめてその日を過ごした。日付が変わった瞬間、ぼくはソースを開いた。
 e.k さんからのコメントが追加されていた。今日のは素っ気なく感じるほど短い。

/*
 どうかわかって。そうできない理由があるの。m.h さんの認識が合ってるかどうかも含めて何も言えない。
 ひとつだけ言えるのは、これは私の一方的な都合なんかじゃなく、むしろm.h さんのためなんだよ。
 このまま自然消滅するのがお互いにとってベスト。
 私はそう思うんだ。
 e.k
*/

 ぼくはすぐに書き込んだ。

/*
 そこまで言うにはきっと理由があるんだろうね。
 もし、その理由というのが、この通信方法、つまりソースファイルを介してることにあるのなら、ぼくに一つ考えがある。
 e.k さんが2012 年にいるのなら、その11 年後の今だってきっとまだ生きている可能性が高いはず。
 だったらe.k さんを探し出す手段もきっとあるはず。このプロジェクトに参加していて、このソースを修正したことのあるプログラマ。おそらく日本人の女性。
 11 年後のe.k さんの居場所がわかったら、顔を合わせて話すことができる。一日に一回の通信ではなく、リアルタイムで会話ができる。
 どう思う?
 m.h
*/

 たぶんe.k さんを翻意させることはできないだろう。それはわかっていた。そして、その予想が当たっていたことは、翌日のコメントで明らかになった。

/*
 m.h さんの手間を省いてあげる。私を探しても無駄。見つけられない。
 これが最後のコメント追記になる。たぶんm.h さんはこの後に返信を書き込んでくれるんだろうけど、私がそれを読むことはないはず。知らない時間の中にいるんだから。
 お互い、このことは忘れよう。いえ、忘れることはできないよね。だったら、こんな不思議なことがあって、何日かの間、ソースを開くのが楽しみだったな、っていうさ、ちょっとした思い出に留めておこうよ。私だったらそうする。m.h さんも私の立場になったら、どうするか考えてみれば、おのずと答えはでるはず。
 m.h さんの気が楽になるなら言うけど、私もm.h さんに会ってみたかった。お酒でも飲みながら、何がどうなってるのか語り合いたかった。
 これは正直な気持ち。別にどうこうなろうって思ってるわけじゃない。m.h さんには奥さんがいる。私にも大切な人がいる。だよね?
 ただ、同じソースをコーディングしたプログラマ同士でしかわかり合えないことってあるよね? このソースだってマージソート使ってるけど、ここはヒープソートだよね、とかさ。
 今日はクリスマスイブ。m.h さんはどこでどんなイブを過ごすんだろうね。やっぱり仕事かな(笑)
 寒いと思ったら雪が降ってきた。やっぱりあなたと見たかったな。
 楽しい12 月だったね。さようなら。おそらくは永遠に。
 e.k
*/

 悩んだ末に、ぼくは短い返事を書き込んだ。

/*
 さようなら
 m.h
*/

 ◇ ◇ ◇ ◇ ◇

 翌朝、ぼくは旧リポジトリにアクセスしてみた。佐分利情報システムが仕事をしっかりやっていたことは、ネットワークエラー、という冷たいメッセージが証明していた。
 新リポジトリへの接続はスムーズだった。ぼくは躊躇いつつもソースを開いた。昨夜、ぼくが書き込んだコメントが最後になっている。e.k さんが宣言した通り何も追記しなかったのか、それとも追記はしてくれたが、リポジトリが切り替わったことによって、あの現象が発生しなくなったのか、どちらなのかはわからない。
 微かな期待があったことは確かだが、なるようになっただけだ、という諦念にも似た心境が大きかった。もうe.k さんとやり取りすることはない。いっそ全部なかったことにしてしまった方が、気持ちの整理になるのかもしれない。ぼくはノロノロとキーを押して、これまでのコメントを流し読みしながら、そんなことを考えていた。
 どれぐらいそうしていたのか。不意にコーヒーの香りに鼻孔をくすぐられて我に返った。藏見がぼくのカップを差し出していた。
 「おいおい、何、ぼーっとしてんだよ」藏見は笑いながら、カップをデスクの上にそっと置いた。「忘我の境地って顔だったぞ」
 「ああ、すまん」
 ぼくはありがたくコーヒーをすすったが、藏見の次の言葉で、それを噴き出しそうになった。
 「早くリポジトリを切り替えておけばよかったんだよ」
 「は?」
 「まあ、こっちでもモニタしてたから」藏見はぼくの反応など気にしていないようだった。「致命的なことを書き込んだりしたら、スパッと切り替えなきゃいかんところだった。そうならなくてよかった」
 「お前......何を言ってるんだ」
 「正直、会いに行くとか何とか書いたときは、ちょっとビビったんだ。もう少しで遮断するところだったんだぞ。そういう声もあったしな。俺が他の連中を何とか説得したんだ。感謝してもらいたいね」
 ぼくはまじまじと藏見の顔を注視した。モニタしてた? 他の連中?
 「24 日までやり取りを続けたかったんだろう? もともと、ルートが開いてしまったのはこっちの不手際と不幸な偶然が重なった結果だからな。その点は申しわけなかった」
 無数の疑問と質問が頭の中に次々とストックしていった。片っ端からぶつけたいところだったが、何を訊けばいいのか、訊いていいのかさっぱりわからなかった。
 「ま、一つだけ忠告しておくなら、このことは誰にも話さない方がいいぞ」
 「もし......」ぼくはやっと声を出した。「話したら?」
 藏見は面白そうに笑った。
 「客観的に考えてみろよ。全てのコメントを細川自身が書いたと思うのが普通じゃないか? そうじゃないと真面目に主張すれば、お前の頭がどうかしたんじゃないかと疑われるのがオチだよ。やめとけやめとけ」
 その言葉の正しさは認めざるを得なかった。この現象が再現しない以上、証明のしようがない。
 「さて、これで俺もお役御免だ」藏見は大きく伸びをした。「元気でな」
 そう言い残すと、ぼくの肩をポンと一つ叩いて、藏見はさっさとオフィスから出ていってしまった。コーヒーの香りだけが残されていた。
 今すぐカップを投げ捨て、藏見を追いかけたい衝動を、ぼくは懸命に抑えた。そんなことをしてもムダだ、という直感が脳裏に差し込んだからだ。常識的に考えれば、まだ廊下にいるはずなのだが、もう二度と藏見の顔を見ることはない、と理由のわからない確信があった。
 考えろ、考えろ。ぼくは好みの濃さに淹れられたコーヒーをすすった。プログラマらしく。考えろ。
 e.k さんは「そうできない理由がある」と書いた。その理由が、藏見――本名だとすればだが――の言う「他の連中」による干渉があったせいだとしたら? たとえば監視と警告、または脅迫......
 私の立場になったら、どうするか考えてみれば、おのずと答えはでるはず。
 同じ立場になったらどうするか? その問いに対する答えはすぐに出た。そんなに簡単に諦めたりしない。それぐらいで断念していたらプログラマは務まらない。
 ぼくはモニタに向き直ると、もう一度、e.k さんのコメントを読み返していった。何度も何度も。特に、一日の空白の後、22 日からの分を。
 「ん?」
 ぼくは思わず唸った。最初に読んだときは気付かなかったが、再読・熟読してみると少しばかり奇妙な点がある。
 最後のコメントで、e.k さんはソートアルゴリズムのことを書いている。確かにソースにはマージソートを使っている部分があったはずだ。ぼくは検索をかけた。2200 行付近から、そのメソッドが始まっている。
 ロジックを追ってみたが、特にヒープソートにすべき理由は見当たらなかった。マージソートは元のメモリ領域と同量のメモリを必要とするが、このメソッドに放り込まれるデータ量は大した量ではない。書き換えできないことはないが、テストの手間を考えたら、そこまでのメリットはない。
 単にプログラマ同士で通じる話の例として書いただけかもしれない。だが、これまでのやり取りで、ソースそのものに対する話題が出たことはない。それを考えると唐突な気もする。ぼくはもう一度、メソッドを見直した。
 メソッド名はプロジェクト規程の命名になっていて、特に不自然な点はない。メソッドの前には、JavaDoc 形式でメソッドコメントが記述されているが、内容も規定通りだ。
 何度か見直したものの、何か秘密のメッセージが隠されているというようなこともなさそうだった。いくつか単一行コメントが入れてあるが、処理の内容や、変数の説明ばかりで、そのままの意味でしかなかった。e.k さんが何か意味をこめたわけではなかったのだろうか。
 ぼくは再びコメントに戻った。
 そもそもm.hさんのコメントに私が応答しなきゃよかった。するべきじゃなかった。
 素敵な言葉、そう思った。
 一番最初に、e.k さんが書いたコメントにも、「素敵な言葉」という文字列があった。ぼくは自分の書いたコメントを思い出して苦笑した。あれが自分の言葉だったらよかったのだが。J-POP の歌詞から拝借しただけで......
 「え?」
 ぼくはe.k さんの最後のコメントの中に出現している、いくつかの言葉に気付いた。
 知らない時間の中にいるんだから
 やっぱりあなたと見たかったな
 急いでブラウザを立ち上げると、歌詞を検索した。
 貴方は私の知らない時間の中にいる
 この降り積もる雪はやっぱり貴方と見たかったな
 偶然だろうか? そんなはずはない。ここまで歌詞と一致しているとなると、偶然で片付けるには賭けが成立しないぐらい確率が低すぎる。
 しかし......
 「どうして」ぼくは茫然と呟いた。「この歌を......」
 この曲がリリースされたのは、2020 年の冬だ。2012 年のe.k さんが知っているはずがない。e.k さんに未来を予知する能力が備わっているのでない限り。
 もしかすると本当にそんな能力を持っているのか?
 よし、e.k さんがこの曲を知っていると仮定し、その前提でもう一度コメントを見直してみよう。
 歌詞と比較しながら、コメントを丹念に読んでいったが、見つけられたのは、やはり最後のコメントに含まれる二箇所だけだ。最後の最後で、おそらくは監視の目をくぐり抜けて、ぼくにメッセージを届けた、と考えていいんだろうか。
 念のためにもう一度、コメントを読み返した。何かが引っ掛かる。
 素敵な言葉......
 ここに何かある気がする。バグがあるのはわかっているのに、見つからない。そんな感覚が走る。以前、東海林さんに言われたことを思い出す。ソースにはプログラムの全てが含まれている。要件も仕様もビジネスロジックもバグも。行き詰まったときは、常に基本に戻って見直すこと。変数の宣言位置、ループの境界値。ときにはたった一文字が、大きな不具合の元凶となりうる。
 すてきな......
 「え?」ぼくは思わず声を上げた。「まさか」
 素敵な......
 脳の中が......
 どうして......
 無視したって......
 先頭の一文字をつなげると「すのどむ」となる。もちろん、これだけでは意味のない文字だが、例の歌詞を知っていれば話は別だ。
 スノードーム。主題歌になったドラマの中で、スノードームが一種のキーアイテムとして使われていた記憶がある。歌詞もそれにリンクさせたのかもしれない。とにかく、これは偶然とは思えない。
 e.k さんは、この歌を知っている、とぼくに伝えたかった。最初に「何かの引用?」と書いていたから、聞いたことはなかったのかもしれないが、少なくとも歌詞を検索できる環境にいる。
 これが意味するのは一つだけだ。
 ぼくは自分がいかに間抜けだったかを思い知った。
 未来にいたのはぼくではない。e.k さんの方だ。
 24 年だとe.k さんは書いていた。てっきり平成24 年のことだと思ったが......西暦かもしれないし、異なる元号なのかもしれない。
 ぼくは急いで新しいjava ファイルを作成し、2024 年以降で12 月22 日が土曜日になっている年の一覧を表示するプログラムを書いた。とりあえず2124 年までにして実行する。2124 年までにしたのは、ソフトウェアは作り手の想像以上に長く使われることがあるとはいえ、そこまで長い寿命を持つとは思えないからだ。
 実行結果によれば、直近だと2029 年で最後は2114 年だ。つまりe.k さんの言う24 年は2024 年のことではないし、2124 年でもない。おそらく異なる元号の24 年なのだろう。だとすると、少なくとも2047 年以降になる。2047 年より後で、12 月22 日が土曜日の年は2057、2063、2068、2074、2085、2091、2096、2103、2108、2114 だ。このどれかが、e.k さんがコーディングをしている――することになる――年だ。当時――というのも妙な表現だが、他に何と言えばいいのか――28 才のe.k さんは、どの年であっても、2023 年現在ではまだ生まれてもいない。
 e.k さんは、ぼくが2023 年だと書いたとたんに、やり取りをやめようと言い出した。不用意な一言で、過去を変えてしまうことを防ぐためだ。もしくは、藏見の仲間とやらに強制されたのかもしれないが。それでも、ヒントをコメントにまぎれこませた。ぼくが気付くだろうことを願って。
 「e.k さん」ぼくは呟いた。「ちゃんと気付いたよ」

 ◇ ◇ ◇ ◇ ◇

 クリスマスでも、平日の月曜日であることには変わりがなく、やるべき作業が途切れることはなかった。ぼくはタスクの消化に追われたが、頭の片隅にはe.k さんの最後のメッセージがずっと残っていた。
 藏見はあれっきり姿を見せなかった。いつのまにかデスクから私物らしきものが消えていた。庶務の人に聞くと、今日から年内は有給休暇となっているとのことだった。担当していた作業は全て完了済みとなっている。ずっと前からの予定だったらしい。年明けからはカレンダー通りの出勤予定だが、ぼくは信じなかった。どうせ近々、退職届が送られてくるに決まっている。
 遅い昼休み、ぼくは例のソースを開いた。ソートアルゴリズムのメソッドを最後にもう一度確認しておきたかった。チキンカツ弁当を食べながら子細に検証したが、やはり特別な点は発見できなかった。変数を全てコピーして、いろいろ並び替えてみたが、意味のある言葉を見出す試みは失敗に終わった。
 やっぱり何もないのか。ソースを閉じようとしたぼくは、ふとメソッドコメントに目を留めた。正確にはその1 行上だ。単一行コメントが記述されている。

//← i

 このソースには、ぼくとe.k さん以外にも、何人かのプログラマの手が入っている。コメントも多い。普通なら、この単一行コメントは、誰かの消し忘れか、TODO か何かだと考えただろう。ただ、それならもう少し情報量が多くてもいいのではないだろうか。左矢印とアルファベットのi 一文字だけ。i はループで慣習的に使われる変数名だが、それだけでは何を示しているのかわからない。書いたプログラマが、自分にだけわかればいい、というつもりで書いたのかもしれないが......
 i か。ぼくはチキンを咀嚼しながら、ぼんやりと考えた。日本語として読むなら、真っ先に思い浮かぶのは「愛」だが一文字だけあるのは変だ。単一行コメントを表すスラッシュ2 つと組み合わせると意味ある文言になるのかな......
 あれこれ考えてみたが、何も閃いてはくれなかった。ため息をついてソースを閉じようとした瞬間、行番号が目に入った。
 2194 行。
 2194 //← i
 そうか。
 ←がi を行番号の前に移動させろ、という意味だとしたら。
 i 2194。日本語にすると......
 「会いにいくよ......」
 間違いない。e.k さんからの最後のメッセージだ。
 ぼくは心地よい暖かさに包まれたような気分で、ソースファイルを閉じた。未来のいつかの時点で、e.k さんが会いに来てくれることを、ぼくは微塵も疑わなかった。もっとも一番近い2057 年だとしても、ぼくはもう70 過ぎなのだが。その年まで死ねない理由ができた、ということだ。
 気付かないうちに、例のJ-POP を口ずさんでいた。ぼくはこの歌を頭に刻みつけるだろう。e.k さんと出会ったとき――再会したとき、と言うべきか――に、たとえ記憶があやふやになっていたとしても、フレーズを耳にすれば全てが鮮やかに蘇るように。ぼくの生涯のクリスマスキャロルだ。

 (了)

 ごぶさたしております。今年もクリスマス短編を書かせてもらいました。ここ数年、クリスマス短編の主役だったイノウーは、今回お休み(といってもちょっとだけ顔を出しますが)で、久しぶりに細川くんに登場願いました。
 コロナがようやく落ち着いてきたというのに、世界では戦争という愚かな行為が続いていますね。互いに主義主張やら何やらで譲れないところはあるんでしょうが、もうちょっと理性的に会話で何とかできんものか、と平和を愛する一市民としては願います。私事ですが、去年、家族が一人増えたことで、なおさら平和を希求する思いが強くなっています。
 しばらく育児と仕事で多忙となり、次の話の準備に取りかかれませんが、いずれ落ち着いたら再開したいと考えています。
 それでは、みなさん、良いお年を。
 リーベルG

Comment(10)

コメント

匿名

素敵なプレゼントをありがとうございました。良い朝になりました。良いクリスマスをお過ごしください。

部長

メリークリスマス

kaz

面白かったです。
e.k の答え合わせ回も是非是非

匿名

逆だったのか。やられた。
藏見ってアの人なのかしら。

匿名

重箱の隅で恐縮ですが、e.k さんの最後のメッセージ。
「私だったらそうする。m.k さんも私の立場になったら、どうするか考えてみれば、おのずと答えはでるはず。」
m.h さんですね。
よろしくお願いします。

匿名

ここ数年来で一番平和なクリスマスでしたね。
裏で東海林さんは戦ってる気がしますが。

匿名

すごいいい作品ですね。
ITとか関係なく。

リーベルG

匿名さん、ご指摘ありがとうございました。
「m.h さん」でした。

匿名

頑張れお父さん!!
次回作のんびり待ってます

RM

こちらも素敵でした。次回作も楽しみにしています。

コメントを投稿する