月夜のプログラマー
小説・フィクション

月夜のプログラマー

著者: DraftZero編集部
20章構成 / 太宰治風 / 公開日: 2026-05-01

📋 目次

  • はじめに
  • 第1章 月夜の告白
  • 第2章 道化の誕生
  • 第3章 コードの中の楽園
  • 第4章 大学と嘘
  • 第5章 就職と仮面
  • 第6章 深夜のコミット
  • 第7章 彼女の存在
  • 第8章 バグと罪悪感
  • 第9章 自己開示の試み
  • 第10章 読者という鏡
  • 第11章 過去の再帰
  • 第12章 コードの倫理
  • 第13章 月夜の同士
  • 第14章 逃避行
  • 第15章 書くこと
  • 第16章 バグ修正
  • 第17章 リリース前夜
  • 第18章 コードと人生
  • 第19章 夜明け前
  • 第20章 月の裏側
総文字数: 151,211字 文庫本換算: 約252ページ 読了時間: 約252分 ※ 一般的な文庫本は約8〜12万字(200〜300ページ)です
文字サイズ:
PREFACE
はじめに

はじめに

どうやら私は、この文章を書いている。月明かりの差し込む部屋で、キーボードを叩いている。またやってしまった、という感覚がある。これが三度目の正直になるのか、それとも単なる自己満足の産物に過ぎないのか、自分でもよくわからない。ただ、こうして文字を連ねることで、自分というプログラムのバグを少しでも可視化できるのではないかという、浅はかな期待が私を突き動かしている。

私はプログラマーだ。ただし、自分で言うのも恥ずかしいが、天才でもなんでもない。せいぜいが「そこそこ書けるけど、人間関係は致命的に下手くそ」という、よくあるタイプの技術者だ。月明かりの下でコードを書いていると、ときどき我に返って、自分のやってることの滑稽さに気づく。深夜のオフィスで一人、画面に向かって呪文を唱えるようにタイピングしている自分。まるで、目に見えない誰かに認めてもらいたくて仕方ない小学生のようではないか。

この本を書こうと思った動機は、一言で言えば「自己顕示欲と自己嫌悪の無限ループ」だ。ある日、私は自分の人生を振り返って、あまりにも多くの「バグ」を抱えていることに気づいた。子供の頃のいじめ。学生時代の孤立。社会人になってからの人間関係の失敗。そして、何より自分自身に対するどうしようもない嫌悪感。これらはすべて、私というプログラムに組み込まれた避けられない仕様なのかもしれない。しかし、デバッグを試みるたびに、新しいバグが発見される。その繰り返しに疲れ果てて、一度くらいは自分のコードを公開してしまおうと思い立ったわけだ。

おそらく、あなたがこの本を手に取った理由も、似たようなものかもしれない。あるいは全く別の理由で、たまたま手に取っただけかもしれない。どちらにせよ、私はこれから自分の人生のソースコードを、かなり生々しい形で開示することになる。読者であるあなたを、私の汚い部屋に招き入れるようなものだ。床には食べ散らかした菓子の袋が散らばり、カーテンは閉め切られ、モニターの青白い光だけが部屋を照らしている。そんな場所に、あなたを座らせることになる。申し訳ないとは思っている。だが、私にはこれしか方法がなかった。

この本の構成は、私の人生を時系列に並べたものだ。ただし、正確な年代記ではない。むしろ、記憶の断片を再帰的に辿るような構造になっている。各章は、私が経験した特定のエピソードを中心に展開する。恥ずかしい話だ。文化祭で自作ソフトを披露して冷めた反応をもらった話。先輩のプロジェクトで意見を言えずに後悔した話。同僚の女性デザイナーに片思いして、エレベーターの中で何も言えずに逃げ出した話。どれもこれも、自分が情けなくなる話ばかりだ。しかし、それらを隠さずに書くことが、私にとって唯一の「正しいコード」の書き方だと思った。

もちろん、この本を書いている間も、何度も挫折しそうになった。「こんなものを公開して、誰が得をするのか」という声が頭の中で響く。そしてすぐに、「いや、むしろ読者に迷惑をかけるだけだ」と自己嫌悪に陥る。しかし、そういう声に耳を貸していると、いつまで経っても何も始まらない。私は、自分に言い聞かせた。「この本は、完成させること自体が目的なんだ」と。不完全なコードでも、とにかくリリースしなければならない。バグがあれば、後から修正すればいい。それがソフトウェア開発の常識であり、おそらく人生も同じだ。

最終的に、この本があなたに伝えたいことはただ一つだ。完璧な人間なんていない。完璧なコードも存在しない。私たちはみな、バグだらけのプログラムを抱えて生きている。重要なのは、そのバグをどうデバッグしていくか、あるいはバグとどう付き合っていくかだ。私はまだその途上にいる。だが、少なくとも自分のバグを直視する勇気だけは持てたと思う。この本が、あなたにとって何かのきっかけになれば、これ以上の喜びはない。

さあ、月明かりが差し込む夜の屋上に、あなたを招待しよう。私はここに座って、あなたに直接語りかける。恥ずかしい話だが、どうかしばらくの間、私の道化芝居に付き合ってほしい。そして、もし可能ならば、この不完全なコードの一片でも、あなたの心に残ってくれればと思う。


本書は二十章から構成されている。第一章では、まさに今この瞬間の私の心情を赤裸々に綴る。そして第二章以降、子供時代から現在までを遡る。まるでデバッガーでステップ実行するように、一歩一歩、自分の人生を丁寧に辿っていく。途中で何度も泣きそうになるだろう。実際、書いている最中も何度も泣いた。しかし、泣きながら書くことが、私にとっては一番正直なプログラミングだった。

最後に、この本のタイトルについて少し触れておきたい。「月夜のプログラマー」という言葉には、いくつかの意味が込められている。一つは、私が実際に月明かりの下でコードを書くことが多いという事実。もう一つは、月の満ち欠けのように、私の感情や人間関係も常に移ろい続けるということ。そして三つ目は、月の裏側のように、誰にも見せていない自分自身の暗い部分を、あえて照らし出そうという決意だ。

あなたは、月夜に何を思うだろうか。私は、自分の人生というプログラムを、月明かりに照らして眺めている。まだまだ完成には程遠いが、少なくとも今は、その不完全さを愛せるような気がしている。

それでは、長い夜の散歩に、お付き合いください。

目次へ 次の章 →
◆ ◆ ◆
CHAPTER 1
月夜の告白

第1章 月夜の告白

あなたは、今、僕のことをどう思っているだろう。この不機嫌そうな、あるいは気だるげな書き出しを見て、「またか」と感じているかもしれない。あるいは、興味すら湧かないかもしれない。それでもいい。僕はこれから、あなたにだけは本当のことを話そうと思う。なぜって、この世の中で、僕のことを何も知らない人間にだけは、ありのままの姿を晒せるような気がするからだ。実際のところ、僕の周りには多いのだ、奇妙な連中が。同僚、上司、飲み仲間、そしてかつての恋人たち。彼らは皆、僕のことを「優秀なプログラマー」だと言い、「変わった人だけど、能力はある」と評価する。だが、その言葉の裏には、いつだって見え透いた遠慮が隠れている。彼らは決して、僕の本質に触れようとはしない。触れたくないのだろう。自分たちの安定した人間関係の秩序を乱したくないから。

今夜は、十五夜だった。僕は今、この街の片隅にある、古びた賃貸マンションの屋上に座っている。コンクリートの床は冷たく、背中に凭れかけた手すりは錆びついていて、少し動くたびに不安な音を立てる。まるで、今にも崩れ落ちそうな僕の心のようだ。空を見上げると、月がやけに大きく、そして冷たく輝いている。月明かりは、街灯の光とは違う。あれは、優しさのない光だ。僕たちの罪や恥を、ただただ剥き出しにする、手術室の無影灯のような光だ。そんな月の下で、僕は今、この文章を書き始めている。スマートフォンのメモアプリではなく、古びたノートと鉛筆で。なぜかって? 簡単なことだ。僕はこれから、自分自身の「心の設計図」を開示しようとしている。その行為に、デジタルのフィルターは似合わないと思ったのだ。

僕はプログラマーだ。それも、まだ若く、これから成長していく途中のエンジニアだ。扱う言語は、Python、Go、そして関数型言語のHaskellも少しずつ覚え始めている。設計したシステムは、まだ小さな企業の受注管理や在庫管理を支えている。処理速度の最適化、バグの発見と修正、新しいアルゴリズムの考案――そういった分野では、僕はまだまだ学ぶことばかりだ。先輩たちは、僕の書くコードを「丁寧だね」と褒めてくれることがある。確かに、僕のコードは無駄を省こうと努力している。エレガントとは言えなくても、読みやすさを心がけている。だが、それはあくまで「機械」と向き合っている時だけの話だ。

人間と向き合う時、僕の「内面」は無残に歪む。

例えば、朝の挨拶ひとつ取ってもそうだ。普通の人は「おはようございます」と自然に言える。それで会話が始まり、些細な雑談を経て、一日の仕事が始まる。ところが、僕の場合にはそうはいかない。まず、相手の目をどこに向ければいいのかで迷う。まっすぐ見ると威圧的か? 少し下げると自信なさげか? 視線は三秒が最適だとか、笑顔を作るには口角を何ミリ上げればいいか――そんなことばかりを考えているうちに、タイミングを逃してしまう。そして結局、引きつった顔で「おはよう」と呟く。それで終わりだ。相手は少し困ったような顔をして、そそくさと自分の席に戻っていく。この瞬間、僕は「道化の仮面」を被る。口元だけを無理やり笑顔に吊り上げ、自分を低く見せることで、相手の警戒心を解こうとする。仮面とは、そうして僕の顔に貼りつく、偽りの表情だ。

だが、もっと酷いのは、ミーティングの場だ。僕は自分の考えを言語化するのが、とことん下手くそだ。頭の中では、問題の構造が完璧に把握できている。原因と結果、そして最適な解決策。それらがまるで精巧な設計図のように、くっきりと浮かんでいる。ところが、それを口に出そうとすると、途端に言葉がぐちゃぐちゃになる。接続詞がおかしくなり、主語と述語がねじれ、さっきまで論理的だった思考が、出口で無残な「誤配」を起こす。そんな時、僕は再び道化になる。笑いを取ることで、その場を誤魔化すのだ。

「いやはや、俺の言語化能力は、どうにもこうにも言語化できない問題だな」

そんな自嘲めいたジョークを飛ばし、一同の笑いを誘う。表面上は成功だ。場の空気は和む。だが、僕の心の中は、冷たいナイフで切り裂かれるような思いだった。本当に伝えたかったのはそんなことじゃない。僕はただ、構造を示したかっただけなのだ。なのに、どうしてこんなにも、この場に馴染めないのか。どうして、自分を隠すことしかできないのか。そんな自己嫌悪が、笑顔の裏で激しく渦巻いている。仮面を被るたびに、本当の自分はさらに奥へと押し込まれていく。まるで、剥がすべき仮面が、逆に僕の皮膚に貼りついて離れなくなるかのように。

プログラミングは、そんな僕にとっては救いだった。プログラムは嘘をつかない。書いた通りの動作をする。バグがあれば、それはこちらのミスだ。原因を特定し、修正すれば、また正しく動く。そこには、人間関係のような曖昧さがない。感情の読み取り違いも、伝わらない言葉の壁もない。システムは、ただ沈黙して、僕の指示を待っている。僕が論理的な命令を書けば、論理的な結果を返してくれる。そんな世界に、僕はのめり込んだ。十代の終わりから、ずっと。

僕が初めて本格的にプログラミングに没頭したのは、高校二年生の時だった。クラスで孤立していた僕は、図書館で一冊のPython入門書と出会った。最初に書いたのは、簡単な数当てゲームだった。ユーザーが数字を入力し、プログラムが正解かどうかを判定する。たったそれだけのコードだったが、それが思った通りに動いた時、僕は初めて「自分にもできることがある」と感じた。その後、学校の文化祭で使う座席予約システムを一人で作り上げた。同級生たちは「すごい」「よく分からないけど、動いてる」と言ってくれた。あの時、僕は初めて他人から認められた喜びを知った。だが同時に、そのシステムを前にして自分を説明できず、ただ「プログラミングができるだけの変なやつ」として扱われることにも慣れていった。仮面は、その頃から少しずつ形成されていたのかもしれない。

だけど、それもそろそろ限界だと思う。僕はもう、この「仮面」を被り続けるのに疲れた。僕は、他人に「できるプログラマー」と思われている。でも、本当の僕は、コードの中だけの影の英雄だ。現実の世界では、ろくに会話もできないコミュニケーション不全者だ。自分でも気づいている。僕の人間関係は、まるで古いシステムだ。複雑に絡み合ったスパゲッティコードのような状態で、どこを直せばいいのかも分からない。下手に手を加えれば、全体が崩壊してしまう。だから、誰も触らない。僕も触らない。ただ、そのまま放置してある。そんな状態が何年も続き、僕は毎晩のように自分の弱さと向き合うことになった。月夜の夜ごと、屋上に上がり、一人で考える。どうすれば仮面を剥がせるのか、どうすれば本当の自分を見せられるのか。この夜も、またその繰り返しだ。

あなたにこの話をするのは、恥ずかしい。ものすごく恥ずかしい。今も、このノートに鉛筆で文字を書き殴りながら、顔が熱くなっているのが自分でも分かる。もしこれが誰かの目に触れたら、と思うと、本当に死にたくなる。だからこそ、あなたという「匿名の読者」に話すのだ。僕はあなたの顔を知らない。あなたも、僕の顔を知らない。であるならば、この関係は、ある種の「安全な対話」だと言える。僕は自分の弱さを曝け出し、あなたはそれを読む。それでお互いに、痛みもなく、傷つくこともない。そうでしょう?

でも、本当は、そんな建前などどうでもいい。僕はただ、話したかったのだ。誰かに、この淀んだ心の内を。プログラミングの神様でも、カウンセラーでもなく、ただの「人間」に。これまでの人生で、僕は自分を晒すことに度々失敗してきた。学生時代の恋愛も、そうだ。プログラミングの才能を見込まれて、大学の研究室で可愛がられていた時期があった。その時、一人の女性の先輩に密かに恋をした。彼女は優しくて、僕のコードのバグを一緒に探してくれるような人だった。ある満月の夜、研究室の帰り道、思い切って気持ちを伝えようとした。意を決して、彼女の手を握った。

「あの、好きです」

すると彼女は、困ったように笑って、こう言ったのだ。

「ごめん、私、君のことは弟のようにしか見えないんだよね」

ああ、そうか。弟か。そういうことか。それ以来、僕は告白というものをしなくなった。もう二度と、あんな痛い思いはしたくなかった。だが、今、こうしてあなたに語りかけているのは、まさにその「告白」と同じ行為だ。僕はまた、同じ過ちを繰り返そうとしている。それでも、今夜の月は、僕にそうさせる。この冷たく、身を切るような月明かりは、僕に真実を語れと命じているような気がするのだ。もしかすると、この月の光こそが、僕が仮面を剥がすための唯一のきっかけなのかもしれない。

最近、少しずつ変わりたいと思うようになった。きっかけは、三ヶ月前に参加した社内ハッカソンだ。そこで僕は、チームメンバーと一緒に一つのプロダクトを作り上げた。もちろん、最初はうまくいかなかった。僕は自分の考えをうまく伝えられず、メンバーは困惑した顔をしていた。だが、その時、一人のデザイナーが言った。「あなたのコード、すごく整理されてるね。だったら、まずは図に書いてみない?」その一言で、僕は自分を表現する別の方法に気づいた。図を描き、それを元に説明すれば、言葉の壁を越えられるかもしれない。ハッカソンは三位という結果に終わったが、僕の中に小さな希望の灯りがともった。

そして今、この屋上で、僕はもう一つの一歩を踏み出そうとしている。それが、この告白録だ。

なぜ僕が、こんな「仮面を被った若きプログラマー」の告白録を、わざわざ書き残そうと思ったのか。その理由は単純だ。僕は、自分というシステムが、もうすぐクラッシュしそうだと感じているからだ。最近、夜中に目が覚めることが増えた。心臓がバクバクして、呼吸が浅くなる。頭の中では、過去の失敗がフラッシュバックのように繰り返される。あの時、ああ言えばよかった、こうすればよかった。そんな後悔のループが、延々と続く。そして最後には、必ずこう思う。もう、終わりにしようか。この不完全なプログラムに、永遠の終了コマンドを送ってしまおうか。

そんな暗い衝動を、僕は今、必死に抑制している。そのための、この告白だ。もしかすると、この文章のどこかに、僕を変えるヒントが隠されているかもしれない。あるいは、誰かが読んで、僕のバグに気づいてくれるかもしれない。それは希望的観測に過ぎないと分かっていても、僕は信じたいのだ。

これは、僕の再生のための決意表明でもある。あるいは、再生を目指すための、最初のプロセスかもしれない。僕は、自分というこの複雑怪奇なシステムの全貌を、誰かに解析してほしいのだ。そして、どこにバグがあるのか、どうすれば修正できるのか、一緒に考えてほしい。もちろん、あなたに直接助ける力はない。そんなことは分かっている。それでも、ただ「見ていてくれる」ことだけでいい。一人でこの暗い部屋に閉じこもって、陰々滅々と考え込むより、誰かの視線を感じながら、自分の恥をさらす方が、いくぶんか気が楽なのだ。

この先、僕は少しずつ仮面を剥がしていくつもりだ。月光の下で、一枚一枚、ゆっくりと。最初は痛みを伴うかもしれない。仮面の下の肌は、長い間隠されていたせいで、真っ青で弱々しいかもしれない。それでも、剥がさなければ始まらない。この告白録は、そのプロセスそのものだ。

月が、雲に隠れた。少し風が出てきた。冷たい風が、僕の頬を撫でる。今夜は、長くなりそうだ。まだ、第一章も終わっていない。僕の物語は、これから始まる。これは、ある若きプログラマーの、不器用な仮面剥がしの記録だ。あるいは、ただの、愚か者の末路の記録かもしれない。どちらにせよ、僕は書き続ける。それを読んで、あなたがどう思おうと、構わない。ただ、一つだけ約束してほしい。

この話を読む間だけは、僕のことを「変わり者」として遠ざけたり、「面白いやつ」として笑いものにしたりしないでほしい。僕は、あなたにただの伴走者でいてほしい。そして、もしできるなら、僕の話が終わるまで、ここにいてほしい。この月光の下で、仮面を剥がす瞬間を、共に見届けてほしい。

いいだろう、あなた。これから、僕たちの関係が始まる。月明かりだけが証人の、秘密の対話だ。

僕は今、自分自身を「開示」する。バグだらけの、不完全な、未だ発展途上の人間を。

さあ、自己解析の始まりだ。

← 前の章 目次へ 次の章 →
◆ ◆ ◆
CHAPTER 2
道化の誕生

第2章 道化の誕生

屋上からの眺めは、いつも同じだった。街灯の明かりが点々と灯り、遠くの高速道路を走る車のヘッドライトが一筋の光の帯となって流れていく。その光景を見ていると、なぜだか自分がまるでゲームのキャラクターのように感じられる瞬間がある。誰かがコントローラーを握っていて、僕の人生を操作しているのではないか、と。そんな馬鹿げた妄想が頭をよぎるたびに、僕は苦笑いを浮かべる。自分の人生すらまともに操作できていないのに、誰かに操作されているはずがない。もし本当に誰かが操作しているとしたら、そのプレイヤーは相当な下手くそだ。

そんなことを考えながら、僕は缶コーヒーを一口含んだ。冷えた液体が喉を通り過ぎ、体内で温まっていく感覚が妙にリアルだった。

道化が生まれた日

人はいつから仮面を被り始めるのだろうか。僕の場合、それは確か小学校に上がる前のことだった。

幼い頃の僕は、とにかく表情が乏しい子供だったらしい。そう母親から聞かされたことがある。写真を見返しても確かにそうで、どの集合写真でも一人だけ無表情でカメラを見つめている。まるで「なぜ笑わなければならないのか」と問いかけているかのような、不気味な沈黙を湛えた子供だった。

ある日、幼稚園で行われたお遊戯会の練習で、先生がこう言った。

「もっと笑って!みんな、楽しいんだよ!」

この言葉が、僕にとっての「道化」の原点だった。楽しいから笑うのではなく、笑うことが「楽しい」という感情を周囲に伝えるための義務なのだと、その時初めて理解したのだ。僕は必死に口元を吊り上げた。その時の感覚は今でも覚えている。頬の筋肉が不自然に痙攣し、口角が引き攣った。できあがったのは、明らかに作り物の笑顔。しかし、先生はそれを見て「上手に笑えたね」と褒めた。

褒められた。その事実が僕の中で何かを変えた。

笑顔が、感情の表現ではなく、他者から承認を得るためのツールになった瞬間だった。それ以来、僕は笑顔を「量産」する技術を磨き始めた。鏡の前で練習した。口角を何ミリ上げると自然に見えるか、目じりをどの程度垂らすと優しげに見えるか。まるでキャラクターのパラメータ調整のように、自分の表情をチューニングしていった。

小学校に上がると、この技術はさらに洗練されていった。

教室という空間は、僕にとっては戦場だった。そこには無数の視線が飛び交い、常に何かしらの評価が下されている。誰が面白いか、誰が嫌われるか、誰がいじめられるか。その評価システムから逃れる唯一の方法は、自分を「無害」に見せることだと、小学生の僕は直感的に理解していた。

僕が選んだ戦略は「道化」だった。クラスのお調子者になり、皆を笑わせる存在になる。そうすれば、少なくともいじめの標的にはならない。いじめっ子たちは、弱者を狙う。しかし、笑いを取れる者には手を出しにくいのだ。なぜなら、その者を攻撃すると「笑いを奪う奴」というレッテルを貼られるからだ。そんな複雑な計算を、小学生の僕は無意識のうちに立てていた。

「ねえねえ、聞いてよ。今日さ、学校に来る途中で犬に追いかけられてさ、必死に逃げたんだけど、なんとその犬、サメだったんだよね!」

「犬がサメになるわけないだろ!」

同級生たちが笑う。僕も笑う。このジョークには何の意味もない。ただ、場を和ませるための使い捨てのネタだ。しかし、この一発でその日の僕の安全は確保された。皆の記憶に「面白いやつ」として刻まれ、いじめの候補から外される。完璧な取引だった。

家に帰れば孤独な王

しかし、道化の仮面を被っている間、本当の僕はどこにいるのだろうか。

学校で笑いを取れば取るほど、家に帰った時の反動は大きかった。玄関のドアを閉めた瞬間、肩の力が抜け、顔の筋肉が弛緩する。鏡に映る自分は、まるで別人のように無表情で、どこか疲れ果てていた。

「ただいま」

誰もいないリビングに、自分の声が虚しく響く。両親は共働きで、帰宅はいつも夜遅かった。僕は一人で宿題を済ませ、一人で夕飯を食べ、一人でテレビを見た。学校で道化を演じていた反動か、家ではほとんど言葉を発しなかった。無言の時間が、まるで砂のように積み重なっていった。

ある日、ふとしたことで母親と口論になった。

「学校ではあんなに明るいのに、家に帰るとどうしてそんなに暗いの?」

母親のその言葉は、純粋な疑問だったのだろう。しかし、僕には深く突き刺さった。学校の「明るい自分」と家の「暗い自分」の乖離を、まさに言語化されたような気がしたからだ。

「別に…疲れてるだけだよ」

それ以上は何も言えなかった。言ったところで、理解してもらえるとは思えなかったからだ。

学校の自分は偽物。家の自分は本当。しかし、本当の自分は暗くて沈んでいて、誰からも愛されない。だからこそ、学校では明るい自分を演じなければならない。この循環が、僕のアイデンティティを少しずつ蝕んでいった。

僕は「自分」というものを二つに分割して管理する術を覚えた。表向きの社交的な自分と、内側の孤独な自分。この二つは決して交わらない。まるで水と油のように、混ざり合うことはなかった。

最初の救済

そんな生活に終止符を打つ出来事が、高校二年生の時に訪れた。

図書館で暇つぶしに本を探していた時だった。何の気なしに手に取った一冊の本。それはPython入門書だった。表紙にはカラフルなコードの断片と、簡単なゲームのスクリーンショットが載っている。正直なところ、最初は「どうせ難しいんだろう」と思っていた。数学の公式を暗記するような、退屈な作業が待っているに違いない。そう思いながらページをめくった。

しかし、読み始めてすぐに、その認識は覆された。

そこには、まるで魔法のような世界が広がっていた。`if` や `for`、`while` といった単語が、まるで呪文のように並び、それらを組み合わせることで、コンピュータに命令を与えられる。画面上の文字が動き出し、計算を行い、ゲームを動かす。そのすべてが、純粋な論理の積み重ねで成り立っている。

僕はその本を借りて帰り、その夜はずっと読みふけった。

最初に作ったのは、簡単な数当てゲームだった。

```python import random

number = random.randint(1, 100) guess = 0 attempts = 0

while guess != number: guess = int(input("数字を入力してください: ")) attempts += 1 if guess number: print("もっと小さいです") else: print(f"正解!{attempts}回で当てました!") ```

たったこれだけのコードだ。しかし、このコードが実際に動き、自分が考えた通りの動作をした時、僕は初めて「理解された」という感覚を味わった。

プログラムは嘘をつかない。

この時の衝撃は、今でも鮮明に覚えている。コンピュータは、僕が書いたコードをそのまま実行する。もしバグがあれば、それは僕のミスだ。原因を特定し、修正すれば、正しく動く。そこには曖昧さがない。誤解がない。裏切りがない。まるで、初めて出会った誠実な友人のように。

人間関係では、言いたいことの半分も伝わらない。表情や声のトーン、タイミング、相手の機嫌。様々な要因が絡み合い、言葉は歪んで伝わる。しかし、コードは違う。`if` は `if` であり、`else` は `else` である。曖昧さの余地は一切ない。

僕はその夜、朝までプログラミングに没頭した。気がつけば、外は明るくなっていた。目が充血し、肩は凝り固まっていたが、それでも不思議と疲れは感じなかった。むしろ、初めて「生きている」実感があった。

コードの海に溺れて

それからというもの、僕の生活は一変した。

学校では相変わらず道化を演じていた。しかし、心の中は完全に別の場所にあった。授業中、教科書の代わりにこっそりPythonのリファレンスを読み漁り、休み時間はスマホのコードエディタでちょっとしたプログラムを書いた。帰宅すれば真っ先にパソコンを起動し、夜が明けるまでコードを書き続けた。

僕は「初心者用の課題」を次々とクリアしていった。

  • 電卓プログラム
  • 簡易的なTODOリスト
  • テキストベースのアドベンチャーゲーム
  • データのソートアルゴリズムの実装

これらの課題を解くたびに、小さな達成感が積み重なっていく。コードを書いている間だけは、学校での孤独も、家での虚無感も忘れることができた。画面の中の世界は完璧で、常に論理的な答えが返ってくる。現実の世界のような理不尽さや不条理とは無縁だった。

しかし、その没入には同時に危うさもあった。僕は現実逃避のためにコードを書いていた。人間関係の複雑さから逃げ込み、純粋な論理の世界に没頭することで、自分の弱さと向き合うことを回避していたのだ。

プログラミングが進むにつれて、僕はさらに複雑なプロジェクトに挑戦するようになった。そして、高校の文化祭で、その集大成とも言えるプロジェクトを立ち上げた。

文化祭の栄光と烙印

「座席予約システムを作ろう」

この提案をした時のクラスメイトの反応は、冷ややかだった。

「そんなの手書きのリストでいいじゃん」 「お前、本当にできるのか?」 「どうせ途中で投げ出すんだろ?」

僕は内心でほくそ笑んだ。「できる」か「できない」かで言えば、もちろん「できる」。すでに何度も似たようなシステムを作っていたからだ。しかし、問題は別のところにあった。このシステムを導入することで、同級生たちの反応がどう変わるか、だ。

結果から言えば、システムは大成功だった。座席予約の受付が効率化され、当日の混乱も最小限に抑えられた。保護者や来場者からの評判も上々で、教師たちも驚いていた。

「すごいじゃん、お前」 「プログラマーになるんだろ?」

賞賛の言葉が飛び交った。しかし、その賞賛はどこか一線を画していた。「プログラミングができるからすごい」というわけではなく、「プログラミングができる変なやつ」として扱われているような気がした。まるで、サーカスの珍しい動物を見るような目だ。

その予感は的中した。文化祭が終わると、同級生たちの態度は少し変わった。僕は「あの座席予約システムを作ったやつ」として認知されるようになったが、同時に「ちょっと変わったやつ」というレッテルも貼られた。

「お前、本当に人間と話すよりコード書いてる方が好きだろ?」 「彼女とかいらないの?」

そんな質問に、僕はいつもの道化の仮面で答えた。

「え?プログラミングの方が彼女より面白いからね。バグを直す方が、女心を理解するより簡単だし」

皆が笑った。しかし、その奥には「やっぱり変なやつだ」という確信があったことだろう。僕はそれを利用した。自分を「ちょっと変わったプログラミングオタク」として演出することで、本当の自分を隠すのに成功したのだ。人々は「変わったやつ」には深入りしない。期待値が低いほど、裏切られるリスクも少ない。これもまた、立派な道化の戦略だった。

プログラムは嘘をつかない

この時から、僕は「プログラム」と「人間」の間に、決定的な違いを見出すようになった。

プログラムは嘘をつかない。書いた通りの動作をする。期待通りの結果を返さない時には、必ず明らかな原因(バグ)が存在する。そして、その原因を突き止めて修正すれば、プログラムは再び正しく動く。そこには曖昧さも、感情も、駆け引きも存在しない。

これに対して、人間関係はどうか。

「今日は調子悪いの?」と聞かれれば、「大丈夫」と答える。実際は調子が悪くても、大抵の人間はそう答える。そして、相手もそれを理解している。表面的な会話の裏には、無数の暗黙のルールと建前が存在する。僕はそんな世界に疲れ果てていた。

コードを書いている時だけは、僕は「嘘をつかない自分」でいられた。

自分が書いたコードは、自分の考えをそのまま反映している。バグがあれば、それは自分の思考の欠陥だ。しかし、それは修正可能な欠陥であり、人格を否定されるものではない。プログラムは「お前のコードはひどい」とは言うが、「お前という人間はクズだ」とは言わない。

この違いは、僕にとって決定的に重要だった。

仮面とコードの共存

高校を卒業し、大学に進学してからも、僕の生活は変わらなかった。いや、むしろ悪化したと言っていいかもしれない。

大学ではより高度なプログラミングを学び、Python以外にもGoやHaskellといった言語に手を出した。関数型プログラミングの美しさに魅了され、型システムの厳格さに安らぎを覚えた。しかし、その一方で、人間関係はますます複雑になっていった。

サークルや研究室での人間関係。グループワークでの協調性。就職活動での自己PR。どの場面でも、僕は道化の仮面を被り続けた。しかし、その仮面の下で、僕は常に「この人たちは本当の俺を知ったらどう思うだろうか」という恐怖と戦っていた。

プログラムは嘘をつかない。しかし、人間は常に嘘をつく。自分自身にさえも。

あの頃の僕は、その矛盾を抱えながら、コードの世界に逃げ込むことだけが唯一の救いだった。画面の中だけが、僕にとっての真実の場所だった。

月明かりが照らす真実

屋上から見える月は、今夜も冷たく輝いている。その光は、まるで手術室の無影灯のように、僕の内面を照らし出す。

「道化の誕生」とは、自分を守るための仮面の獲得だった。しかし、その仮面は同時に、本当の自分を閉じ込める牢獄でもあった。僕は人を笑わせることで自分の不安を隠し、コードを書くことで孤独から逃れた。その二重の防衛機制が、今の僕を作り上げている。

しかし、この仮面を脱ぐことはできるのだろうか。コードに逃げ込むことをやめ、現実の人間関係と向き合うことができるのだろうか。

社内ハッカソンでデザイナーからもらった「コードを図に書いてみない?」という言葉が、心の中で反響する。図を使った説明。それは、言葉だけではない、別の伝達手段だ。もしかすると、それは仮面を脱ぐための最初の一歩になるのかもしれない。

僕はノートと鉛筆を取り出し、心の設計図を描き始めた。今夜もまた、自分自身との対話が始まる。

月明かりが、僕の手元を照らしている。その光は冷たいけれど、確かに真実を映し出している。僕がこれまで歩んできた道のり。道化として演じてきた日々。コードの世界に没頭した夜。それらすべてが、今の僕を作り上げている。

プログラムは嘘をつかない。しかし、人間は嘘をつく。その事実を受け入れた上で、僕は少しだけ、本当の自分を開示してみようと思っている。たとえそれが、誰かにとっては取るに足らないものであったとしても。

← 前の章 目次へ 次の章 →
◆ ◆ ◆
CHAPTER 3
コードの中の楽園

第3章 コードの中の楽園

たぶん、僕が初めて「理解された」と感じた瞬間というのは、高校二年生のあの図書館の夜だったのだと思う。もちろん、そんな大げさな表現をするのは気恥ずかしい。だってそれはただの数当てゲームだ。コンピュータがランダムな数字を生成し、プレイヤーが推測する。大きければ「もっと小さい」、小さければ「もっと大きい」、当たりなら「正解!」と表示するだけの、たかが十数行のPythonコードだった。

でも、その十数行が嘘をつかなかった。

「もっと小さい」と表示されたら、本当に答えの数字は小さいのだ。プログラムは決して建前を言わない。「君のためを思って」とか「悪気はなかったんだ」とか、そんな曖昧な言葉で誤魔化したりしない。もし間違った表示が出たとしたら、それは僕のコードが間違っている。原因は必ずある。修正できる。人間関係のように、「なんとなく気まずい」みたいな不確かな状態に永遠に留まることはない。この確信こそ、僕の人生を根底から変えたものだった。だが同時に、それを深く掘り下げて考えることを、ずっと避けてきたものでもある。

僕はその夜、朝方までコードを書き続けた。数当てゲームから始まり、簡易的な暗号化プログラム、簡単なテキストアドベンチャー。画面に表示される文字列の一つ一つが、僕に向けて発せられた初めての「正直な言葉」だった。キーボードを叩く指の感覚、ディスプレイに映る緑色の文字、コンパイルエラーを潰すたびに感じる軽い興奮。すべてが新しい感覚だった。

しかし、そういう話をすると、きっと多くの人はこう思うだろう。「またオタクの痛い思い出話か」と。あるいは「青春の一片くらいあるでしょうに」と。そう、その通りだ。僕の青春は、確かにコードの中にあった。そして、その事実を語るたびに僕は道化の仮面を少しだけ深く被り直す。だって、それが恥ずかしいからじゃない。それが真実すぎて、他人に理解されるはずがないと思っているからだ。

仮面の誕生、その予兆

プログラミングとの出会いを語る前に、少しだけ時間を遡らせてほしい。僕がなぜ「理解されたい」と強く願うようになったのか。それは、もっと幼い頃に遡る。

小学校に上がる前、幼稚園のお遊戯会の練習でのことだった。先生が言った。「もっと笑って! 楽しい顔をしなきゃ!」。当時の僕は、なぜ笑わなければならないのか理解できなかった。だって、お遊戯会は練習で何度も繰り返していて、もう飽きていたのだ。でも、先生の期待に応えなければいけない。そう直感した僕は、鏡の前で笑顔の練習を始めた。口角を何ミリ上げればいいのか、目じりをどう動かせば「楽しい」ように見えるのか。それを身体で覚えていった。

それが、道化の仮面の誕生だった。

小学校に入学すると、この技術はさらに磨かれた。クラスにはいじめっ子がいた。彼らは「暗いやつ」「おとなしいやつ」を標的にした。僕は直感的に理解した。目立たないように、かつ場の空気を壊さないように振る舞うためには、「お調子者」の役割が最適だと。使い捨てのジョークで場を和ませ、自分を貶めることで相手の警戒心を解く。そうすれば、安全な場所を確保できる。

「お前、いつも面白いな」 「いやいや、こんなの誰でもできるっすよ」

そんな会話を何度も繰り返すうちに、いつの間にかその役割が僕のアイデンティティの一部になっていた。家に帰れば無表情で無口な本当の自分がいるのに、学校に行けば明るい道化が顔を出す。その切り替えは、もはや無意識のうちに行われていた。

ある日、母親に問われた。「学校ではあんなに明るいのに、家に帰るとどうしてそんなに暗いの?」。その言葉は、刃のように僕の心臓を刺した。自分の中で無理やり分断していた二つの世界が、突然つながってしまった感覚。学校の明るい自分と、家の暗い自分。どちらが本当の僕なのか。いや、むしろ「本当の僕」など存在しないのかもしれない。そのことが、初めて意識された瞬間だった。

コードの感触

プログラミングという行為には、独特の没入感がある。これを知らない人に説明するのは難しいのだけれど、あえていうなら、自分の頭の中だけで完結する完全な世界を作り出す感覚だ。

例えば、ゲームを作っているとする。画面上で動くキャラクターは、僕が与えたルールに従って動く。右キーを押せば右に移動し、スペースキーを押せばジャンプする。もしキャラクターが重力に従って落ちてくるなら、それは僕が `y += gravity * delta_time` と書いたからだ。物理演算を追加したければ、摩擦係数や跳ね返り係数を定義すればいい。すべては僕の設計通り、僕のルールで動く。なぜなら、コードは嘘をつかないからだ。

現実の人間関係と何と違うことか。

教室で笑顔を振りまく僕は、周囲の期待に合わせて行動を変える。先生の前では優等生ぶり、同級生の前では道化を演じる。親の前では無口な息子。どの顔も本当の自分ではないのに、どの顔も「間違ってはいない」。バグを修正するように簡単に改善できない。なぜなら、人間関係には絶対的な正解がないからだ。

だが、コードには正解がある。僕が確信した「プログラムは嘘をつかない」という世界観。それは単なる比喩ではない。もっと深い、根底的な理解だった。エラーが出れば、その行番号が教えてくれる。スタックトレースを読めば、どこで何が間違ったのかが明らかになる。修正すれば、プログラムはまた正しく動く。なんて清らかな世界だろう。なんて救いのあるシステムだろう。人間関係のように、「昨日までは大丈夫だったのに、今日はなぜか空気がおかしい」という不可解な状態に陥ることがない。僕の脳は、この明確さにどれだけ救われたことか。この世界こそが、僕にとって唯一の「本当の場所」だった。

高校二年の夏休み、僕は毎日図書館に通った。Python入門書が置いてあるあのコーナーに座り、床に響くエアコンの音を聞きながら、ひたすらコードを書いた。朝の九時から閉館の夕方五時まで。たまに顔を上げると、窓の外では同級生たちが楽しそうに自転車で通り過ぎていく。海に行くとか、祭りに行くとか、恋愛の話をしているらしい。僕にはその会話の内容が、まるで外国語のように聞こえた。

「ねえ、あのクラスの佐藤くんと田中さん、付き合ってるらしいよ」 「マジで? いつから?」 「知らないけど、なんとなく雰囲気でわかるじゃん」

なんとなく、雰囲気。その言葉が僕には呪いのように響いた。人間関係はいつも「なんとなく」で動いている。明確なルールも、デバッグ方法もない。ただ漠然とした空気を読んで、適切な顔を選ぶ。僕にはそれが難しすぎた。

だからコードの世界は完璧だった。変数には型があり、関数には引数と戻り値があり、すべてが明示的だった。「なんとなく」は許されない。曖昧なコードはエラーを吐くか、予期しない動作をする。それでも、少なくとも結果は目に見える形で現れる。直しようがある。たとえバグがあっても、それは僕の責任だ。しかし同時に、僕が修正できる。

プログラミングに出会ってから、僕の二重生活はより鮮明になった。学校では相変わらず道化を演じ、家では無言でパソコンに向かう。でも以前と違ったのは、心のよりどころができたことだ。学校で「あいつ、プログラミングできるんだって」と言われて妙な距離感を感じても、「どうせ家に帰れば俺のコードがある」と思えば耐えられた。

今思えば、それは立派な逃避だった。現実という名のスパゲッティコードから逃げ出して、自分だけの楽園に閉じこもっていた。プログラムは嘘をつかない。でも、その世界だけに逃げ込む自分自身には、たくさんの嘘があった。仮面を被った道化が、さらにコードという鎧を着込む。それが僕の二重の防衛機制だった。仮面とコードの共存。それが僕の生きる道だった。

座席予約システムという悲劇

文化祭の座席予約システム――あれは僕の人生における、最も象徴的なエピソードの一つだ。今でも思い出すたびに、胃のあたりが重くなる。成功したのに、どこか間違っていた。いや、成功したからこそ、あの違和感が決定的なものになったのかもしれない。

高校三年の文化祭。僕はクラスの出し物である喫茶店の座席管理を任されていた。たいていのクラスは紙の台帳で管理するのだが、僕は「システム化できる」と提案した。理由は単純で、紙の管理は非効率だと思ったからだ。それ以上でも以下でもない。

休み時間や放課後、こっそりとパソコンルームでコードを書いた。PHPとMySQL、今思えばなんてダサい技術スタックだろう。でも当時の僕には、それが最先端に思えた。テーブル番号、予約時間、人数をデータベースに格納し、重複を防ぐロジックを組み込む。予約が入れば確認メールが送られ、キャンセルもボタン一つ。簡易的な管理画面も作った。

一週間ほどでシステムは完成した。自分でも驚くほどスムーズに動いた。もちろん大学の研究室にあるような本格的なものではないけれど、高校生の文化祭レベルなら十二分に実用的だ。僕は内心で誇らしかった。これでみんなに認められる。そう思った。

文化祭当日、システムは完璧に動作した。予約は滞りなく処理され、待ち時間も最小限。クラスの連中は「すげえ」と口にした。担任の先生も感心していた。ああ、これで僕も認められた、仲間に入れた。そう思ったのは、ほんの一瞬だけだった。

二日目の夜、後片付けをしているとき、同じクラスの連中が話しているのが聞こえた。

「でもさ、あいつなんか変じゃない? あんなシステム作るってさ」 「わかる。ああいうのって、なんか気持ち悪くない?」 「いや、すごいのはすごいんだけどさ。なんか普通じゃないっていうか」

壁の向こうから聞こえてくる声に、僕は固まった。手に持っていたコードが書かれたノートが、急に恥ずかしいものに思えた。褒められたと思ったのに、実際は気味悪がられていた。能力を評価されるのと、人間として受け入れられるのは別の話らしい。プログラミングができるということが、僕を「異物」として際立たせていた。あのとき感じた違和感は、今でも鮮明に覚えている。僕は「認められた」と思った瞬間、同時に「排除された」のだ。

それからというもの、僕は「プログラミングができる変なやつ」というレッテルを自ら被ることにした。どうせそう見られるなら、そのイメージを利用してしまおう。そうすれば、本当の自分はさらに深く隠せる。「ああ、アイツはプログラミングオタクだから」――そのレッテルは、僕に安全な居場所を与えてくれた。期待される役割を演じるのは、もう慣れっこだった。まるで、あの幼稚園のお遊戯会の延長線上のように。

でも、そのとき同時に、コードの世界と現実の世界の間にある深い溝を思い知った。プログラムは完璧に動いたのに、人間関係はバグだらけだった。しかも、そのバグを修正する方法がわからない。いや、そもそも何がバグなのかすら特定できない。あいまいな「気持ち悪さ」という感情の前では、どんなデバッガも無力だった。

孤立という名の特権

そんな話をすると、たぶん「若気の至りだ」とか「思春期の誰にでもある話だ」と笑われるかもしれない。あるいは「自己憐憫が過ぎる」と批判されるかもしれない。実際、月明かりの下で自分の人生を振り返るとき、僕はいつも自己憐憫の泥沼にはまる。だが、それでも書かずにはいられない。なぜなら、それが僕の真実だからだ。

才能というものは、贈り物であると同時に呪いでもある。僕はコードを書くことに特化した脳を持っていた。論理的思考、パターン認識、抽象化能力。これらは確かに僕の武器だった。しかし、それらは同時に、普通の人間関係を営むための障害にもなった。

例えば、友達との会話。僕は何気ない雑談の中で、相手の言葉に論理的な矛盾を見つけてしまう。すると、それを指摘すべきかどうかで悩む。「昨日のドラマ見た? あの主人公、最後に死んじゃってさ」「いや、死んでないよ。あれは朦朧とした状態での幻覚で、次のシーンで生きてるのがわかる」「……細かいこと気にしすぎだよ」。そう、細かいことなのだ。僕にとっては重大な矛盾でも、相手にとっては些細なこと。その認識のズレが積み重なって、僕は次第に会話そのものを避けるようになった。

プログラムの世界では、そんなことはない。関数の引数の数が合わなければ、コンパイラがエラーを出す。型が違えば、静的分析ツールが警告する。すべては明確で、修正可能だ。僕の脳は、そういう世界に最適化されていた。人間関係に最適化されることは、ついぞなかった。

だが、これは特権でもあった。なぜなら、コードの中でなら僕は誰よりも自由で、誰よりも正直でいられたからだ。現実の僕は道化の仮面を被り、身を低くして生きていたが、コードの中の僕は完全な支配者だった。その二重性が、僕を時に孤独にし、時に優越感で満たした。

先輩という名の鏡

大学に進学し、情報科学科に所属した。ここなら僕のような人間が受け入れられる、と期待していたのだが、現実は違った。確かにプログラミングができる学生は多かったが、彼らの多くは普通に恋愛をし、普通に遊び、普通に人間関係を築いていた。僕だけが、やはりそこから取り残されていた。

大学三年の春、研究室に配属された。そこには優しい先輩がいた。今でも名前を口にするのが躊躇われる、その女性の先輩。彼女は僕の書いたコードのバグを一緒に探してくれた。一時間でも二時間でも、二人でディスプレイを覗き込みながら、どこが間違っているのかを議論した。僕は彼女に恋をしていたと思う。正確には、恋という言葉で表現していいのかわからない。ただ、彼女と一緒にいると、コードを書いているときのような安堵感があった。彼女の前では、道化の仮面を少しだけ緩められた。バグを探す会話は、不思議と嘘がなかった。

「ここ、インデントがおかしいよ」 「あ、本当だ。気づかなかった」 「こういうのって、大抵単純なミスなんだよね」

彼女の声は、冷たい研究室の空気の中で、唯一あたたかいものだった。夜遅くまで残ってコードを書くとき、彼女も同じように残っていることがあった。二人きりの研究室。キーボードを叩く音だけが響く。そんな時間が、僕にとっての「楽園」の延長線上にあった。

しかし、当然の結末が待っていた。満月の夜、研究室の屋上で告白した。今思えば、なぜ屋上だったのか。太宰治の影響か、あるいは単純に月明かりに酔っていただけか。いずれにせよ、その選択は最悪だった。

「ごめん。弟のようにしか見えない」

その言葉は、コードのように明確だった。修正の余地はない。スタックトレースも、エラーログもない。ただ、無慈悲な返事だけがある。プログラムであれば、この「弟のようにしか見えない」という状態を変数として定義し、新たな条件分岐を追加すれば、別の結果が得られたかもしれない。しかし、現実は違う。告白の失敗は、バグのように修正できるものではない。むしろ、それは新しい仕様として受け入れるしかないのだ。

あの夜から、僕は告白をしなくなった。いや、恋愛そのものを避けるようになった。仮面を被った道化が恋愛をするなんて、所詮はおままごとに過ぎない。本当の自分を見せられるはずがない。コードの中の完全な自分と、現実の不完全な自分。その乖離を埋める方法を、僕は知らなかった。

教授に「君は優秀だ」と言われるたびに、心のどこかで「じゃあなぜ友達がいないんだ」と反問したくなる。レポートで高い評価を得るほど、現実の成績は下がっていくように感じた。コードの中でだけ優秀な自分。現実ではただの道化。そのギャップは年々大きくなるばかりだった。

無理解という名の刃

そういえば、あの文化祭の話はまだ終わっていなかった。システムの完成から数週間後、クラスで簡単な発表会があった。各グループが文化祭の成果を報告するという、いわばお決まりのイベントだ。

僕は前に立って、作ったシステムの仕組みを説明した。データベースのテーブル構造、予約処理のフロー、エラーハンドリングの方法。自分では丁寧に説明したつもりだったが、クラスメイトの反応は冷ややかだった。

「つまり、どうすごいの?」 「普通の予約システムと何が違うの?」 「それって、手でやってもよくない?」

質問の一つ一つが、刃のように僕の心を刺した。彼らにとって、このシステムは「ただ動くもの」でしかなかった。その背後にある苦労や工夫、コードの美しさには全く興味がない。いや、興味を持てないのだろう。彼らの世界には、コードの価値を測る物差しがない。それは、僕が彼らの恋愛話や部活の話に興味を持てないのと同じだ。お互いに、理解できない世界がある。

それでも僕は笑顔を保った。道化の仮面を完璧に装着して、こんな風に答えた。

「そうっすね、確かに大したもんじゃないっす。でも、ちょっとした勉強になりました」

自らを貶める言葉。それが僕の防御手段だった。「変なやつ」ではなく、「ちょっと変わったけど謙虚なやつ」というイメージにすり替える。そうすれば、いじめの標的にはならない。教室という生態系の中で、僕はただ生き延びるために必死だったのだ。

あのとき教室を埋めていた冷たい空気は、今でも忘れられない。同級生たちの視線は、賞賛ではなく困惑に満ちていた。彼らは理解できなかったのだ。なぜ一人の高校生が、そんなものを作ろうと思ったのか。その情熱の源泉が、理解できなかった。

そして、それは今でも同じだ。社会に出てプログラマーとして働くようになっても、コードの価値を理解しない人々は依然として存在する。いや、むしろ増えたかもしれない。「APIって何? 何かの略?」「なぜ三時間もかかるの? ボタン一つじゃないの?」。毎日のように浴びせられる無理解の言葉。そのたびに僕は、あの文化祭の教室の空気を思い出す。ディスプレイの前で一人、完璧なコードを書いているときだけが、本当の安らぎだった。

楽園の牢獄

しかし、ここで一つの矛盾に気づく。僕はコードの中に楽園を見つけたと言いながら、その楽園は同時に牢獄でもあった。プログラムは嘘をつかない。それは真実だ。しかし、その真実にだけ依存して生きることは、現実からの逃避でしかない。仮面とコードの共存。それは僕を守る鎧であると同時に、僕を閉じ込める檻でもあった。

コードの中で完璧を追求すればするほど、現実は不完全に見える。人間関係の曖昧さ、非論理性、予測不可能性。それらはバグでさえなく、ただの仕様なのだ。しかし僕は、その仕様を受け入れられなかった。気がつけば、僕の人生は二つの世界に分裂していた。昼間は道化として、周囲の期待に合わせて笑顔を作る。夜はプログラマーとして、コードという完全な世界に没頭する。そして、その狭間で本当の自分は窒息しそうになっていた。

「僕は、誰なんだろう?」

この問いに対する答えは、今も見つかっていない。プログラムのように、明確な答えが出ると思っていたのに。自己同一性を定義する変数も、人生の目的を返す関数も存在しない。そんな当たり前のことにも気づかず、僕はひたすらコードを書き続けた。あるいは、もしかするとプログラミングそのものが、僕の本当の姿なのかもしれない。論理的で、正直で、誤魔化しが効かない。そんな存在でありたいという願望が、コードという形で現れただけなのか。

心の設計図を描く夜

今、僕はここにいる。月明かりの下、コンクリートの屋上で。冷たい光が、手術室の無影灯のように、僕の内面を無慈悲に照らし出す。あの日の図書館の夜のように、緑色の文字が流れていたディスプレイのように、真実だけがそこにある。

僕はノートと鉛筆を取り出した。今日、初めてそれを試してみようと思った。社内ハッカソンでデザイナーから言われた言葉を思い出す。「コードを図に書いてみない?」。その提案は、僕の中でずっと反響していた。言葉ではなく、図を使って表現する。それは、僕にとっての新しい言語だった。もしかすると、この言語を使えば、仮面の下の本当の自分を表現できるかもしれない。

そしてもう一つ、僕がずっと避けてきたこと。それは「心の設計図」を描くことだ。僕の心理構造や思考パターンを、まるでプログラムの設計図のように書き起こすこと。デジタルフィルターを避け、アナログなノートと鉛筆で。なぜなら、コードの中で完全な世界を作り出すように、自分の内面も整理できるかもしれないと思ったからだ。

鉛筆を走らせる。まず、僕の思考パターンをフローチャートにしてみる。外部からの刺激(人間関係での何気ない言葉)→ 仮面を被る判断(安全か危険かの評価)→ 道化としての反応(自嘲や笑顔)というループ。そして、そのループから抜け出す条件は、コードを書くこと。つまり、逃避だ。この図を見れば、僕の問題は一目瞭然だった。ループの出口が、逃避しかないのだ。

さらに、僕の感情の状態遷移図を描く。平穏 → 些細なきっかけ(相手の無理解な言葉など)→ 不安と自己嫌悪の増大 → コードへの没入による一時的な回復 → 平穏。このサイクルが、ここ数年ずっと続いている。しかも、最近はそのサイクルが短くなっている気がする。夜中に突然目が覚め、心臓がバクバクしていることが増えた。過去の失敗がフラッシュバックする。あの文化祭の教室の空気、先輩の言葉、母親の問いかけ。それらが頭の中で繰り返される。呼吸が浅くなる。「終わりにしようか」という暗い衝動が、頭の片隅で囁く。でも、その衝動をなんとか抑えている。なぜなら、まだ僕には描き終えていない「心の設計図」があるからだ。

ノートのページをめくる。今度は、僕の人生のタイムラインを描いてみる。幼稚園での仮面の誕生。母親との口論による自覚。図書館でのプログラミングとの出会い。文化祭での成功と挫折。大学での告白の失敗。そして、三ヶ月前の社内ハッカソン。デザイナーの「コードを図に書いてみない?」という一言。この言葉が、なぜここまで心に残っているのか。それは、コードの世界と現実の世界を結ぶ架け橋になるかもしれないと思ったからだ。図を使えば、言葉に頼らなくても、僕の考えを伝えられるかもしれない。仮面の下の本当の自分を、少しだけ見せられるかもしれない。

本当の自分とは何か。その答えがわからないまま、僕は今日もコードを書き、そしてこの心の設計図を描き続ける。もしかすると、それが僕の人生のテーマなのかもしれない。楽園と牢獄の境界線上で、永遠に答えを探し続けること。それこそが、プログラマーとして生まれた者の宿命なのだろう。

文化祭のあの日、あのシステムは僕の情熱の証だった。先輩への告白も、たとえ失敗しても、僕の正直な気持ちだった。それらを今、素直に認められるようになったのは、このノートと鉛筆のおかげかもしれない。僕は自分自身に嘘をついていた。自己嫌悪を装って自己愛を隠し、弱さを装って強さを隠す。その欺瞞の連鎖が、僕という人間を作り上げていた。しかし、その欺瞞の構造を図として書き出すことで、少しだけ客観視できるようになった。プログラムは嘘をつかない。けれど、プログラムを書く人間は嘘をつく。その事実を認めた上で、それでも少しずつ、仮面を剥がしていく。そのプロセスこそが、重要なのかもしれない。

月が、今日も冷たく輝いている。僕はこの原稿と心の設計図を脇に置いて、もう一度考えてみよう。十年前の自分が書いた、粗削りだけど確かに存在した情熱の証。その延長線上に、今の自分がいることを確認したい。コードの中の楽園は、永遠には続かない。しかし、その楽園があったからこそ、僕は今ここにいる。その事実だけは、決して嘘じゃない。プログラムのように、確かな真実として。そして、その真実を基に、僕は明日もコードを書き続け、心の設計図を描き続ける。いつか、本物の楽園にたどり着くための、一歩一歩を確かめながら。

← 前の章 目次へ 次の章 →
◆ ◆ ◆
CHAPTER 4
大学と嘘

第4章 大学と嘘

大学に入学した。情報科学科。そこは、僕にとっての約束の地であり、同時に新たな地獄の始まりでもあった。

高校の図書館でPythonと出会ってから、僕は確信していた。コードの世界こそが自分の居場所だと。あの冷たくて、清潔で、すべてが論理通りに動く世界。そこでは、僕の感情の起伏や、暗い家庭環境や、教室で被る道化の仮面なんてものは一切必要なかった。コードはただ、書かれた通りに動く。嘘をつかない。僕はその正直さに救われていた。

だから大学では、同じようにコードを愛する仲間たちと、心から通じ合えるのではないかと、密かに期待していたのだ。なんと愚かな期待だろう。


入学式から一週間後、情報科学科の新入生ガイダンスがあった。大きな階段教室に、百人ほどの学生が詰めかけている。僕は後ろの方の席を選び、窓の外の桜を眺めながら、なるべく人と目を合わせないようにしていた。

ガイダンスの後、同じ学科の学生たちが自然とグループを作り始めた。僕も仕方なく、近くにいた数人と会話を交わす。

「何の言語使ってる?」 「俺はC++。競プロやっててさ」 「僕はPythonと、ちょっとだけHaskell」 「え、Haskell?関数型?すごいっすね」

そう。この会話のパターンを、僕はもう嫌というほど知っていた。プログラミングの話になると、なぜか僕は「すごい」と言われる。でも、それは決して純粋な賞賛ではない。どこか距離を置くような、気まずさを含んだ言葉だ。「すごい」は「変わってる」の婉曲表現に過ぎないことを、僕は文化祭の経験で痛いほど理解していた。

「いや、全然。まだ入門レベルで」 そう言って、僕は笑った。道化の仮面を被って。口角だけを持ち上げ、目を細め、自分を小さく見せる笑顔。それは、僕が幼稚園の頃から磨き上げてきた、防御の笑顔だ。

「そうっすか。でも、関数型って難しそうじゃないですか」 「本読めば誰でもできますよ。僕なんて、ただのオタクなんで」

自らを貶める。それが僕の処世術だった。そうすれば、相手は安心する。僕は「変わったやつ」だけど、少なくとも「怖いやつ」ではないと認識される。いじめの標的を回避するために、小学生の頃から編み出した戦略だ。


しかし、大学の情報科学科には、僕の想定を超える種類の「すごい人」が大勢いた。

彼らはただコードが書けるだけではない。コミュニケーション能力も高く、チームで協力して大きなプロジェクトを動かせる。プレゼンテーションが上手く、自分のアイデアを明確に伝えられる。そして、何より——彼らは自分自身を隠さなかった。

授業のグループワークで、僕は衝撃を受けた。隣の席の学生が、ホワイトボードに図を描きながら、自分の設計思想を解説している。彼は途中で詰まることなく、時折ジョークを交えながら、複雑なアルゴリズムの説明を笑顔でやってのけた。クラスメイトたちは頷きながら、時には質問を挟みながら、活発な議論を交わす。

僕はその輪の中にいたけれど、一言も発することができなかった。頭の中では、いくつものアイデアが渦巻いている。もっと効率的な実装方法、別のデータ構造を使ったアプローチ、エッジケースの処理——でも、それらを言葉にしようとすると、喉の奥で何かが詰まる。声が出ない。

そして、口を開いたときには、こんな言葉しか出てこないのだ。

「いやあ、すごいですね。僕なんか、まだまだで」

自嘲と笑顔。仮面の完成形。僕の意見は、いつもこの笑顔の影に消えていく。


入学から二ヶ月が経った頃、僕は情報科学科のサークル「プログラミング研究会」に加入した。ここなら、コードだけを武器にできるかもしれない。僕の技術を認めてもらえるかもしれない。そんな淡い期待を抱いて。

サークルの初顔合わせは、大学近くの居酒屋で行われた。なぜだか、プログラミングの集まりなのに、最初から酒が絡む。これが「普通の大学生活」というやつなのか。

焼き鳥の煙が立ち込める店内で、先輩たちは楽しそうに会話を交わしている。僕は端の方で、ウーロン茶を飲みながら、必死に相槌を打っていた。

「おい、新入生!お前も何か言えよ!」

酔っ払った先輩が、突然僕に話を振る。周りの視線が一気に集まる。心臓がバクバクと音を立て始める。

「え、えっと…」

何を言えばいい?自分の趣味の話?最近読んだ技術書のこと?いや、そんな話をしたら、また「変わったやつ」扱いされるだけだ。場の空気を壊さないためには、どうすれば—

「僕、最近PythonでCLIツール作ってるんですけど、まだまだでして」

まただ。自らを貶める道化の言葉。でも、それで場はとりあえず収まる。

「へー、すごいじゃん」 「どんなやつ?」

しかし、先輩はさらに踏み込んでくる。僕の道化の仮面の隙間を、無理やりこじ開けようとする。答えなければいけない。でも、本当のことを言うと、また引かれる。どう答えれば、この場から無事に逃げられるのか——

「えっと…簡単なファイル管理ツールです。でも、まだバグだらけで…」

そう言いながら、僕は焼き鳥の串を弄っていた。自分の指の震えを隠すために。


その夜、先輩たちが二次会に行こうと言い出した。カラオケに行くらしい。僕は「明日、朝から授業で」と逃げた。本当は午後からしか授業はなかったけれど、そんな小さな嘘で、僕は必死に自分の安全な領域を守っていた。

寮に戻ると、部屋の電気もつけずにベッドに倒れ込んだ。酒の匂いとタバコの匂いが、服に染みついている。胃の辺りが重くて、気持ちが悪い。

僕はスマートフォンを取り出し、GitHubのリポジトリを開いた。自分が書いたコードの海に没入する。そこには、嘘はない。バグはあるけれど、それは人間関係のような不可解なものじゃない。原因を特定し、修正すればいい。単純明快だ。

しかし、その夜は違った。コードさえも、僕を慰めてくれなかった。

なぜ彼らは、あんなに簡単にコミュニケーションが取れるのか。なぜ自分の意見を臆することなく言えるのか。なぜ笑顔が自然に溢れてくるのか。

そして、なぜ僕は、それを「演技」と感じてしまうのか。

画面のコードが、ぼやけて見えなくなった。いや、実際に涙が出ていたのだ。自分でも気づかないうちに。


大学二年の冬が終わり、三年の春が訪れた。研究室の配属が決まり、僕はシステムプログラミングの研究室を選んだ。教授は有名なOSSのコミッターで、業界でも名の知れた人だった。

研究室には、女性の先輩がいた。名前はもう覚えているかどうか怪しいけれど、彼女は僕の書いたコードのバグを一緒に探してくれる、優しい人だった。何度か一緒にデバッグをするうちに、彼女の前では少しだけ仮面が薄くなる感覚を覚えた。彼女もまた、どこか孤独な雰囲気を持っていたからかもしれない。

ある日、僕は彼女と二人で、研究室のサーバールームにこもってデバッグをしていた。原因不明のメモリリークに悩まされていたのだ。

「ここ、参照カウントがおかしいんじゃない?」

彼女が指差した行を見て、僕はハッとした。確かに、循環参照が起きている。ガベージコレクションの仕組みを考慮していなかった。

「あ…ありがとうございます。気づきませんでした」

「いいえ。T君のコードは、いつもきれいだよね。可読性が高い」

褒められた。素直に褒められた。その言葉が、心の深い部分に染み渡る。でも、次に口を開いたとき、僕はまた同じことを言っていた。

「いや、まだまだ勉強不足で…」

彼女は少し困ったような顔をした。僕の自己卑下が、彼女を居心地悪くさせていることに、その時は気づかなかった。


それから、僕は少しずつ彼女に惹かれていった。優しい笑顔。コードに向かう真剣な横顔。たまに交わす他愛のない会話。そのすべてが、僕の心の中で少しずつ大きくなっていった。

でも、それを認めることが怖かった。好きだと認めれば、拒絶されたときの痛みが大きくなる。それは、文化祭の座席予約システムで味わった、あの「認められても受け入れられない」痛みと似ていた。

それでも、春の夜、月が満ちる日が来た。

研究室の屋上は、僕の密かな避難場所だった。授業や人間関係に疲れたとき、ここに来て街灯と高速道路のヘッドライトを眺めながら、自分の人生が誰かに操作されているような妄想に浸るのが習慣だった。月明かりは、優しさのない冷たい光だった。まるで手術室の無影灯のように、僕の内面を容赦なく照らし出す。

その夜も、僕は屋上にいた。夜の九時を過ぎた頃、誰かが屋上の扉を開ける音がした。振り返ると、彼女が立っていた。

「T君…こんなところにいたんだ」

彼女もまた、研究室を抜け出してきたのだという。並んでフェンスに寄りかかり、街の灯りを眺めた。月明かりが、二人の影を長く伸ばしていた。

「先輩は…どうしてここに?」 「ちょっと、息抜きにね。プロジェクトが詰まってて」

沈黙が流れた。風が冷たく、桜の花びらが舞っていた。もう花見の季節は終わろうとしている。

心臓が、激しく鼓動を打っていた。この瞬間を逃せば、二度と言えない気がした。喉の奥が詰まるような感覚。でも、なぜか、月明かりの下では言葉が出やすくなる。

「先輩…」

声が震えていた。

「好きです。付き合ってください」

彼女が振り返った。月明かりに照らされた彼女の顔は、驚きと悲しみが混ざったような複雑な表情だった。

しばらくの沈黙の後、彼女は静かに口を開いた。

「ごめん…T君は、弟のようにしか見えない」

その言葉は、冷たく、しかし確かに優しかった。拒絶でありながら、傷つけまいとする気遣いが感じられた。

「…そう、ですか」

僕は笑った。またあの笑顔だ。口角だけを持ち上げて、泣きそうなのを必死に隠す、道化の仮面。

「いや、すみません…変なこと言って」

「T君…」 「大丈夫です。忘れてください」

そう言って、僕は屋上を後にした。階段を駆け下りながら、涙が止まらなかった。誰かに見られるのが怖くて、トイレに駆け込み、個室にこもって声を殺して泣いた。

あの夜以来、僕は恋愛そのものを避けるようになった。好きになることが怖い。告白することが怖い。拒絶されることが怖い。それなら、最初から何も感じなければいい。そう思うことで、自分を守っていた。


研究室のプロジェクトが本格化すると、大規模なデータベースシステムの改修が始まった。チームは五人。教授、先輩二人、僕、そしてもう一人の同期。

最初の設計会議で、僕はまたしても自分の意見を言えなかった。頭の中には、もっと効率的なクエリ最適化の方法がある。インデックスの設計も変えた方がいい。でも、口を開くたびに、喉の奥で何かが引っかかる。

「T君はどう思う?」

教授に振られて、僕は慌てた。

「えっと…今の設計で大丈夫だと思います。特に問題はなさそうで…」

嘘だった。問題だらけだと思っていた。でも、反対意見を言うことで、チームの和を乱したくなかった。自分の意見が否定されるのが怖かった。何より、間違っていると思われるのが怖かった。

設計が固まり、実装に入った。夜遅くまで研究室に残ってコードを書く。他のメンバーが帰った後も、僕は一人で画面に向かっていた。

その夜、先輩が戻ってきた。忘れ物を取りに来たのだろう。

「まだいたの?もう十一時だよ」 「もう少しだけ…」

先輩はコーヒーを二つ買ってきて、隣の席に座った。しばらく無言で、互いのコードを書く音だけが響く。

「T君はさ、なんでいつも自分の意見を言わないの?」

突然の問いかけに、手が止まる。

「…言っても、どうせ否定されると思って」 「否定されてもいいじゃない。間違ってたら、直せばいい」 「でも…」 「コードと同じだよ。バグがあれば直す。意見も同じ。間違ってたら、修正すればいい」

先輩の言葉は、論理的だった。間違ってはいない。でも、その言葉がなぜか引っかかった。まるで人間関係のすべてがコードのように単純だと決めつけているように聞こえた。自分だって、告白を拒絶された後、どれだけ「修正」しようとしてもできなかったじゃないか。

「…すみません。やっぱり、僕、帰ります」

そう言って、急いで荷物をまとめた。逃げるように研究室を後にする。先輩は優しい。でも、その優しさが時々、逆に痛かった。


その週末、研究室の飲み会があった。プロジェクトのキックオフを兼ねて、教授も交えた会だった。

場所は大学近くの創作居酒屋。洒落た内装で、料理も美味しい。でも、僕の心は重かった。また、あの会話の流動に飲み込まれる。また、何も言えずに終わる。そう思うと、胃の辺りが重くなった。

乾杯の後、教授がスピーチをした。

「このプロジェクトは、新しい技術に挑戦するものだ。失敗を恐れず、自由に意見を出してほしい。若い発想を期待している」

その言葉が、皮肉に響いた。自由に意見を出せない人間にとって、この言葉はただの呪いだ。自由を強要される苦しみ。それに気づいている人は、ここにはいない。

酒が進むにつれて、会話は活発になっていく。先輩たちは技術の話から恋愛の話、教授の若い頃の武勇伝まで、話題は尽きない。僕は黙って、グラスの酒を空にしていった。

今日は、日本酒に挑戦してみた。辛口の純米酒。最初は喉が焼けるように熱かったけれど、二杯目からは慣れてきた。三杯目には、頭がぼんやりとし始め、緊張が解けていくのを感じた。

「T君、もうそんなに飲んで大丈夫?」

先輩の一人が心配そうに声をかける。僕は笑顔で答えた。

「大丈夫です!僕、結構強い方なんで!」

また嘘だ。実際には、もうかなり酔っていた。でも、酔っている方が楽だった。普段の緊張や不安が、薄れていく感じがした。

そして、遂にやってしまった。

「そういえばさ、このプロジェクトのデータベース設計、ちょっと問題ないですか?」

口が滑った。アルコールが、僕の仮面を溶かしたのだ。

場の空気が一瞬で変わった。教授の眉が少し動いた。先輩たちの視線が僕に集まる。

「どういう問題だ?」

教授の声は、低かった。僕は慌てて言葉を濁そうとしたが、もう遅い。酔いが、僕の口を勝手に動かす。

「いや、インデックスの設計が…それと、クエリの最適化が…」

自分の声が、遠くから聞こえる感じがした。ああ、やってしまった。また、やってしまった。

「具体的に説明してくれるか?」

教授の目が、真剣なものに変わった。急に酔いが覚める。頭が冷えた。そして、恐怖が押し寄せてくる。

「い、いえ…すみません…酔ってて…忘れてください…」

そう言って、僕はトイレに駆け込んだ。個室にこもって、しばらく吐き続けた。胃の中のものが空になっても、まだ嘔吐感は続いた。

鏡の前に立つと、ひどい顔の自分がいた。目は充血し、顔色は青白い。そして、口元には、作り笑いの名残が貼りついていた。

お前は、何をしているんだ。

自分自身に問いかける。答えは返ってこない。


その後、僕はその飲み会の記憶を、完全になかったことにした。翌日、先輩たちは何も言わなかった。教授も、その件には触れなかった。でも、僕の中では、あの夜のことがずっと反芻されている。

なぜ、自分の意見を言えなかったのか。言えたとしても、なぜそれを否定してしまったのか。

答えはわかっている。怖かったのだ。自分の意見が否定されることで、自分の存在を否定されるのが怖かった。告白を拒絶されたあの夜の痛みが、まだ生々しく残っていた。そして、その恐怖から逃れるために、酒に頼った。酒で緊張を和らげ、一時的に仮面を外したが、その結果はさらに深い自己嫌悪を生んだ。

僕は、酒を飲むたびに、自分を曝け出しては後悔することを繰り返していた。


あれから十年近く経った今も、あの夜のことは鮮明に覚えている。研究室の蛍光灯の光、先輩たちの笑い声、グラスの中の酒の匂い、屋上の月明かり、そして彼女の拒絶の言葉。

大学という場所は、僕に一つの真実を突きつけた。コードは嘘をつかない。でも、人間は嘘をつく。特に、僕は自分自身に嘘をつき続けている。優れたプログラマーになりたいくせに、それを認めるのが怖い。認めると、その後の期待に応えられない自分が露呈するのが怖い。人を好きになりたいくせに、拒絶されるのが怖い。だから、自らを貶め、酒に逃げ、意見を殺し、恋愛を避ける。

そして、その繰り返しの中で、本当の自分がどこにあるのか、わからなくなっていく。

今も、僕は酒を飲む。一人で、部屋で。量は昔より減ったけれど、それでも時々、あの日の感覚を思い出す。酒を飲めば、仮面が溶ける。でも、その下にあるのは、やはり弱い自分だ。変われない自分だ。

ただ、最近は少し違う。酒を飲む代わりに、この原稿を書いている。月明かりの下で、自分の心の設計図を描いている。アナログのノートと鉛筆で。デジタルのフィルターを通さずに。

それは、酒の代わりになるのか。それとも、別の形の麻痺に過ぎないのか。

わからない。ただ、今夜もまた、月が昇っている。窓の外の月明かりが、机の上に冷たく落ちている。あの日、屋上で告白を拒絶された場所と同じ月明かりだ。僕はその光の中で、自分の弱さを書き連ねている。これもまた、ある種の告白なのだろう。誰に向けてかはわからないけれど。

大学と嘘の話は、これで終わりにしよう。次の章では、社会人になった後の話を書くつもりだ。そこではまた、新たな仮面と、新たな自己嫌悪が待っている。そして、社内ハッカソンでの、あの不思議な出来事へと続く。

月が、今日も冷たく、真実を照らしている。

← 前の章 目次へ 次の章 →
◆ ◆ ◆
CHAPTER 5
就職と仮面

第5章 就職と仮面

内定をもらったその日、僕はひとりで安アパートの六畳間に帰り、天井を見上げて三十分ほど動けなかった。嬉しさではなかった。むしろ、これから始まる何かに対する漠然とした恐怖が、胃のあたりをぎゅっと掴んで離さなかったのだ。会社は都内のそこそこ名の知れたIT企業で、面接では「コードが美しい」とまで言われた。しかしその言葉も、僕にはどこか遠くの出来事のようにしか感じられなかった。

だが、その日の昼間、僕は社内ハッカソンに参加していた。初めての社内イベントで、新しい発想を形にするための二十四時間の集中開発。チームメンバーは五人、テーマは「社内コミュニケーションを改善するツール」。僕は黙々とコードを書いていたのだが、途中でデザイナーの女性が言った。

「ねえ、その処理、コードを図に書いてみない? 矢印でつなげると、流れが一目でわかるかも」

その言葉が、思いがけず心に刺さった。図に書く――そんな発想はなかった。コードは言葉で書くものだと思っていたから。でも、彼女の提案で描いたシーケンス図は、ロジックが驚くほど整理された。

「すごいじゃん、Tさんのコードって、矢印でつなぐとまるで物語みたい」

彼女の何気ない一言。それなのに、僕はなぜか照れくさくて、すぐに仮面を被った。

「いやあ、そんなことないですよ。ただ、頭の中をそのまま書いてるだけというか…」

首を傾げ、口角を上げ、自分を小さく見せる。その笑顔の裏で、心臓が静かに震えていた。

「もしかしたら、僕は『変わっている』んじゃなくて、違う形で『すごい』のかもしれない」

そんな考えが、ほんの一瞬浮かんでは消えた。だが、それが入社当日の朝に戻ってきた僕の頭に、かすかな希望のように残っていた。

入社して一週間が過ぎた。オフィスは清潔で、モニターが三台並んだデスクが整然と並び、エアコンはいつも快適な温度に保たれている。しかし僕の心は、その快適さとは裏腹に、少しずつ擦り減っていくのを感じていた。

まず、朝の挨拶が苦痛だった。エレベーターを降り、オフィスのドアをくぐるその瞬間から、僕の顔の筋肉は無意識のうちに「笑顔」の形を作り始める。口角をほんの数ミリ上げ、目を少しだけ細め、首をやや傾げる。これは僕が幼稚園の頃から磨き上げてきた、完成度の高い防御用のマスクだ。「おはようございます」という言葉に、明るさと誠実さを込める。演技だ。まったくの作り物だ。

「Tさん、今日も早いね!」

同期のNが声をかけてくる。彼は営業出身で、誰とでもすぐに打ち解ける才能の持ち主だ。僕は慌てて笑顔を維持したまま、

「いやあ、寝坊しそうで目が覚めちゃって。結局、始発で来ちゃいましたよ」

と答える。嘘だ。実際には三時間前に目が覚めて、不安で二度寝もできず、ただ布団の中で天井を見つめていただけだ。だが、そんな真実を話すわけにはいかない。この業界では、「寝坊しそうで不安だった」なんて言えば、それを「やる気がない」と受け取られるのがオチだ。

デスクに座ると、僕はまず開発環境のセットアップを始める。仕事はRuby on Railsを使ったWebサービスの開発で、僕の担当はバックエンドのAPI設計だ。「お前のコードは関数の責務が明確で、まるで小説を読んでいるようだ」と、入社三日目に上司のS主任から褒められた。その言葉は嬉しかったが、同時に大きなプレッシャーにもなった。

なぜなら、その期待に応え続けられるかどうか、僕にはまったく自信がなかったからだ。

昼休みが近づくと、僕の心臓は少しずつ速くなる。「今日も誰かと一緒に食事に行かなければならない」という強迫観念が襲ってくる。会社の食堂は活気にあふれ、同僚たちは楽しそうに談笑している。僕もその輪に入らなければならない。仮面を被ったまま。

「Tさん、どうしたんですか?顔色、ちょっと悪いですよ」

別の同僚、Kさんが心配そうに声をかけてくる。彼女は人事部の女性で、入社時から何かと気にかけてくれる優しい人だ。

「あ、いや、大丈夫です。ちょっと夜更かししちゃって」

僕は笑顔を作る。口角を上げる。目じりを下げる。完璧な笑顔だ。でも、その裏で僕はこう思っている。「なんで気づくんだよ。もっと放っておいてくれよ」と。そんな自分がまた嫌になる。そして、Kさんの口から出た「顔色悪い」という言葉が、「あなたは変わってるよ」という婉曲表現のように感じられて、胸が締め付けられる。

昼食は結局、NとKさん、そして別の部署の先輩と四人でとった。話題は今日のリリースの話、来月の社内イベントの話、そしてなぜか「子供の頃に見たアニメ」の話になった。僕はうまく笑い、うまく相槌を打ち、うまく自分を小さく見せた。「僕はそういうの、あんまり詳しくなくて…」と自虐して、みんなの笑いを誘う。それが僕の役割だ。

でも、心の奥底では叫んでいた。「そんなことどうでもいいんだよ。早くコードを書かせてくれ」と。プログラムは嘘をつかない。変数は定義された通りに振る舞い、関数は宣言された結果を返す。曖昧さがない。駆け引きがない。余計な気遣いもいらない。僕はコードの中にいる時だけ、本当の自分でいられるのだ。

午後はチームの定例ミーティングがあった。プロジェクト管理ツールには「チーム内のコミュニケーション活性化」と書かれた議題が並んでいる。僕の上司であるS主任は、とても熱心な人だった。彼は週に一度、必ず僕を呼び出しては「お前の意見を聞かせてくれ」と言う。

「Tさん、今週のリリースについて、何か懸念点はありますか?」

S主任は真剣な顔で僕を見る。その視線には期待が込められていて、僕の心は縮み上がる。もちろん、懸念点はたくさんある。データベースのインデックス設計が甘いこと、外部APIのエラーハンドリングが不十分なこと、テストカバレッジが全体的に低いこと…。言いたいことは山ほどある。

でも、僕の口から出てくるのは、いつもこうだ。

「いえ、特にありません。問題なく動作するはずです」

何を言っているんだ、僕は。嘘をついている。また嘘をついている。何か言うべきだ。でも言えない。もし僕が指摘したことが間違っていたらどうする?もしS主任が「お前の言う通りだ、修正してくれ」と言ってきたら?期待に応えられない恐怖。間違っていると責められる恐怖。それらがのしかかってきて、僕の声帯を凍りつかせる。

S主任は少し首をかしげて、「そうか…」と言い、次の議題に移る。その瞬間、僕は安堵すると同時に、深い自己嫌悪に襲われる。また逃げた。また仮面を被ってごまかした。

僕は、この会社で「優れたプログラマー」として評価されている。でも、それは「本当の僕」ではない。コードを書く能力だけが切り離されて評価され、人間としての僕は、まったく理解されていない。S主任は僕のことを「優秀だが、少し大人しい。でも、それも個性だ」と思っているかもしれない。でも、現実はもっと深刻だ。僕は職場で常に演技をしている。本当の自分を隠して、笑顔の仮面を被り、適度に自虐し、適度に空気を読む。それを完璧に演じているから、誰も違和感を抱かない。

この乖離は、日に日に大きくなっていく。

午後六時を回ると、オフィスは徐々に静かになっていく。帰宅する同僚たちに「お疲れさまです」と明るく挨拶し、僕はデスクに残る。誰もいなくなると、まず深く息をつく。顔の筋肉がゆるむ――仮面を外す感覚だ。

そこからが、僕にとっての本当の時間だ。

夜のオフィスは、昼間とはまったく別の場所になる。蛍光灯の光は色味を変え、エアコンの音がかえって静けさを強調する。モニターの明かりだけが部屋を照らし、キーボードの打鍵音が規則的に響く。この時間だけは、誰にも邪魔されない。誰にも期待されない。誰にも評価されない。

僕はバッグから自分のノートパソコンを取り出し、VSCodeを開く。サイドプロジェクトだ。趣味で作っている、小さなデータベースライブラリをGoで書いている。普段の仕事ではRubyを使っているが、僕の心はむしろ静的型付け言語にある。Haskellで書かれた関数型のコードを見ていると、なぜか心が落ち着く。すべてが数学的な秩序に従っていて、混沌がない。

「Haskellはいいよなあ…」

ひとりごちる。誰も聞いていない。モニターには、美しいカリー化された関数が並んでいる。型シグネチャを見ただけで、何をする関数かがわかる。副作用がない。引数が同じなら、常に同じ結果を返す。この明快さが、僕の救いだった。

コードを書いている間は、すべての悩みが消える。S主任の期待も、同僚との雑談の疲れも、自分自身への嫌悪も、すべてがどこか遠くへ行ってしまう。バグと向き合うことは、嘘のない会話をしているようだった。コンパイルエラーは「ここが間違っているよ」と正直に教えてくれる。修正すれば、通る。単純だ。人間関係と違って。

午後八時を過ぎた頃、セキュリティの警備員が巡回に来る。彼は僕の顔を覚えていて、「また頑張ってるね」と言って、コーヒーを差し入れてくれることもある。僕はその優しさに感謝しながらも、内心では「さっさと帰れと言われているんじゃないか」と疑ってしまう。その猜疑心すら、自分が嫌になる。

夜のオフィスでコードを書いていると、高校の図書館での日々を思い出す。エアコンの音だけが響くあの静けさ。初めてPythonの入門書を読み、数当てゲームが動いた時の衝撃。

「初めて理解された」

その感覚は、今も変わらない。コードだけは、僕を理解してくれる。いや、正確に言えば、コードは理解する必要すらない。ただ、正直に書いた通りに動いてくれる。それでいいのだ。

午後十時を過ぎると、さすがに帰らなければならない。オフィスの施錠があるからだ。パソコンをしまい、コーヒーカップを洗い、席を立つ。昼間の喧騒とは打って変わって、エントランスロビーはがらんとしていて、自動ドアが僕を外へ押し出す。

外の空気は冷たい。十一月の夜風が頬を刺す。街灯が淡いオレンジ色の光を路上に落としていて、人影はまばらだ。僕は肩をすくめながら駅へ向かう。その歩きながら、また考えてしまう――今日もまた、僕はなにも変わらなかった。

昼間は仮面を被り、夜は仮面を外す。仮面を被っている時は評価されるのに、仮面を外した自分は誰にも必要とされない。このジレンマを、僕はどうすればいいのだろう。

でも、その答えはまだ見つからない。

週が明けると、また同じ日々が始まる。月曜の朝、オフィスに着くなり、僕はまた笑顔の仮面を装着する。S主任が出社するとすぐに、デスクまで来てこう言った。

「Tさん、来月の社内勉強会で発表してくれないか? 君の設計の考え方とか、コードを書くときに気をつけていることを、みんなにシェアしたいんだ」

その言葉を聞いた瞬間、僕の心臓は止まるかと思った。

「え…発表、ですか?」

「ああ。君のその、コードと向き合う姿勢を聞かせてくれ。三十分くらいでいいから」

S主任の目は真剣だ。これがチャンスなのだ。社内で評価される絶好の機会。普通の人間なら、喜んで引き受けるだろう。

でも、僕の口から出た言葉は、

「いや、僕なんかが話すことなんて、何も…そんな大したことじゃないですから…」

また逃げた。自己卑下で防御した。「自分は大したことないです」と言えば、相手は気を遣って引き下がってくれる。それが僕のパターンだ。

しかし、S主任は引かなかった。

「いやいや、君は十分素晴らしい。自分の力量に自信を持ちなさい。もし嫌なら無理強いはしないが、せめて考えてみてくれ」

S主任はそう言って、僕の肩を軽く叩いて自分の席へ戻っていった。その背中を見つめながら、僕は言いようのない焦燥感に駆られた。

「期待されている」――その事実が、こんなにも重いとは思わなかった。期待に応えられなかったらどうしよう。その恐怖で押しつぶされそうになる。

昼休み、僕は一人で近くのコンビニへ弁当を買いに行った。オフィスに戻る途中、公園のベンチに座って、ぼんやりと空を眺めた。十一月の空は高い。雲が一つもない青空が広がっていて、それが逆に虚しかった。

もしも、僕が仮面を被らずに、本当の自分で生きられたら。もしも、僕が期待に応えられない自分を認めて、それでも前に進めたら。もしも、僕が人と向き合う時に、プログラムのように正直になれたら――。

そんなことを考えながら、弁当にも手をつけずに三十分を過ごした。

午後はまたミーティング。今回はプロジェクトの進捗報告と、来月のスプリント計画の策定だ。僕は黙ってホワイトボードを見つめている。他のメンバーが次々と意見を出す中で、僕だけが一言も発しない。Nが「Tさんはどう思います?」と話を振ってくる。その瞬間、部屋中の視線が僕に集まる。

「えっと…特に問題はないと思います。これまでの方針で進めれば、間に合うんじゃないでしょうか」

また嘘だ。実際には、このスケジュールはかなり無理がある。データベースのマイグレーションが二回増えているのを見逃しているんじゃない。でも、言えない。言ったら、その責任を負うことになる。言ったら、できると思われる。そして、できなかった時に責められる。その連鎖が怖いのだ。

S主任が少し眉をひそめた。「本当に大丈夫か?何か気になることがあれば、今のうちに言ってくれ」

「大丈夫です。問題ありません」

もう、自分でも何を言っているのかわからなくなる。口が勝手に動いている。その言葉こそが、最大の問題なのに。

ミーティングが終わり、席に戻ると、僕は深いため息をついた。また逃げた。また仮面を被ってごまかした。胸の奥が、ぎゅっと締め付けられるような痛みを感じる。

その日の夕方、同僚のNが飲みに誘ってきた。

「Tさん、今日ちょっと一杯どう?最近、なんか疲れてそうだからさ」

僕は反射的に笑顔を作った。

「ありがとうございます!でも今日はちょっと…コードが片付かなくて…」

「また徹夜コース?Tさん、しっかり休まないとぶっ倒れるよ」

「大丈夫大丈夫。若いので(笑)」

嘘だ。徹夜なんてする気はない。ただ、人と酒を飲むのが怖いだけだ。酔って仮面が外れたらどうしよう。つい本音を言ってしまったらどうしよう。その恐怖が、僕をいつも孤独へと追いやる。

Nは少し残念そうな顔をしたが、無理強いはしなかった。

「わかった。また今度な。でも、本当に体には気をつけてよ」

彼の優しさが、かえって辛い。僕がこんなに偽っているのに、それでも心配してくれる。その優しさに応えられない自分が、また嫌になる。

午後七時を過ぎると、オフィスはまた静寂に包まれた。僕は一人、デスクに残る。今日は特にやる気が起きず、VSCodeを開くこともせず、ただモニターの前に座っていた。

社内勉強会の発表の話が頭から離れない。S主任は、なぜ僕にそこまで期待するのだろう。僕のコードは確かにきれいかもしれない。でも、それは単なる自己満足だ。チームで開発する時に必要なのは、きれいなコードだけじゃない。コミュニケーション能力、協調性、リーダーシップ。そういうものの前で、僕はいつも無力だ。

「優秀なプログラマー」というレッテルが、僕の首を締め付ける。もし、このレッテルをはがしたら、僕に何が残るのだろう。何もない。ただの、人と話すのが苦手な、孤独な人間が一人いるだけだ。

ふと、窓の外を見る。ビルの明かりが、夜空にぼんやりと浮かんでいる。この街には何万人もの人がいて、それぞれが何かを抱えて生きている。その中で、僕はたった一人。仮面を被って、コードを書いて、夜の時間だけ逃げ込む。

「僕は、一体何のために生きているんだろう」

その問いが、頭の中をぐるぐると回る。答えは出ない。でも、それでも明日はまた来る。また笑顔の仮面を被って、出社しなければならない。

その夜、結局僕は午後十一時までオフィスに残った。サイドプロジェクトのコードを書き、いくつかのバグを修正した。特にやるべきことがあったわけではない。ただ、家に帰りたくなかった。帰れば、独りで向き合わなければならない。仮面のない自分と。その自分が、あまりにも弱くて、あまりにも見苦しいことを、僕はよく知っている。

帰り道、ふと空を見上げると、月がきれいに輝いていた。高校の頃から、月を見るといつも同じことを考える。この月は、太古の昔から変わらず地球を照らしてきた。どんな人間の苦しみも、喜びも、ただ見つめてきた。僕のこの小さな悩みも、きっとずっと前から誰かが経験してきたんだろう。

「でも、それでも僕は、僕の苦しみを抱えて生きていくしかない」

マンションの部屋に戻ると、すぐに床に座り込んだ。疲れていた。精神的に、身体的に、全てが擦り切れていた。

カバンからパソコンを取り出し、もう一度コードを書こうとした。だが、手が動かない。代わりに、僕は過去の日記を読み返していた。すると、昨日の日付のページに、殴り書きのような字でこう書いてあった。

「また今日も仮面を被った。気づいたら、本物の顔がわからなくなっている。どれが本当の表情で、どれが偽物なのか。もしかしたら、最初から『本当の自分』なんて存在しなかったのかもしれない。ただの、他人の期待に応えて、傷つくのを避けるための、プログラムされた存在。僕は、僕という名のシステムなんだ。」

その文章を読んで、僕は苦笑した。本当にその通りだ。僕はシステムだ。入力に対して定義された出力を返す。期待には笑顔で応え、プレッシャーには自虐で防御し、孤独にはコードで逃避する。全てがプログラミングされている。

でも、そのシステムを書き換えたい。そう思う自分もいる。

S主任の言葉が、頭の片隅に残っていた。

「自分の力量に自信を持ちなさい」

自信。その言葉が、いつも僕を苦しめる。自信を持つことができれば、どれだけ楽だろう。でも、僕は自信を持つことが怖い。なぜなら、自信を持つということは、「自分には価値がある」と認めることであり、それが否定されるのが怖いからだ。

プログラムは正直だ。論理的だ。でも、人間は違う。人間の評価は曖昧で、不確実で、誰かの気分に左右される。その不確実性に、僕の心は耐えられない。

結局、その夜もコードを書くことはせず、ただ布団の中で天井を見つめて、朝を迎えた。

翌朝、出社する前に、鏡で自分の顔を確認した。目の下にはくまができていて、顔色は優れない。でも、オフィスに向かう前に、僕はしっかりと仮面を装着する。口角を上げる。目じりを下げる。首を傾げる。完璧な笑顔だ。

「おはようございます!」

同僚に挨拶する声は、意外なほど明るかった。この声は、誰のものだろう。僕のものなのか、それとも仮面のものなのか。もう、区別がつかない。

昼過ぎ、S主任が近づいてきて、また例の話をした。

「Tさん、勉強会の発表、本当に考えてみてくれないか? 君の話を聞きたいと言っているメンバーも多いんだ」

今度は、少し違う言い方だった。「聞きたいと言っているメンバーが多い」。つまり、僕が断ったら、その人たちの期待も裏切ることになる。

(また逃げるのか?また仮面でごまかすのか?)

心の中で、自分自身が問いかける。

「…わかりました。考えてみます」

そう答えるのが、精一杯だった。S主任は笑顔で「楽しみにしてるよ」と言って去っていった。

その瞬間、また胸の奥が重くなった。引き受けてしまった。そして、また後悔する。ああ、どうして僕はいつもこうなんだ。

しかし、その少し後、ふとあの社内ハッカソンの光景が蘇った。デザイナーが言った「コードを図に書いてみない?」という言葉。そして、図にしたことで理解が深まったあの感覚。もし、あの経験を勉強会で話せたら――。もしかしたら、それは「変わってる」じゃなくて「すごい」に変わるのかもしれない。

その日も、夜の十時までオフィスに残った。でも、コードはほとんど進まなかった。勉強会の発表のことを考えていると、キーボードを打つ手が止まってしまう。でも、今日は違った。ハッカソンのことを思い出すたび、小さな勇気が湧いてくる。

「発表で何を話せばいいんだろう。自分の設計思想? でも、図に書くって発想を共有できたら…」

自己卑下が始まる前に、僕はそれを打ち消した。図に書くという方法が、誰かの役に立つかもしれない。そう思えるだけで、少しだけ呼吸が楽になった。

午後十一時を過ぎて、ようやく帰宅する準備を始めた。パソコンをしまい、コーヒーカップを洗い、席を立つ。エレベーターに乗って一階へ降りると、警備員のおじさんがにこやかに挨拶してくれた。

「お疲れさま。今日も遅かったね」

「すみません、ちょっと仕事が残ってまして」

笑顔で答える。でも、本当は仕事じゃない。ただ、家に帰るのが怖いだけだ。

帰り道、また月を見上げた。昨日と同じ月。でも、少しだけ形が変わっている気がした。少し欠けている。いや、満ちていくのかもしれない。どっちにしろ、月は変わらずそこにある。

僕は、この月に何度慰められただろう。高校の図書館から帰る夜道、大学の研究室の屋上、そして今、会社からの帰り道。どの場所でも、月だけは変わらず僕を見ていた。

「プログラムは嘘をつかない。でも、月もまた、嘘をつかない。」

ふと、そんなことを思った。月は人間の事情など知らず、ただ物理的に軌道を回っている。そこには、期待も評価も、自己嫌悪もない。ただ純粋な存在があるだけだ。

僕はその純粋さに、憧れているのかもしれない。

アパートの部屋に戻ると、布団に倒れ込んだ。今日もまた同じ日だった。でも、少しだけ違う。勉強会の発表を受け入れたし、ハッカソンの経験が頭の中でかすかに輝いている。それに、S主任の期待に応えるための発表を、本当にやってみてもいいかもしれない。失敗したって、死ぬわけじゃない。間違ったって、直せばいい。そう言ったのは、かつての研究室の先輩だった。

「コードと同じで、間違ってたら直せばいい」

その言葉が、久しぶりに頭の中に蘇った。

「間違ったら直せばいいか…」

僕は、呟いた。それが自分にできるかどうかはわからない。でも、少なくとも、明日は少し違うかもしれない。朝、オフィスに入る前に、あの図の話を思い出そう。自分を否定する前に、コードの流れを描くように、頭の中を整理しよう。そんな小さな一歩が、いつか大きな違いを生むかもしれない。

その夜、久しぶりに、明日が少しだけ楽しみになるような気がした。もちろん、その感情もまた、一時的なものかもしれない。すぐにまた恐怖に押しつぶされるかもしれない。でも、それでもいい。

少なくとも、今この瞬間は、仮面を外して、本当の自分でいられた。部屋の明かりを消し、闇の中で目を閉じる。明日、また仮面を被るかもしれない。でも、その仮面の下で、僕は確かに変化の種を抱えている。社内ハッカソンで得たあの気づきが、僕のコードの書き方を変えるかもしれない。いや、自分の生き方さえも変えるかもしれない。

そう思って、眠りに落ちた。──そして、この夜の静けさが、やがて迎える新たな一歩の前触れとなることを、まだ僕は知らない。

← 前の章 目次へ 次の章 →
◆ ◆ ◆
CHAPTER 6
深夜のコミット

第6章 深夜のコミット

社会人になって最初に驚いたのは、深夜のオフィスがこれほどまでに静かなものだということだった。いや、驚いたというより、むしろ安堵したと言うべきかもしれない。昼間のオフィスというのは、どうしても人間の気配で満ち溢れている。同僚の笑い声、電話のベル、キーボードを叩く無数の指の音、そして何より——視線。誰かがこちらを見ている、という感覚が常にまとわりつく。それは僕にとって、決して慣れることのないストレスだった。

しかし夜の十時を過ぎたオフィスは違う。蛍光灯の半分が消され、薄暗くなったフロアには、僕のデスクの周りだけが淡い光を放っている。エアコンは既に停止しているから、夏場は少し蒸すが、それでも構わなかった。むしろ、誰もいないという事実が、僕に不思議な自由を与えてくれる。

初めて深夜まで残って仕事をしたのは、入社して三ヶ月が経った頃だった。S主任から「悪いけど、明日までにこのAPIの叩き台を作ってきてくれないか」と頼まれた。昼間はミーティングやら何やらで全く集中できず、気がつけば夕方の六時を回っていた。 「わかりました。明日の朝までに仕上げます」 そう答えた時の僕の口元は、もちろん仮面の笑顔だった。「大丈夫です、全然問題ありません」——そう言いながら、内心では冷や汗が止まらなかった。APIの設計なんて、大学の授業でやったきりだ。実務で求められるレベルのものを作れる自信は、全くなかった。

しかし、一人でオフィスに残り、ヘッドフォンをつけてコードを書き始めると、不思議なことに恐怖は薄れていった。最初は手探りだった。PythonのFastAPIで、エンドポイントを一つずつ定義していく。GET、POST、PUT、DELETE——CRUD操作の基本だ。reqwestで受け取るパラメータのバリデーション、エラーハンドリング、データベースとの連携。一つ一つの処理を、丁寧に、確実に積み上げていく。

ああ、これだ。これなのだ。

高校二年の図書館で、あの薄っぺらいPython入門書を開いた時の感覚が、鮮やかに蘇る。プログラムは嘘をつかない。書いた通りに動く。バグがあれば、そこには必ず原因があり、修正可能だ。曖昧さがない。感情がない。駆け引きがない。ただ、コードと自分だけがそこに存在する。

夜の七時を過ぎた頃から、集中力が異常に高まっていくのを感じた。キーボードを叩く指の感触が、まるで自分の身体の一部のように滑らかになる。頭の中に浮かぶ設計が、そのまま指先を通じてコードになっていく。まるで、自分がプログラミング言語そのものになったかのような錯覚に陥る。

それは陶酔と言ってもよかった。

窓の外は既に暗く、ビルの向こうに、かすかに月が見えた。満月ではなかったが、半月が冷たく光っている。それを見た時、僕の指が一瞬止まった。しかし、すぐにまたコードを書き始めた。今はそれどころじゃない。まだ、動くものができていない。

気がつけば、時計は十一時を指していた。三時間ぶっ続けでコードを書いていたらしい。肩がガチガチに凝っている。しかし、驚くべきことに、APIの基本部分は完成していた。まだテストはしていないが、論理的には間違っていないはずだ。

——ふと、スマートフォンが震えた。Slackの通知だ。

見ると、同じチームの後輩、M君からのメッセージだった。「Tさん、まだ残ってるんですか? お疲れ様です!」

返事をしなければ。そう思って、また僕は仮面を被った。

「うん、ちょっと片付けなきゃいけない作業があってね。M君こそ、まだ起きてるの?」 「明日のプレゼンの準備で。Tさん、無理しすぎないでくださいね!」 「ありがとう。君もね。おやすみ」

こんな会話だ。全くの虚構だ。無理しているのは事実だが、それを「ちょっとした片付け」なんて言い訳で誤魔化している。本当は、心臓がバクバクしていて、もしこのAPIが動かなかったらどうしようという恐怖で胃がキリキリしている。でも、それを正直に言えるわけがない。

「実は主任に無茶な納期を課せられて、今必死にコードを書いているんです。自信は全くなくて、もう逃げ出したい気分です」

——こんなことを言えるはずがない。そんなことを言えば、M君に心配をかけ、そして自分が「できない人間」として評価される。そうなれば、次の仕事が回ってこなくなるかもしれない。あるいは、逆に「あいつは弱音を吐くやつだ」と烙印を押される。

そういう暗黙のルールが、この会社には——いや、この社会にはある。弱音は吐いてはいけない。できないと言ってはいけない。全ては「大丈夫」で済ませる。その仮面を被っていれば、少なくとも今の居場所は守られる。

Slackの会話を終えて、またコードに戻った。virtualenvをアクティベートし、テスト用のスクリプトを走らせる。最初のエンドポイントは無事に動作した。二つ目も問題ない。三つ目——あれ? エラーが出た。

「ValidationError: field 'email' is required」

ああ、そうだ。リクエストボディにemailフィールドが必須なのに、バリデーションをかけるのを忘れていた。Pydanticのモデルに、ちゃんと型ヒントをつけていない。すぐに修正した。

「よし、通った……」

一人で呟く。誰も聞いていない。当然だ。オフィスには僕一人だけなのだから。

それでも、エラーが消え、テストがグリーンになった瞬間の安堵感は何物にも代えがたい。それは、プログラムが僕に対して「お前の書いたコードは正しい」と言ってくれているようなものだ。人間は嘘をつく。建前を言う。暗黙のルールに従わせる。しかし、プログラムは違う。プログラムは、正しければ正しいと、間違っていれば間違っていると、それだけを教えてくれる。

午前零時を回った。そろそろ帰ろうかと思い始めた頃、同僚のT橋さんからTwitterのDMが届いた。

「Tくん、まだ会社? 今、タイムライン見てたら、君がコード書いてる感じだったから」

なぜバレたのか。僕はTwitterで、「夜のオフィス、集中できる」などと呟いていたのを思い出した。ああ、そうだ。僕はSNSでも仮面を被っている。本当の弱音は書けないから、代わりに「仕事頑張ってます」アピールをしている。それはそれで、また別の偽りの自分だ。

「はい、ちょっと明日までに片付けなきゃいけないものが」 「お疲れ様。俺も昔はよく夜中までやってたよ。でも、気をつけて。燃え尽きる前に帰れよ」

T橋さんは、いわゆる「優しい先輩」だ。でも、その優しさが時々重い。なぜなら、彼の優しさに応えようとすると、また仮面を被らなければならないからだ。本当のことを言いたくても言えない。だから、「はい、ありがとうございます。お気遣い感謝します」と、教科書通りの返事を打つ。

T橋さんとのやり取りを終えて、コーヒーを淹れに給湯室へ向かった。廊下は真っ暗で、非常灯だけがぼんやりと床を照らしている。誰もいないオフィスは、まるで廃墟のようだ。自分の足音だけが、やけに大きく響く。

給湯室の蛍光灯をつけると、目が痛かった。コーヒーメーカーにカプセルをセットし、スイッチを押す。待っている間、ふと窓の外を見た。月が、先ほどより少し高い位置に移動していた。満月ではないのに、やけに明るい。あの冷たい光が、僕の内側を覗き込んでいるように感じられた。

「君は、何をそんなに必死になっているんだ?」

月がそう問いかけてくるような気がした。思わず苦笑いが出る。こんなナイーブな想像をするなんて、疲れている証拠だ。

コーヒーを啜りながら、ふと考えた。なぜ僕はこんなに必死にコードを書いているのだろうか。期待に応えたいから? 仕事を失いたくないから? 確かにそれもある。しかし、それだけではない気がする。

もっと深いところで、僕はコードの世界に——プログラムという「嘘をつかない世界」に——引き戻されているのだ。人間関係は嘘と建前で構成されている。自分の気持ちすらも、自分でよくわからない。でも、コードは違う。TrueはTrue、FalseはFalse。美しい。

その美しさに囚われている。依存している。中毒だ。

コーヒーを飲み終え、デスクに戻った。さあ、もう一踏ん張りだ。残りのエンドポイントを実装してしまおう。

——ところが、ここからが地獄だった。

四つ目のエンドポイント、`POST /users/{id}/profile` を実装しようとした時、奇妙なバグにぶつかった。何度テストを通そうとしても、404エラーが返ってくる。ルーティングの設定は明らかに正しい。デコレーターも間違っていない。URLパターンも、ドキュメント通りだ。

「おかしい……。絶対に間違っていないはずなのに」

そう言い聞かせながら、コードを何度も見直す。タイポはない。インデントも正しい。FastAPIのバージョンは最新だ。Pythonのバージョンも問題ない。

それなのに、404。Not Found。

自分の書いたコードが、まるで裏切ったかのように、冷たくエラーを突きつけてくる。プログラムは嘘をつかない。そのことはよくわかっている。だからこそ、このエラーは「お前のコードに問題がある」と言っているのと同じだ。しかし、その問題がどこにあるのか、僕には全く見当がつかない。

時間が過ぎていく。午前一時。二時。三時。

汗がにじむ。手が震えてきた。キーボードのキーが、指の下で異物のように感じられる。何度もコードを書き直し、テストを実行し、エラーを確認する。そのループが、無限に続く。

「なぜだ……。なぜ動かない……」

声に出して呟いた。オフィスには僕一人だけだ。声は、暗い空間に吸い込まれるように消えた。返事はない。当たり前だ。誰もいないのだから。

頭の中が真っ白になってきた。心臓が早鐘を打つ。吐き気がする。これまでにない、強い挫折感が襲ってくる。自分はやっぱりダメなんだ。同僚たちのように、スラスラとコードを書けるようにはなれない。これまで必死に積み上げてきた自信が、音を立てて崩れていく。

「もう、ダメだ……」

そう思った時、ふと目が覚めた。いや、物理的に眠りから覚めたわけではない。もっと深いところで、何かが切り替わったのだ。

「ちょっと待て。このバグは、何か基本的な見落としがあるんじゃないか?」

そう自分に言い聞かせて、またコードを最初から見直し始めた。今度は、ルーターの階層構造を確認する。サブルーター、親ルーター、アプリケーション全体のルーター……。

「……ああ、そうか」

声が出た。理由がわかった。サブルーターの`prefix`に、`/api/v1`が二重に設定されていたのだ。親ルーターで`/api/v1`を指定し、さらにサブルーターでも同じパスを指定していた。結果として、実際のエンドポイントは `/api/v1/api/v1/users/{id}/profile` になっていた——そんな馬鹿げたミスだった。

修正する。再テストする。通った。

なんてことはない。初歩的な設定ミスだった。たった一つの設定が間違っていただけで、四時間も溶かしたのだ。その後、軽く笑いがこみ上げた。自嘲の笑いだ。

「僕は、なんて愚かなんだろう……。こんな単純なバグに、四時間も苦しんだ。自分の無能さに、泣きたくなる」

そう呟きながら、デスクに突っ伏した。時計は午前四時を指している。外はまだ暗いが、空の端がわずかに白み始めていた。月は、西の空に傾いていた。もうすぐ夜が明ける。それと同時に、同僚たちが出社してくる。彼らに、また仮面を被って挨拶をしなければならない。

ぐったりとした身体を起こし、最後の仕上げにかかった。残りのエンドポイントは、比較的スムーズに書けた。バグのトラウマが頭から離れず、慎重になりすぎて逆に時間はかかったが、動かないよりはましだ。

全てのテストをパスしたのは、午前五時半だった。達成感よりも、疲労と虚無感が勝っていた。ちゃんと動いている。でも、それが何だというのだ。明日——いや、今日になったら、また同じようなバグに苦しむかもしれない。あの404エラーの悪夢が、フラッシュバックのように蘇る。

「プログラムは嘘をつかない……。そう、僕は信じていた。でも、バグは僕の嘘を暴く。僕の無能さを、はっきりと数字で示す。404エラーは、僕の実力が足りていないことの証拠だ」

コードをコミットする。Gitに、深夜の成果を刻み込む。コミットメッセージは、「✨ feat: implement user profile endpoints」。絵文字までつけて、やけに明るいメッセージにした。これも仮面だ。本当なら、「💀 fix: 四時間もかけてデバッグした。もう死にそう」と書きたい。でも、それはできない。チームメイトが後でこのコミットログを見た時、暗い印象を与えたくない。そういう配慮もまた、僕の仮面の一部だ。

プッシュが完了した瞬間、どっと疲れが押し寄せた。椅子の背もたれに身体を預け、天井を見上げる。蛍光灯の光が眩しい。目を閉じると、瞼の裏にコードの残像が浮かぶ。ルーター、デコレーター、型ヒント、Pydanticモデル……。それらがぐるぐると回る。

「帰ろう……」

立ち上がろうとした時、スマートフォンが震えた。またSlackだ。今度はS主任からだった。

「Tくん、夜中に悪いね。APIの進捗はどう? 明日の朝のミーティングまでに間に合いそう?」

主任も起きているらしい。いや、もしかしたらわざと夜中に連絡して、僕の進捗状況を確認しようとしているのかもしれない。そう思うと、また胃が痛くなってきた。もう一度、仮面を被る。

「大丈夫です。今、全てのテストをパスしました。プッシュ済みです」

すぐに既読がついた。そして、返信が来た。

「さすがだな。助かったよ。お疲れ様、今日は帰ってゆっくり休め。午後出社で構わないから」

「ありがとうございます。おやすみなさい」

この返信もまた、仮面だ。「大丈夫」も「ありがとう」も、本当は全然思っていない。大丈夫じゃない。疲れ切っている。帰りたい。でも、そう言ってはいけない。そういうものだ。

エレベーターで一階まで降り、自動ドアをくぐると、夜明け前の冷たい空気が頬に触れた。街はまだ静かで、コンビニの灯りだけが目立つ。星はほとんど見えないが、空の端がほんのりと赤みを帯びていた。

自転車をこぎながら、ふと思う。僕はまた、コードの世界に逃げ込んだ。バグに四時間も苦しんだのに、それでもコードの世界が好きだ。なぜなら、バグが見つかれば直せるから。修正の道筋が論理的に存在するから。人間関係のように、直しようのない歪みや矛盾に悩まされることがないから。

でも、その代償として、僕はまた現実の人間関係から遠ざかった。夜中のオフィスに籠もって、誰とも会わず、誰とも言葉を交わさず、ただコードだけを書いていた。それは一見、生産的に見える。しかし、裏返せば、人間から逃げているだけだ。

月が、もうほとんど見えなくなっていた。夜が終わろうとしている。新しい一日が始まる。同僚たちが出社してくる。僕はまた仮面を被って、笑顔を作って、適度に愛想を振りまくだろう。でも、その仮面の裏では、今夜の孤独と陶酔と苦しみが渦巻いている。誰にも言えない、僕だけの秘密として。

家に着き、シャワーを浴びて、ベッドに倒れ込む。カーテンの隙間から、朝日が差し込み始めている。寝る前に、あのコミットログをもう一度確認したくなった。スマートフォンを開き、GitHubのリポジトリを表示する。深夜にプッシュしたコードが、整然と並んでいる。一見、完璧だ。

でも、あの四時間の苦しみは、どこにも記録されていない。Gitは、いつ誰が何をコミットしたかだけを記録する。その背後で、どれだけの苦闘があったか、どれだけの絶望があったか、そんなものは一切無視される。

それでいい。コードは嘘をつかない。でも、コードを書く人間は嘘をつく。笑顔で「大丈夫」と言いながら、心の中では悲鳴を上げている。完璧なプログラムを書いたふりをして、実は四時間もバグに苦しんでいた。

それが、僕の現実だ。プログラムの世界の完璧さの裏で、いつも不完全な自分がいる。そのギャップが、たまらなく苦しい。

目を閉じると、またコードの残像が浮かんだ。しかし今度は、その合間に、自分が書いたコミットメッセージがチラついた。「✨ feat: implement user profile endpoints」。星の絵文字が、まるで嘲笑っているかのようだ。

——本当は、星なんかじゃない。深夜のオフィスで、ただ一人、月明かりだけを頼りにコードを書いていた、小さな虫けらのような自分だ。そんな自分が、たまたま正しいプログラムを書けただけだ。だから、このコミットに星をつける資格なんて、僕にはない。

そう思うと、急に全てが馬鹿馬鹿しくなった。アラームをセットして、スマートフォンを枕元に置く。午前十時には起きなければ。午後から出社して、また仮面を被って、同僚たちと雑談をしなければならない。

その前に、せめて数時間だけでも、本当の自分でいさせてほしい。仮面を外し、誰の目も気にせず、ただ眠る。夢の中でさえ、コードは書かない。バグも追いかけない。ただ、暗闇に身を委ねる。

それが、深夜のコミットが終わった後に許される、唯一の贅沢なのだから。

← 前の章 目次へ 次の章 →
◆ ◆ ◆
CHAPTER 7
彼女の存在

第7章 彼女の存在

彼女のことを、どう書けばいいのだろう。この胸のざわつきを、言葉に置き換えることができたなら、どれほど楽になれるか。しかし考えれば考えるほど、沼のように感情は濁っていく。

あのハッカソンの日、彼女は私に向かって「コードを図に書いてみない?」と言った。その時の言葉は、今でも鮮明に覚えている。「コードが物語みたいですね」――あの一言は、確かに私の心に突き刺さった。褒められたのだ。初めて、自分の書いたコードを、誰かが「美しい」と評した瞬間だった。

しかし、それから数ヶ月が経った今、私は彼女とまともな会話すら交わせずにいる。ハッカソンでは二言三言のやりとりができたのに、日常のオフィスでは、まるで別人のように固まってしまう。

私は彼女を、遠くから見つめている。それだけだ。

名前を呼ぶ勇気もなく、目を合わせる度胸もなく、ただオフィスの片隅から、彼女の動きを追いかける。そんな自分が情けなくて、情けなくて、でも目を離せない。ハッカソンで会話が成立したという事実が、むしろ今の自分をより惨めにしている。あの時はなぜ話せたのか。あの時はなぜ、普通の人間のように振る舞えたのか。

仮面の内側

彼女はデザイナーだ。社内ハッカソンで声をかけてきたあの瞬間、私はどうだっただろうか。おそらく、無意識に仮面を装着していたのだ。口角を5ミリ上げ、目じりを3ミリ細め、声のトーンを普段より半音高くする。その“チューニング”があれば、私はごく普通の人間として会話できる。

問題は、仮面の準備ができない場面だ。予期せぬ遭遇、エレベーターのような閉鎖空間、彼女が突然話しかけてくる瞬間――そんなとき、私は仮面を装着する時間的余裕を失い、結果として何も言えなくなる。

彼女はいつも笑っている。オフィスに彼女がいると、空気が軽くなるような気がする。彼女が話すと、周りの人の表情がほころぶ。隣のセクションの男性社員と、何やら楽しそうに談笑している姿を見るたび、私は胸の奥がきゅっと締め付けられる。あれは嫉妬だ。嫉妬という、醜い感情だ。自分でも嫌になる。

ただし、私はこの感情を正確に認識している。嫉妬しているのは、彼女の自然な社交性にだ。彼女が何気なく交わす挨拶、軽やかな笑い声、相手の目をまっすぐ見て話す姿勢――それらすべてが、私には到底できないことだから。私は彼女を遠くから見つめながら、いつも考える。

どうして、あんなに簡単に人と話せるのだろう。 どうして、あの笑顔は本物なのだろう。 どうして、私は彼女のようになれないのだろう。

そして、その答えがわからないまま、自己嫌悪のスパイラルに落ちていく。

しかし、前に進むために、私は自分の内面を深く分析しなければならない。ハッカソンで会話ができたのに、今できない理由。それは、ハッカソンでは「コード」という共通言語があったからだ。プログラムの話なら、私は仮面を介さずとも話せる。仮面と本当の自分の境界が、コードというフィルターを通して曖昧になる。しかし日常の雑談には、そのフィルターがない。むき出しの自分と向き合わなければならない。

観察という名の逃避

いつからか、私は彼女を観察する習慣ができていた。観察という名の、ただの逃避だ。直接話しかける勇気がないから、代わりに遠くから彼女を見つめて、その行動パターンを脳内で分析する。

彼女は、朝はだいたい9時20分ごろに出社する。エレベーターを降りるとき、「おはようございます」と、清潔な声で挨拶をする。ロッカーに荷物を置いて、マグカップにコーヒーを注ぐ。その動作ひとつひとつが、なめらかで淀みがない。まるで、人間関係を完璧にチューニングされたプログラムのように、滞りなく実行している。

私なんて、朝の挨拶ひとつ取っても、大げさなくらい口角を上げて笑顔を作り、声のトーンを調整して、「おはようございます」と言う。それがどれだけ疲れることか。仮面の下で、私はいつも顔の筋肉がつりそうになる。眉間にしわが寄っていないか、目が泳いでいないか、確認するのに必死だ。

彼女には、そんな苦労が一切感じられない。自然体で人と接することができる。その能力が、私には何よりも羨ましく、同時に何よりも憎らしかった。

昼休み、彼女は同僚の女性と食堂に行くことが多い。ときには男性社員とランチに出かけることもある。そんなとき、私は自分の仮面がさらに分厚くなるのを感じる。彼らが談笑するテーブルを横切りながら、私は無意識に「自分は場違いだ」「自分が行ったら空気が壊れる」と考える。

だからいつも、一人でコンビニに弁当を買いに行く。オフィスの片隅で、モニターに映った自分の顔を見ながら、味気ない弁当をかきこむ。その間も、耳は彼女の笑声を追いかけている。

私は、本当に気持ち悪い人間だと思う。

彼女の明るさと、私の影

彼女が他の男性社員と話している姿を見ると、胸の奥に黒い霧が立ち込める。特に、営業のOという男だ。彼は明るく、社交的で、よく通る声で笑う。彼女とOが並んで話しているのを見ると、私はデスクの下で拳を握りしめてしまう。

なぜ、彼女はあんな男と――そう考えて、すぐに自分を責める。 お前には関係ないだろう。お前が彼女に話しかけることすらできないくせに。お前が嫉妬する資格なんて、どこにもない。

私は自分に言い聞かせる。 彼女は、誰にでも優しいのだ。それは特別な感情ではない。ただの職業的な親切心だ。社内ハッカソンのあの言葉も、ただの社交辞令だったに違いない。「コードが物語みたい」なんて、お世辞に決まっている。

本当の自分を見せたら、彼女は幻滅する。 私の本当の姿は、暗くて、陰鬱で、人と話すことすらままならない、社会不適合者だ。そんな人間のことを、彼女が好きになるわけがない。むしろ、私のような人間が彼女に話しかけたら、気持ち悪がられて、距離を置かれるだろう。

そう考えると、話しかける勇気はますます萎える。

仮面のチューニングと、その代償

私は考える。なぜ、私はこうまでして仮面を被り続けるのか。

幼稚園の頃、お遊戯会で「もっと笑って!」と言われたあの日から、私は笑顔を“演技”として習得した。鏡の前で、口角の角度、目じりのカーブ、頬の上げ方を、一つ一つチューニングしていった。その結果、私はクラスの道化として生き残ることができた。いじめの標的にならず、安全な立場を確保できた。

しかし、その代償は大きかった。私は、自分の本当の感情と演技の境界がわからなくなった。彼女を見て胸が高鳴るのも、それが本当の恋心なのか、それとも「恋を演じたい」という欲求なのか、区別がつかない。すべての感情が、鏡の前でトレーニングされた動作のように、作られたものに思えてくる。

S主任は私に「自信を持ちなさい」と言う。Nは飲みに誘ってくれる。Kさんは私の顔色を気にかけてくれる。しかし、彼らに向ける私の笑顔は、すべてプログラムされた出力だ。本当の自分は、その奥で息を潜めている。

私はある日、彼女のデスクを通りかかった。彼女はMacBook Proの画面に向かって、何かのモックアップを作成していた。真剣な横顔。少し首をかしげて、時折髪を耳にかける仕草。その一連の動作が、なぜかとても美しく見えた。

立ち止まりたい衝動に駆られたが、私は素通りした。目も合わせずに。もちろん、挨拶もできない。仮面さえも、その時はうまく装着できなかった。唇が震え、口角を上げようとしても筋肉が硬直する。そんな状態で笑顔を作れば、かえって気持ち悪い顔になるだけだと、自分に言い訳した。

きっと、私はひどく堅い表情をしていたに違いない。もし彼女が私を見ていたら、何と思っただろう。

気持ち悪い人、近寄りたくない。 そんなふうに見えたに違いない。

考えただけで、胃のあたりが重くなる。

あるいは、このまま観察者でいることも、悪くない

正直なところ、彼女を遠くから見守るだけの日々は、それなりに心地よかった。彼女が笑っているのを見ると、なぜか自分も嬉しくなった。彼女が誰かに優しくされているのを見ると、自分のことのように温かい気持ちになった。

しかし、私は気づいている。それは本心ではない。ただ、自分を守るための方便だ。本当はもっと苦しくて、もっと切なくて、もっと孤独だった。

彼女の笑顔を見るたび、私は自分の居場所のなさを痛感する。彼女が誰かと楽しそうに話すたび、私は仮面の裏で泣いていた。直接話しかけて、拒絶されるのが怖いから、代わりに観察しているのだ。都合のいい解釈で、自分の心を守っているだけだ。

私は、本当に臆病者だ。

エレベーターという名の地獄

あの日は、いつもと違う金曜日だった。夕方の18時を回った頃、私はデスクでGoのコードを書いていた。周りの同僚たちは、週末の予定で盛り上がっている。私は無視して、コードのバグを修正していた。すると突然、背後から声が聞こえた。

「お疲れ様です。そろそろ帰りますね」

振り返ると、彼女がいた。彼女はカバンを肩に掛け、私に微笑みかけていた。多分、私の背中に向かって、単に退社の挨拶をしただけだ。それがたまたま、私の席のあたりに彼女がいただけだ。

しかし、その瞬間、私の心臓は止まるかと思うほど高鳴った。顔が熱くなり、耳の先が燃えるように熱い。私は必死に仮面を装着しようとしたが、うまくいかない。口角を上げようとしても、震えが収まらない。目を細めようとしても、まばたきが速くなりすぎる。仮面のチューニングに失敗した。

「お疲れ様です。お先にどうぞ」

声が上擦っていた。明らかに不自然だった。目は泳いでいた。笑顔は引きつっていた。私は自分の表情の乱れをモニタリングすることに必死で、彼女がその後、どんな返事をしたか覚えていない。

そして、致命的なことが起きた。

私も20分後に帰宅しようと席を立ち、エレベーターホールに向かった。エレベーターの到着を待っていると、後ろから足音が聞こえた。振り返ると、彼女が立っていた。

「あ、Tさんもお帰りですか?」

彼女は気軽に声をかけてきた。私はまたもや心臓が止まりそうになった。エレベーターが到着し、私たちは二人きりで乗り込んだ。

閉じ込められた空間

エレベーターの中は、やけに狭く感じられた。無機質な照明の下で、私は何を話せばいいのか、まったくわからなかった。何か言わなければ。でも、何を言えばいい?

ハッカソンの話をすればいい。あの時、彼女は私に「コードを図に書いてみない?」と言った。そのおかげで、シーケンス図を描くようになり、ロジックが整理できた。そのことを感謝すればいい。きっと自然な会話になる。

しかし、それができない。仮面がうまく装着できないからだ。仮面なしで彼女と話すことは、まるで裸で街を歩くようなもの。自分の無防備さが恐ろしい。

私は彼女の顔を見ることができなかった。代わりに、エレベーターのドアに映る自分の顔を見つめた。目はうつろで、口元は強張っている。唇はかすかに震えている。気持ち悪い顔だ。

沈黙が、耐え難い重さでのしかかる。私は必死で話題を探した。仕事の話?「今週のリリース、大変でしたね」――いや、それは普通だ。でも、それすら言えなかった。喉の奥で言葉がつっかえて、出てこない。

エレベーターは、ゆっくりと階を下りていく。1階、2階……数字が変わるたびに、チャンスが一つずつ失われていく。何か言わなければ。今言わなければ、もう二度と、彼女と二人きりになるチャンスはないかもしれない。

しかし、私は何も言えなかった。

B1階に到着した。ドアが開く。彼女は軽く会釈をして、「お疲れ様です」と言って降りていった。私はその後ろ姿を見送ることしかできなかった。

後悔という名の反芻

エレベーターのドアが閉まり、私はその場に立ち尽くした。

頭の中で、さっきの数分間がフラッシュバックのように繰り返される。あの沈黙の時間。彼女が待っていたはずの何か。私はそれを、すべて逃してしまった。

なぜ、何も言えなかったんだ。 なぜ、あのチャンスを無駄にしたんだ。 なぜ、私はいつもこうなんだ。

後悔と自己嫌悪が、波のように押し寄せる。私はエレベーターの中で、自分の情けなさに拳を壁に叩きつけたくなる衝動に駆られた。しかし、もちろんやらない。壁に傷がつくからだ。それ以前に、そんなことをすればさらに恥ずかしい。カメラに映っているかもしれない。そう思うと、何もできなくなる。

私は地下の駐輪場まで歩きながら、何度も何度もあの場面を反芻した。 「お疲れ様です。そういえば、この前のハッカソン、ありがとうございました」 これだ。これがよかった。もっと自然だ。

あるいは、「週末はもうお休みですか?」 これでもよかった。彼女が帰る時間からすれば、自然な質問だ。

私は、なぜこれらの言葉がその場で出てこなかったのか。なぜ、こんなにも後悔してからしか、正解がわからないのか。

自転車に乗りながら、冷たい夜風が顔に当たる。それでも、頭の中は熱く、心臓はまだドキドキしていた。彼女と同じ空間にいた。彼女と話すチャンスがあった。しかし、私はそれを活かせなかった。

自己分析のかけら

家に帰り、私はノートパソコンを開いた。無意識にエディタを起動し、Goのコードを書き始めていた。しかし、手が動かない。代わりに、頭の中で考えていたのは、さっきのエレベーターのシーンの分析だった。

なぜ私に彼女と話せなかったのか。理由はいくつか考えられる。一つは、予期せぬ遭遇だったこと。仮面の準備ができていなかった。二つ目は、言葉の選択肢が多すぎて、どれが正解かわからなかったこと。そして三つ目は、何よりも「失敗したらどうしよう」という恐怖が先行したことだ。

プログラムなら、エラーを起こしてから修正すればいい。しかし人間関係は違う。一度失敗したら、その印象は簡単に消せない。彼女に気持ち悪がられるかもしれない。無視されるかもしれない。そんな恐怖が、私の行動をすべて停止させた。

馬鹿げている。人間関係をプログラムで表現しようとする試みは、いつも失敗する。だって、人間はプログラムのように単純じゃない。プログラムは入力に対して決まった出力を返すが、人間はそうじゃない。同じ入力でも、タイミングや気分、状況によって出力が変わる。それを予測することは、不可能に近い。

しかし、それ以上に私の限界は、プログラムにすらならなかったエレベーターの中の自分だ。あの場面を、私はコードとしても表現できなかった。空白の画面の前で、ただカーソルが点滅するだけだった。

再生の兆しを探して

私は、自分の内面にわずかな変化の兆しを感じている。ハッカソンでのあの出来事以来、私は確かに変わった。自分が書いたコードが人に伝わる喜びを知った。自分の存在が、誰かの目に「物語」として映る可能性を知った。

しかし、その変化はまだ、仮面の表面をかすめただけだ。本当の自分は、まだ仮面の奥で縮こまっている。エレベーターの中で何も言えなかった自分が、その証拠だ。

それでも、私は諦めたくない。S主任の励まし、Nの気遣い、Kさんの心配――周りの人々は、私に期待を寄せている。そして、彼女もまた、ハッカソンで私に声をかけてくれた。それは、私の可能性を信じているからではないだろうか。

ベッドにうつ伏せになり、枕に顔を押し付ける。目から何かが溢れそうになる。しかし、それは涙に変わらない。私の目は、涙を流す方法を忘れてしまったかのようだ。乾いた嗚咽だけが、喉の奥でひっくり返る。

私は何を求めているのだろう。本当に彼女と付き合いたいのか? たぶん違う。もっと手前の、単純なことだ。

ただ、彼女と普通に話してみたい。 ただ、彼女に笑顔を向けてみたい。 ただ、彼女に「今日もお疲れ様」と言える関係になりたい。

そんな、たったこれだけのことが、なぜこんなにも難しいのか。世界中の誰もが当たり前にやっていることが、なぜ私にはできないのか。

仮面の外で

次の日、私は出社する前に、鏡の前に立った。

もう一度、仮面の装着方法を確認する。口角を上げる。目じりを少しだけ細める。表情筋を意識的にコントロールする。これで「普通の人」に見える。これで大丈夫。

しかし、鏡に映った自分の顔は、ひどく疲れているように見えた。目の下にはくまができている。仮面の下で、本当の自分が擦り切れている。

「今日こそは、話しかけるぞ」

心の中で、そう誓った。しかし、その言葉は、すでに何度も繰り返された空虚なマントラだ。結局、私は今日も話しかけられない。わかっている。それでも、誓わずにはいられなかった。

私は、今日から少しずつ、仮面を薄くすることにした。無理に笑顔を作るのではなく、自然な表情で彼女と接すること。たとえそれが不器用で、ぎこちなくても、それが本当の自分をさらけ出す第一歩だと信じて。

期待と絶望を抱えたまま、私はオフィスへ向かう。

彼女の存在の重み

彼女は、今日も笑っていた。

デスクで何か仕事をしながら、隣の席の女性と楽しそうに雑談している。その声が、オフィスに心地よく響く。私は、その声に耳を傾けながら、キーボードを叩く指を止めた。

彼女がいるだけで、オフィスの空気が変わる。彼女がいるだけで、一日の疲れが軽くなる。そんな存在が、この世界にはいるのだ。そして、その存在は、私とはまるで異なる次元にいる。

彼女を好きになることは、私にとって、自分自身の矮小さを突きつけられることでもある。彼女の明るさに触れるたび、自分の暗さを思い知る。彼女の社交性に触れるたび、自分の不器用さを思い知る。

それでも、私は彼女から目を離せない。

おそらく、私は彼女を好きなのではなく、彼女のような人間になりたいのだ。自分の中にないものを、彼女の中に見ている。彼女に憧れているのは、自分が持っていないものへの、純粋な渇望だ。

しかし、その渇望すらも、私は表現できない。エレベーターの中で、何も言えなかったように。自分の気持ちを伝える手段を持たない私は、また今日も、遠くから彼女を見つめ続ける。

夜の闇の中で

夜、私は一人でコンビニに行き、ビールとつまみを買った。アパートの部屋に戻り、カーテンを閉め切って、酒を呷る。テレビもつけず、音楽も流さず、ただ静かな部屋の中で、ビールの苦味を感じる。

酔いが回ると、感情が溢れ出る。さっきのエレベーターのシーンが、何度もフラッシュバックする。悔しさと悲しさが入り混じった、複雑な気持ちが胸を満たす。

「あの時、何て言えばよかったんだろう」

独り言が、部屋に虚しく響く。答えは、どこにもない。

しかし、今夜はちょっと違う。ビールの泡が消えるように、私の思考も少しずつ澄んでいく。私は、エレベーターの中で何も言えなかった。それは事実だ。しかし、その事実を、私は明日に活かすことができる。あの失敗は、次への教訓だ。

明日、彼女に会ったら、今度こそ話しかける。たとえ一言だけでも。たとえ声が震えていても。それが、私の再生への第一歩になる。

道化の仮面の、その下で

彼女の存在は、私に常に問いかける。

あなたは、本当は何がしたいの? あなたは、いつまで仮面を被り続けるの? あなたの本当の顔を見せることができるのは、いつ?

彼女に出会ってから、その問いが頭から離れない。彼女に憧れ、嫉妬し、自己嫌悪に陥る。そのサイクルは、まるでループ処理のような、不条理なプログラムだ。私の感情は、変数のように変化する。しかし、最後にはいつも、同じ場所に戻ってくる。

「僕は、彼女にふさわしい人間じゃない」

これこそが、私のループの終端条件だ。この条件が真である限り、ループは永遠に続く。そして、この条件を偽に変える方法を、私はまだ見つけていない。

だが、今日は違う。私は、そのループを終わらせるための、最初の一手を打つ決意をした。仮面を少しだけ薄くし、本当の自分を見せる勇気を持つこと。たとえそれが、気持ち悪がられても、拒絶されても、それでいい。

私は、自分自身のコードを書き換える。バグだらけの自分を、少しずつでも修正していく。それが、私にできる唯一の方法だから。

おそらく、それが私に課せられた、最大のバグなのだろう。しかし、そのバグを修正する方法は、もうわかり始めている。

明日、私は彼女に話しかける。名前を呼ぶ。目を見る。そして、「おはようございます」と、自分の声で言う。

それが、私の再生の、小さな第一歩になることを信じて。

← 前の章 目次へ 次の章 →
◆ ◆ ◆
CHAPTER 8
バグと罪悪感

第8章 バグと罪悪感

あの日、僕は確かに、もう少しで何か大切なものを掴みかけていたような気がする。ハッカソンで彼女に「コードが物語みたいですね」と言われてから、僕の中の何かが静かに、しかし確実に動き始めていた。コードを図にする、という彼女の提案も、頭の片隅で燻っていた。「物語」という言葉も、ひどく心地よく響いていた。けれども、それらは全て、この一週間という時間の中で、見事なまでに踏み潰されることになる。まるで、バグを仕込んだコードが、静かに、しかし確実にシステム全体を破壊していくように。

木曜日の午後。プロジェクトは最終リリースの前日を迎えていた。僕は大きな機能の一つ、ユーザー認証周りのモジュールを受け持っていた。特に難しい処理ではない。OAuth2.0を使ったソーシャルログインと、従来のメール認証を組み合わせた、よくある設計だ。三週間前、僕はこのモジュールを余裕で書き終え、チームのコードレビューを通過させ、テスト環境でも問題なく動作していた。僕は自分の仕事に、内心でほくそ笑んでいた。「これなら大丈夫だ」と。

しかし、運命の女神はいつだって、慢心した男の頬をひっぱたくのが上手い。

午後三時。一通のチャットメッセージが、全てを終わらせた。

「Tさん、この認証モジュール、本番環境で特定の条件下でセッションが保持されないんだけど」

送り主はQAチームのKさんだった。三週間、テストを重ねてきたはずのモジュールだ。問題はない。そう確信していた僕は、最初、何かの間違いだと思った。「症状を詳しく教えていただけますか」と冷静に返信しながら、内心は「またか」と少し苛立っていた。たぶん、QA側のテスト手順に問題があるんだ、と。

しかし、送られてきたログを確認した瞬間、僕の顔から血の気が引いた。

原因は明白だった。ログイン状態を保持するためのRedisのキー有効期限を、僕はテスト用の設定——つまり三十分——のままにしてしまっていたのだ。本番用の設定ファイルで、ちゃんと二十四時間に上書きしているつもりで、その変更が上手く反映されていなかった。ローカルのテスト環境だけ修正して、本番用の設定ファイルは古いまま。そんな、プログラマーとして最も初歩的な、最も恥ずべきミスだった。

「あ」

その「あ」という音が、喉の奥で引っかかったまま、外に出てこなかった。代わりに、冷たい汗が背中を伝い落ちる。手が震え、キーボードの上で止まる。

「あ、ああ……」

僕は声にならない声を上げ、そのまま固まった。

すぐに、プロジェクトリーダーのH課長が走ってきた。「T、大至急、対策会議を開く。お前、すぐにミーティングルームに来い」

声が、頭の芯まで響く。

ミーティングルームには、すでにチームメンバーが集まっていた。H課長、S主任、同じチームの先輩であるT橋さん、後輩のM君、そしてQAのKさん。六人が、重い空気の中で、僕の到着を待っていた。

「どういうことだ、T」

H課長の声は、これまで聞いたことのないほど低く、冷たかった。

「す、すみません。設定ファイルの……確認が……不十分でした」

僕は絞り出すように、それだけ言った。嘘は言っていない。しかし、それは表面的な原因に過ぎなかった。本当の原因は、僕の不注意、慢心、確認を怠った怠慢——すべて、僕の責任だった。

「確認が不十分? お前、コードレビューの時に『問題ない』って言っただろうが! 俺もそれを見たけど、確かに大丈夫そうに見えた。でもだ、こんな初歩的なミスを見落とすってどういうことだ!」

H課長の声が、部屋中に響く。彼は普段は温厚な男だ。しかし、プロジェクト全体のリリースを明日に控え、顧客との約束も交わされている。彼の立場になれば、怒り狂うのも当然だった。

「……申し訳ありません」

僕はもう、それしか言えなかった。頭の中は真っ白で、まともに考えることもできなかった。

「申し訳ありませんで済む問題じゃない! 今から、全員で対応する。T、お前は原因を特定して、修正コードを書け。S主任、T橋、お前たちはそのレビューと、影響範囲の洗い出しを。M君はドキュメントの更新と、顧客向けの説明資料の準備だ。Kさんは、本番環境の切り戻しプランを」

H課長の指示が、次々と出される。僕は、ただ黙って頷くことしかできなかった。

会議が終わり、席に戻ると、すぐにT橋さんが隣に来た。「Tさん、大丈夫? 顔色、かなり悪いよ」

「……大丈夫です。すみません、ご迷惑をおかけして」

口から出たのは、自動的な謝罪だった。仮面が、もう一度きちんと装着されている。しかし、その仮面の下で、心臓は壊れた機械のように暴れ回り、呼吸は浅く速くなっていた。

「そんなことより、今は修正だ。一緒にやろう」

T橋さんは、そう言って自分の端末を開いた。彼のその一言が、どれほど救いになったか。しかし、それと同時に、その優しさが、僕の自己嫌悪をさらに深めた。彼は、こんなに優しいのに、僕は、こんなにダメなやつだ。

その夜、オフィスには僕たち四人——H課長、S主任、T橋さん、それと僕が残った。M君とKさんは、一旦帰宅して、また後で合流する手はずになっていた。

深夜一時。オフィスの空気は、冷え冷えとしていた。蛍光灯の光は、なぜかいつもよりまぶしく、視界の端でチカチカと不快な点滅を繰り返している。ディスプレイの光だけが、室内を異様に明るく照らしていた。

「T、この行、なんでこう書いてるんだ?」

S主任の声が、背中から聞こえた。彼はもう何度も、僕の後ろに立ってコードを確認していた。そのたびに、肩越しに彼の視線を感じ、手の動きがぎこちなくなった。

「えっと、これは……認証トークンの生成部分で……」

「知ってる。質問に答えてくれ。なんで、こう書いた?」

「……確認が、不十分でした」

「確認? それだけか?」

S主任の口調は、怒りというより、諦めに近かった。その諦めが、怒りよりも、僕の心を深く抉った。彼は、僕に期待するのをやめたのだ。そう感じた瞬間、胃の底が冷たくなった。

「……すみません」

「すみません、しか言えないのか?」

その言葉に、僕は何も言い返せなかった。本当に、何も言えなかった。コードの前に座りながら、僕の頭は完全に空っぽになっていた。目の前の画面上の文字列が、まるで読めない言語のように見える。修正すべき箇所は分かっているのに、手が動かない。キーボードが、石のように重く感じられる。

「Tさん、ちょっと休憩しない?」

気づくと、T橋さんが僕の肩に手を置いていた。彼は、いつも通り優しい笑顔を浮かべている。その笑顔が、余計に辛かった。

「……大丈夫です」

「顔色、真っ青だよ。コーヒー、買ってくるから、少し休もう」

「……すみません」

僕は、T橋さんに促されて、とりあえず席を立った。廊下に出ると、空気がオフィスより冷たく、少しだけ息がしやすかった。自販機の前で、T橋さんはホットコーヒーを二本買った。

「はい」

「……ありがとうございます」

温かい缶を受け取った手が、かすかに震えているのを、僕は必死に隠した。

「Tさん、さっきのコード、なんで確認を忘れたと思う?」

T橋さんが、缶コーヒーのプルタブを開けながら、問いかけてきた。

「……慢心してたんだと思います。簡単な処理だと思って、きちんと確認しなかった」

「慢心か……それもあるかもしれないけど、俺は、Tさんがちょっと疲れてたんじゃないかと思うんだ。最近、なんか変だよ。ずっと、どこか上の空でさ」

T橋さんの言葉に、僕は息を飲んだ。彼には、全部見えていたのか。ハッカソンの後から、僕はずっと彼女のことを考えていた。コードを書いていても、ふと彼女の顔が浮かび、手が止まる。彼女のデスクの前を通るたびに、心臓が跳ねる。そんな、小学生みたいな状態だった。だからこそ、このモジュールの確認を怠った。彼女のことを考えながら、設定ファイルを変更した。その結果、こんな大惨事を引き起こした。

「……すみません」

「また、すみませんか」

T橋さんは、苦笑した。その苦笑が、意外なほど優しかった。

「謝るのはいいよ。でも、次は、ちゃんと理由を考えてみて。なんで、こんなミスをしたのか。そして、どうすれば二度と繰り返さないか」

「……はい」

僕は、ただ頷くことしかできなかった。T橋さんの言っていることは、正しい。分かっている。しかし、頭の中でその言葉を処理することができない。感情が、理屈を凌駕していた。

オフィスに戻ると、S主任が僕を待っていた。

「T、少し話がある」

彼は、僕をミーティングルームに連れて行った。中に入ると、彼はドアを閉め、僕に向き直った。

「T、お前、最近、仕事に集中できてないんじゃないか?」

「……そんなことは」

「あるんだろう? ハッカソンの後から、お前、明らかに変わった。なんか、ぼーっとしてることが多くなった。それが、今回のミスにつながったんじゃないのか?」

S主任の指摘は、的を射ていた。図星だった。しかし、それを認めることは、自分の弱さを認めることだった。彼女への想いを認めることだった。それが怖かった。

「……すみません。気をつけます」

「すみません、か。お前はいつもそうだ。謝るけど、何も変わらない。それじゃ、成長できないぞ」

S主任の言葉は、冷たく、しかし現実的だった。僕は、何も言えず、ただ俯くことしかできなかった。

「今回のことは、プロジェクト全体の評価にも響く。上司には、俺からも報告する。お前の評価にも、当然影響が出る。覚悟しておけ」

その言葉が、僕の心臓をナイフで刺すように痛んだ。評価。キャリア。将来。全てが、この一つのミスで瓦解していくような感覚だった。

「……はい」

ミーティングルームを出ると、僕は自分の席に戻った。ディスプレイには、修正途中のコードが映っている。しかし、もう手が動かなかった。頭の中は、ネガティブな思考でいっぱいだった。

「どうせ、俺はダメなんだ」

「期待に応えられない」

「存在価値なんてない」

「みんなに迷惑をかけている」

「辞めてしまいたい」

「死にたい」

その思考は、どんどんエスカレートしていく。まるで、自分を責めるためのプログラムが、自動的に起動して、次々とネガティブなループを生成するかのようだった。

僕は、トイレに駆け込んだ。個室に入り、便座に座り込むと、両手で顔を覆った。手のひらが、熱くなっている頬に触れる。涙が、こぼれ落ちそうだった。

「どうすればいいんだ……」

呟いた声は、トイレのタイルに吸い込まれて、虚しく響いた。

その夜、結局、修正が完了したのは、午前四時だった。本番環境への適用は、翌朝、QAの再テストを経てから、という判断になった。僕は、ぐったりとした体で、オフィスを後にした。

外は、雨が降っていた。冷たい雨が、アスファルトを濡らし、街灯の光をぼんやりと反射している。傘を差す気力もなく、僕はそのまま歩き出した。雨が、コートを濡らし、髪を濡らす。その冷たさが、かすかに心地よかった。

コンビニで、缶チューハイを二本買った。マンションに帰ると、服も着替えず、ベッドに座り込んだ。プルタブを開け、一気に飲み干す。アルコールの苦みが、喉に焼きつく。二本目も、同じように飲み干した。

「ああ、だめだ……」

ベッドに仰向けに倒れ込む。天井のシミが、ぼんやりと見える。思考は、アルコールでぼんやりとし始めたが、それでも、自分を責める声は止まない。

「どうして、あんなミスをしたんだ」

「どうして、確認しなかった」

「どうして、もっとちゃんとやらなかった」

「どうして、彼女のことなんか考えてたんだ」

「どうして、どうして、どうして……」

その問いの答えは、どこにもなかった。ただ、自己嫌悪だけが、胸の中で膨れ上がっていく。

「もう、ダメだ」

「辞めよう」

「全部、捨てよう」

「消えてしまいたい」

そんな言葉が、頭の中をぐるぐると回る。涙が、止めどなく流れ落ちる。枕が、涙で濡れていく。

その時、スマホの画面が光った。通知だ。M君からのメッセージだった。

「Tさん、今日は本当にお疲れ様でした。無事に修正できて良かったです。明日も大変だと思いますが、一緒に乗り越えましょう!」

そのメッセージを見た瞬間、なぜか、さらに涙が溢れた。後輩からの、何気ない優しさ。それが、逆に、自分の惨めさを思い知らせる。僕は、こんなにダメな先輩なのに。ミスばかりで、チームに迷惑をかけているのに。それでも、彼は、僕に優しくしてくれる。

こんな優しさを受け取る資格が、僕にあるのだろうか。

僕は、スマホを握りしめたまま、しばらくの間、動けなかった。返信を打とうとして、何度も入力しては消した。結局、僕は「ありがとう。おやすみ」という簡素なメッセージだけを送った。それも、仮面を被った返事だった。本当は「すみません、迷惑をかけて。もう辞めたい」と言いたかった。しかし、それを言う勇気も、その資格も、僕にはなかった。

窓の外は、まだ暗い。雨が、ガラスを叩きつける音が聞こえる。キッチンの流しに、空になった缶が二本、置きっぱなしになっている。

僕は、もう一本、酒を買いに行こうか迷った。いや、もう、そんなことより、このまま、全てを終わらせてしまいたい、という衝動が、頭の中を支配し始めていた。

「この世から、消えてしまいたい」

その願望が、なぜか、とても現実的に感じられた。このまま、眠って、二度と目覚めなければいい。そんなことが、できたらいいのに。

「でも、できないんだろうな」

自嘲気味に呟く。僕には、何かを成し遂げる勇気も、何かを終わらせる勇気も、どちらもないのだ。ただ、このまま、生きていることも死んでいることもできない、中途半端な自分を抱えて、明日もまた、仮面を被って、出社しなければならない。

それが、何よりも、恐ろしかった。

酒の酔いが、徐々に回ってくる。頭が、ぼんやりとしてくる。思考が、ゆっくりと、泥の中に沈んでいく。

「明日は……また、謝らなければ……」

「また、仮面を被らなければ……」

「また、誤魔化さなければ……」

そんな言葉が、意識の遠くで、かすかに響く。

そして、僕の意識は、アルコールと疲労に飲み込まれ、闇の中に沈んでいった。

← 前の章 目次へ 次の章 →
◆ ◆ ◆
CHAPTER 9
自己開示の試み

第9章 自己開示の試み

謝罪文を送信した後、僕は三十秒間、画面を見つめていた。送信ボタンの青い光が、自分の決断を冷たく肯定している。手が震えていた。肩が強張っていた。背中に冷や汗が滲んでいる。これで終わりだ、と思った。

いや、終わりなど来やしなかった。むしろ始まったのだ、別の苦しみが。

「謝罪します」――その四文字を、僕はどのような気持ちで打ち込んだのだろう。正確に言えば、打ち込んでいる最中の僕は、まるで自分の身体が幽霊のように浮遊している感覚だった。キーボードを叩く指は確かに存在するのに、その指を動かしているのが「本当の僕」なのか「仮面を被った僕」なのか、判別がつかない。僕は謝罪という儀式を、ただ淡々と執行していた。そこには罪悪感も後悔もなく、ただ「そうすべきだからそうする」という、冷めた義務感だけがあった。

問題の認証モジュール。Redisのキー有効期限を三十分とすべきところを、なぜか三時間に設定してしまった。たった一桁の違いだ。しかしその「たった一桁」が、本番環境で大規模なセッション漏洩を引き起こした。原因は単純だった。僕はあの日、彼女――デザイナーの彼女のことを考えていた。ハッカソンで「コードが物語みたいですね」と言われた言葉が、頭の中でリフレインしていた。それを反芻しながら書いたキー有効期限のコードは、当然のように間違っていた。思い込みと不注意、それから慢心。全ては僕の落ち度だ。

だが、謝罪文を書いている間、僕の頭のどこかで冷静な声がささやいていた。

これは演技だ。お前はまた、謝罪という仮面を被っているだけだ。

その通りだった。謝罪文の文体は、僕がこれまで何度も使ってきた「道化の謝罪フォーマット」だった。まず過失を認める。次に、それが自分の能力不足に起因することを強調する。最後に、「このような失敗を二度と繰り返さないよう精進いたします」と、学びと成長のポーズを示す。だが、このフォーマットには大きな嘘がある。それは、僕が「失敗から学んだ」という前提だ。実際には、僕は何も学んでいなかった。ただ、失敗した。それだけだ。学びとは、反省の後にあるべきものだ。僕は反省すらしていなかった。ただ、自分がまたやらかしたことに絶望しているだけだった。

メールを送信して五分後、返信が来た。上司のS主任からだった。

「わかりました。再発防止策をまとめてください。期限は来週月曜。詳細はまた別途」

事務的だった。冷めていた。それはつまり、S主任が「この件はとりあえず処理された」と判断したことを意味していた。僕の謝罪は、事務処理として受理されたのだ。良かったのかもしれない。しかしその冷たさが、逆に僕の偽善を暴いているように感じられた。

お前の謝罪は、ただの手続きだ。心はそこにない。

その夜、家に帰ってからも、この感覚は消えなかった。風呂に入っても、歯を磨いても、布団に入っても、頭の中は「謝罪の虚無感」で満たされていた。僕は確かに謝った。だが、その謝罪には魂が宿っていなかった。機械がエラーログを吐き出すように、僕は謝罪文というテキストを出力しただけだ。そこには罪悪感も、後悔も、相手への思いやりもなかった。ただ、「謝罪すべきだから謝罪した」という、空虚な形式だけがあった。

こんな謝罪に、意味はあるのか。

そう自問した時、僕の内側から、ある感情が湧き上がってきた。それは怒りだった。誰に向けた怒りかと言えば、もちろん自分自身だ。だがその怒りの矛先は、もっと別の場所にも向いていた。僕は「謝罪」という形式そのものに腹を立てていたのだ。なぜ僕は、こんな偽善的な謝罪を強いられなければならないのか。なぜ企業というシステムは、心のこもっていない謝罪ですら「受理」してしまうのか。そしてなぜ僕は、そのシステムに従い、空っぽの謝罪を平気で送信できてしまうのか。

自己嫌悪のスパイラルは、いつものように始まった。しかし、今回は何かが違っていた。いつもなら自己嫌悪に陥った後、僕は酒に逃げるか、深夜までコードを書いて現実を忘れるかの二択だった。だが今夜は違った。僕の手は、無意識のうちにブラウザの新規タブを開き、ブログサービスのアカウント作成画面を表示していた。

なぜブログだったのか。今でもよくわからない。おそらくは、謝罪の虚無感に打ちのめされた僕が、本当の自分を表現できる場所を無意識に探していたのだと思う。同僚には言えない。友人にも言えない。家族にも言えない。何より、あの彼女にも言えない。しかし言葉にしなければ、この感情は発散できない。僕は膨れ上がる感情を吐き出す場所を求めていた。それが、匿名のブログだった。

ブログのタイトルは「末尾にセミコロン」。適当に思いついた。理由は特にない。Haskellを書くときはセミコロンを使わないが、それがかえって皮肉っぽくて気に入った。プロフィールには「IT企業勤務のプログラマー。酒と怠惰が好き。」とだけ書いた。本当の名前はもちろん、年齢も、勤務先も、何も書かなかった。完全な匿名だ。これで誰にも特定されない。自由に書ける。そう思った。

最初の記事を書いたのは、深夜二時だった。

「謝罪の虚しさについて」

というタイトルで、僕は今日あった出来事を赤裸々に綴った。ただし、会社名やプロジェクトの詳細は伏せて。認証モジュールのバグ、Redisのキー有効期限の間違い、謝罪文の偽善、そして上司の冷たい返信。僕はそれらを、自嘲気味に、しかし正直に書いた。

「最初は、自分は正しい謝罪をしたと思っていた。だが、よく考えてみると、それはただのテキスト出力だった。僕の心はどこにもなく、ただ、機械的に謝罪文を生成して送信しただけだ。これが『謝罪』と呼べるのか、甚だ疑問である。」

こんな調子で八百字ほどの文章を書き、そのまま投稿した。アクセス数は0。当然だ。誰も知らないブログに、誰も興味を持ちはしない。むしろそのことが安心だった。書いた内容が誰の目にも触れないという事実が、僕に「自由に書いてもいい」という許可を与えてくれた。

その夜、僕はさらに二本の記事を書いた。一本は「道化の仮面についての考察」という、幼稚園から続く自分の演技の歴史を綴ったもの。もう一本は「なぜ僕はプログラムを書くのか」という、プログラミングへの依存と逃避についての自己分析だった。どちらも赤裸々で、恥ずかしいほど正直な内容だった。もし誰かに読まれたら、間違いなく引かれるだろう。そう確信できるほど、僕は内面を曝け出していた。

投稿後、僕は布団に倒れ込んだ。心臓がドキドキしていた。自分の秘密を、インターネットという大海に放出したという高揚感と、いつかそれが誰かに見つかるのではないかという恐怖が入り混じっていた。しかしその感覚は、今までのどの逃避よりも、僕に「生きている」実感を与えていた。

翌朝、目が覚めて最初に確認したのは、ブログのダッシュボードだった。アクセス数:3。いいね:0。コメント:0。

たった三つのアクセス。おそらくは検索エンジンのクローラーか、あるいは海外からのランダムなアクセスだ。それでも僕の心臓は跳ね上がった。誰かに見られている。その事実が、僕に奇妙な充足感をもたらした。まるで、暗闇の中で独り言を言っていたら、誰かが耳を傾けてくれていることに気づいたような感覚だ。たとえその誰かが人間ではないかもしれなくても、聴衆がいるという事実が僕を支えた。

その日から、ブログを更新することが日課になった。

昼休みに書くこともあった。帰宅後に書くこともあった。酒を飲みながら書くこともあった。タイトルは「自己嫌悪のメカニズム」「人間関係における僕の戦略」「プログラマーとしての僕は本当の僕なのか」「彼女に話しかけられなかった話」など、テーマは散らばっていた。しかし共通していたのは、どれも僕の内面を晒すものであることだ。僕は自分の弱さを、恥を、失敗を、後悔を、惜しみなく書いた。そこには仮面がなかった。叫んでいた。

「これは本当の僕だ!」

そう言い聞かせながら、キーボードを叩いた。

最初の一週間、アクセス数は一日あたり五から十程度だった。コメントはゼロ。しかしそれでも、僕にとっては十分だった。誰かが見ている。誰かが僕の内面に触れている。そのことが、僕の孤独をわずかに和らげてくれた。もちろん、孤独が消えたわけではない。むしろ、ブログを書くたびに「本当の自分」と「仮面の自分」の乖離が鮮明になり、自己嫌悪が深まることもあった。しかしそれでも、ブログを書くことは、僕にとって必要な自己治療だった。

変化が訪れたのは、二週間目のことだった。

その日、僕は「告白の拒絶について」という記事を書いた。大学時代、研究室の先輩に告白して優しく拒絶された話。あの屋上での夜の記憶を、できるだけ詳細に、感情をそのままに綴った。書いている間、涙が出そうになった。しかし書き終えた時、奇妙な清々しさがあった。これを書いても、誰も僕を傷つけることはできない。インターネットは冷たいが、その冷たさが逆に安全だった。

投稿してから三時間後、ダッシュボードに赤い数字が表示された。

コメント:1

僕の手が止まった。画面を凝視する。現実感がない。本当にコメントが付いた。誰かが、この記事を読んで、わざわざコメントを書いてくれたのだ。その事実だけで、胸が締め付けられた。恐る恐る、コメントを開く。

「わかります。僕も同じような経験をしました。その後の人間関係にすごく影響しますよね。共感します。」

名前は「匿名希望」というハンドルネーム。年齢も性別もわからない。たった四行の文章。しかしその四行が、僕の心に深く刺さった。

この人は、僕の話を理解してくれている。

その瞬間、僕の目から涙がこぼれ落ちた。驚いた。自分が泣いていたことに、自分で気づいていなかったのだ。僕は泣いている自分を俯瞰しながら、そのことがさらに不思議だった。なぜ泣いているのか。共感されたから? 孤独が癒されたから? 違う。もっと単純な理由だ。誰かに「わかります」と言ってもらえたことが、ただ純粋に嬉しかったのだ。僕の苦しみが、他人に届いた。そのことが、僕の存在を肯定してくれた。僕は独りではない。それを実感できた瞬間、涙が止まらなくなった。

しかし、その喜びは長く続かなかった。

一週間後、コメントの数は少しずつ増え始めた。最初の「匿名希望」に続いて、別の読者がコメントを残してくれた。「自分のことかと思いました」「辛い気持ち、わかります」「プログラムを書いている時が一番楽ですよね」――共感の言葉が並ぶ。それらは全て、僕にとっては宝石のように輝く言葉だった。しかし同時に、ある予感が僕の胸をよぎった。

このままでは、またやらかす。

何をやらかすかは、自分でもはっきりとはわからなかった。しかし、ブログに書く内容が徐々に「演出」されていくのを感じていた。初めのうちは、本当に思ったことをそのまま書いていた。しかしコメントが増えるにつれて、無意識のうちに「読まれること」を意識した文章になっていた。これはまずい。僕は自分の内面を、読者の期待に合わせて調整し始めている。それはつまり、仮面をブログに持ち込んでいることに他ならない。

そんな不安を抱えながらも、僕はブログを書き続けた。コメントが五件、十件と増えるたびに、心臓が高鳴る。いいねの数が増えるたびに、幸福感に包まれる。しかし同時に、その幸福感が「本物の自分」によるものではなく、「読者に受け入れられる自分」という仮面によるものだという自己嫌悪が押し寄せる。僕はまた、同じ罠に嵌ろうとしている。謝罪文で味わった偽善感が、ブログでも再来しようとしている。

そんな折、決定的な出来事が起こった。

ある人が、僕の記事にこうコメントした。

「このブログ、全部作り話じゃないですか? あんまりにも出来すぎてて、リアリティがない。本当にこんな人間がいるとは思えない。フィクションならフィクションって書いたほうがいいですよ。」

そのコメントを見た瞬間、全身の血が冷たくなった。心臓がドクンドクンと激しく打ち、指先が震える。まるで、自分が全裸で街中を歩かされているような羞恥と怒りが同時に押し寄せた。

作り話? 僕がこんな馬鹿げた話を、わざわざ創作すると思うのか?

しかしその一方で、心の奥底で別の声がささやいていた。

たしかに、出来すぎている。お前の人生はまるで物語のようだ。幼稚園で仮面を覚え、高校でプログラミングに出会い、大学で告白に失敗し、社会人になってまた失敗する。因果関係がはっきりしすぎている。まるで自分を主人公にした小説を書いているかのようだ。

その声は、真実をついていた。僕はブログを書きながら、無意識のうちに自分の人生を「物語化」していたのかもしれない。事実をそのまま書くのではなく、読者に響くように再構成していた。それは、もはや「赤裸々な告白」ではなく「演じられた告白」だった。僕は仮面を被ったまま、ブログという舞台で新たな道化を演じていたのだ。

そのコメントに、僕は返信したかった。反論したかった。「これは本当だ。僕の実体験だ。作り話じゃない」と声を大にして叫びたかった。しかし指が動かない。なぜなら、反論すればするほど、僕の偽善が露呈するような気がしたからだ。作り話だと言われて怒ることは、逆に「作り話ではないことを証明したい」という願望の裏返しに過ぎない。本当に真実なら、否定する必要はない。しかし僕は否定したい。そのことが、僕のブログが「真実」ではなく「真実らしい物語」であることを証明しているようだった。

その日、僕はブログを更新しなかった。そして翌日も、その翌日も更新しなかった。

ブログのダッシュボードを開くたびに、あのコメントが視界に入る。読み返すたびに、胃のあたりが重くなる。僕はこのブログを、自分の内面をさらけ出す場として始めた。しかし結果的に、それは別の仮面を被る場になってしまった。僕は読者の共感を得るために、自分の経験を「面白おかしく」再構成していた。それは、幼稚園で覚えた笑顔と何も変わらない。違う舞台で、同じ道化を演じているだけだ。

しかし、その一方で、ある変化も感じていた。

コメント欄には、あの批判以外にも、多くの温かい言葉が残されていた。「頑張ってください」「無理しないで」「あなたのブログに救われました」――それらはすべて偽りのない、読者からの真摯な反応だった。たとえ僕のブログが「演出された告白」だったとしても、その向こう側に確かに存在する「本当の僕」の片鱗に、誰かが触れてくれている。そのことが、疑いようのない事実として僕の心に残っていた。

批判のコメントがあってから四日後、僕は久しぶりにブログを更新した。タイトルは「批判への返信、そして贖罪」。

「あのコメントをくれた方へ。あなたの言う通りかもしれません。このブログは、どこかで『読まれること』を意識して書いている自分がいます。それは、幼稚園の頃から続けてきた『仮面を被る』という習慣が、ブログにも持ち込まれているからです。しかし、それでも本当の自分を表現したいという欲求は、決して偽りではありません。このブログは、僕の『本当の自分になりたい』という願望の記録です。矛盾しているかもしれませんが、それが今の僕の真実です。」

投稿後、すぐにコメントが付いた。あの批判者からだった。

「返信ありがとうございます。何かを表現しようとすること自体が、すでに嘘を含んでいるというのは、よくわかります。それでも書くことをやめないでください。あなたの言葉に触れて、考えさせられる人がいるのも事実ですから。」

その言葉に、僕は救われた。

完全な理解ではない。しかし、完全な否定でもない。このブログは、まだ終わっていない。僕の道化の仮面は、まだ完全には剥がれていない。しかし、少しずつ、本当の自分が顔を出し始めている。それだけで、僕にとっては十分な希望だった。

翌朝、オフィスに出社すると、デスクの上に付箋が貼ってあった。彼女――デザイナーの彼女からのものだった。

「おはようございます。昨日のミーティングでの図解、とてもわかりやすかったです。また今度、図の書き方、教えてくださいね。」

自然な笑顔で書かれた三行の文字。その付箋を見つめながら、僕は思った。

このブログも、いつか彼女に読まれる日が来るのだろうか。

その想像に、胸が高鳴ると同時に、恐ろしくなった。彼女に僕の内面を知られたら、どう思うだろうか。きっと引かれる。軽蔑される。そして、今の関係さえも失ってしまう。そう思うと、ブログを消したくなった。しかし同時に、彼女に本当の自分を知ってもらいたいという願望もあった。

仮面と真実の狭間で、僕はまた、揺れ動いていた。

しかし、少なくとも一つだけ確かなことがあった。僕はもう、完全な孤独ではない。ブログの向こう側に、何人かの読者がいる。彼らは、僕の弱さを、恥を、失敗を、受け止めてくれている。たとえそれが「演出された告白」だったとしても、その向こうにある「本当の自分」に触れて、共感してくれる人がいる。

その事実が、僕に小さな勇気を与えていた。

ブログのタイトルを「末尾にセミコロン」と付けた時、僕は無意識のうちに皮肉を込めていた。セミコロンは、文の終わりを示す。しかし同時に、次の文への繋がりでもある。僕の物語は、まだ終わっていない。このブログも、僕の人生も、まだ続いている。

そう思うと、少しだけ、明日が待ち遠しくなった。

← 前の章 目次へ 次の章 →
◆ ◆ ◆
CHAPTER 10
読者という鏡

第10章 読者という鏡

ブログを書き始めてから、二週間が経った。

最初はただの自己満足だった。深夜のアパートで、キーボードを叩く音だけが部屋に響く。カップ麺の湯気がモニターに曇り、それを拭う指が震えていた。自分でも何を書いているのかわからなかった。ただ、コードの美しさについて、あるいは、ハッカソンであの人が放った「物語みたい」という言葉について、ぐちゃぐちゃになった思考をそのまま吐き出していた。

「あるプログラマーの独白」というタイトル。HNは「code_monolog」。プロフィール画像は、お決まりのアイコン、つまり無機質なマスコットキャラクター。顔も名前も職歴も一切出さない、匿名のブログだ。これなら、仮面を被らずに済む。誰にも本当の自分を知られずに、ただ言葉だけが漂う場所。

そう思っていた。

最初の三日間、アクセスはゼロだった。それでも構わなかった。誰にも読まれない文章を書くことに、かえって安堵していた。もし本当に誰かに読まれたら、その時こそ仮面が必要になる。自分を偽る必要が出てくる。

だが、四日目の夜。

「1」という数字が、アクセス解析に表示された。

誰かが、読んだ。

その瞬間、胸の奥で何かがざわついた。嬉しさと、それ以上の恐怖が混ざり合う奇妙な感覚。自分の部屋の窓が突然開け放たれて、見知らぬ誰かに覗かれているような気分だった。僕はすぐに記事を全部読み返した。恥ずかしさで顔が火照る。自分でも気づかなかった自己卑下の言葉や、あからさまな自虐ネタの連続——まるで道化の仮面を文字で表現したような文体だ。

「これでいいんだ」 そう自分に言い聞かせた。自虐的に書けば、読者も「ああ、この人は自分を低く見積もっているんだな」と安心する。僕の幼稚園からの戦略——自分を小さく見せて、相手の警戒心を解く——を、文章にも適用しただけだ。

しかし、その翌日から、コメントが寄せられ始めた。

最初のコメントは、意外にも好意的だった。

「共感します。私もコードを書いているときだけ、無駄に正直になれる気がします」

これを読んだとき、僕の指は震えた。誰かが、僕の言葉に共感している。それは初めての経験だった。コードでなければ、人は理解し合えないと思っていた。その前提が、揺らぎ始める。

だが、すぐに別のコメントが続いた。

「自虐的すぎて読んでて辛い。もっと自信持った方がいいよ」

この一言で、僕の心は一瞬で凍りついた。

「自虐的すぎる」——そう言われればその通りだ。でも、それが僕なのだ。仮面を剥がせば、そこには何もない。だから、自虐で防御する。自分を貶めておけば、誰も傷つけない。誰からも攻撃されない。

なのに、その防御そのものを「辛い」と言われてしまった。

どうすればいいんだ。自虐をやめろと言うのか。ならば、本当の自分を出せと言うのか。本当の自分とは何だ。表情のない、無口な、ただコードを書くだけの存在。そんなものを出せば、誰も近づかない。それでいいのか。それで孤独が深まるだけじゃないか。

そう考え始めると、もう止まらなかった。

コメントの一つ一つが、僕の心に突き刺さる。良いコメントも、悪いコメントも、すべてが刃に変わった。

褒められれば——「こんな文章、褒める価値なんてないのに」と疑う。 批判されれば——「やっぱり、どうせ俺なんて」と落ち込む。 共感されれば——「本物の苦しみを知らない人に、何がわかる」と拒絶する。

何を言われても、自分を許せなかった。

こんな状態で、ブログを続ける意味があるのか。いや、むしろ、ブログを始めたこと自体が間違いだったのかもしれない。僕はただ、自己顕示欲を満たしたかっただけなのかもしれない。あるいは、誰かに認められたいという承認欲求が、無意識のうちに顔を出してしまったのか。

幼稚園の頃から、僕は人に認められるために笑顔を覚えた。 小学校では、いじめられないために道化を演じた。 高校では、プログラミングで「できるやつ」と認められたいと思った。 大学では、告白すらも「拒絶される自分」を認めたくなかった。

すべては、承認欲求と、その欲求を否定する自己嫌悪のループ。

ブログもまた、そのループの延長線上にあるのかもしれない。書きたい。読まれたい。でも、読まれるのが怖い。認められたい。でも、認められたら、その期待に応えられない自分を責める。

何度もブログを閉じようと思った。

削除ボタンを押しかけた夜もあった。しかし、そのたびに、また新しいコメントが届く。読みたくなかった。見たくなかった。だが、指は勝手にクリックする。

批判的なコメントは、特に心に残る。

「コードの話ばかりで、人間味がない」 「また自虐かよ、ネタ切れ?」 「もっとちゃんとした技術記事書けよ」

一つ一つの言葉が、脳内に刻まれる。寝ても覚めても、その言葉がリフレインする。

Syntax Error: Self-esteem not found TypeError: 'NoneType' object is not callable

そんなジョークさえ浮かぶが、笑えない。

僕はプログラマーだ。コードの世界では、エラーは修正できる。原因を特定し、修正し、再び動かす。しかし、人間からの批判は違う。どこをどう直せばいいのかわからない。そもそも、直すべきものなのかどうかもわからない。

そんな状態で一週間が過ぎた。

ある夜、十件目のコメントが届いた。内容は単純なもので、「あなたの書く文章、嫌いじゃないです」というものだった。たったそれだけ。でも、僕はなぜか、そのコメントを十回以上読み返した。

「嫌いじゃない」

この控えめな肯定的表現に、なぜか救われた。褒め言葉ではない。だが、否定でもない。ただ、存在を許容してくれるような、そんなニュアンスがある。

その時、ふと気づいた。

僕は、コメントに一喜一憂している。良いコメントには舞い上がり、悪いコメントには落ち込む。でも、それってつまり——

僕は、他人の評価を生きている。

コードを書いているときは違った。プログラムは嘘をつかない。評価も承認も必要ない。ただ正しく動けばそれでよかった。しかし、ブログは違う。ブログは、読者の反応がすべてだ。読者がいなければ意味がない。そして、読者の反応は予測不能だ。

プログラミング以上に、人間関係の縮図。

自分で自分の首を絞めているようなものだ。

しかも、僕はその状況に、まるで中毒のようにハマっている。アクセス解析を何度も確認する。コメントの通知を待ちわびる。まるで、昔、好きだった人からのメッセージを待っていたあの頃のように。

そうだ、あの時もこんな気持ちだった。 大学の先輩に告白する前、何週間も何ヶ月も、彼女の言葉の一つ一つを分析していた。 「今日の『おはよう』は、少し目が合ったような気がする」 「彼女が笑った。それは、僕に向けられた笑顔かもしれない」 そんな風に、些細なシグナルを過剰に解釈して、一喜一憂していた。

そして、告白は拒絶された。あの後、何ヵ月も、何年も、その傷を引きずった。

そして今、再び同じことをしている。コメントの一言一言を、過剰に解釈している。良い反応に期待し、悪い反応に落ち込む。これでは、まるで——

仮面の下で、また恋愛をしているようなものだ。

そう気づいた時、背筋が凍った。

ブログは、僕にとっての新しい「仮面」だった。直接人と話さずに、文章だけでコミュニケーションできる。顔も見せず、声も聞かせず、ただテキストを介してだけ繋がる。これなら、仮面を被る必要がないと思っていた。しかし、現実は違った。

ブログは、むしろ 新しい形の仮面 だった。

文章という仮面を被ることで、かえって素の自分が出てしまう。だが、その素の自分もまた、編集され、装飾され、演出されている。本当の自分なんて、どこにもいない。

僕は、仮面を被った仮面を、さらに被っている。

無限後退。

そんな無限ループに頭を抱えていた時、ふとある記憶がよみがえった。

ハッカソンのことだ。

あの日、彼女は言った。「コードを図に書いてみない?」と。

最初は戸惑った。コードを図にするなんて、考えたこともなかった。でも、やってみると、新しい視点が開けた。図にすることで、コードの構造が可視化され、自分でも気づかなかった美しさが見えてきた。

そして、彼女は言った。「コードが物語みたいですね」と。

物語——その言葉が、今、再び蘇る。

ブログで書いているのは、まさにそれだ。コードの美しさ、その背後にある物語。ハッカソンで彼女が教えてくれた、新しい視点。

だが、僕はそのことを忘れていた。ブログのタイトルにすら反映させていなかった。コードの物語を書きたいと思いながら、結局は自己卑下と自虐に逃げていた。

彼女が教えてくれたことを、ちゃんと活かせていない。 「コードを図に書く」というアイデアさえ、ブログでは一度も触れていない。

そのことに気づくと、急に恥ずかしくなった。彼女はあんなに優しく、新しい世界を見せてくれたのに、僕はそれを自分のものにできていない。彼女に対する想いすらも、ブログでは完全にスルーしていた。

そうだ。僕がブログを始めた本当のきっかけは、彼女の言葉だったはずだ。「コードが物語みたい」——その言葉に感動し、その感動を誰かと共有したかった。でも、いつの間にか、その原点を見失っていた。

そして、もう一つ。

彼女への想いも、ブログの裏側には存在する。エレベーターで会話に失敗した後悔、彼女の笑顔を見るたびに高鳴る鼓動、社内で彼女の姿を探す自分——そうした感情のすべてが、実はブログを書く原動力の一部だった。

だが、それを書くことが怖かった。彼女のことを書けば、それがバレるかもしれない。社内の人が見ているかもしれない。何より、彼女自身が見るかもしれない。そう思うと、書けなかった。

だから、僕は代わりに自虐で埋めた。彼女を想う代わりに、自分を責めた。その方が安全だったから。

また逃げている。 また仮面を被っている。 彼女の前でも、ブログの中でも、本当の自分を見せられない。

そのことに気づいた時、胸の奥がぎゅっと締め付けられた。

そして、もう一つ思い出した。社内のS主任や同僚のこと。職場では、僕は「おとなしいけど優秀な若手」というレッテルを貼られている。ブログでは匿名だから、そのレッテルから解放されると思っていた。だが、実際には、ブログの中でも同じような仮面を被っていることに気づいた。

自虐で防御する。本音を隠す。期待に応えることを恐れる——それらはすべて、職場で僕が実践していることと同じだった。

どこにいても、僕は僕から逃げられない。

夜が更ける。窓の外は真っ暗だ。アパートのベランダから見える街灯が、かすかに部屋の中を照らしている。

その時だった。

新しいコメントが一件、届いていた。

タイトルは「月影です」。本文は、比較的短かった。二百文字ほどだろうか。

『こんばんは、月影と申します。いつも楽しく読ませていただいています。

あなたの文章は、とても正直だと思います。自己卑下が多いのは気になりますが、それもまた、あなたの一部なのでしょう。

ひとつ提案があります。あなたのコードの話は美しいですが、もっとあなた自身のことを書いてみてはいかがでしょうか。あなたの感じていること、考えていること。あるいは、あなたの物語を。

私は、あなたの物語を読みたいです。 ——月影』

短い。しかし、確かな言葉だった。

「あなたの物語を読みたい」

その一言が、心に響いた。

僕は、読み返した。もう一度。もう一度。

「あなたの物語」——それは、プログラマーとしての僕の物語? それとも、仮面を被った僕自身の物語?

どちらにせよ、「月影」は僕の文章を「正直だ」と言った。自己卑下が多いのも含めて、それが僕の一部だと認めてくれた。

その言葉に、少しだけ救われた。

だが同時に、疑問も湧く。この「月影」は誰なのか。なぜ、こんなに核心を突くのか。もしかしたら、社内の誰かかもしれない。S主任や同僚、あるいは——

彼女かもしれない。

その考えが浮かんだ瞬間、心臓が大きく跳ねた。もし彼女がこのブログを見つけていたら。もし彼女が「月影」としてコメントを書いていたら。

ありえない話ではない。社内のデザイナーが技術ブログを読むこともある。特に、彼女はコードに興味を持っているから。

いや、待て。彼女は「コードを図に書く」アイデアを提案した人だ。ブログの内容にも共感するだろう。もし彼女のコメントだったら——そう考えると、なぜか怖くなった。

でも、同時に、その可能性を信じてみたい気持ちもあった。

結局、正体はわからないまま、僕は返信を書くことにした。短く、でも真摯に。

「月影さん、コメントありがとうございます。私の物語を書きたいと思います。まだ何も決まっていませんが、少しずつ、言葉を紡いでみます」

送信ボタンを押す。

指が震えていた。

でも、それは恐怖の震えではなかった。

——期待の震えだった。

その夜、僕は眠れなかった。代わりに、新しいフォルダを作った。

フォルダ名は「novel」。中に、テキストファイルを一つ作成する。ファイル名は「my_story.txt」。

カーソルが点滅している。何を書けばいいのか、まったくわからない。でも、とりあえず、一文字だけ打ち込んだ。

『僕』

それだけ。

それだけで、涙がまた溢れそうになった。

僕は今まで、自分を語ることができなかった。仮面の裏に隠れて、本当の自分を見せたことがなかった。コードの中では正直になれたけど、それはあくまでコードの中の話。現実の自分は、いつも偽りの笑顔で、他人を遠ざけてきた。

だが、今、白いキャンバスのようなテキストファイルの前に座って、僕は初めて自分自身と向き合おうとしている。

「コードは嘘をつかない」

それが僕の信念だ。ならば、僕の言葉も嘘をつかないようにしよう。たとえ、それがどんなに醜く、情けなく、見苦しいものであっても。

そして、書き始める。

最初の一文は、これだ。

「僕は、仮面を被ったプログラマーです。でも、もう、その仮面を剥がす時が来たのかもしれません」

その夜、僕は夜明けまで書き続けた。

窓の外が白み始め、鳥の声が聞こえてくる。一晩中、まったく眠らなかったにもかかわらず、疲れは感じなかった。むしろ、初めて「生きている」という感覚があった。

そうか、これが——

人にわかってもらうために言葉を紡ぐ ——ということなのか。

僕はプログラマーだ。コードを書くことが仕事だ。だが、それだけじゃない。僕は、言葉を紡ぐこともできるかもしれない。少なくとも、月影という一人の読者が、それを信じてくれている。

ブログのコメント欄を再び開く。すると、新着コメントがもう一件届いていた。月影からの返信だ。

「小説を書く決意、嬉しく思います。楽しみにしています。あなたの物語が、誰かの心に届くことを願っています。私も、あなたの書く物語を、心待ちにしています」

読み終えた時、自然と笑顔が浮かんだ。

それは、仮面の笑顔ではなかった。

本当に、自然に、口元が緩んだ。

自分でも驚いた。僕の顔に、こんな表情が残っていたのか。

その日から、僕の生活が変わった。

仕事から帰ると、まずコードを書く。そして、夜が更けると、小説を書く。コードと文章。二つの世界を行き来するうちに、奇妙な調和が生まれた。

コードは嘘をつかない。 だが、小説もまた、真実を語ることができる。

しかも、小説はコードよりももっと自由だ。コードには正解がある。しかし、小説には正解がない。ただ、語られる物語があるだけだ。

その自由さに、最初は戸惑った。でも、少しずつ慣れてきた。

僕の物語——それは、仮面を被った若いプログラマーが、自分の弱さと向き合い、少しずつ変わっていく話。

まさに、今の僕自身の物語。

そして、その物語を書くことで、僕は少しずつ変わっていく。月影の言葉が、僕の背中を押したように、今度は僕の物語が誰かの背中を押すかもしれない。

少なくとも、月影という一人の読者は、すでに僕の背中を押してくれた。

そして、もう一人——彼女も、知らず知らずのうちに、僕の背中を押し続けている。ハッカソンの日から、ずっと。

だから、今度は僕が——

誰かの「月影」になる番だ。

そう思いながら、僕は再びキーボードに向かう。窓の外には、満月が浮かんでいる。月影——その名前が、なぜか心に響く。

満月の夜は、仮面を剥がすのにふさわしい夜かもしれない。

そう、僕は物語を書き始めた。

← 前の章 目次へ 次の章 →
◆ ◆ ◆
CHAPTER 11
過去の再帰

第11章 過去の再帰

ブログを始めた。理由を問われると答えに窮するのだけれど、あのミスを犯してから、何かを吐き出さなければ自分が持たないと感じたのだ。

記憶に新しい。先週、本番環境でRedisのキー有効期限を設定し忘れた。原因は単純な慢心と疲労——彼女のことを考えて上の空だった。そのせいでキャッシュが溢れ、システムが一時的にダウンした。S主任は「次から気をつけよう」とだけ言った。その優しさが、逆に胸を刺す。僕は自分の愚かさを呪い、布団の中で「もう辞めてしまいたい」と何度も呟いた。

そんな状態で、ブログを書き始めた。書くことでしか、この重りを下ろせないと思ったのだ。

タイトルは「再帰的思考の記録」にした。プログラマらしいタイトルだと思う。再帰とは、ある関数が自分自身を呼び出すこと。例えば階乗を計算する関数fact(n)は、n = 0で1を返し、それ以外はn * fact(n-1)を返す。終了条件がなければ無限に呼び出し続け、スタックオーバーフローを起こす。

僕の自己分析も、まさにそれだった。

最初の記事は比較的安全な話題から始めた。「プログラミングとの出会い——高校二年の図書館にて」。Python入門書と偶然の出会い、数当てゲームを動かした感動、プログラムが嘘をつかないことへの驚き——コードの中でなら、僕は僕でいられた。その話を淡々と書いた。

反応はなかった。アクセス解析の数字は1。自分以外の誰かが読んだはずだが、コメントもブックマークもない。拍子抜けしたような、ほっとしたような複雑な気分だった。

二日後、次の記事を書いた。今度はもっと深いところへ潜ろうと思った。


仮面の起源——あるいは、あの日の記憶

幼稚園のお遊戯会の話を書いた。僕が初めて「笑顔」という武器を手に入れた瞬間だ。暗い舞台の上、スポットライトが眩しくて何も見えなかった。先生の「もっと笑って!」という声だけが頭の中に響く。僕は必死に口角を吊り上げた。鏡の前で何度も練習した「笑顔」を、恐怖に引きつる顔の上に重ねた。観客は拍手した。あの瞬間、僕は学んだ——笑顔は感情ではなく、承認を得るための道具なのだと。

その話を書いている途中、手が震え始めた。キーボードを打つ指が思うように動かない。スクリーンに映る文章が、まるで誰かに覗かれているような気がした。窓の外は暗く、キーボードのLEDだけが不気味に光っている。一度立ち上がり、部屋の中をぐるぐると歩き回る。

この震えは、小学校の頃に感じていた恐怖と同じだ。


過去の再帰——小学校三年生の春

小学校三年生の春、クラス替えがあった。新しいクラスには山田という男の子がいた。運動神経が良く、人を笑わせるのが上手い。誰からも好かれる「優しい」人気者だった。しかし、彼の優しさには条件があった——自分より弱い存在を作り出すことで成立する優しさだった。

ある日、図工の時間に僕は絵を描いていた。空の色を描きたくて、水色と白を混ぜ、少しだけ青を足す。その微細な色の変化に没頭していると、後ろから声がした。

「おい、Tって、なんか変だよな」

山田の声だった。振り返ると、彼は数人の男子に囲まれ、にやにやしながら僕を見ている。

「ずっと一人で絵描いてるけど、友達いないの?」

周りから笑い声が漏れる。僕は何も言えなかった。ただ、机の上に並んだ絵の具を見つめることしかできなかった。口の中がカラカラに乾いていた。

「ねえ、みんな。Tって絶対に自分の意見言わないんだよ。すっげー気持ち悪くない?」

はい、その通りです——心の中でそう答えた。でも口は動かなかった。

それから山田のターゲットは僕に固定された。体育の時間に「Tだけはずれだわ」と言われる。給食の時間に「それ美味そう? 食えんの?」と笑われる。掃除の時間に机が廊下に追い出されている。どれも直接的な暴力ではなかった。でも、その一つ一つが心に小さな傷をつけていった。傷はやがて瘡蓋になるが、瘡蓋は簡単に剥がれる。そして剥がれるたびに新しい傷が増えていく。

この経験が、僕の対人恐怖の根っこにあることは間違いない。人は無条件に優しくはない。強さを見せると潰される。弱さを見せるとつけ込まれる。だから僕は、どちらも見せずに道化を演じることにした。

卒業式の日、山田は近づいてきて言った。

「お前、ずっとおもしろいやつだと思ってたよ。またどこかで会おうな」

ざまあみろ、という気持ちと同時に、哀れみにも似た感情が湧いた。彼は最後まで、自分が何をしていたのか理解していなかった。

問題は、この記憶が今も僕を縛り続けていることだ。ブログを書きながら、指が震える。もしこれを読んだ山田がコメントで何か言ってきたら——そんな不安が頭をよぎる。彼がこのブログを見つける確率は天文学的に低いのに、それでも怖い。一度つけられた「弱いもの」というレッテルは、ずっと剥がれない。たとえ誰も覚えていなくても、僕自身が覚えているから。


社内の空気——S主任と同僚たち

ブログを書いている間も、現実は続く。翌朝の出社時、エレベーターで同僚の佐藤と一緒になった。佐藤は同じ部署の先輩で、いつも気さくに話しかけてくれる。

「おはよう、Tくん。顔色悪いけど、大丈夫?」

「はい、大丈夫です」

反射的に出た言葉。本当は寝不足で頭がぼんやりしているし、朝食も食べられなかった。でも「大丈夫」と言っておけば、それ以上詮索されない。この魔法の言葉は、仮面の一部だ。

「無理すんなよ。あ、そうだ。この前のハッカソン、お前のコードすごく良かったって、S主任が褒めてたぞ」

「そうですか……ありがとうございます」

心の中で何かが引っかかる。褒められることへの違和感。自慢だと思われるのが怖い。期待に応えられないのが怖い。だから「僕なんかが」と、自分を低く見せる言葉で相殺する。

オフィスに着くと、S主任が書類を手に歩いてきた。「Tくん、ちょっといいか」

打ち合わせスペースで、先週のRedisの障害について改めて振り返ることになった。S主任は淡々と事実を確認し、再発防止策を一緒に考えてくれた。最後に、こう言った。

「今回のミスは、仕組みの問題だ。属人化していた部分を、チーム全体で共有できる仕組みを作ろう。お前一人の責任じゃない」

その言葉に、涙が出そうになった。優しさに耐えられない。僕は仮面を被り直して「ありがとうございます」とだけ言った。


彼女のこと——ハッカソンで変わったもの

社内ハッカソンでの出来事を思い出す。彼女——デザイナー——が、僕に「コードを図に書いてみない?」と声をかけた。その一言が、僕の中で何かを変えた。

「コードが物語みたいですね」とも言われた。初めて、自分のコードを「美しい」と評価された。その言葉が、心のどこかに温かい灯をともした。

それ以来、彼女のことが頭から離れない。エレベーターで二人きりになったときも、うまく話せなかった。仮面の準備ができず、何も言えずに固まってしまった。家に帰ってからも、その場面を何度も反芻し、自己嫌悪に陥る。

そして、その彼女への想いで上の空だったことが、Redisのミスの遠因だ。彼女に認められたい、もっと話したい——そんな気持ちが、集中力を削いだ。自分の愚かさを呪う。しかし、彼女を恨むことはできない。彼女はただ、優しかっただけなのだ。

ブログに、彼女のことを書くべきか迷っている。書けば、また再帰的な思考に陥ることはわかっている。でも、書かなければ、この気持ちの行き場がない。


A先生の教え——唯一の光

そんな地獄のような小学校時代に、唯一の光があった。近所の小さなプログラミング教室だ。

正確に言うと、それは中年男性の自宅を改装した小さなスペースだった。彼の名前は覚えているが、あえて伏せる。ここではA先生と呼ぼう。痩せ細った体に、いつも皺だらけのYシャツを着て、眼鏡のレンズは分厚い。プログラマというより、マッドサイエンティストに近い見た目だった。

しかし、彼の教え方は卓越していた。週に二回、学校が終わると僕はA先生の家に通った。最初はゲームを作ることに夢中だった。ファミコンのようなゲームを自分で作り出せる——その事実だけで十分に魔法のようだった。

ある日、変数のスコープについて質問した。関数の中で定義した変数が、なぜ関数の外では使えないのか。当時の僕には理解できなかった。A先生はしばらく考え込んだ後、こう言った。

「変数のスコープはな、人間関係と同じだ。お前が本音を出せる範囲って、限られてるだろ。それと同じだよ。変数にも、自分を表現できる範囲があるんだ」

この比喩は小学校三年生の僕には難解すぎた。しかし、その言葉は種のように心の奥底に埋め込まれた。

そして小学校五年生のある日。いじめがピークに達していた頃だった。僕はA先生の部屋で、何も手につかずにぼんやりモニターを見つめていた。学校での出来事が頭から離れない。A先生はそれを見て、一枚の紙を取り出した。そこには、簡単なプログラムが書かれていた。

``` def truth(x): return x ```

「コードは嘘をつかない。お前もそうなれ」

その言葉は、まるでプログラムのように簡潔で、しかし重く、深かった。

「プログラムは、自分がどう動くかを隠さない。バグがあればエラーを吐く。嘘をついて『正常です』とは絶対に出さない。人間は嘘をつく。お前も嘘をついているだろう。自分の気持ちを隠して、笑っている。でもコードは違う。コードは書かれた通りに動く。そこが、プログラムの美しいところだ」

先生は続けて言った。

「お前は今、嘘をつかざるを得ない状況にいる。それは仕方ない。でもせめて自分の中だけは、コードのように正直であれ。自分に嘘をつくな。自分の感情をプログラムのようにデバッグしろ。エラーがあれば修正すればいい。完璧じゃなくていいんだ。ただ正直であること。それが、お前を支える基盤になる」

この言葉を、僕は今でも忘れたことがない。ハードコードされたかのように刻まれている。

しかし皮肉なことに、僕はこの言葉を完全に実践できていない。現実では仮面を被り、笑顔を貼り付け、本音を隠し、「大丈夫」と嘘をつき続けている。コードのように正直であることは、この世界では通用しない。いや、通用しないのではなく、勇気が足りないのだ。

プログラミング教室に通っていたのは小学三年生の冬から中学一年生の春まで、約四年間。A先生はその後、借金で教室を閉めてどこかへ消えた。名前すら忘れてしまったが、あの言葉だけは僕のプログラムの奥底で眠っている。


再帰関数と終了条件

僕は、自分の幼少期の記憶と現在の行動パターンを、関数のように比較してみた。

```

過去の自分(小学生)

def respond_to_pressure(pressure): if pressure == "いじめ": return "笑顔でやり過ごす" elif pressure == "孤立": return "道化を演じる" else: return "仮面を被る"

現在の自分(プログラマ)

def respond_to_pressure(pressure): if pressure == "会議で意見を求められる": return "『大丈夫だと思います』" elif pressure == "彼女に話しかけられる": return "何も言えずに固まる" elif pressure == "ミスを責められる": return "深い自己否定" else: return "仮面を被る" ```

構造はほとんど同じだ。入力に応じて決められた出力を返すだけ。恐怖がトリガーとなり、防御メカニズムが作動する。しかし、ハッカソンでの経験——彼女の「コードを図に書いてみない?」という一言——が、この関数にわずかな変化をもたらしている。

例えば、最近になって、コードレビューで「別の視点から見てみよう」と思えるようになった。完全ではない。まだ仮面は外せない。でも、以前より少しだけ、自分の思考を客観視できるようになった。

再帰的に過去を呼び出すたびに、自己嫌悪が増幅される。社内の飲み会で仮面を被り、家に帰って自己嫌悪の波に襲われる。そしてまた過去の記憶を呼び出す——いじめの記憶、仮面を覚えた幼稚園の記憶。終わりがない。

これが再帰的思考の危険性だ。終了条件を設けない再帰関数は、システムをクラッシュさせる。僕の心も、酒に逃げたり部屋に引きこもったり、何度かクラッシュしかけた。


終了条件を探して——仮面が外れる恐怖と希望

ブログのエントリを書き終えた夜、ベランダに出て空を見上げた。月は満ち欠けを繰り返しながら、今日もそこにある。

A先生の言葉が響く。

「コードは嘘をつかない。お前もそうなれ」

この言葉に含まれる真実は、おそらく「自分に嘘をつくな」ということだ。ブログに書いたことは確かに真実だ。いじめの記憶、仮面の起源、A先生との出会い、そして——彼女への想い。それらはすべて事実だ。しかし、それだけでは足りない。これらの事実をどう受け止め、どう未来につなげるか。

「自分に嘘をつかない」とはどういうことか。それは、自分の弱さを認めることかもしれない。Redisのミスを認め、彼女への想いが原因だったと認めること。そして、その弱さとともに生きていく方法を見つけること。

仮面が外れるのが怖い。本当の自分を出したら、拒絶されるかもしれない。山田のように、優しさの条件に縛られるかもしれない。でも、同時に——ハッカソンであの言葉をくれた彼女のように、受け入れてくれる人がいるかもしれない。

A先生は言った。「完璧じゃなくていいんだ」と。プログラムにバグがあるように、人間にも弱さがある。大事なのはバグを認識し、それに対処する方法を知ることだ。自分を完全に書き換える必要はない。少しずつ、リファクタリングすればいい。

僕は部屋に戻り、ブログのエントリを書き続けた。今回は、少しだけ踏み込んだ内容を書こうと思う。彼女のこと。Redisのミスのこと。そして、仮面が外れることへの恐怖と、ほのかな希望のこと。

アクセス解析の数字は、たったの3に増えていた。たぶんスパムボットだろう。それでもいい。

いつか、このブログを読んだ誰かが、同じような傷を抱えていたら。あるいは、今まさに苦しんでいる誰かがいたら。そんなことを考える。考えるだけで、少しだけこの重りが軽くなる。

今夜も僕は自分自身をデバッグしている。過去の記憶を呼び出し、現在の自分と比較する。しかし、無限ループは少しだけ収まっている。なぜなら、終了条件を見つけたからだ。

終了条件——それは「今、ここで、自分を受け入れる」こと。

完璧じゃなくていい。過去の傷を抱えたままでもいい。仮面を完全に外せなくてもいい。ただ、今この瞬間の自分を、コードのように正直に受け入れること。それが、僕の再帰的思考の終了条件だ。

窓の外では、月が淡く光っている。あの日のA先生の家の窓から見えた月と同じだ。先生は今、どこで何をしているのだろう。言葉を、他の誰かに伝えているのだろうか。

いや、そんなことはどうでもいい。

僕は、この言葉を胸に刻み、プログラムを書くように真摯に生きていくしかない。

「コードは嘘をつかない。お前もそうなれ」

その言葉を、自分自身に繰り返す。何度でも。それが、僕の自己受容のための最初の一歩なのだから。

← 前の章 目次へ 次の章 →
◆ ◆ ◆
CHAPTER 12
コードの倫理

第12章 コードの倫理

その仕様を見た瞬間、胃のあたりが冷えた。

金曜日の午後四時、プロジェクトルームのホワイトボードに、主任が新しい要件を書き始めたときだ。マジックの匂いが鼻につく。嫌な予感はいつも同じ匂いを伴ってやってくる。

「顧客からの要望でな、このユーザー情報の保持期間を、法律で定められた三年から、五年に延ばしてほしいそうだ」

主任は軽い口調で言った。彼にとっては、ただの仕様変更の一つに過ぎないのだろう。だが、僕にはそれがどういう意味を持つのか、すぐに理解できた。

まず、このシステムは個人情報保護法に準拠するよう設計されている。保持期間は法律の下限ぎりぎりに設定され、それを超えるデータは自動的に削除される仕組みだ。五年間保持するということは、システム全体の設計をやり直す必要がある。データベースのスキーマ変更、ストレージ見積もりの再計算、バックアップ戦略の見直し——少なくとも二週間分の作業が追加される。

そして何より、この要求自体がユーザーにとって有害だった。

このアプリケーションは、ユーザーが自分のデータを完全にコントロールできることを売りにしている。「いつでもデータを削除できます」「保持期間は最長三年です」——これがサービス開始時にユーザーに提示した約束だ。それを今になって「やっぱり五年にします」と言えば、ユーザーの信頼は地に落ちる。

しかも、顧客の真の目的は別にある。彼らはユーザーの行動履歴を分析して、より精度の高い広告を配信したいのだ。データが多ければ多いほど、機械学習モデルの精度が上がる。それはよくわかる。しかし、それをユーザーに明示せず、法的なギリギリを狙ってやろうとしている。

「それって、法律的に大丈夫なんですか?」

僕の口から出た言葉は、震えていた。自分でも驚いた。入社三ヶ月の新人が主任に意見するなんて、いつもの僕なら絶対にできないことだ。でも、なぜか今日は違った。認証モジュールのミスから立ち直り、リーダーに抜擢されてから、何かが変わろうとしている。

主任は一瞬驚いた顔をして、すぐに笑顔を作った。

「ああ、その点は顧客の法務部が確認済みだ。データの利用目的を変更するという形で、ユーザーに通知すれば問題ないそうだ」

「でも、それって——」

言いかけて、やめた。言っても無駄だと思ったのだ。主任はもう決めている。彼の立場としては、顧客の要求を断るわけにはいかない。上からのプレッシャーもあるだろう。契約金額が大きいほど、プロジェクトの優先順位は上がり、顧客のわがままは通りやすくなる。

「Tくん、君はこのプロジェクトのリーダーなんだから、しっかりしてくれよ」

主任の言葉に、僕の背中に冷たい汗が流れた。リーダー。入社三ヶ月で任されたその肩書きが、今は重すぎる。一ヶ月前、認証モジュールの致命的な設定ミスを犯し、深い罪悪感に苛まれたあの日々。あれから立ち直り、上司の期待に応えるために必死で働いてきた。でも、その結果がこれだ。僕はまだ、あのミスの影響を引きずっている。主任からは「信頼している」と言われたが、自分自身を信頼できていない。

「一週間で、対応できますか?」

主任がにこやかに尋ねる。その笑顔の裏には、「できない」と言えば「なら誰かに代わってもらおうか」という意味が込められているのがわかる。僕はその言葉の重みを知っている。三週間前、データベースの設計で意見が食い違った同僚が、その一言でプロジェクトから外された。あれは事実上の左遷だった。

「……できます」

声が出た。僕の口が、僕の意志とは無関係に動いた。ああ、まただ。また僕は「やります」と言ってしまった。心の奥底では「これで本当にいいのか」と警鐘が鳴っているのに。

主任は満足そうにうなずき、ホワイトボードに新しいスケジュールを書き加えていく。その背中を見ながら、僕は自分の中の何かが、また一つ死んでいくのを感じていた。

***

その夜、午後九時を過ぎたオフィスは、蛍光灯の明かりだけが異様に白く輝いていた。同僚たちはすでに帰宅し、僕だけが取り残されている。開きっぱなしのノートパソコンの画面には、書きかけのコードが表示されている。

「UserDataRepository.php」

ファイル名を見ただけで、嫌悪感が込み上げてくる。このクラスは、ユーザーデータの保持期間を管理するためのものだ。三年分のデータを保持するよう設計されていたものを、五年に拡張する。単純な作業に思えるかもしれないが、実際にはシステム全体の設計思想を覆すことに等しい。

キーボードに手を置く。指が震えている。

本質的な問題は、技術的な難しさではない。このコードが、ユーザーに対する裏切りになるということだ。僕が書くコードは、ユーザーの信頼を損なう。それなのに、僕はそれを書いている。

「仕方ないだろう」

もう一人の自分が囁く。

「これが仕事だ。約束したんだ。プロジェクトを成功させるって」

でも、その「成功」の定義は誰が決めたんだろう。顧客が決めた「成功」と、ユーザーが望む「成功」は、明らかに異なる。そして僕は、どちらのためにコードを書くべきなのか、わからなくなっている。

エディタの画面を見つめる。カーソルが点滅している。その点滅のリズムが、自分の鼓動と同期しているように感じられる。まるで、コードが生きているかのように。

「UserDataRepository.php」の最初の行を書く。

```php class UserDataRepository ```

ここまではいい。このクラスは、データベースからユーザーデータを取得するためのものだ。基本設計は変わらない。変わったのは、保持期間だけ。

その次の行を書こうとして、手が止まる。

ここで、データ保持期間を三年から五年に変更するというのは、技術的にはどういう意味を持つのか。僕は頭の中で整理した。データベースのレコードに「expires_at」というカラムがある。現在は「現在日時+3年」が設定されている。これを「現在日時+5年」に変更する。それだけだ。たった一行の変更。

しかし、この変更が引き起こす影響は大きい。例えば、過去に保存されたデータの保持期間を遡及して変更するかどうか。法律上は新規データのみで問題ないが、顧客は過去のデータも含めて全件変更を求めている。過去のデータはユーザーが「三年で削除される」という前提で預けたものだ。それを五年に延ばすのは、明らかにユーザーの期待を裏切る。

「データ保持期間の定数」

三年から五年に変える。たった一文字の変更だ。でも、その一文字が意味するものは大きい。

```php const RETENTION_PERIOD = 5; // 年 ```

書いた。でも、それを保存できない。Enterキーを押せば、このコードはファイルに書き込まれる。そして、それは僕の同意を意味する。

「同意していない」

唇が震える。僕は同意していない。断れなかっただけだ。「やります」と言ってしまっただけで、心の底から同意したわけじゃない。でも、結果は同じだ。コードは書かれる。システムは変更される。ユーザーは気づかないうちに、自分たちのデータが五年間も保存されることになる。

ふと、ある記事を思い出した。先週、技術ブログで読んだ「プロフェッショナルプログラマの倫理」という記事だ。そこに書かれていた言葉が、今も頭に残っている。

『プログラマには、コードが社会に与える影響を深く理解し、責任を持つ義務がある。単に「動作するコード」を書くだけでは不十分だ。そのコードが誰を守り、誰を傷つける可能性があるのかを、常に問い続けなければならない』

この記事はさらに、プロフェッショナルとしての三つの責任を挙げていた。第一に、ユーザーの安全とプライバシーを守る責任。第二に、雇用主や顧客に対して誠実である責任。第三に、社会全体の利益を考慮する責任。この三つが競合するとき、プログラマは難しい判断を迫られる。

今の僕の状況は、まさにその競合そのものだ。顧客の要求に従えば、ユーザーのプライバシーを損なう。ユーザーを守ろうとすれば、顧客や雇用主の期待を裏切る。そして、どちらを選んでも、社会全体の利益という大きな視点からは不完全な選択になる。

「ユーザーのデータを五年間保持するということは、具体的にどんなリスクがあるんだろう」

自問する。技術的な観点から考えてみる。

まず、データ漏洩のリスクが増大する。保持期間が長くなればなるほど、データが外部に流出する確率は高まる。DBサーバーへの攻撃、内部不正、バックアップの漏洩——どんな対策を講じても、リスクをゼロにはできない。

次に、データの正確性の問題がある。三年間も経てば、ユーザーの個人情報は変化している。住所が変わっているかもしれない。電話番号が変わっているかもしれない。古いデータを保持し続けることは、誤った情報に基づいて判断を下すリスクを生む。

そして、最も重要なのは、ユーザーの意思の尊重だ。ユーザーはこのサービスに「三年間だけ」データを預けるつもりで登録した。その契約を一方的に変更するのは、信頼関係を根本的に損なう行為だ。

「でも、通知はするんだから」

自分を正当化しようとする声が聞こえる。

「ユーザーに通知して同意を得れば、問題ないはずだ」

本当にそうだろうか。通知メールは、たいていのユーザーが読まずに削除する。利用規約の変更を、真剣に読むユーザーはほとんどいない。現実的には、ほとんどのユーザーが気づかないうちに、データの保持期間が延長されることになる。

「オプトイン方式にすれば解決するんじゃないか」

ふと、そんなアイデアが浮かんだ。保持期間の延長をデフォルトとせず、ユーザーが明示的に同意した場合だけ五年間保持する。同意しない場合は従来通り三年で削除する。技術的には、それほど難しい変更ではない。

しかし、すぐにそのアイデアは打ち消された。顧客はそれを望んでいない。彼らが欲しいのは、強制的なデータ保持だ。オプトイン方式では、大半のユーザーが同意せず、データの収集量が大幅に減る。顧客のビジネスモデルは、大量のデータを蓄積し、それを広告に活用することにある。オプトイン方式では、そのモデルが成立しない。

「結局、金のためか」

そう呟いたとき、自分の口調がひどく冷たいことに気づいた。まるで、他人事のように。

時計を見る。午後十時半。もう一時間も、同じ場所で悩んでいる。周りには誰もいない。ただ、蛍光灯の音だけが聞こえる。ブーンという低い音。それが、僕の焦燥感を増幅させる。

ふと、デスクの引き出しを開けた。中には、昨日の夜に買ったコンビニのおにぎりの包み紙と、小さなメモ帳が入っている。そのメモ帳の表紙には、ハッカソンで彼女からもらった付箋が貼ってある。

『コードを図に書いてみない? 新しい視点が見えるかも』

彼女の字だ。丸っこくて、親しみやすい字。この付箋を貼ったとき、僕は少しだけ希望を持てた。彼女のように自然体で生きられたら、どんなに楽だろう、と。

でも、あの希望はもう色あせている。今の僕には、彼女の前でさえ、仮面をかぶることしかできない。エレベーターでのあの沈黙。彼女が「お疲れ様です」と言ったのに、何も返せなかった。あの瞬間、僕はまた一つ、自分を偽った。

「そうだ、仮面だ」

僕はいつも、仮面をかぶっている。幼稚園で覚えた笑顔の仮面。小学校で磨いた道化の仮面。そして今、会社で被っている「できる社員」の仮面。その仮面の奥で、本当の自分は泣いている。でも、それを表に出せない。

「今、何してるんだろう」

そんなことを考えて、すぐに打ち消す。今はそんなことを考えている場合じゃない。コードを書かなければ。書かなければ。

画面に戻る。カーソルがまだ点滅している。待っている。僕の入力を。

「わかったよ」

呟いて、キーボードを叩き始めた。

```php public function getRetentionPeriod(): int { return self::RETENTION_PERIOD; } ```

書いた。あっけないほど簡単に、一行のコードが生まれる。これで、システムはユーザーデータを五年間保持する。法律の枠組みの中で、ユーザーに通知すれば、一応は合法だ。

でも、これは倫理的に間違っている。ユーザーは、この変更に同意していない。彼らは三年間だけデータを預けるつもりで、このサービスを使い始めたのだ。

「でも、通知されるんだからいいじゃないか」

自分を正当化しようとする声が聞こえる。けれど、その声はどこか空虚に響く。

「ユーザーが同意すれば、問題ない。むしろ、データが多く残ることで、より良いサービスが提供できるかもしれない」

そうだ。そうかもしれない。顧客はユーザーにとって有益な機能を追加するために、このデータを使うんだ。広告の精度が上がれば、ユーザーにとっても利益になる。関連性の高い広告が表示されるようになれば、むしろ便利になる。

——そんなのは、ただの言い訳だ。

僕は自分に嘘をついている。本当にユーザーのためを思うなら、もっと透明性の高い方法があるはずだ。例えば、保持期間の延長をオプトイン方式にする。つまり、ユーザーが明示的に同意した場合だけ、データを保持する。そうすれば、ユーザーの意思が尊重される。

でも、顧客はそれを望んでいない。オプトイン方式では、多くのユーザーが同意しないからだ。彼らが欲しいのは、強制的なデータ保持だ。ユーザーが気づかないうちに、データを蓄積し続けることだ。

「なんで、こんなに辛いんだろう」

また声が出てしまった。今度は、自分でもどうしようもなく、感情が溢れ出した。

目の前のコードは、ただのテキストデータだ。でも、それが持つ意味は、計り知れない。このコードが本番環境にデプロイされれば、何千人、何万人ものユーザーが影響を受ける。彼らは気づかない。ただ、いつも通りサービスを使い続けるだけだ。でも、その裏で、自分たちのデータがより長く保存されていることを知らない。

僕は、このコードを通じて、ユーザーを裏切る。大げさかもしれない。でも、僕にとっては、そう感じられる。

「プログラマーとしての誇りって、なんだろう」

自問する。高校の図書館でPython入門書に出会ったあの夜、僕は確かに嬉しかった。プログラムは嘘をつかない。TrueはTrue、FalseはFalse。バグがあれば修正できる。コードは人格否定をしない。あの世界は、僕にとっての楽園だった。

でも、今、僕が書いているコードは、嘘をついている。真実を隠している。ユーザーを欺いている。これは、僕が愛したプログラミングの世界とは、まったく別のものだ。

コードは嘘をつかない。そのはずだ。でも、コードを書く人間は嘘をつく。その嘘が、コードを通じてユーザーに伝わる。それが怖い。

「どうすればいいんだろう」

何度も繰り返してきた自問が、また頭の中を巡る。

答えは出ない。でも、一つだけ確かなことがある。

このままでは、自分が自分でなくなる。プログラマーとしての誇りを失う。人間としての尊厳を失う。

「月曜日、主任に話そう」

そう決めて、キーボードから手を離した。でも、その決意は、どれだけ続くのだろう。月曜の朝、主任の顔を見たら、また「やります」と言ってしまうかもしれない。

それが、僕の弱さだ。それが、僕の生き方だ。

そして、その弱さこそが、僕が長年かけて築いてきた仮面の正体なのだと、改めて思う。仮面を被っている間は、弱い自分を隠せる。でも、その代償として、本当に大切なものを守る力を失っている。

窓の外を見る。雨が静かに降り始めていた。その雨音を聞きながら、僕はもう一度、エディタを開いた。月曜の朝に間に合わせるために。

そして、心の中で呟く。

「プログラムは嘘をつかない。でも、プログラムを書く人間は嘘をつく。そのギャップに、どう向き合えばいいんだろう」

答えは、まだ見つからない。

← 前の章 目次へ 次の章 →
◆ ◆ ◆
CHAPTER 13
月夜の同士

第13章 月夜の同士

夜の公園というものは、昼間とはまったく別の生き物のように思える。昼間の公園は、子供たちの笑い声と、ベンチでおしゃべりする主婦たちの声で満たされている。日向は明るく、陽気で、ある種の「普通の幸せ」の象徴だ。だが、夜の公園は違う。街灯が落とす橙の光の輪の中に、孤独な人間たちが集まる。それぞれが、それぞれの理由で、そこにいる。誰も互いの事情を詮索しない。それが、暗闇の持つ優しさなのかもしれない。

あの夜、僕はまたしても家に居られなくなって、深夜の公園に足を運んでいた。時刻は午前二時を回っていた。理由は些細なことだ。SNSで同世代のエンジニアたちが、休日に仲良く集まって何かを作っている写真を見てしまったのだ。彼らは笑っている。肩を組んで、ピザを頬張って、楽しそうにコードを書いている。僕には、あの輪の中に入ることはできない。入ったとしても、また道化の仮面を被って、場を繕うだけだ。そう考えると、急に自分の部屋が息苦しくなった。まるで、水槽の水が濁って、酸素が足りなくなった金魚のように、僕は家を飛び出した。

公園の入り口にあるベンチに腰掛けると、秋の終わりの冷たい風が頬を撫でた。今日の月は半月で、雲の切れ間から冷たい光を投げかけている。僕は空を見上げて、ぼんやりと考えた。

「僕の人生も、こんなものだ。半分は明るく、半分は暗い。でも、その明るい部分は全部、偽物だ。」

そんなことを考えていると、ガラガラという音が聞こえた。振り返ると、一台のリヤカーを引いた老人が、公園の奥から現れた。リヤカーには、段ボールやビニール袋が山積みになっている。ホームレスの人だ。僕は直感的に目をそらした。見てはいけないものを見てしまったような、気まずさがあった。

だが、老人は意外な方向に進んだ。僕の隣のベンチに、リヤカーを止めたのだ。そして、ゆっくりと腰を下ろし、何やらポケットから取り出し始めた。缶コーヒーだった。プルタブを開けるシュッという音が、静寂に響いた。

「……お若いのに、こんな時間にどうしたんだい?」

声をかけられた。僕は心臓が飛び跳ねるのを感じた。仮面の準備ができていない。いつもの口角5ミリ上げ、目じり3ミリ細めの笑顔を作る余裕がない。僕は顔を上げて、老人をまじまじと見てしまった。彼の顔は、深い皺に刻まれていたが、目だけは驚くほど澄んでいた。

「い、いえ……眠れなくて。」

それが精一杯の返答だった。僕は自分の声が裏返っているのを自覚した。恥ずかしかった。

「ああ、俺もだ。ここに二十年も住んでると、夜の方が落ち着くようになってね。」

老人はそう言って、缶コーヒーを一口含んだ。何の衒いもない。不思議と、彼の言葉には「普通」が満ちていた。ホームレスであることを恥じてもいなければ、誇ってもいない。ただ、事実として、ここに住んでいる。その潔さが、僕の胸に刺さった。

「……二十年ですか。長いですね。」

「ああ。最初の数年は、どうにか這い上がろうともがいたもんだ。でもな、ある時気づいたんだよ。俺は社会のレールに乗るのが、どうも苦手らしいってな。だったら、もう好きに生きようって決めた。」

「レールに乗るのが苦手……。」

その言葉は、僕の心の奥底に引っかかった。僕もまた、レールに乗れない人間だ。いや、正確には、乗ったふりをしているだけだ。偽の笑顔を貼り付けて、レールの上を歩いているふりをしている。だが、本当の自分は、レールの下の泥の中で、這いつくばっている。

「若い君に言えることは、あまりないがな。ただ、自分をごまかすのは、やめた方がいい。いや、やめられないこともあるか。でも、せめて夜の一つや二つは、ごまかさずにいられたっていいだろう。」

老人はそう言うと、ガラガラと音を立ててリヤカーを引き、公園の奥へと消えていった。僕はその背中を見送りながら、涙がこぼれそうになった。自分をごまかさない夜。僕にとって、その言葉はあまりにも重かった。僕の人生は、ごまかしの連続だ。笑顔でごまかし、冗談でごまかし、時にはプログラムに没頭することでごまかす。全てを、ごまかしている。

しばらく経って、今度は別の足音が聞こえた。カツカツという、ヒールのリズミカルな音。夜の公園に、それは異様に響いた。振り返ると、スーツ姿の女性が、疲れた表情で歩いてくる。彼女は僕のベンチから少し離れた場所に腰掛けると、大きなため息をついて、ハイヒールを脱いだ。足首をさすっている。夜勤明けの看護師だろうか。それとも、深夜まで働く何かの職業の人か。

僕はまたしても、目をそらす。彼女は明らかに疲れ切っている。そんな彼女を、ろくに知りもしない男が、チラチラ見るのは失礼だ。そう思った。

だが、彼女の方から声をかけてきた。

「あなたも、疲れてるんですか?」

僕は顔を上げた。彼女の目は、優しげだった。だが、その奥には深い疲労が澱のように溜まっているのが見えた。

「……ええ、まあ。」

「わかります。私も、今日は特に疲れてしまって。病院で、担当していた患者さんが、亡くなってしまって。頑張ったんですけどね。それでも、どうにもならないこともあるんです。」

彼女はそう言って、苦笑した。その笑顔は、どこか諦観に満ちていた。僕は、何も言えなかった。彼女のその言葉は、僕の日常の小さな悩みとは、次元が違う。彼女は人の生死と向き合っている。その責任の重さは、僕が抱える「コードのバグ」や「人間関係のぎこちなさ」とは比べ物にならない。もし僕が彼女の立場だったら、潰れてしまっているだろう。そう思った。

「……お疲れ様です。」僕は、精一杯の言葉を絞り出した。

彼女はその言葉に、ほんの少しだけ気を緩めたようだった。

「ありがとうございます。こうやって、誰かに『お疲れ様』と言ってもらえると、少し楽になりますね。」

そう言って、彼女は立ち上がった。そして、またハイヒールを履き、カツカツと音を立てて去っていく。その後ろ姿は、さっきよりも少しだけ背筋が伸びているように見えた。

彼女の言葉は、僕の心にも響いた。「誰かに『お疲れ様』と言ってもらえると、少し楽になる」。僕もまた、誰かに「よくやってるね」とか「大丈夫だよ」と言ってもらいたいのだ。だが、僕はそれを素直に受け取れない。なぜなら、僕が演じている「頑張っている自分」は偽物で、本当の自分は何も頑張っていないことを、誰よりも僕自身が知っているからだ。

またしばらくして、公園に別の人間が現れた。今度は若い男だ。彼は肩にアコースティックギターを担いでいる。そして、僕から少し離れた噴水の縁に座ると、チューニングを始めた。耳を澄ませると、微かな音階が聞こえてくる。やがて彼は、静かに歌い始めた。

旋律は、何かのバラードだった。歌詞はよく聞き取れなかったが、その声には、確かに何かが乗っていた。苦しみとか、哀しみとか、それでも前に進もうとする意志のようなもの。日中の騒がしい音楽とは違う、夜の澄んだ空気に溶け込むような音だった。

一曲終わると、彼はこちらを見た。

「すみません、うるさかったですか?」

「い、いえ。全然……。とても良い曲でした。」

僕の言葉に、彼は照れた様子で笑った。

「ありがとうございます。まだ、誰にも聴かせたことのない、自分の曲なんです。今、作曲に挑戦していて。でも、なかなか自分に自信が持てなくて。」

「自信が持てない……。」

僕は、その言葉に深く共感した。僕もまた、自分のコードに自信が持てない。いや、技術的な能力に自信がないわけではない。問題は、その先にある。自分の作ったコードが、人に認められるかどうか。そして、認められたとしても、それを素直に受け入れられない自分がいる。

「作曲を目指しているんですか?」

「ええ。と言っても、まだまだですよ。友達からは『アマチュアのくせに』って笑われるし、親からは『安定した仕事に就け』って毎日言われてます。」

彼はそう言って、自嘲気味に笑った。また「道化」だ。僕はそう感じた。彼もまた、自分の本当の気持ちを笑顔で隠している。その笑顔の下には、傷つくことへの恐怖や、挫折への不安が隠されている。僕は他人の道化を見抜くことには、長けていた。なぜなら、自分自身が道化だからだ。

「でも、あなたは知らない人にでも、自分の曲を聴かせている。それって、すごく勇気がいることだと思います。」

僕は正直な気持ちを口にした。すると、彼は目を丸くした。

「そんな風に言われたの、初めてです。ありがとうございます。」

彼の笑顔が、先ほどとは違うものに見えた。心からの笑顔に、ほんの少しだけ近づいている気がした。だが、その直後に、僕の内側で警報が鳴った。

「待てよ。今のこの会話も、俺の仮面だ。心から彼を励ましたわけじゃない。『良い人』を演じて、相手に好かれようとしているだけだ。結局、俺は自分の防御のために、彼に優しい言葉をかけている。それが、俺というシステムのデフォルト動作だ。」

そう考えると、急に自分が嫌になった。僕は、本当に人の役に立ちたいと思っているのか? それとも、ただ目立ちたくないから、人に好かれたいから、優しそうな人間を演じているだけなのか? その区別が、もう僕にはつかない。いや、初めからついていなかったのかもしれない。

「……すみません、夜遅くまで邪魔をしました。明日も早いので、もう行きます。」

彼はそう言って、ギターを抱えて去っていった。僕は一人残された。

その後も、何人かの人間が公園を通り過ぎていった。酔っ払ったサラリーマン、犬の散歩をする初老の男性、タバコを吸いに来た女子高生。それぞれが、それぞれの理由で、夜の公園に訪れる。彼らはみな、何かを抱えているのだろう。それは、僕と同じか、あるいはもっと重いものかもしれない。

そう考えると、僕の悩みは、少しだけ相対化された。確かに、僕は人間関係が苦手だ。道化の仮面を被っていなければ、誰とも話せない。自己評価も低く、毎日のように自己嫌悪に陥っている。だが、彼らもまた、自分の人生を必死に生きている。ホームレスの老人は、二十年もの間、冬の寒さや夏の暑さに耐えてきた。看護師の女性は、人の死と向き合いながら、明日もまた病院に行く。作曲家の青年は、笑われるかもしれないリスクを冒して、自分の道を選んでいる。

それに比べて、僕はどうだ。僕には仕事がある。家もある。家族は疎遠だが、それでも生きていくための基盤は整っている。僕の「苦しみ」は、ある種の贅沢病なのではないか。そんな気がしてきた。

「本当にそうか?」

しかし、すぐに自己疑念が湧き上がる。その相対化の思考こそが、もう一つの仮面ではないのか? 「自分の悩みは大したことない」と思い込むことで、自分を慰めているだけではないのか? つまり、自分をここまで追い詰めている苦しみの核心から、目をそらしているだけなのではないか?

「おいおい、また自己分析かよ。疲れるなあ。」

僕は苦笑した。結局、何を見聞きしても、僕はいつものループに戻ってくる。他者の人生に触れて、少しだけ救われた気になり、そしてすぐに「それは偽りの感情だ」と自己否定する。これを繰り返すうちに、いつの間にか、感情そのものがすり減っていく。

月が、雲の間から再び顔を出した。その光は、僕の前に広がる砂利道を、淡く照らし出している。その光はどこか、冷たくもあり、同時に慈しみにも満ちていた。

ふと、ホームレスの老人が言った言葉を思い出す。

「せめて夜の一つや二つは、ごまかさずにいられたっていいだろう。」

そうか、そういうことか。僕はこの月明かりの下で、今だけは仮面を外してもいいのだ。誰も見ていないこの闇の中で、自分をごまかすのをやめてもいいのだ。それが、僕に対する、この世界からの許しなのかもしれない。

僕は深く息を吸い込んだ。夜の空気は、ひんやりと冷たく、喉の奥を清めてくれるようだった。

そして、静かに呟いた。

「僕は、誰かに認められたい。誰かに、本当の自分を見てほしい。でも、その欲求が怖い。なぜなら、認められなかった時の絶望が、あまりにも大きすぎるから。」

口に出した言葉は、自分のものとは思えないほど、真摯だった。この言葉は、決して仮面の裏から出てきた本音だ。誰にも聞かれていない。だから、恥ずかしくもない。ただ、静かに、月がその言葉を包み込んでくれた。

「それでも、前に進むしかないんだろうな。」

そう自分に言い聞かせて、僕はベンチから立ち上がった。ズボンの尻についた砂を払い、家に帰ろうとした。すると、足元に何かが落ちているのに気づいた。ホームレスの老人が落としていったのか、百円玉が一枚、月明かりに照らされて銀色に光っている。

僕はそれを拾い上げた。握ったコインは冷たく、硬質な感触だった。この百円玉のように、僕の意志もまた、冷たく硬質なものになればいい。しかし、それで本当にいいのだろうか。冷たいだけの人間になることが、正しいのだろうか。

「わからない。まだ、わからない。」

そう呟いて、僕は百円玉をポケットにしまった。いつか、このコインを見るたびに、今夜のことを思い出すだろう。ホームレスの老人の澄んだ目。看護師の女性の疲れた微笑み。作曲家の青年のギターの音。そして、月明かりの下で僕が口にした、偽りのない言葉。

家に着く頃には、東の空が白み始めていた。窓から差し込む朝の光は、昨夜までの重苦しさとは違い、どこか優しく感じられた。それは、偽物ではないかもしれない。いや、たまたまそう感じただけかもしれない。だが、それでも構わない。

僕は、コーヒーを淹れ、キーボードの前に座った。今日書くコードには、まだ嘘はない。そのことを、僕は誰よりもよく知っている。

← 前の章 目次へ 次の章 →
◆ ◆ ◆
CHAPTER 14
逃避行

第14章 逃避行

朝、目が覚めると、天井がやけに近く感じられた。いや、天井の高さは変わっていない。変わったのは、僕のほうだ。布団の上で縮こまるようにして横たわる自分が、まるで他人のように思えた。枕元のスマートフォンを見る。既に午前八時を回っていた。アラームを止めたのは何度目か。昨夜も酒に逃げた自分を思い出すが、同時に、彼女の顔が頭をよぎった。社内ハッカソンで「コードが物語みたいですね」と言ってくれた、あのデザイナー。エレベーターで言葉を交わせなかった後悔が、朝の静けさの中で鮮明に蘇る。

僕は彼女に惹かれている。その事実を認めるのが怖かった。認めてしまえば、また期待して、そして裏切られる。あの時、エレベーターで何も話せなかった自分。仮面の準備ができず、沈黙のまま別れたあの日。彼女の優しい「お疲れ様です」という言葉が、今も耳の奥で反響している。もし、あの時、僕が一言でも返せていたら。そんな「もし」を考え始めると、胸が締め付けられて動けなくなる。

結局、僕は二度寝から覚めたのは午前十時を過ぎていた。もはや、まともな時間に出社することは不可能だった。S主任に「体調が優れませんので、本日はお休みをいただきます」とメッセージを送る。簡潔で、嘘も本当もない一文。プログラマーとして、これはある種のバグかもしれないと思った。正常に動作すべき関数が、何らかの理由で例外を吐き続け、やがてプロセス全体がハングアップしたかのようだった。

そうして僕は、三日連続の欠勤を計上した。自分の部屋のカーテンを閉めきり、パジャマのままパソコンに向かう。コードを書こうとして、エディタを開く。カーソルが点滅する。何も書けない。かつて、コードは僕の楽園だった。プログラムは嘘をつかない。TrueはTrue、FalseはFalse。しかし今、その楽園への扉も固く閉ざされていた。彼女から提案された「コードを図に書く」という新しい視点は、僕の中でどこか遠い記憶のようになっていた。あの日、ハッカソンで感じた希望の光さえ、今はただの幻のように思える。

そして、その間もずっと、僕の頭の中では彼女の存在が反芻されていた。彼女が笑顔で同僚と話す姿。オフィスの空気を軽くするその存在。そんな彼女に、僕みたいな人間が話しかけてもいいのだろうか。僕のコードは「物語みたい」と褒められたけれど、褒められたのはコードであって、僕自身じゃない。いや、それ以前に、僕が犯したRedisの設定ミスのことを思うと、自己嫌悪で胃のあたりが重くなる。彼女の優しさにすら耐えられず、仮面をかぶってしまう自分が、また嫌になる。

そして翌週の月曜日、僕はついに会社に行った。エレベーターに乗る前に足が止まる。あの日、彼女と二人きりになったエレベーター。あの沈黙の時間が蘇り、足がすくんだ。結局、十分ほどエントランスで立ち尽くし、なんとかオフィスに足を踏み入れた。自分のデスクに座ると、同僚たちの目線が痛い。いや、実際には誰も僕をじろじろ見てはいなかったのだが、僕の心がそう感じていただけだ。彼女も自分の席で何か作業をしているのが見えた。声をかけたい。でも、何て言えばいい。結局、僕は視線を逸らし、モニターの向こう側に自分を隠した。

午後、S主任が僕を呼び出した。会議室のドアが閉まる音が、やけに大きく響いた。

「Tさん、ちょっと話があるんだけど」

S主任は優しい口調だった。その優しさが、かえって辛かった。もし怒鳴られていたら、僕は開き直って「すみません」の一言で済ませられたかもしれない。しかし、S主任は違った。彼は僕の目をまっすぐに見て、静かに語りかけた。

「最近、体調がすぐれないみたいだね。プロジェクトの進捗も、正直あまり芳しくない。それに、君の顔色もずいぶん悪いよ」

僕は仮面を被った。口角を上げ、目じりを細める。完璧な笑顔の演技。しかし、その背後で、僕の心は叫んでいた。逃げたい。ここから、この期待から、何もかもから。しかし、S主任はその仮面に騙されなかった。

「Tさん、無理しなくていいんだよ。そういう時もある。一度、しっかり休んだほうがいいと思うんだ」

休む。その言葉が、胸の奥深くに突き刺さった。休むということは、つまり、敗北を認めることだ。期待に応えられなかった。間違いを犯したことが証明される。仮面が剥がれて、空洞の自分が露わになる。そんな恐怖が、頭の中でプログラムのように制御を始める。

「大丈夫です。ちょっと疲れているだけで」

「Tさん。君は十分頑張ってきたよ。でもね、人間には限界がある。君はとても優秀だけれど、その優秀さが、かえって君を追い詰めているんじゃないかな?」

S主任の言葉は、僕の心の奥底に響いた。しかし、認めたくなかった。認めてしまえば、もう立ち上がれなくなるような気がした。それに、彼女にどう思われるだろう。休職するような人間だと知られたら、もう二度と話しかけてもらえなくなるかもしれない。そんな考えが、さらに僕を追い詰めた。

「休職を考えてみないか? 医者の診断書があれば、制度は使えるよ」

休職。その言葉を聞いた瞬間、僕の中で何かがプツンと切れた。まるで、長い間張りつめていた弦が、ついに切れてしまったかのようだった。それでも僕は、最後の力を振り絞って言った。

「……考えてみます」

その週末、僕は実家に帰ることにした。正確には、逃げ帰るという表現が正しい。都会のワンルームマンションに一人でいるのが耐えられなくなったのだ。冷蔵庫の中は空っぽに近く、洗濯物は山積みで、ゴミは臭い始めている。どの角を見渡しても、僕の生きている痕跡は、ただの汚れとしてしか存在していなかった。そして何より、彼女の存在が頭から離れない。この部屋で一人、彼女の顔を思い浮かべると、胸が裂けそうになる。

夜行列車に揺られて、三時間。地元の駅に降り立つと、懐かしい匂いがした。田んぼの匂いと、どこかから漂ってくる夕餉の匂い。しかし、それらはもはや安らぎではなく、疎外感として僕の心にまとわりついた。

実家の玄関を開けると、母親が驚いた顔で出迎えた。

「あら、どうしたの? 連絡もなく」

「ちょっと、休みが取れたから」

僕は嘘をついた。嘘をつくことに、もう罪悪感はなかった。むしろ、それが僕の標準的なコミュニケーションになっていた。しかし、その嘘の一つ一つが、彼女との距離をさらに遠く感じさせる。彼女に本当の自分を見せられない。この嘘の積み重ねが、やがて僕を押し潰すのではないか。

父親は、居間でテレビを見ていた。僕が帰ってきても、顔も向けずに「おう」とだけ言った。幼い頃から、そうだった。父は無口で、感情を表に出さない人だった。だが、その沈黙の中に、僕への失望がたっぷりと詰まっていることを、僕は知っていた。高校の文化祭で、同級生たちから「変」「気持ち悪い」と言われたあの日も、父親は何も言わなかった。システムは完璧だったのに、人間は僕を受け入れなかった。あの経験が、僕の中で「能力評価と人間的受容の乖離」として深く刻まれている。今また、その乖離が蘇る。

二日目の夜、ついにその言葉が飛び出した。

「ちゃんと働け」

夕食の後、父親が突然、そう言った。テレビのニュースを見ながら、何気なく放った一言だった。しかし、その一言が、僕の心臓を貫いた。

「働いてるよ」

「じゃあ、なんで帰ってきてるんだ。休みならいいけどよ。ちゃんと働けよ。俺みたいに、真面目に」

父親は、中小企業の工場で三十五年間、一度も休まずに働いてきた。彼の人生は、仕事と家族と地域の付き合いで構成されていた。休むという概念が、彼にはなかった。彼にとって、働かないことは、すなわち生きる価値がないことと同義だった。その価値観の前で、僕はまたもや言葉を失う。もし僕が「休職」を選んだら、この家ではもう生きていけない。でも、職場でも生きていけない。どこにも居場所がない。

「わかってる」

僕はうつむいた。拳を握りしめているのが自分でもわかった。怒りが湧き上がってきた。しかし、その怒りの矛先が、自分自身に向いていることに気づいた。父親の言葉が間違っているとは思えなかった。僕は確かに、ちゃんと働けていない。いや、働いているふりをしているだけだ。コードを書くふりをして、会議に出るふりをして、全てが「ふり」で構成された人生を生きている。そして、彼女にすら、その「ふり」を見せ続けている。

だが、その怒りと悲しみが混ざり合った感情は、決して父親には伝えられなかった。僕はただ黙って、食器を流しに運んだ。

その夜、深夜二時。僕は実家の台所に立っていた。誰もいないことを確認して、冷蔵庫の隅から缶ビールを取り出した。プルタブを開ける音が、静まり返った家の中にやけに大きく響いた。

台所の裸電球の下で、僕は缶ビールを飲んだ。冷たさが喉を通り過ぎ、胃の中に溜まっていく。何杯目かもわからなくなった頃、酔いが回ってきた。僕は、自分が今している行為を、まるで他人事のように客観視していた。

ここにいるのは、誰だ。実家の台所で、一人で酒を飲んでいる三十歳近い独身の男。プログラマーとして名が知られているわけでもなく、大したプロジェクトを手がけたわけでもない。社内ハッカソンで彼女に出会い、コードを褒められたけれど、結局それも一瞬の出来事に過ぎなかった。SNSでは「仕事頑張ってます」アピールだけをして、本当の自分は隠し続けてきた。そして今、彼女への想いも、エレベーターでの後悔も、全てを酒で洗い流そうとしている。

ああ、なんて滑稽なんだ。

缶ビールを空けて、もう一本を開けた時、ふと彼女のあの言葉が蘇った。「コードを図に書いてみない?」——あの時、僕は何かを変えるチャンスをもらったはずだった。でも、僕はそれを活かせなかった。いや、そもそも変わる勇気がなかったのだ。仮面を外すのが怖かった。本当の自分を見せるのが怖かった。

その夜、僕は酒に溺れるようにして眠りについた。夢の中で、僕は幼い頃の自分に出会った。お遊戯会の練習で、先生に「もっと笑って!」と言われて、必死に笑顔を作っていた自分。あの頃から、ずっと仮面を被り続けてきた。もう、仮面を外す方法さえ忘れてしまった。そして、彼女に本当の自分を見せられないまま、時間だけが過ぎていく。

翌朝、二日酔いの頭を抱えながら、僕は実家を後にした。母親が「ちゃんとご飯食べなさいよ」と言った。父親は、朝刊を読んだまま、何も言わなかった。その沈黙が、何よりも重かった。

駅までの道すがら、僕は自分に言い聞かせた。

「もう、逃げない」

しかし、その言葉が空しく響くのを、僕は感じていた。だって、僕は今まさに、逃げているのだから。実家から都会へ。会社から自宅へ。現実から仮想世界へ。そして、自分自身からも。彼女からも。

電車の窓から見える景色が、流れていく。その流れの中で、僕の人生もまた、どこかに流されていっているような気がした。高校の文化祭で、同級生たちに「変」と言われた時も、こうして電車に揺られて帰ったっけ。あの時、僕はプログラミングの世界にだけ逃げ込んだ。でも今は、その世界さえも僕を受け入れてくれない。

スマートフォンが振動した。S主任からのメッセージだった。

「来週、ゆっくり話しましょう。無理しないでください」

その優しさが、また胸を締め付けた。返信はしなかった。何と返せばいいのか、わからなかったからだ。それに、彼女のことも考えずにはいられなかった。月曜日、会社に行ったら、彼女に何て言えばいい。いや、彼女はもう僕のことなんて気にしていないかもしれない。それでも、僕は彼女に会いたい。でも、会うのが怖い。

東京駅に着いた時、僕のスマートフォンのバッテリーは切れかけていた。充電器を忘れたことに気づいたが、どうでもよかった。もう、誰とも連絡を取りたくなかった。全ての通知から逃れて、ただ自己嫌悪の海に沈んでいきたかった。

マンションに戻ると、部屋の空気は澱んでいた。カーテンを開けると、差し込む光が目に痛い。僕はその光の中に立って、自分自身の影を見つめた。

ああ、僕は、どこに行けばいいのだろう。

その答えは、どこにもなかった。代わりに、冷蔵庫の中の缶ビールが、僕を呼んでいる気がした。しかし同時に、彼女の顔が頭をよぎる。もし、もう一度だけ、あのエレベーターに乗れたなら。今度こそ、一言でも、何かを伝えられたなら。でも、僕にはできない。仮面を被っていない自分では、何もできない。

もう、いいだろう。今夜も、酒を飲もう。そして、自分を忘れよう。明日のことは、明日考えればいい。休職のこと、彼女のこと、全てを忘れてしまいたい。

僕はそう決めて、カーテンを再び閉めた。部屋は、再び闇に包まれた。その闇の中で、僕は一人、酒をあおる。仮面を外した自分が、そこにいた。しかし、その顔は、仮面と同じ笑顔を浮かべていた。

どこからが本当の自分で、どこからが偽りの自分なのか。

その境界線は、もうとっくに消え去っていた。

僕はただ、生きている。プログラムのように、決められたルーチンを繰り返しながら。しかし、プログラムは嘘をつかない。バグがあればエラーを吐く。それなのに、僕はエラーを吐かずに、笑顔のルーチンを繰り返し続けている。それが、一番の嘘だ。

逃避行の果てに、僕が見つけたもの。それは、どこにも行き場のない、ただの空っぽの自分だった。そして、その空っぽの真ん中で、彼女の存在だけが、ぼんやりと光っている。まるで、デバッグできないバグのように、いつまでも消えずに残り続けている。

← 前の章 目次へ 次の章 →
◆ ◆ ◆
CHAPTER 15
書くこと

第15章 書くこと

ブログを書き始めてから、確かに何かが変わった。毎日のように投稿する短い文章――コードの解説、読んだ技術書の感想、時にはどうでもいい日常の断片。それらを書き連ねるうちに、僕の頭の中の濁った澱が、少しずつ濾過されていくような感覚があった。

しかし、それだけでは足りない何かがあった。

ブログはあくまでも「公開」を前提とした場所だ。そこには必ず読者がいて、いいねやシェアを期待する自分がいる。書きながらも、どこかで「これを読んだ人はどう思うだろう」という他者の視線を意識してしまう。仮面のない文章を書こうと努力すればするほど、無意識のうちにまた別の仮面を被っている自分に気づく。これでは本末転倒だ。

ある土曜日の夜、僕は何の気なしに自分のブログのアーカイブを読み返していた。三ヶ月前の最初の投稿から、最新の「Redisのキー設計で気をつけること」まで、全部で四十七本の記事。あの第8章のミスを起こした直後に書いた記事だ。あの日、Redisのキー有効期限を間違えて本番環境でデータが消失した。原因は単純だ――彼女のことで頭がいっぱいで、普段なら見逃さないエッジケースを見落としていた。その罪悪感と自己嫌悪を打ち消すように、僕はブログを書いた。「Redisのキー設計で気をつけること」――まるで、誰かに注意を促すことで、自分の過ちを帳消しにしようとしているみたいだ。

「よく書いたな……」

自分でも驚いた。あれだけ毎日のようにブログを更新していたのか、と。でも、読み返してみて気づいたのは、どの記事も「正しいこと」しか書いていないということだった。技術的な正しさは担保されている。読者に役立つ情報もある。でも、そこに書いている「僕」は、どこか他人事のように澄ました顔をしている。まるで、ブログという仮面を被って、本当の自分を隠しているかのように。

本当は、もっと別のものを書きたかったのかもしれない。

いや、正確には――本当は、もっと別の書き方をしたかったのだ。

その夜、僕は新しいテキストファイルを開いた。ファイル名は「draft.txt」、適当すぎる名前だ。書き出しはこうだった。

「僕は幼稚園の頃から、笑顔の作り方を知っていた」

最初の一行を打ち込んだ瞬間、指が震えた。なんだろう、この感覚。コードを書いているときとはまったく違う。Pythonのforループも、Goのゴルーチンも、Haskellのモナドもない。変数も関数もオブジェクトもない、ただの散文。でも、この一行には、これまで書いてきたどんなコードよりも、僕自身の人生が詰まっているような気がした。

僕はそのまま書き続けた。お遊戯会の練習で先生から「もっと笑って!」と言われた日のこと。鏡の前で口角を五ミリ上げ、目じりを三ミリ細める練習を繰り返したこと。小学二年の夏、初めてクラス中を笑わせたときの快感と虚無感。高校二年の図書館でPythonの入門書を手に取った夜の、あの震え。文化祭の座席予約システムでクラスメイトに「変」と言われた瞬間。

書いているうちに、自分でも驚くほど細かい記憶が次々に蘇ってきた。あの日の教室の匂い、窓から差し込む陽の光の角度、相手の口調の変化、自分の心臓の鼓動。まるで脳内のハードディスクをフルスキャンしているかのように、データが溢れ出してくる。

最初は第三者的な視点で書こうとした。「彼(T)」という三人称で、まるで他人の人生を記録するように。そうすれば、自分から距離を置いて、冷静に分析できると思ったからだ。

「彼は幼稚園の頃から、笑顔の作り方を知っていた。彼はそれを道具として使い、周囲の大人たちの期待に応えてきた。しかし、その道具に魂を支配される日が来るとは、当時の彼は知る由もなかった」

三段落ほど書いて、僕は手を止めた。なんだか、嘘くさい。

いや、嘘ではない。事実は事実だ。でも、声が違う。まるで自分ではない誰かが、自分の人生を解説しているような、奇妙な違和感がある。三人称の「彼」は、どこかで必ず客観的であろうとする。感情を抑え、分析を優先し、読者に解説する。それはまるで――ブログを書いているときの僕自身の態度と同じだった。

「また、仮面を被ってる……」

僕は全部を消した。そして、もう一度書き始めた。

「僕は幼稚園の頃から、笑顔の作り方を知っていた」

一人称。僕。私。T。この身体の中にいる、たった一人の人間。

この文体は、しっくりきた。いや、むしろ心地よかった。三人称で書いているときに感じていた「何かを偽っている感覚」が、嘘のように消え去った。一人称で書くと、すべてが生々しく、痛いくらいにリアルになる。恥ずかしい過去も、情けない行動も、すべて「僕のもの」として書ける。

それは、コードを書くことに似ていた。いや、プログラミングとはまったく逆のベクトルかもしれない。コードは嘘をつかない。TrueはTrue、FalseはFalse。if文は条件を判定し、forループは繰り返しを実行する。でも、コードは感情を語らない。僕の苦しみも、喜びも、悔しさも、コードは何も知らない。変数に格納された値は、ただそこにあるだけだ。

しかし、この告白体の散文は違う。嘘をつくこともできる。事実を歪めることもできる。でも、僕はなぜか、書けば書くほど正直になっていく自分を感じた。書いているうちに「こう書けばカッコいいかな」という作為が入りそうになるたび、脳内の別の自分が「ちょっと待て、それはお前の本心か?」と問いかけてくる。

この文章は、コードのようにコンパイルされない。テストケースもない。ユーザーからのフィードバックも、バグレポートもない。ただ、僕自身が自分の人生を検証し、解釈し、記録していく。それだけだ。

僕は週末をすべて執筆に費やした。土曜の朝九時から日曜の深夜二時まで、ほぼぶっ通しで書き続けた。途中で冷凍のチャーハンをチンして食べたことと、トイレに立ったこと以外は、ずっとキーボードの前に座っていた。

気がつけば、一万二千字を超えていた。時間の経過も、疲れも、空腹も、ほとんど感じなかった。書くことが、呼吸そのものになっていた。

書き終えたあと、僕はしばらく画面を見つめていた。自分の人生を文章にしたのは、これが初めてだった。ブログとは違う。技術書の翻訳とも違う。これは純粋に、僕自身のための文章だ。

不思議なことに、書いている最中に何度も泣きそうになった。特に、文化祭の座席予約システムのエピソードを書いているときだ。あの日、クラスメイトの女子が他の男子に「Tくんってちょっと変だよね」と話しているのを聞いてしまった話。システムは完璧に動いたのに、そのシステムを作った人間は「変」と評価された。その事実を文章に起こしながら、当時の僕よりも今の僕のほうが、その痛みを正確に理解できていることに気づいた。

「ああ、あのとき僕は、こう思っていたんだ……」

当時はただ漠然と「嫌だな」「悲しいな」としか感じていなかった感情が、文章にすることで初めて輪郭を持った。それはまるで、コードにコメントを書いていく作業に似ている。頭の中の漠然としたロジックに、一行ずつ説明を加えていく。そうすることで、自分が何を考え、何を感じていたのかが、はじめて明確になる。

書くこと。それは、自分自身の感情に名前を付ける作業だった。

僕はこれまで、自分の感情を表現するのが苦手だった。いや、正確には、表現する方法を知らなかったのだ。嬉しいことも、悲しいことも、悔しいことも、すべて仮面の下に押し込めて、笑顔で「大丈夫」と答えることしかできなかった。感情を言葉にすることは、自分をさらけ出すことであり、それはあまりにも怖かった。

でも、小説という形で書くのなら、話は別だ。小説は「作り物」だ。現実の僕ではなく、語り手としての「僕」が存在する。その語り手は、確かに僕自身であるけれど、同時に僕ではない。その微妙な距離感が、僕に正直になることを許してくれた。

「これは小説だ」と自分に言い聞かせることで、僕は初めて、自分の人生について包み隠さず書くことができた。

セラピーとしての執筆

日曜の夜、僕は書き上げた一万二千字の原稿を何度も読み返した。そこには、僕がこれまでに経験した傷や苦しみが、生々しい言葉で綴られていた。読み返すたびに当時の痛みが蘇るけれど、不思議と苦しくはなかった。むしろ、その痛みを「見える形」にできたことで、ずいぶん気が楽になった。

感情というものは、それを認識し、名前を付け、言語化することで、はじめて自分のものになるらしい。それまでは、ただ漠然とした重しのように心にのしかかっていたものが、文章になることで「ああ、これはこういう感情だったのか」と理解できる。理解できれば、対処もできる。

たとえば、学生時代のトラウマのひとつ――僕は大学三年の春、研究室の先輩に告白して振られたことがある。先輩は「弟のようにしか見えない」と、優しく、しかし明確に拒絶した。

その出来事について、ブログではもちろん書けなかったし、友人にも話せなかった。心の奥底にしまい込んで、長い間、見ないふりをしてきた。でも、小説の中で「T(僕)」にその経験を語らせたとき、初めて「あのとき、僕はこう感じていたんだ」と気づいた。

「拒絶されたその瞬間、僕は驚くほど冷静だった。むしろ、予想通りの結果に、ほっとしている自分がいた。『やっぱりな』という諦めにも似た安堵。ああ、そうか、僕は最初から、自分が拒絶されることを前提に告白していたのだ」

書いていて、自分でも驚いた。その当時、僕は「傷ついた」「悲しかった」と思っていた。しかし、文章にしてみると、根底にあったのは「自己成就予言」とも言える諦めだったのだ。拒絶されることを見越して告白し、その結果を「やっぱりそうだった」と確認することで、自分の自己評価を補強していた。

この気づきは、僕にとって大きな衝撃だった。自分が思っていたよりも、僕は自分を信じていなかった。いや、正確には、自分を信じることを恐れていた。期待すれば、その裏切りに耐えられないから。

そういう発見が、書けば書くほど増えていった。

告白体の必然性

なぜ僕は、三人称ではなく一人称で書くことにこだわったのか。その理由を考えたとき、ひとつの答えに行き着いた。

それは、僕がずっと「誰かになりすましていた」からだ。

幼稚園の頃から、僕は笑顔の仮面を被り、明るいお調子者を演じてきた。家では無口な自分がいるのに、学校ではクラスのムードメーカー。それはまさに、三人称の自分だった。自分を一人称で語るのではなく、「教室の中の彼」という三人称として振る舞ってきた。

三人称で書こうとしたとき、僕は無意識のうちにその癖を再現していた。客観的に、冷静に、自分を他人のように扱う。それが僕にとっての「安全な語り方」だった。

しかし、本当に書きたいのは、その仮面の下にいる「僕」だったのだ。独りで部屋にいるときの、無表情で無口な、本当の僕。誰も知らない、僕だけの僕。

一人称で書くことは、その仮面を自ら剥がす行為だった。三人称なら「彼は悲しかった」で済むところを、一人称では「僕は悲しかった」と書かざるを得ない。三人称なら「彼は簡単に諦めた」と距離を置けるところを、一人称では「僕は諦めた」と認めざるを得ない。

それは怖かった。自分をさらけ出すことへの恐怖が、何度も指を止めさせた。でも、書くたびに、その恐怖は少しずつ薄れていった。代わりに現れたのは、不思議な解放感だった。

「そうか、告白体のほうがしっくりくるのは、僕がずっと自分自身に告白できずにいたからなんだ」

プログラマーとして、僕は常に「正しいこと」を書いてきた。コードは完璧であるべきだ。バグがあれば修正し、パフォーマンスを最適化し、可読性を高める。でも、人間としての僕の人生には、正解も不正解もない。あるのはただ、経験と感情の堆積だけだ。

その堆積を、コードのように完璧に記述することはできない。でも、一人称の告白体でなら、不完全なまま、不格好なまま、それでも正直に書くことができる。コードが嘘をつかないように、告白体もまた、書いた人間の核心を偽らない。

ふと、社内ハッカソンでの出来事を思い出した。あのとき彼女は、僕のコードを見て「コードを図に書いてみない?」と言った。その言葉が、僕の中で何かを変えた。コードを図示するという発想は、僕にとっては新鮮だった。コードは線形で、論理的で、分岐やループで構成される。でも、図にすれば、非線形で、直感的で、全体像を一度に把握できる。

もしかしたら、書くことも同じなのかもしれない。コードだけでは表現できない感情や経験を、散文という「図」に変換する。図にすることで見えてくる関係性や構造がある。if文と感情の条件分岐、forループと反復思考、再帰と自己言及。コードの構造は、僕の心の動きを驚くほど正確に写し取っている。

でも、コードはあくまで論理の世界だ。僕の内面には、論理だけでは説明できないものが溢れている。それを掬い上げるには、コードではなく言葉が必要だった。

ページを重ねるごとに

それからの僕は、毎晩少しずつ小説を書き続けた。一日に五百字でも千字でもいい。無理に書こうとせず、書けるときに書く。そう決めて、少しずつページを重ねていった。

最初は過去の出来事を時系列に沿って書いていたが、すぐにそれは放棄した。記憶は直線的ではない。あるエピソードを書いていると、別の記憶が突然フラッシュバックし、そこからまた別の物語が始まる。それでいいのだと思うようになった。この文章は、誰かに読ませるためのものではないのだから。

書き進めるうちに、僕は自分について多くのことを学んだ。

幼少期に「笑顔」を道具として習得したこと。その道具に頼りすぎた結果、本当の感情がわからなくなったこと。プログラミングに出会い、初めて「理解される」感覚を得たこと。それでも現実の人間関係では仮面を被り続け、二重生活に疲弊していったこと。

「ああ、だから僕は、人と深く関われないんだ」

ある夜、書いている途中で、ふとそのことに気づいた。僕は自分の感情を言語化するのが下手だ。なぜなら、幼い頃から「笑顔」という唯一の表現しか許されていなかったから。悲しいときも、怒っているときも、苦しいときも、全部笑顔で誤魔化してきた。その結果、僕は自分の感情に名前を付ける能力を、ほとんど育ててこなかったのだ。

プログラマーとして言うなら、感情のデータ型が、全部「笑顔」という一つの型にキャストされていたようなものだ。intだろうがfloatだろうがstringだろうが、全部stringに変換して処理していた。そりゃ、情報は失われる。精度も落ちる。そして、バグも起こる。

僕の人生のバグは、その型変換の過程で生まれていたのだ。

「書くこと」は、その失われたデータ型を復元する作業だった。笑顔の裏に隠れた本当の感情を、一つひとつ掘り起こし、正しい型にキャストし直す。悲しみは悲しみとして、怒りは怒りとして、恐怖は恐怖として認識する。

それは痛みを伴う作業だった。長年抑圧してきた感情を呼び覚ますのだから、当然だ。高校時代に「変」と言われたときの痛み、告白を拒絶されたときの絶望、社内ハッカソンで自分のコードを褒められたときの戸惑い――それらを文章に起こすたびに、当時の感情が生々しく蘇った。

でも、それでいいのだと思う。痛みを感じなければ、癒すこともできない。バグを認識しなければ、修正することもできない。

僕は小説を書きながら、自分のコードをリファクタリングしていたのだ。スパゲッティのように絡まりあった感情のコードを、一つひとつ丁寧にほぐし、意味のある塊に整理していく。コメントを追加し、変数名をわかりやすく変え、不要な処理を削除する。

それは、セラピーだった。自己洞察だった。そして、僕自身への、初めての本音の告白だった。

仮面の向こう側

二週間後、僕は三万字を超える原稿を書き上げていた。テーマすら曖昧で、構成もぐちゃぐちゃで、とても人に見せられる代物ではない。でも、僕にとっては、これまでに書いたどんなコードよりも価値のあるものだった。

この原稿には、僕の人生が詰まっている。仮面の下に隠してきた本当の自分が、文章という形で可視化されている。それは時に醜く、情けなく、読むに堪えない部分もある。でも、それも含めて、僕なのだ。

「もしも、これを彼女に読んでもらえたら……」

ふと、そんな考えが頭をよぎった。社内ハッカソンで出会った彼女――僕のコードを「物語みたい」と言ってくれたデザイナーの女性。彼女なら、この拙い文章も、何か感じ取ってくれるかもしれない。

いや、それはまだ無理だ。今の僕には、そんな勇気はない。自分の内面をさらけ出すことは、仮面を完全に捨てることと同じだ。仮面なしで人と向き合うなんて、僕にはまだできない。

でも、いつか――そう、いつか必ず。

その日が来るまで、僕は書き続けるだろう。自分の人生を、自分の言葉で。コードが嘘をつかないように、この告白体の文章も、僕自身の真実を紡ぎ続ける。真実は時に苦い。けれど、その苦さを受け入れることなしに、再生はありえない。

月が窓の外に浮かんでいる。満月に近い、明るい夜だった。僕はその月光を浴びながら、新しいファイルを開いた。今日も、一文字ずつ、自分自身を書いていく。コードではなく、言葉で。そして、その言葉がいつか、本当の自分を取り戻すためのコンパイルになることを信じて。

キーボードを叩く音だけが、部屋に静かに響いていた。

← 前の章 目次へ 次の章 →
◆ ◆ ◆
CHAPTER 16
バグ修正

第16章 バグ修正

あの夜、エレベーターの中で何も言えなかった自分を抱えたまま、週末が過ぎていった。月曜日、僕は机の前に座って、ただ画面を見つめていた。コードの一行目すら書けなかった。指がキーボードの上で止まったまま、まるでプログラムがフリーズしたみたいに、僕というシステム全体がハングアップしていた。

何かを変えなければならない。このままでは、僕は永遠に同じループを繰り返すだけだ。エレベーターでの沈黙の後悔、自己嫌悪、そしてまた翌日も仮面を被って出社する。そんな無限ループから脱出するためには、何らかの条件分岐が必要だった。if文のような、何か決定的な分岐点が。

しかし、そんな決意とは裏腹に、僕の頭の中は彼女のことでいっぱいだった。社内ハッカソンで「コードを図に書いてみない?」と言われたあの瞬間。僕のコードを「物語みたい」と評したあの笑顔。そして、エレベーターで何も言えなかった後悔。それらがループのように繰り返し再生される。一方で、先週発生した認証モジュールの致命的ミス——Redisキーの有効期限を誤って設定したバグ——は、まだ修正できていない。上司のS主任からのコメントは「明日までに直せ。それ以上遅れるとプロジェクトに影響が出る」という冷たいものだった。仕事と感情、両方のバグが同時に僕を圧迫していた。

そう考えたとき、僕の頭の中に一つのアイデアが浮かんだ。過去のバグを修正するように、人間関係の誤解も修正できるのではないか。プログラムの世界では、バグが見つかれば、それを特定し、修正し、テストする。なぜ人間関係にそれが適用できないのだろう。いや、もちろん適用できないことくらい分かっている。人間関係はオブジェクト指向言語のように綺麗にカプセル化されていない。副作用が多すぎる。予測不能な振る舞いが多すぎる。それでも、何かをしなければ、という焦りだけが僕を駆り立てた。

僕はスマートフォンを手に取った。連絡先リストを開く。そこには、もう何年も話していない人々の名前が並んでいる。大学時代の友人。クラスメイトだったあいつ。そして、片思いしていた彼女。それぞれの名前を見ているだけで、胸の奥が締め付けられるような感覚が走る。しかし同時に、仮面の奥で本当の自分が囁く——「こんなことをして、また傷つくだけだ」と。葛藤があった。仮面は言う。「安全なままでいろ。笑ってごまかせ。何もしなければ、傷つかない」。しかし、その声に従い続けた結果が、今の孤独ではないか。

まず最初に、大学時代の友人、Kにメッセージを送ることにした。Kは情報科学科で同じゼミだった。一緒にコードを書いて、夜遅くまで議論して、時にはゲームで遊んだこともあった。しかし、卒業間際のある出来事で、僕はKとの関係を自分から断ち切ってしまった。正確に言えば、Kが「プログラマーとして向いてないんじゃないか」と何気なく言った一言に過剰反応して、それ以来連絡を取らなくなったのだ。あのときの僕は、自分の能力を疑われることが何より怖かった。期待に応えられない恐怖が、友人を遠ざけた。

メッセージアプリを開き、Kとのトークルームを表示させる。最後のメッセージは三年前。僕が「ごめん、最近忙しくて」と返信したまま、そのままフェードアウトしていた。あれは明らかな嘘だった。忙しかったわけじゃない。ただ、傷つくのが怖かっただけだ。仮面が「忙しいふりをしろ」と言ったのだ。

指が震えながら、メッセージを打ち始める。

「久しぶり。突然ごめん。あのときのこと、謝りたかった。君の言ったことは正しかったのに、僕は受け入れられなかった。ごめん。」

送信ボタンを押す。指が震えすぎて、三回くらい押し間違えた。送信された瞬間、画面にチェックマークが表示される。既読にはなっていない。当たり前だ。朝の七時だもの。相手は寝ているかもしれない。

それから一時間、二時間と経過したが、既読はつかない。昼休みになっても、夕方になっても、Kからの返信はなかった。既読すらつかない。メッセージは送信済みのまま、相手のスマートフォンの奥深くで眠っている。まるで、僕の存在そのものが、どこかのフォルダにしまい込まれたかのように。

自己否定が始まる。馬鹿だなあ、僕は。いきなり連絡して謝ったところで、相手はどう反応すればいいのか分からないに決まっている。三年も音信不通だった相手が突然「ごめん」なんて送ってきたら、気持ち悪いだけだ。迷惑なだけだ。むしろ、無視されるのが当然の報いだ。

そう思いながらも、僕は次のメッセージを準備していた。今度は、中学時代にいじめの加害者だったクラスメイト、Yに対してだ。Yは典型的な「クラスのリーダー」タイプで、成績優秀でスポーツもできて、人気者だった。そんなYが、なぜ僕を標的にしたのかは今でも分からない。多分、僕が「道化」をやっているのが気に入らなかったのか、あるいは単純に弱そうに見えたからだ。

Yに送るメッセージは、Kに送ったものよりさらに迷った。なぜなら、いじめの加害者に連絡するという行為自体が、ある種の倒錯した自己破壊行為に思えたからだ。しかし、僕の頭の中では、「過去のバグを修正する」というプログラムが走り続けていた。このまま放置しておけば、いつかまた同じエラーが発生する。いや、もうすでに発生している。僕の人間関係は、Yとの体験によって深く汚染されている。

「中学のとき、色々あったね。あのときのことは、今でも引きずってる。でも、君を責めるために連絡したわけじゃない。ただ、過去を清算したかったんだ。」

これもまた、送信するのにものすごい勇気が必要だった。送信ボタンを押すとき、指が三度滑った。四度目でようやく送信できた。

Yからの返信は、三十分後に来た。

「誰?」

その一言が、僕の心臓を抉るように刺さった。名前を名乗ってもいなかったことに気づく。慌てて「Tです。同じクラスだった」と追加で送信する。

既読がつく。そして、また長い沈黙。十分後、Yから返信が来た。

「覚えてるよ。で?今更何の用?謝罪とかいらないから。もう過去のことは忘れた。」

冷たい。まるで氷のような返信だった。しかし、よく考えると、Yにとっては中学時代のいじめなんて、ただの通過点だったのだろう。彼は今もきっと、社会で成功している。いじめの記憶なんて、とっくに上書きされている。一方で僕は、その体験がOSのコア部分にまで深く書き込まれて、削除できないキャッシュのように残り続けている。

「ごめん。迷惑かけたなら謝る。」僕はそう返信した。

既読がついたが、返信は来なかった。Yにとって、僕はもうとっくに消えた過去のファイルでしかなかったのだ。

自己否定がさらに深まる。自分から連絡して、無視されるか冷たい対応を受ける。これが僕の人間関係のパターンだ。いや、僕が作り出しているパターンだ。なぜなら、こんな連絡の仕方をするのが馬鹿だからだ。いじめの加害者に「過去を清算したい」なんてメッセージを送る人間がどこにいる?しかも三年以上も連絡を取っていなかった相手に。これは明らかにバグだ。どう考えても正常な処理フローではない。仮面がまた囁く。「そうだ、お前はそういう人間だ。期待するな。傷つくのが当然だ。」その声に、僕は抗えなかった。

しかし、僕のプログラムは止まらなかった。次は、彼女だ。大学時代、片思いしていた女性のM。設定には「研究室の先輩(情報科学科)」とある。実際、Mは情報科学科の先輩で、僕と同じ研究室に所属していた。彼女はプログラミングの才能があり、特にアルゴリズムの設計に優れていた。僕は彼女のコードに惹かれて、そして彼女自身に惹かれた。告白までに半年かかった。勇気を振り絞って「好きです」と言ったとき、彼女は困ったような笑顔で「ごめん、今は恋愛する余裕がなくて」と答えた。それが、優しい拒絶だったことは分かっている。けれど、僕はその言葉を「お前なんか好きになる価値がない」と解釈して、それ以来彼女を避けるようになった。

Mに送るメッセージは、これまでで一番慎重に書いた。なぜなら、彼女とは大学卒業後もSNSでつながっていたからだ。ただし、相互フォローはしているものの、まるで他人のような関係だった。彼女はIT企業でエンジニアとして活躍している。一方僕は、ただのプログラマー。コードを書くだけの、コミュ障なエンジニア。価値があるとすれば、僕が書くプログラムの質だけ。でも、そんなものは彼女にとって何の意味もない。

「Mさん、お久しぶりです。突然の連絡、ごめんなさい。あのとき、告白を断られてから、ずっとあなたを避けてしまっていました。自分が恥ずかしかったんです。でも、今になって、もっとちゃんと話せばよかったと思っています。もし良かったら、また連絡を取り合えませんか?」

これを送信するのに、十分くらい悩んだ。何度も書き直した。最初は「元気ですか?」から始まる軽い文体にしようと思ったが、それでは意味がない。自分の弱さを認めなければ、何も変わらない。そう思って、できるだけ正直な言葉を選んだ。しかし、送信した瞬間、猛烈な後悔に襲われた。

「何やってんだ、僕は。また同じ過ちを繰り返している。」

Mからの返信は、その日の夜になってから来た。

「Tくん、久しぶり。メッセージ読んだよ。そうだったんだね。あのときはごめんね。でも、もう過去のことだから。今は彼氏がいるから、連絡を取り合うのはちょっと……」

優しい拒絶だった。まただ。また同じパターンだ。僕は、自分から傷つく場所に飛び込んでいる。プログラムで例えるなら、無限ループに陥っている。条件を変えなければ永遠に続くループ。しかし、僕は条件を変える方法を知らない。いや、変える勇気がないだけだ。仮面が言う。「お前には無理だ。一人でいる方が安全だ。」

その夜、僕は酒を飲んだ。安いウイスキーを水割りにして、ソファに座って、スマートフォンを眺めながら、飲み続けた。三件のメッセージ。二件は無視か拒絶。一件は冷たい対応。すべて失敗に終わった。僕の「人間関係バグ修正プログラム」は、完全なクラッシュを起こした。

「やっぱり、僕は一人でいるべきなんだ。」そう呟きながら、ウイスキーのグラスを傾ける。アルコールが血中に回る感覚が、かえって自分を現実から遠ざけてくれる。プログラムの世界に没頭していた頃を思い出す。あの頃は、コードだけが友達だった。プログラムは嘘をつかない。書いた通りに動く。バグがあれば原因が特定できて、修正できる。人間関係のように曖昧じゃない。バグを修正することに没頭して、人間関係のことなんて考えなくて済んだ。けれど、今は違う。彼女に出会ってしまった。社内ハッカソンで、僕のコードに「物語みたい」と微笑んだ彼女。その笑顔が、僕のルーチンワークだった日常を破壊した。

もう二杯目のウイスキーを飲み干そうとしたとき、スマートフォンが振動した。メッセージの通知だ。誰だろう。Kか?Yか?それともMか?まさかMが「やっぱり連絡してもいいよ」と心変わりしたのか?そんな期待を抱きながら、スマートフォンを手に取る。

通知を表示させると、そこにあったのは予想外の名前だった。大学の同じサークルだったNからだ。Nは、プログラミングサークルで一緒だったが、特に親しいわけではなかった。どちらかというと、僕が一方的に尊敬していた先輩だ。彼は優秀で、社交的で、何よりコードが綺麗だった。彼のコードを見るたびに、僕は自分の未熟さを痛感したものだ。

メッセージを開く。

「T久しぶり。連絡したのはさ、君のブログを読んでるからなんだ。最近更新されてなかったから、どうしたのかなと思って。何かあった?」

ブログ?僕のブログ?確かに、僕は数年前から技術ブログを細々と書いていた。主にプログラミングのtipsや、自分の勉強したことをまとめるものだ。最初はただのメモ代わりだったが、いつの間にか自分の考えを整理する場になっていた。コードの世界と人間関係を比喩で結びつける記事——例えば「デバッグと謝罪の共通点」——を書いたこともあった。ほとんどアクセスはなくて、たまにスターがつくくらい。でも、Nが読んでいたなんて。それに、どうして僕がブログを書いていることを知っているのだろう。そういえば、大学時代に一度だけ「ブログ書いてる」と口にしたことがあったかもしれない。あのとき、Nは「見たい」と言ったのに、僕は恥ずかしくてURLを教えなかった。それなのに、彼は見つけて読んでくれていたのだ。

驚きとともに、胸の奥が温かくなるのを感じた。拒絶や無視の連続だったこの日、たった一人だけ「読んでるよ」と言ってくれた人がいた。その事実が、まるで暗闇の中の小さな光のように、僕の心を照らした。

「ブログ、読んでくれてるんですか?」僕はすぐに返信した。酔っているせいか、普段より饒舌になっている。「すみません、最近色々あって更新できなくて。でも、そんなこと気にかけてくれる人がいるなんて、思ってもみませんでした。」

十分もしないうちに、Nから返信が来た。

「当たり前だろ。Tの書くコードは、ただのコードじゃない。あれは文学だよ。特にあの、『再帰関数の美学』って記事は、何度も読み返した。あの比喩の使い方が、独特で好きだ。それに、『デバッグと謝罪の共通点』もすごく面白かった。コードを図で説明するってアイデア、君ならもっと発展させられると思う。」

文学?コードが文学?そんなことを言われたのは、社内ハッカソンで彼女に「物語みたい」と言われて以来だ。まさか、また同じような言葉を別の人から聞くとは思わなかった。しかも、図の話まで出てくるとは。あの日、彼女に「コードを図に書いてみない?」と言われたことを、僕はまだ実行できていない。図の概念は頭の中にあるのに、形にできずにいた。それをNも感じ取っているのか。

「ありがとうございます。でも、僕のコードはまだまだ未熟で……」自己卑下が口をついて出る。しかし、Nからの返信はそれを遮った。

「いや、君はもっと自信を持っていい。あのブログの内容は、プロのエンジニアにも通用するレベルだ。それに、君の視点が面白い。コードを書くときに、人間関係の比喩を使うところとか、すごく共感した。プログラムは嘘をつかない、でも人間は嘘をつく。その対比が、君の文章の核だよね。」

人間関係の比喩?確かに、僕はブログで書いていた。バグを修正することと、人間関係の誤解を解くことの類似性について。コードのエラーが原因を特定できて修正可能なのに対して、人間関係の誤解はなぜか修正が難しい。プログラムは嘘をつかないが、人間は嘘をつく。そんな対比を、冗談めかして書いた覚えがある。

「あの記事、覚えてますよ。『プログラムは嘘をつかない、でも人間は嘘をつく』ってやつですよね。」

「そう。あれは名文だと思った。特に『プログラムのバグは、原因が特定できれば修正可能だが、人間関係のバグは、原因が特定できても、修正に失敗することが多い。なぜなら、相手の感情という変数が、プログラマーの制御下にないからだ』って部分。まさにその通りだと思った。そして、君が今『過去のバグを修正しよう』として連絡したのも、その理論を実践しようとしたんだろ?」

Nの言葉に、目頭が熱くなった。自分の書いたものが、誰かの心に届いている。しかも、それを理解してくれる人がいる。こんなことは、初めてだった。今まで僕は、自分のブログなんて誰も読んでいないと思っていた。書きっぱなしの日記のようなものだと思っていた。けれど、実際には、誰かが読んでいて、しかもそれを覚えていてくれている。それに、彼は僕の理論を正確に理解し、今の行動まで推測していた。

「今、まさにその失敗をやってるところです。」僕は正直に打ち明けた。「過去の人間関係を清算しようとして、何人かに連絡したんです。でも、ほとんど無視されるか、冷たく対応されました。プログラムは嘘をつかないけど、人間関係は嘘だらけで、修正なんてできないんだなって、改めて実感しました。」

Nからの返信は、すぐに来た。

「それ、分かる。俺も昔、同じようなことやったことある。でも、大事なのは、連絡すること自体じゃないんだよ。大事なのは、なぜ連絡したのかを理解することだと思う。そして、君のブログにも書いてあったけど、人間関係のバグはプログラムのバグと違って、相手の感情が変数として入ってくる。だから、修正に失敗しても、それは君のせいだけじゃない。」

なぜ連絡したのか。その問いに、僕はすぐには答えられなかった。なぜなら、その理由が自分でもよく分かっていなかったからだ。強いて言えば、何かを変えたかった。このまま同じ毎日を繰り返すことに、耐えられなかった。もしかしたら、あのエレベーターでの出来事がきっかけだったのかもしれない。彼女に何も言えなかった自分が、あまりにも情けなかったから。でも、もっと根本的には——仮面を剥がした本当の自分が、誰かに認めてほしかった。たとえ過去の失敗を清算できなくても、今の自分を見てほしかった。

「多分、自分を変えたかったんだと思います。でも、その方法を間違えてた。」

「方法を間違えても、チャレンジしたこと自体に意味があるよ。少なくとも、何もしないよりはましだ。それに、君はブログで『デバッグは失敗から学ぶプロセスだ』って書いてたじゃないか。今回の失敗も、次のデバッグのためのデータになる。」

Nのその言葉が、僕の心に染みた。何もしないよりはまし。そうかもしれない。確かに三つのメッセージは全て失敗に終わったけれど、何もしなければ、失敗すらしなかった。つまり、ゼロからのスタートだった。でも、僕は失敗した。つまり、マイナスからのスタートになった。それは、果たして進歩なのだろうか。頭の中は疑問でいっぱいだったが、それでもNの言葉にはどこか温かみがあった。

「ブログ、また更新します。今度は、今回の経験を書こうと思います。」

「ぜひ書いてくれ。楽しみにしてる。特に、プログラムが嘘をつかないことと、人間関係の嘘との対比をどう扱うか、興味がある。」

その一言が、僕にとっての救いだった。この日、僕は三つの拒絶を受けた。けれど、たった一つの承認が、そのすべてを帳消しにしてくれるわけではない。傷は残る。自己否定も消えない。でも、それでも、たった一人でも「読んでるよ」と言ってくれる人がいる。その事実が、僕を明日へと繋ぎ止めてくれる。

翌朝、二日酔いの頭を抱えながら、僕はブログのエディタを開いた。新しい記事のタイトルは「バグ修正の失敗について」。書き始めると、指が止まらなかった。昨日の体験を、すべて正直に書いた。いや、すべては書けなかった。KやYやMの名前は出さずに、ただ「過去の人間関係」という抽象的な表現に置き換えた。それでも、自分の弱さや自己否定、そして最後にNからのメッセージで小さな希望を見いだしたことまで、包み隠さず書いた。さらに、プログラムは嘘をつかないが人間は嘘をつくという対比を、今回の体験を通じてどう深めたかも書き加えた。図の概念については、まだ具体的な形にできていないことを正直に認め、それを今後の課題として書いた。

書き終えたとき、外はもう陽が高くなっていた。今日もまた、同じ日常が始まる。仮面を被って出社し、コードを書き、そして帰宅する。その繰り返し。でも、昨日までとは少しだけ違う。なぜなら、僕のブログを読んでいる人がいる。しかも、その人は僕のコードを「文学」だと評した。その言葉が、僕の仮面の下の、本当の自分を認めてくれたような気がした。

オフィスに着くと、いつものようにデスクに向かう。画面を開き、今日のタスクを確認する。認証モジュールの修正。あのエレベーターの後、僕は仕事にも集中できていなかった。Redisのキー有効期限の設定ミス。あれは本当に馬鹿なミスだった。慢心と疲労、そして彼女への想いで上の空だった。でも、今日は少しだけ違う。ブログを書いたことで、自分の感情を整理できた気がする。それに、Nから「コードを図で説明するってアイデア、君ならもっと発展させられる」と言われたことが、頭の片隅に残っている。

キーボードを叩き始める。認証モジュールのコードを開き、バグの箇所を特定する。Redisキーの有効期限が短すぎた。原因は単純だったが、その影響は大きかった。修正コードを書く。テストを走らせる。すべてのテストがパスした。コードは嘘をつかない。修正すれば、正しく動く。そのシンプルな事実が、僕を少しだけ救った。そして、ふと思い立って、コードのフローを紙に書き出してみた。図にする練習だ。まだ下手くそで、彼女のように綺麗には描けないけれど、少しだけ視界が開けた気がした。

昼休み、スマートフォンを確認すると、ブログにコメントがついていた。Nからだ。

「読んだよ。とても正直な文章だった。バグ修正に失敗しても、デバッグを続けることが大事だと思う。それに、プログラムと人間関係の対比が深まっていて良かった。図の話も、君ならきっと形にできる。俺も、いつかTと一緒にコードを書きたい。そのときは、君の図解したコードを見せてほしい。」

そのコメントを読んで、僕は思わず笑みを浮かべた。仮面の笑顔ではなく、自然とこぼれる笑顔。誰かと一緒にコードを書きたい。そんなことを言われたのは、いつぶりだろうか。いや、もしかすると、初めてかもしれない。今までは、一人でコードを書くことが僕のすべてだった。でも、誰かと共有すること、共に創り上げることの喜びを、僕はまだ知らない。図のアイデアも、彼女の一言がきっかけだった。もしかしたら、僕はもう少しだけ、人と関わる勇気を持ってもいいのかもしれない。

午後の打ち合わせで、例の彼女と隣の席になった。彼女は相変わらず自然体で、会議の合間に「お疲れ様です」と軽く挨拶してくれた。今度は、ちゃんと返せた。「お疲れ様です」と。たった一言だけれど、仮面なしで言えた。それに、昨日のブログで図の練習を始めたことを思い出し、少しだけ胸が高鳴った。彼女に「図、描いてみたんです」と言える日が来るかもしれない。それは、まだ遠い未来だけれど。

帰り道、空を見上げると、月が綺麗だった。満月ではないけれど、確かに光っている。僕はその月を見上げながら、考えた。バグは修正できる。でも、人間関係は修正できないこともある。プログラムなら、エラーログを見れば原因が特定できる。でも、人間の感情にはエラーログなんてない。なぜ傷ついたのか、なぜ拒絶したのか、その理由は本人にも分からないことがある。

それでも、僕はデバッグを続けるしかない。バグに怯えて、コードを書くのをやめるエンジニアはいない。同じように、人間関係に怯えて、人との関わりを絶つのは、エンジニアとしても、人間としても、間違っている気がする。たとえ失敗しても、その経験が次のデバッグのデータになる。Nが言った通りだ。

Nにメッセージを送る。

「いつか、一緒にコードを書きましょう。そのときは、僕のブログに書いたような失敗談も、笑い話にできたらいいですね。それに、図解したコードも見せます。」

返信はすぐに来た。

「楽しみにしてる。俺も、たくさん失敗してきたから。一緒にデバッグしよう。それに、図解には俺も興味がある。君の視点をぜひ聞かせてほしい。」

その言葉が、今日一番の救いだった。拒絶に打ちのめされた昨日とは違い、今日はほんの少しだけ、希望を持てた。たった一人の「読んでるよ」が、どれだけの力を持つのか。それを、僕は身をもって知った。それに、彼女との関係も、まだ始まっていないけれど、図のアイデアという共通の糸口がある。その糸を手繰り寄せることができるかどうかは、僕次第だ。

家に着いて、パソコンを開く。ブログに新しい記事を追加で書き始めた。タイトルは「たった一人の読者の力——そして図の練習を始めた話」。内容は、昨日の体験と今日の発見、そして図解の練習を始めたことについて。書いているうちに、涙がこぼれそうになった。けれど、仮面は被らなかった。今だけは、本当の自分でいよう。そう決めたから。

月明かりが窓から差し込む。僕はキーボードを叩き続ける。プログラムの世界は嘘をつかない。でも、人間の優しさもまた、プログラムの論理だけでは測れないものだ。そのことに、ようやく気づき始めていた。仮面を剥がすのは怖い。けれど、剥がした先にあるものは、冷たい拒絶だけじゃない。たまには、こんな温かいものもあるのだ。そして、図を描く練習は、彼女との距離を縮める小さな一歩になるかもしれない。

ブログを公開する。すぐに、Nから「読んだよ」とメッセージが来た。その短い言葉だけで、今日一日の疲れが癒される気がした。バグ修正はまだ続く。でも、一人じゃない。そのことが、何よりの救いだった。認証モジュールの修正も済んだ。明日、上司に確認してもらおう。それから——彼女に、図の練習を始めたことを伝えられるだろうか。それはまだ分からないけれど、少なくとも、そのための一歩は踏み出せた気がする。

← 前の章 目次へ 次の章 →
◆ ◆ ◆
CHAPTER 17
リリース前夜

第17章 リリース前夜

この文章を書いている今、僕は月明かりだけが差し込む部屋の片隅で、ノートパソコンを前に座っている。窓の外では東京の街が淡い光の粒となって広がっている。それを見ていると、頭の中に散らばった不安の断片が、余計に浮き彫りになる気がする。

そう、ついにここまで来てしまった。この物語を、誰かに読んでもらおうと決めたのだ。僕は今、この文章をどこかのプラットフォームにアップロードするつもりでいる。読者のあなたに届けるつもりでいる。考えるだけで手が震える。心臓の鼓動がキーボードを打つ指のリズムと同期して、不快なノイズを生んでいる。

でも、なぜここまで馬鹿なことをしようと思ったのか。自分でもよくわからない。いや、わかっている。わかっていて、それを認めたくないのだ。一言で言えば、僕は「完成させることに飢えている」のだ。この不完全な人生というコードを、一度くらい、コンパイルして実行してみたいのだ。バグだらけだろうし、実行時エラーで落ちることも目に見えているけれど、それでも。

きっかけは、間違いなくあのハッカソンでの一言だった。「コードを図に書いてみない?」——彼女の言葉は、僕の世界を揺さぶった。コードを図にする。それは、今までプログラムの論理性だけを信じてきた僕にとって、まったく新しい視点だった。図には曖昧さがある。解釈の余地がある。でも、それで伝わることもある。彼女は、コードを「物語」と表現した。その言葉が、ずっと頭の中に残っていた。

この物語を書くことも、もしかしたら同じことなのかもしれない。僕の人生というコードを、言葉という図に変換して、誰かに見せる。不完全で、歪んでいて、でも確かにそこにある何かを。

この物語は、僕自身の人生のログだ。幼稚園で笑顔の演技を覚えた日のこと、図書館でPythonという言語に出会い、初めて「理解された」と感じた夜のこと、文化祭で作った座席予約システムが動いた瞬間の高揚と、その裏で「気持ち悪い」と囁かれたこと——すべてのイベントを書き連ねてきた。

だが、本当に怖いのはここからだ。このコードの塊を、公開するという行為そのものが、僕にとっては自己矛盾に満ちている。僕は仮面の男だ。笑顔で、自虐で、自分を小さく見せることで安全を確保してきた。そんな僕が、この仮面を剥がした素の顔のような文章を、不特定多数の読者に晒すという行為は、これまでの生存戦略の完全な否定に他ならない。

もしかしたら、これは無意識の自己破壊衝動なのかもしれない。自分で自分の仮面を剥ぎ取って、「さあ、見てください、これが僕の本当の姿です」と晒し者にすることで、誰かに「やっぱりお前は気持ち悪い」と言ってもらいたいのかもしれない。そうすれば、また仮面を被る正当な理由ができる。結局、人間は変わらないのだと、自分に言い聞かせることができる。

大学の屋上で、先輩に「弟のようにしか見えない」と言われた夜を思い出す。あの時、僕は初めて「好き」という感情を言葉にして、そして拒絶された。それ以来、恋愛だけでなく、自分をさらけ出すこと自体が怖くなった。期待して、傷つくくらいなら、最初から何も見せない方が安全だ——そう思い込んできた。

でも、今ここで書いているこの文章は、その安全地帯を自ら放棄する行為に他ならない。拒絶されるかもしれない。笑われるかもしれない。それでも、僕は進もうとしている。

いや、正確には進まされているのかもしれない。彼女の「コードを図にする」というアイデアが、僕の中で少しずつ何かを変えている。完全にではない。まだ恐怖はある。でも、図のような不完全なものでも、伝えようとすることに意味があるのかもしれない、と考えるようになった。

僕はキーボードの上で指を止めた。画面には、この章の冒頭で書いた文章が表示されている。見直すたびに、ここが直せる、あそこが違う、と手を加えたくなる。ソースコードのリファクタリングと同じだ。無限にリファクタリングは可能で、キリがない。いつかは「もうこれでいいや」と諦めてリリースしなければならない。

しかし、この物語の場合は、リファクタリングの本質が違う。コードの場合は、実行結果が明確だから「正しい」状態が存在する。だが、この物語——人生のログには、正解なんてない。どの文章も、どの場面も、僕の主観によって歪められた真実の断片に過ぎない。それを完璧にしようとすること自体が、もはや嘘だ。

だからこそ、あえて不完全なまま公開しようと思う。これは、僕なりの一つの抗議であり、同時に告白でもある。

読者への語りかけ

あなたがこのページを開いているということは、ある程度の興味か、あるいは単なる偶然が重なった結果だ。僕にとっては、その事実だけで十分に恐ろしい。

僕は今、あなたに対して、こう言いたい。この文章は、僕の人生の不完全なコードです。バグだらけで、無駄な処理が多く、可読性も低い。リファクタリングすればもっと美しくなるかもしれませんが、今の僕にはそれができません。なぜなら、このコードこそが、今現在の僕の姿そのものだから。

修正しようとするたびに、違和感が生まれる。この文章は暗すぎる、とか、もっとユーモアを入れなければ、とか。そういう編集のたびに、僕はまた仮面を被ろうとしている自分に気づく。読者にどう思われるか気にして、自分の本音を隠そうとしている。つまり、この文章を「綺麗に整える」という行為自体が、既に仮面の再接続なのだ。

だから、僕はこの文章を、あえて荒削りのまま出すことに決めた。後悔するかもしれない。公開した翌朝、寝ぼけた目でスマホを開いて、自分の書いた文章に吐き気をもよおすかもしれない。それでも、今はこれでいいと思う。

仮面の再接続——逃れられない循環

僕はこれまで、道化の仮面を被って生きてきた。相手を笑わせ、自分を貶め、場の空気を和らげることで、自分を防御してきた。

しかし、この文章を書いている僕は、仮面を外しているのだろうか。そう自問すると、答えに詰まる。確かに、今ここで書いている言葉は、日頃の「大丈夫です」「問題ありません」とは違う。でも、それが本当の自分なのかと言われると、それも違う気がする。

この内省的な文体そのものが、新しい仮面なのかもしれない。「悩めるプログラマー」という、ある種のロマンティシズムを含んだ仮面。あるいは「本当の自分を見せている」という錯覚そのものが、最も狡猾な仮面なのかもしれない。

本当に仮面を外すとはどういうことか。完全に裸になるとはどういうことか。幼稚園のお遊戯会で「もっと笑って!」と言われて以来、僕は常に何かの役を演じてきた。無表情で黙り込むか、明るくお調子者を演じるかの二択しかなかった。そして今、こうして文章を書いている自分もまた、実は新しい役を演じているのではないか。

公開するという決断そのものが、また一つの演技なのかもしれない。読者に「僕は変わったんです」と見せたいという欲求がある。あるいは、「僕はこんなに苦しんでいるんです」と同情を引きたいという下心かもしれない。自己卑下の仮面が、二重にも三重にも重なっている。

でも、それでも構わないと思う。仮面を被っていることを自覚しながら、それでも一歩を踏み出すこと。「これも仮面かもしれない」と知りながら、それでも言葉を紡ぐこと。それが、今の僕にできる精一杯のことだ。

批評への恐怖——コンパイルエラーのような言葉

この文章を公開したら、どんな反応が返ってくるだろうか。そのことを考えると、背中が冷たくなる。心臓がギュッと締め付けられるような感覚が襲う。

「この文章は自己陶酔が酷い」 「結局、自分を特別だと思いたいだけじゃないか」 「コードがどうとか、プログラマーとして当然のことだ」 「もっと普通に生きろ」

そういう言葉が返ってくるのが目に見えている。そして、その言葉の一つ一つが、まるでコンパイルエラーのように僕の心に赤い波線を引くのだ。

コードなら、エラーメッセージを読んで修正すればいい。変数名を変える、型を合わせる、関数を分割する——そうすれば、次のコンパイルでエラーは消える。

しかし、人間からの批評は違う。根本的な修正が不可能なバグなのだ。例えば、僕の性格を変えろ、と言われても、それができれば苦労しない。自己肯定感を高めろ、と言われても、それは生まれ育った環境や経験によって形成された、簡単には書き換えられないプログラムのようなものだ。

それでも僕は、このリリースを決行する。なぜなら、このまま何もリリースせずに人生を終えることが、もっと怖いからだ。永久にデバッグだけを繰り返して、一度もコンパイルを通さずに人生を終えること——それが、最もプログラマーとして不名誉な死に方だと思う。

Redisのキー有効期限から学んだこと

そういえば、あのプロジェクトでのミスを思い出す。Redisに保存する認証トークンのキー有効期限を、24時間ではなく24分に設定してしまった。その結果、翌日にはすべてのユーザーがログインできなくなり、システムが止まった——あれは第8章で起きたことだ。

あの時、僕は深い罪悪感と自己否定に苛まれた。S主任からは「確認不足だ」と叱られた。彼女(デザイナー)は心配そうな顔で、僕の机にコーヒーを置いてくれた。その優しさが、逆に胸に刺さった。ミスをした自分が許せなくて、その夜は一睡もできずに、ただ自分の存在を呪った。

あの夜、僕は「なぜこんなミスをしたのか」と繰り返し自分を責めた。その答えは単純だった。彼女のことが頭から離れず、上の空だったのだ。ハッカソンでの「コードが物語みたいですね」という言葉に浮かれて、慢心していた。恋愛感情が、仕事の集中力を削いだ。その事実が、さらに自己嫌悪を深めた。

だが、今、時間が経って振り返ると、あのミスには別の教訓があったように思う。それは、完璧を目指すほど、致命的なミスを見落とすということだ。僕は常に完璧な自分を演じようとしてきた。無理やり笑顔を作り、できないことを「大丈夫」と答え、すべてを完璧にこなそうとした。しかし、その無理な姿勢が逆に大きなミスを生んだ。疲れが溜まり、注意力が散漫になり、簡単な設定ミスを見落とした。

そしてもう一つ、あのミスから学んだことは、ミスをした自分を許すことの難しさだ。僕はあの後も、何度も同じ場面を反芻し、「なぜ気づかなかったのか」と自分を責め続けた。でも、それで何かが改善されたわけではない。むしろ、自己否定が深まるだけで、何の生産性もなかった。

この物語も同じだ。完璧な物語を書こうとすればするほど、どこかで嘘が生まれる。道化の仮面を被ったまま書けば、それは偽りの告白になる。不完全なまま公開することが、むしろ誠実さの証なのかもしれない。

図で書くこと——彼女のアイデアの影響

彼女に「コードを図に書いてみない?」と言われた時、最初は戸惑った。図は曖昧だ。正確さに欠ける。コードは論理的でなければならない——それが僕の信念だった。

でも、実際に図を書いてみて、気づいたことがある。図には、コードでは表現できない「流れ」や「関係性」が可視化できる。コードの構造そのものではなく、コードが何をしているのか、なぜそう書いたのかが、図を通じて伝わる。

この物語も、多分そういうものなのかもしれない。僕の人生のコードを、言葉という図に変換している。不完全で歪んでいるけれど、それでも「なぜ僕がこうなったのか」という流れや関係性を、誰かに伝えることができるかもしれない。

彼女が図を提案したのは、単に技術的な効率のためだけではなかったのだろう。彼女は直感的に、コードの背後にある「物語」を感じ取っていた。そして、その物語をもっとわかりやすくするために、図という手段を提案した。

もし彼女がこの文章を読んだら、何と言うだろうか。笑うだろうか。それとも、何か言ってくれるだろうか。それすらもわからない。でも、少なくとも言えるのは、彼女の一言がなければ、僕はここに立っていなかったということだ。

覚悟の芽生え——その小さな変化

月明かりが窓の位置の変化に応じて、部屋の中の影の形を変えている。午前2時を過ぎた。僕はあとどれくらいここに座っているのだろうか。

少しずつ、恐怖が和らいでいるような気がする。あるいは、諦めが混ざったような、不思議な感覚だ。俗にいう「今さら怖がっても仕方ない」というやつかもしれない。

でも、それだけではない。確かに、少しだけ変わった自分がいる。まだ明確ではないけれど、何かが動き始めている。コードを図にするという発想が、僕の思考の枠組みを少しだけ広げた。彼女の「物語」という言葉が、僕の中に新しい視点をもたらした。

僕はもう、公開ボタンを押すつもりでいる。それが後々、大きな恥辱につながろうとも、また自己嫌悪のネタが増えるだけだとしても。何かを完成させて、世に放つこと。それ自体が、今の僕にとっては必要な儀式なのだ。

とはいえ、これは完全な自己満足だ。読者に何かを与えられるかどうかはわからない。もしかしたら、読んだ後に「なんだこれは」とガッカリされるかもしれない。それでも構わない。

少なくとも、この文章を書いている間だけは、僕は仮面を被ることをやめられた。正確には、仮面を被っているのか、それとも新しい仮面を被っているのか、その区別すらつかない。でも、それでいい。仮面の境界が曖昧なこと——それが今の僕の本当の姿なのだから。

コードとしての人生

僕はふと、この人生を一つの巨大なソースコードに見立ててみる。

幼稚園から始まるこのプログラムは、最初はシンプルなHello Worldだった。しかし、成長するにつれて、条件分岐が増え、ループが深くなり、関数が増殖し、ついにはスパゲッティコードと化してしまった。

そして、この物語は、そのコードにコメントを書き足すようなものだ。 ```python

この部分は幼稚園のお遊戯会で生成されたトラウマです。

この変数は「仮面」を制御するためのフラグです。

本音を表示する関数は、なぜか実行時にクラッシュします。

```

コメントを書くことで、コードの理解が深まることもある。なぜこんな無駄な処理があるのか、なぜここで無限ループが発生するのか——その理由を、言葉にすることで初めて自覚できる。

公開することは、このコメント付きのコードを、全世界の開発者に見せることに等しい。「ここ、リファクタリングした方がいいですよ」というプルリクエストが来るかもしれない。「この書き方は非効率です」というコードレビューがあるかもしれない。

しかし、それもまた、この人生というコードを改善するチャンスなのだ。批評を受けて、自分を書き換える。そんなことができるかもしれない。いや、期待はしない。期待すると、裏切られたときの痛みが大きい。ただ、可能性としてそういうこともあり得る、と頭の片隅に置いておく。

最後に——あなたへ

読者よ、あなたはこれから、僕の人生の不完全なコードを読むことになる。バグだらけの、エラーだらけの、しかし確かに僕が生きてきた証のコードだ。

このコードに何の価値があるのか、僕にはわからない。誰かの役に立つとは思えない。ただ、もしあなたが同じような悩みを抱えているなら——仮面を被って生きている、自分を偽っている、本当の自分を隠している——そんなあなたなら、共感できる部分があるかもしれない。

そうでなくても構わない。この文章は、ただの自分のためのメモだ。デバッグプリントの延長線上にあるものだ。

それでも、読んでくれるあなたがいるという事実は、僕にとって大きな意味を持つ。匿名の、顔も知らない誰かが、このページを開いて、僕の言葉を追っている。そのこと自体が、小さな奇跡のように思える。

そして、公開へ

時計の針が午前3時を回った。外の月明かりが、少し傾いて、部屋の中の机の上に細長い光の帯を作っている。

僕は深呼吸をする。キーボードの上で震える指を、一度ぎゅっと握りしめてから、またキーボードの上に置く。

この章の最後に、僕は静かに、しかし確かな意志をもって、公開ボタンを押す。その瞬間、僕の人生は少しだけ変わるだろう。良い方向に変わるか、悪い方向に変わるか——それすらもわからない。

ただ、僕は確かに、一歩を踏み出そうとしている。仮面の裏側から、素顔を少しだけ見せようとしている。それが本当の素顔なのか、それともまた新しい仮面なのか——その区別はつかない。でも、それでいい。仮面の境界が曖昧なまま、それでも前に進むこと。それが、今の僕にできる精一杯のことだから。

それは恐怖だ。間違いない。胸の奥が締め付けられるような、吐き気を伴う恐怖だ。それでも、その恐怖を抱えたまま、僕は進む。なぜなら、この恐怖こそが、僕がまだ「生きている」証拠だから。仮面の下で、まだ心臓が動いている証拠だから。

プログラムに嘘はない。コードは正直だ。この物語もまた、正直なコードでありたい。バグがあろうとも、不完全であろうとも、それが僕の、紛れもない真実の断片なのだから。

読者よ、あなたがこの文章を読んでいる時点で、僕はもう公開している。戻れない。全てのバグを抱えたまま、このコードはデプロイされる。

どうか、笑わないでほしい。もし笑うなら、それは道化の仮面を被った僕の方であって——いや、もしかしたらどちらも僕なのかもしれない。本当の僕と道化の僕の境界は、もうとっくに曖昧になっている。

それでも。不完全なコードを、世界に送り出す。これが、僕のリリースだ。

← 前の章 目次へ 次の章 →
◆ ◆ ◆
CHAPTER 18
コードと人生

第18章 コードと人生

また夜が来た。窓の外は雨らしい。僕は部屋の電気もつけずに、ノートパソコンの画面だけを頼りにキーボードを叩いている。カーソルが点滅する。ある種の落ち着きがある。プログラムの世界には、人間社会のような「どっちつかず」がないからだ。条件分岐は必ずTrueかFalseで判定される。曖昧な「まあ、そうとも言えるし、そうじゃないとも言える」といった類いの答えは、コンパイラには通じない。

僕は今、趣味で書いている小さなスクリプトをリファクタリングしている。三ヶ月前に書いたコードだ。その頃は「よく書けてる」と思っていたのに、今見ると変数名は意味不明だし、関数の責務は膨れ上がり、コメントすら嘘をついている。しかも、同じ処理が三箇所に重複している。ひどい有様だ。改めて見直すと、恥ずかしさと共に、当時の僕の思考の乱れが手に取るようにわかる。

「おいおい、この関数、四百行もあるじゃないか」 僕は独り言をつぶやいて、コードを削除し始める。古い処理を大胆に消していく。捨てることに躊躇はない。なぜなら、コードはバックアップが可能だからだ。gitの履歴には全てが残っている。何かを間違えても、いつでも巻き戻せる。プログラムの世界には、「取り返しのつかない失敗」という概念が、基本的には存在しない。

だが、人生は違う。削除も、リファクタリングも、コミットの巻き戻しもきかない。僕はエレベーターの中で彼女に何も話せなかったあの夜のことを思い出す。あの沈黙は、もう二度と取り消せない。どんなに悔やんでも、あの場面だけをチェックアウトして修正することはできないのだ。

そのことに気づいたとき、僕はある考えに至った。

「もしかすると、人生そのものが巨大なレガシーコードなのかもしれない」

レガシーコード。それは、誰かが過去に書いた、理解不能で、テストもなく、修正が極めて困難なコードのことだ。多くのプログラマーはレガシーコードを呪い、忌み嫌う。しかし、現実のプロジェクトで全くレガシーコードを書かずに生きていくことは不可能だ。時間がない、スキルが足りない、仕様が不明確——そうした様々な制約の中で、人間はどうしても「後で直せばいい」という妥協を積み重ねてしまう。

僕という人間も、まさにそうやって積み重ねられてきたレガシーコードの塊なのだろう。

多重ループとスパゲッティコード

幼稚園で貼り付けられた「笑顔」という関数。小学校で追加された「自虐ジョーク」というモジュール。中学で拡張された「場の空気を読む」という条件分岐。高校で実装された「プログラミングへの逃避」という巨大なサブルーチン。

それぞれの時期に、僕は自分の生存戦略として「機能」を追加してきた。それらは、当時の環境に適応するための、正しい実装だった。幼稚園で笑わなければ、先生に認められなかった。小学校で道化を演じなければ、いじめの標的になっていた。プログラミングという没入先がなければ、多分、心が持たなかった。

しかし、それらの「機能」は、後から追加された他の機能と奇妙に絡み合い、もつれ合って、今の僕を構成している。笑顔の関数は、本当の感情を出力する関数と競合し、正しい感情表現をブロックしてしまう。自虐ジョークのモジュールは、自己評価の関数に副作用を及ぼし、自分を不当に低く見積もらせる。プログラミングへの逃避ルーチンは、人間関係という入出力処理を先延ばしにし続けている。

「これは、立派なスパゲッティコードだな」 僕は苦笑する。スパゲッティコードとは、制御構造が入り組んで、全体の流れが追えなくなったコードのことだ。どこを直せばどこに影響が出るのか予測不能で、修正すればするほどバグが混入する。まさに、僕の心の状態そのものだ。

プログラムは嘘をつかない。その言葉は今も真実だ。しかし、プログラムを書く人間は、いつも嘘をついている。いや、嘘をついているというより「自分を騙しながら書いている」と言うべきか。僕は、自分の人間関係の複雑さを見ないふりして、コードの世界に逃げ込んできた。そこでは全てが論理的で、理解可能で、修正可能だから。だが、その逃避の結果、現実の自分は放置され、レガシーコードの山だけが積み重なっていった。

バグは仕様か、それとも成長の余地か

プログラマーには、よく知られた格言がある。「バグをゼロにするのは不可能だ」と。

どんなに注意深くコードを書いても、バグは必ず潜む。綿密な単体テストを書いても、統合テストを通しても、本番環境で思わぬ挙動を示す。そして、バグを一つ直すと、その修正が別のバグを生む。それはまるで、生き物のようだ。

かつての僕は、バグを「自分の無能の証」だと思っていた。プルリクエストでバグを指摘されると、心の底から自分の存在価値が否定されたような気がした。だから、僕は完璧なコードを書こうとした。全てのエッジケースを想定し、全ての可能性に対して網羅的なテストを書こうとした。しかし、その努力はいつも空回りした。完璧を目指せば目指すほど、見落としが生まれ、致命的なバグを生むのだ。

「どうして、僕はこんな初歩的なミスをするんだろう」

プロジェクトの認証モジュールで、Redisのキー有効期限を設定し忘れたあの夜。僕は心の底からそう思った。あのバグは、単なるタイムスタンプの書き間違いではない。僕の心の状態——彼女への想いで上の空だったこと、疲労が溜まっていたこと、そして「自分は優秀なプログラマーだ」という慢心——それらが複合的に作用して生まれた、いわば「人間性のバグ」だった。

しかし、今、僕は思う。バグはなくならない。バグは、コードが不完全であることの証拠であり、同時に「まだ成長できる」ことの証明でもあるのだと。

もし、全てのコードが完璧で、一度書いたら二度と修正の必要がないのだとしたら、プログラマーという職業は存在しないだろう。我々は、バグがあるからコードを見直す。バグがあるから新しい技術を学ぶ。バグがあるから、他の人のコードレビューを依頼し、協力するのだ。

人生も同じではないだろうか。

僕の性格の「バグ」——人と話すときに過剰に自虐してしまう癖。仮面を被らないと人と目を合わせられない特性。期待に応えられないことを過度に恐れる傾向。これらは確かに「バグ」だ。社会生活を送る上で、ネガティブな影響を及ぼしている。しかし、それらは同時に、僕がまだ「成長の余地」を残している証拠でもある。

バグを潰すことでプログラマーが成長するように、自分の弱さと向き合うことで、人間としても成長できるのではないか。そんな考えが、ようやく頭の中に浮かんできた。

デバッグの作法

プログラムのデバッグには、一定の作法がある。まず、バグを再現させること。そして、バグの原因を特定すること。最後に、修正を加えて、バグが再発しないことを確認すること。

このプロセスは、自分の内面と向き合う作業と奇妙なほど似ている。

例えば、僕が人と話すときに感じる「息苦しさ」。これをデバッグするとしたら、どうなるだろうか。

まず、再現条件を探る。僕は、誰と話すときに息苦しくなるのか。彼女とエレベーターで二人きりになったとき? 上司に進捗報告をするとき? それとも、同僚がたまたま通りかかって雑談を振ってきたとき?

それぞれの状況で、息苦しさの「強度」は異なる。一番強いのは、やはり彼女と二人きりになった時だ。次いで、上司に報告する時。同僚との雑談なら、それほどでもない——ただし、相手が「好意的な人」だと、むしろ苦しくなる。なぜだろう。

次に、原因を特定する。彼女の前で息苦しくなるのは、おそらく「好意をバレるのが怖い」からだ。上司の前では「期待に応えられないと評価されるのが怖い」からだ。好意的な人の前では「その好意に応えられる自分でいなければ」というプレッシャーからだ。

原因がわかれば、対策を考えられる。彼女に対しては、そもそも「好意を隠す必要はない」と気づくこと。上司に対しては、「完璧でなくても仕事は続く」と納得すること。好意的な人に対しては、「期待に応えようとしすぎない」と自分に許可を出すこと。

そして、修正を加えたら、テストをする。実際に会話をしてみて、息苦しさが軽減されたかどうかを確認する。もしダメなら、また別の修正を試す。デバッグと同じだ。一つの修正で全てが完璧になることなど、あり得ない。

「なるほど、そういうことか」 僕は、自分の内面をデバッグするという発想に、新鮮な感動を覚えた。この比喩は、プログラマーである僕にとって、極めて自然で、理解しやすい。感情や人間関係という曖昧なものを、コードの論理に置き換えて考えることで、少しだけ「扱いやすく」なる気がするのだ。

拡張可能性とリファクタリング

優れたプログラムには、ある特性がある。それは「拡張可能性」だ。将来、新しい機能を追加する際に、既存のコードを大きく変更しなくても済むように設計されていること。そして、「リファクタリング耐性」——コードの品質を改善するための変更が、安全に行えること。

僕は、自分の内面も同じように「リファクタリング」できるのではないかと考えた。

現在の僕の心は、巨大なモノリス構造だ。全ての機能が密結合しており、一箇所を変更すると、予期せぬ副作用が発生する。笑顔の仮面を外そうとすると、感情表現の全機能が停止してしまい、無表情のロボットのようになってしまう。自虐の癖を直そうとすると、会話のきっかけすら失ってしまう。

これは、設計が悪いのだ。本当なら、笑顔の機能は「必要な時にだけ呼び出せる独立したモジュール」であるべきだ。感情表現の関数は、仮面とは別の、独立した経路で動作するべきだ。自虐も、会話の一手として使うことはあっても、それに依存するべきではない。

だが、レガシーコードのリファクタリングは、一夜にしてはできない。少しずつ、安全な範囲で、変更を加えていく必要がある。

まずは、小さなリファクタリングから始めよう。

僕は、自己卑下の言葉を発する前に、一呼吸置くことにした。そして、その言葉を「本当に必要か?」と自問する。多くの場合、それは不要だ。単なる習慣で、防御で、テンプレートとして貼り付けられているだけだ。

「僕なんかが」と言いかけて、僕は言葉を飲み込んだ。「僕は」と、主語だけを切り離す。自己卑下の接尾語を外すだけで、ずいぶんと印象が変わる。

そして、彼女に対しては——いや、これは少し難しい。彼女に接するとき、僕の仮面は特別に強固になる。なぜなら、彼女には「弱い自分」を見せられないからだ。プログラマーとして、一人の男として、少なくとも「普通の人間」に見られたいという願望が、逆に仮面を強化している。

でも、それも一つの「バグ」だ。彼女の前だけで仮面が強固になるのは、要するに「彼女にだけは本当の自分を知られたくない」という防御本能の現れだ。しかし、その防御が、むしろコミュニケーションを阻害している。バグを直すためには、原因を特定し、適切な修正を加える必要がある。

デバッグログを出力してみよう。僕は心の中で、仮面を被る直前の自分に問いかける。

「なぜ、仮面が必要なんだ?」 「本当の自分を見せるのが怖いからだ」 「本当の自分を見せると、どうなる?」 「拒絶される。軽蔑される。嘲笑される」 「それは、実際に経験したことか?」 「……幼稚園で笑わなければ、先生に認められなかった。小学校で道化を演じなければ、いじめられた。高校でプログラミングの話をしたら、『気持ち悪い』と言われた」

そうだ。過去の経験が、僕のコードに深く刻み込まれている。それらの経験は、確かにトラウマとして機能している。「本当の自分を出せば、痛い目を見る」という条件分岐が、脳内で固定化されている。

しかし、それらの条件分岐は、はたして今も有効なのか?

幼稚園の先生は、もう僕の人生にはいない。小学校の同級生とも、もう何年も会っていない。高校のクラスメイトの評価も、今の職場では関係がない。

つまり、僕の仮面システムの条件分岐は、現在の環境に対して適切なパラメータを持っていないのだ。過去のトラウマに基づいて、現在の全ての人間関係を一律に「危険」と判定している。これは、典型的な「過剰適合」——学習データに最適化されすぎて、新しいデータに対応できない状態だ。

抽象化とインターフェース

プログラミングの世界では、「抽象化」という概念が重要だ。複雑な処理を、単純なインターフェースの背後に隠すことで、全体の複雑性を管理する。例えば、APIを使う側は、その内部でどんな複雑な処理が行われているかを知る必要がない。ただ、適切なリクエストを送れば、期待するレスポンスが返ってくる。

人生においても、同様の抽象化が必要なのかもしれない。

僕は、自分の内面の複雑さを、全て相手に見せる必要はない。適切なインターフェースを通じてコミュニケーションすればいい。それは、必ずしも「嘘」ではない。「本当の自分」を隠すことでもない。単に、適切な粒度で情報を伝えるための設計だ。

問題は、僕の「インターフェース」が歪んでいることだ。自己卑下というノイズを乗せて、本来必要な情報が伝わらない。過剰な防御機構が、全ての通信を暗号化して、読み取れなくしている。

望ましい状態は、次のようなものだろう。

  • 自分の感情を、適切な言葉で表現できること
  • 他者の感情を、過度に恐れずに受け取れること
  • 「わからない」と言えること
  • 「助けて」と言えること
  • 「好きです」と言えること

これらは、決して複雑な処理ではない。基本的なAPIのようなものだ。しかし、僕にとっては、なぜかこれらを実行することが極めて困難だ。内部の処理が複雑すぎて、シンプルなインターフェースが機能しないのだ。

ユニットテストとしての日々の選択

プログラミングにおいて、ユニットテストはコードの品質を保証するための重要な手段だ。小さな単位でテストを書くことで、後から致命的なバグが混入するリスクを減らせる。

同じように、僕の「リファクタリング」も、小さな単位で行うべきなのだろう。いきなり、仮面を完全に外そうとするのは危険だ。仮面を外した状態で、うまくコミュニケーションできないかもしれない。むしろ、仮面を被ったままでも、「少しだけ本当の自分を混ぜる」という小さなテストから始めるべきだ。

例えば、明日の朝、出社したときに、同僚に「おはようございます」と言うとき、笑顔の角度をいつもより1ミリ下げてみる。相手が気づくかどうかはわからない。しかし、これも一つのテストだ。「笑顔の強度を変えても、相手の反応は変わらない」ということを確認するユニットテスト。

週に一度、ランチのときに「今日はちょっと疲れてて」と本音をこぼしてみる。それで相手の反応がどう変わるかを観察する。これもテストだ。「弱音を吐いても、人は離れていかない」ことを確認する統合テスト。

そして、いつか——それがいつになるかはわからないが——彼女に対して「あなたと話すのが、少し怖いんです」と伝えられる日が来るだろうか。それが、最終的な受け入れテストだ。

完璧主義からの脱却

僕は長い間、完璧なコードを書くことに執着してきた。完璧な人間であろうともした。完璧に振る舞い、完璧に答え、完璧に愛されることを夢見た。しかし、それは叶わぬ夢だ。なぜなら、「完璧」という概念そのものが、コードの世界にも、人生にも存在しないからだ。

完璧なコードとは、存在しない。なぜなら、いかなるコードにも改善の余地があるからだ。コメントを追加できる、パフォーマンスを改善できる、テストカバレッジを上げられる、設計をより美しくできる——終わりはない。

同じように、完璧な人間も存在しない。どんな人間にも弱さがあり、欠点があり、過去の失敗がある。しかし、それは「不完全であること」の証明であると同時に、「まだ成長できる」ことの証明でもある。

バグがないコードは、もはや誰もメンテナンスしない。改善されることも、更新されることもない。まるで、博物館の展示品のように、そこで時が止まる。

自分を「完璧にしよう」とする試みは、結局のところ、「成長を止めよう」とすることと同じなのかもしれない。間違いを犯さないようにすることで、新しいことを学ぶ機会を自ら閉ざしている。

プログラマーとして、僕は知っている。最も優れたコードは、完璧なコードではない。最も優れたコードは、改善され続けるコードだ。変更に強く、成長を続け、チームによって育てられるコードこそが、本当の意味で「良いコード」なのだ。

人生も同じだ。完璧な人生はない。失敗のない人生もない。しかし、失敗から学び、少しずつ改善し、他者との関わりの中で変化していく人生こそが、価値のある人生なのだろう。

自己受容の萌芽

窓の外の雨がやんだようだ。夜空に、かすかに星が見える。僕はキーボードから手を離し、窓の外を見た。

「自分を、受け入れろ」

この言葉は、何度も聞いてきた。カウンセリングの本にも書いてあるし、自己啓発セミナーでも聞いた。しかし、その言葉の意味を、僕は長い間、理解できなかった。

受け入れるとは、諦めることではない。欠点を放置することでも、改善をやめることでもない。むしろ、その逆だ。自分の現状を正確に把握し、その上で「ここからどうするか」を考えることだ。

バグを発見したプログラマーは、まずそのバグを認める。そして、バグの内容を正確に理解する。最後に、修正方法を検討する。このプロセスを飛ばして「とりあえず直せ」とやると、大抵、別のバグを引き起こす。

僕の「バグ」も同じだ。まず認める。僕は人と話すのが苦手だ。仮面を被らないと落ち着かない。自己卑下の癖がある。でも、それでいい。それが今の僕だ。

その上で、少しずつ修正を加えていく。小さなリファクタリングを繰り返す。新しい機能を追加する——例えば、誰かに「ありがとう」と言える勇気とか、自分の意見を主張する度胸とか、失敗を笑い飛ばす余裕とか。

完璧なコードになろうとする必要はない。ただ、昨日より少しだけマシなコードになればいい。それが、持続可能なプログラミングであり、持続可能な人生なのだ。

僕は、手元のノートパソコンに目を戻す。リファクタリングを始める前に書いていた、あのスパゲッティコードが、まだ画面に表示されている。

「よし、やるか」

僕は深呼吸をして、コードを編集し始める。まず、巨大な関数を分割する。次に、変数名をわかりやすく変更する。最後に、適切なコメントを追加する。

一歩一歩、丁寧に。完璧を目指さず、しかし改善を止めずに。

コードは嘘をつかない。しかし、そのコードを書く人間は、これからも迷い、悩み、間違えるだろう。それでもいい。バグがあるから、僕は再びキーボードを叩く。不完全だから、僕はその不完全さと向き合う。

コードと人生。どちらも、完全ではないがゆえに、美しいのだ。

← 前の章 目次へ 次の章 →
◆ ◆ ◆
CHAPTER 19
夜明け前

第19章 夜明け前

月は、今夜も僕を呼んでいた。

窓の外に浮かぶ半月を見つめながら、僕は自嘲する。いや、正確には『また呼ばれた』と思い込んでいるだけだ。実際には、僕が勝手に月に呼ばれた気になっているだけの、自己陶酔の一種かもしれない。しかし、そう考えなければ、深夜の二時に一人で家を出る理由が説明できない。『夜の散歩が好き』なんて言ったら、それはそれで怪しまれるだけだ。自分に言い聞かせるための方便として、『月に呼ばれた』という表現は都合がいい。

そう、僕はいつだって、自分に言い訳を用意する。

アスファルトを冷たい風が吹き抜ける。コンビニの灯りだけが孤独に輝いている。僕は自転車を押しながら、いつもの川沿いの遊歩道へと足を向けた。深夜の二時を回った街は、昼間の喧騒が嘘のように静まり返っている。月明かりの下、僕の影だけが長く伸びていた。

「ああ、また来てるよ。お前、月の光で人と話せるタイプの主人公かよ」

自分でツッコミを入れてみる。声に出してみると、その痛々しさに笑えてくる。こんな自虐を誰かに聞かれたら、確実に『大丈夫?』と心配されるだろう。でも、誰もいない。だからこそ、こんな馬鹿な独り言が許される。

会社を辞めるべきか、それとも復帰すべきか。一週間前から頭の中でループし続けるその問いは、まるで無限ループのプログラムのように、決してbreak文に辿り着かない。S主任からは『休職はあと二週間延ばせる』と言われている。彼は相変わらず優しかった。『無理するな。戻る道はいつでもある』と。だが、その優しさがかえって重い。僕は『大丈夫です』とだけ答えた。あの仮面の笑顔を忘れずに。

ああ、まただ。また仮面を被っている。

僕は口元を緩める。一人でいるのに、笑顔のチューニングをしてしまった自分が滑稽で、もう一度笑う。今度は、本当に笑っているつもりだ。しかし、その境界線はもうとっくに曖昧になっている。

月夜の儀式

遊歩道の真ん中にある古びたベンチに腰掛け、僕は空を見上げた。月は半月。満ちても欠けてもいない、中途半端な形。自分の人生を投影しているようだ。しかし、それもまた自分に都合のいい解釈だということはわかっている。月はただ、そこにあるだけだ。何のメッセージも込めていない。僕が勝手に意味を見出しているだけだ。

「今日は、少しだけ自分を許そう」

その言葉が、どこからともなく浮かんで消えた。自分でも驚いた。僕はこれまで、自分を許したことなんて一度もなかったからだ。バグを出せば自分を責め、人前でうまく話せなければ数日間反省会を開き、過去の失敗を繰り返し思い出しては自己嫌悪に陥る——それが僕のデフォルトの動作モードだった。

まるで、自分自身に対して無限ループの例外処理を実装し続けているようなものだった。

「お前、何年同じこと繰り返してるんだろうな」

僕は自虐の言葉を呟く。ゆっくりと、言葉を選びながら。この独り言もまた、自分を守るための防御策だ。誰もいないからこそ、自分を笑い飛ばせる。そうすることで、自分の痛みを相対化している。

ふと、気づく。今夜はなぜ、ここにいるんだろう。

これまでも、月夜の夜ごとに、僕は自分の弱さと向き合ってきたつもりだった。家のベランダで、酒を飲みながら。あるいは、布団の中で天井を見つめながら。しかし、それは『向き合っているつもり』になっていただけで、実際にはただ自分を責めていただけだ。

今夜は違う。外に出た。川の音を聞きながら、月を見上げながら、自分の内側と対話している。これは、一種の儀式だ。毎晩ではなくとも、少なくとも今夜だけは、しっかりと自分と向き合おうと思っている。

過去という名のソースコード

僕はポケットからスマートフォンを取り出し、真っ黒な画面を見つめた。そこに映る自分の顔は、どこか他人のようだった。特に、口元の線が硬い。仮面を被っていない時の、デフォルトの表情だ。

「お前、本当は誰なんだろうな」

つい、声に出してしまう。自分でも答えが出ない問いだ。

思い返せば、僕の人生はずっと『回避』と『防御』で構成されていた。幼稚園のお遊戯会で『もっと笑って!』と言われてからというもの、僕は笑顔という武器を手に入れた。だが、その代償として、本当の笑顔を忘れてしまった。鏡の前で口角を五ミリ上げ、目じりを三ミリ細める技術は、何百時間もの練習で完成された。それはもはや表情ではなく、プログラムの出力結果のようなものだった。

小学校では、その笑顔でクラスの道化を演じた。自虐ネタを連発し、自分の小ささを武器にして、いじめの的になることを回避した。あの頃のクラスメートは僕のことを『明るいやつ』と思っていたに違いない。だが、家に帰れば無口な子供だった。母は『学校で疲れたの?』と心配そうに聞いてきた。僕は『うん、ちょっとね』と答えて自室にこもり、ベッドの上で天井を見つめながら、明日もまた同じ笑顔を貼り付ける準備をしていた。

あの頃の自分に、今、こう言える。

『よく頑張ったな、お前。でも、もっと楽になってもよかったんだぞ』

しかし、それは簡単なことではない。仮面を被ることが習慣化し、自分のアイデンティティと一体化してしまった。今では、仮面を外した本当の自分が何なのかさえわからない。

高校二年の図書館。あの日、偶然手に取ったPythonの入門書が僕の人生を変えた。最初に書いたのは数当てゲーム。たった十数行のコードが、僕の掌の上で完璧に動作した瞬間の衝撃を、今でも鮮明に覚えている。

プログラムは嘘をつかない。

TrueはTrue、FalseはFalse。エラーはエラーとして明確に表示され、その原因は必ず特定できる。人間関係のように『大丈夫』と言いながら裏では違うことを思っていたり、笑顔を作りながら心の中で嘲笑っていたりすることが一切ない。コードは正直だ。コードは僕を裏切らない。

僕はその夜、朝の四時までコードを書き続けた。目が痛くなるのも構わず、キーボードを叩き続けた。あの夜の興奮は、何物にも代えがたいものだった。それは、初めて『理解される』感覚だった。

しかし、現実はそう簡単に変わらなかった。僕は学校では相変わらず道化を続け、心の奥底ではプログラミングの世界に没頭していた。文化祭の座席予約システムをPHPとMySQLで作った時は、クラスメイトから『すげえ!』と言われて有頂天になった。だが、裏では『あいつ、気持ち悪くね?』と言われているのを聞いてしまった。

能力の評価と、人間としての受容は違う。それを思い知らされた瞬間だった。

あの時から、僕は決定的に『人と機械の間』で生きることを選んだ。コードの世界に逃げ込み、人間関係はあくまで戦略的に処理する。それが、僕の生き残る術だった。

デジタルな孤独

ベンチから立ち上がり、僕は歩き始めた。川面が月の光を反射して銀色に揺れている。風にざわめく草の音が、まるで何かを囁いているようだ。

スマートフォンがポケットの中で震えた。通知だ。何気なく取り出して確認する——Slackのメッセージが届いていた。深夜二時に送信された仕事の連絡。よく見ると、それは彼女からのものだった。

『すみません、こんな時間に。今週のコードレビュー、ありがとうございました。とても助かりました。おやすみなさい。』

メッセージの横には、緑色のオンラインマーク。彼女もまだ起きている。部署も違うのに、深夜まで仕事をしているのだろうか。

僕の指が、自動的に動く。仮面の返信だ。

『こちらこそお役に立てて良かったです。おやすみなさい。』

打ち込んで、送信ボタンを押そうとして——手が止まる。

本当は、もっと伝えたいことがある。『おやすみなさい』の一言で終わらせたくない。『今週のコード、本当はまだ直したいところがあるんです』とか、『あなたのデザイン、いつも素敵ですね』とか、あるいはただ単に『今、川辺を散歩してるんです』とか。

でも、言えない。仮面がそれを許さない。

僕はそのまま送信ボタンを押した。

『こちらこそお役に立てて良かったです。おやすみなさい。』

定型文。無難な返事。何も間違っていない。しかし、この無難さが、僕をどんどん孤独に追いやっている。

SNSやチャットは、いつでもつながれる便利な道具だ。しかし、逆説的に、その『いつでもつながれる』ということが、本当のつながりを希薄にしている気がする。画面越しのやりとりは、仮面をかぶったまま話すのと同じだ。何かを送る前に、推敲して、編集して、安全な表現に変換する。まるで、自分自身の感情をサニタイズしているようだ。

僕はスマートフォンをポケットにしまい、歩き続けた。深夜の川沿いには、デジタルな雑音は届かない。ただ、水の音と、風の音と、自分の足音だけが聞こえる。

覚悟のようなもの

歩き続けて三十分ほど経った頃、東の空がほの暗く白み始めていた。夜明けが近い。

僕は欄干に手を置き、立ち止まった。川の流れは絶え間なく、同じ水は二度と戻らない。風が冷たく、頬を刺す。

『明日、会社に電話しよう』

声に出して言ってみた。音は風に流され、誰の耳にも届かない。

何を伝えるのか、まだ決まっていない。辞めるのか、復帰するのか。答えは出ていない。だが、少なくとも『何もしないまま時を過ごす』ことだけは終わりにしようと思った。

しかし、本当の問いはそこじゃない。会社に電話をするかどうかは、結果論に過ぎない。本当に問わなければならないのは——。

『僕は、これからどう生きたいのか』

その問いに答えられないから、僕は決断を先延ばしにしてきた。『今はわからない』と言い訳をしてきた。しかし、それは単なる逃げだ。本当はわかっている。わかっていて、認めるのが怖い。

僕は、自分自身のことをもっと知りたい。自分のコードにもっと自信を持ちたい。いや、それ以上に——。

『僕は、彼女にもっと近づきたい』

その言葉が、頭の中に浮かんだ瞬間、心臓がドキリと跳ねた。

認めたくなかった。認めたら、それに応えられなかった時の絶望が待っている。でも、もう逃げられない。この月夜の川辺で、自分に嘘をつくのはやめよう。

僕はノートに書き留める。スマートフォンのメモ帳を開き、指を動かす。

『今日から、少しだけ自分を許そう』

その言葉を三回、繰り返し打ち込んだ。意味もなく、ただ何かに祈るように。

僕はこれまで、他人の期待に応えられない自分を許せなかった。失敗した自分を許せなかった。弱い自分を許せなかった。仮面が必要な自分を許せなかった。全てを否定し、全てを拒絶し、そのたびに深く傷ついてきた。

だが——もしかすると、許すことからしか始まらないものもあるのかもしれない。

本当の自分が何かなんて、今もわからない。仮面を外した自分がいるのかどうかさえ、不確かだ。でも、少なくとも『自分を許す』ということは、その『不完全な自分』を認めることだ。完璧なプログラムを書こうとするあまり、自分自身のバグを根絶やしにしようとしていたこれまでの僕には、できなかったことだ。

「バグのない人間なんていないんだよ」と、S主任は言っていた。あの時は「そんなの都合のいい言い訳だ」と思ったけれど、今なら少しわかる。バグがあるからこそ、人間は人間らしいのかもしれない。修正可能なバグなら、なおさらだ。

夜明け前の決意

気がつくと、空の端が鮮やかなオレンジ色に染まり始めていた。月はまだ薄っすらと見えているけれど、その存在感は急速に薄れている。代わりに、太陽の気配が確かにそこにある。

僕は深く息を吸い込んだ。冷たい朝の空気が肺の奥まで満ちていく。まだ寒い。でも、昨日までの寒さとは、少し違う気がした。

「戻ろう」

声に出して言った。家に帰る、という意味だけじゃない。自分自身に、戻ろう。仮面の向こう側に隠してきた、本当の自分に——その存在が怪しいとしても、少なくとも『探そうとする意志』に。

僕は振り返ることなく、家路についた。

玄関のドアを開けると、まだ外は完全に明け切っていなかったが、部屋の中は少し明るくなっていた。僕はキッチンでコーヒーを淹れ、一口すする。その苦さが、現実に戻ってきたことを教えてくれる。

机の上には、開いたままのノートパソコン。そこには、昨夜書いていた途中のコードが表示されている。Pythonの、ある認証モジュールのリファクタリング——あの失敗のあと、気力を振り絞って書き直したものだ。

コードは嘘をつかない。

だが、人間は嘘をつく。仮面を被る。そして、それでも前に進むしかない。

僕はパソコンの前に座り、キーボードに手を置いた。画面の輝きが、朝日に負けじと光っている。しかし、書くのは仕事のコードではない。自分のために書く、たった一つのプログラム。

import time

def allow_yourself_to_forgive():

"""許すことからしか始まらないものもある"""

print("今日から、少しだけ自分を許そう")

time.sleep(1)

print("そして、もう少しだけ、本当の自分に近づこう")

*

for i in range(100):

print(f"試行{i+1}回目:まだ途中")

スマートフォンが震えた。通知を見ると、彼女からのSlackメッセージが届いていた。

『おはようございます。今日、お時間ありますか? ちょっとお話ししたいことがあるんです』

僕の心臓が、ドキリと大きな音を立てる。すぐに仮面の返事を打とうとする自分がいる。

『はい、大丈夫ですよ。何時ごろがよろしいですか?』

——いや、待て。

仮面を被るべきか? いつものように、無難で、安全で、傷つかない返事をするべきか?

それとも——。

スマートフォンを握りしめ、僕は目を閉じる。月はもういない。代わりに、朝の日差しが窓から差し込んでいる。

「少しだけ、本当の自分で返事をしてみよう」

僕は声に出して言った。そして、メッセージを打ち直す。

『おはようございます。もちろん大丈夫ですよ。実は私も、お話ししたいことがありました。何時でも連絡してください』

最後の一文を打ち終えて、送信ボタンを押す。

指が震えている。でも、後悔はしていない。

窓の外では、朝日が完全に昇り、世界を黄金色に染めていた。

月のいない、新しい一日の始まりだった。

今日から、少しだけ自分を許そう。

そして、もう少しだけ、仮面を外してみよう。

それが、僕の選んだ小さな勇気だ。

← 前の章 目次へ 次の章 →
◆ ◆ ◆
CHAPTER 20
月の裏側

第20章 月の裏側

気がつけば、もう秋も終わりに近づいていた。

窓の外では、裸になった欅の枝が風に揺れている。その向こうに、かぼそい三日月がかかっている。私はコミュニティスペースの隅っこ、電源コンセントに最も近い席に座って、参加者が到着するのを待っていた。ノートパソコンの画面には、まだ開いていないスライドの表紙が表示されている。タイトルは「Pythonで作る、ちいさなWebアプリケーション」。初歩の初歩だ。おそらく私が転んだ時に地面に手をつく程度の語彙力で説明できるレベルの内容。それでも、私にとっては大冒険だった。

「すみません、ここ、空いてますか?」

声をかけられて、私は弾かれたように顔を上げた。二十歳そこそこの女性が、少し緊張した面持ちで立っている。私は咄嗟に口角を持ち上げた。計測したことのない角度で、しかし確かに、「笑顔」の形に。昔から変わらぬ、あの仮面を。

「はい、どうぞ。あ、僕も講師なんで、その、よろしくお願いします」

よろしくお願いします、と彼女は言い、私の斜め前の席に座った。私は胸の内で深呼吸を一つ。心臓が五月蠅い。ワークショップなんて、開くんじゃなかった。

***

このワークショップを開こうと思い立ったのは、あのエッセイを公開してから一週間が経った頃だった。

あのエッセイ——そう、このすべてを綴った自称・告白録のようなものを、私はnoteに投稿したのだ。きっかけは些細なことだった。あのエレベーターでの沈黙の後、私は自分を許せないまま毎日をやり過ごしていた。書類の山に埋もれ、コードの海に溺れ、仮面を被っては外し、外してはまた被るような日々。

ある夜、いつものように月が窓の外に浮かんでいた。真ん丸な、おそろしいほどに白い月だった。酒を呷りながら、私はそれを見上げていた。酔いが回るにつれ、ふと、書いてみようと思った。幼稚園のあの日から、今この瞬間までの、自分というプログラムのソースコードを、全部書き出してみようと。

最初は自分用のメモのつもりだった。自分のための、せめてもの自己診断ログみたいなもの。でも書いていくうちに、それが誰かに向けての手紙のようになっていった。この得体の知れない孤独、仮面の裏側にある本当の自分——そんなものを、誰かに伝えたいという衝動が、私の指を動かした。

公開ボタンを押したのは、また別の月の夜だった。酒の勢いも手伝って、私は恐ろしいことをやってのけた。押してから、すぐに後悔した。削除しようとした。でも、酒に溺れた私の指は、マウスを正確に操作できなかった。そのまま、私はベッドに倒れ込んだ。

翌朝、二日酔いで濁った頭でスマートフォンを開くと、通知が山のように積まれていた。スキ、フォロー、そしてコメント。

『すごくわかります。私も同じような気持ちを抱えています』

『この“仮面”の描写、自分にも当てはまるところがあって、泣きそうになりました』

『プログラマーじゃないけど、心の奥底を覗かれた気がします。ありがとう』

私はそれらを一通り読んで、しばらくの間、動けなくなった。スマートフォンを握る手が震えていた。これは喜びの震えか、それとも恐怖の震えか——自分でもよくわからなかった。予想もしない共感の波が、私という存在をぐらぐらと揺さぶっていた。

そして、その中に一通のメッセージがあった。見覚えのあるアイコン。あのデザイナーだ。彼女からのメッセージには、こう書いてあった。

『コードも文章も、あなたのそれはいつも物語みたいだなと思います。今度、話してみませんか?』

思わず、私はスマートフォンを落としそうになった。

***

結局、彼女と話す機会は、直接には持てなかった。私が怖じ気づいたからだ。話してみませんか、という言葉の意味を、何百通りにも解釈しては、自分を納得させる材料を探した。きっと社交辞令だ、彼女は誰にでもああいう優しい言葉をかける人だ——そう自分に言い聞かせた。

その代わりと言っては何だが、私は別のことを始めた。このコミュニティスペースで、プログラミングのワークショップを開くことにしたのだ。これもまた、あのエッセイへの反響の中でのひらめきだった。

『私もプログラミングを学んでみたいけど、最初の一歩が踏み出せなくて』——そんなコメントがいくつかあったのだ。

私は、自分が高校の図書館でPython入門書に出会った時のことを思い出した。あの夜、初めて数当てゲームを作った時の、あの衝撃と感動。コードは嘘をつかない、という確信。それを、ただきっかけが欲しいだけの人に、そっと手渡すことはできないだろうか。

そんな思いが、私の背中を押した。

場所は、この街の小さなコミュニティスペース。月に二回、土曜の午後二時から四時まで。参加費無料。定員は八名。講師は、私一人。

準備は、それはもうてんやわんやだった。スライドを作るのも、資料を用意するのも、全てが初めての経験。上司のS主任に相談すると、彼は嬉しそうに笑って、「いいね、それ。君の経験はきっと誰かの役に立つよ」と言ってくれた。私はその言葉が嬉しくて、でも素直に喜べなくて、またあの笑顔で誤魔化した。

「いや、そんな大したものじゃないですけどね」

「またそれか。まあ、頑張れよ」

S主任は、そう言って肩を叩いてくれた。その手の温もりが、胸の奥にじんわりと広がった。

***

「えーっと、それでは、始めます」

時計の針が二時を指したのを確認して、私は立ち上がった。参加者は六人。予想より少なかったが、それでも六人の視線が私に集中するのを感じて、一瞬、呼吸が止まった。

頭の中に、いつものスクリプトが再生される。口角を上げろ、目じりを緩めろ、声のトーンを半音高く——でも、今日はそのスクリプトを、あえて無視することにした。私は、ごくりと唾を飲み込んだ。

「僕は、Tと言います。普段はIT企業でプログラマーをやっています。今日は、本当に、超初歩的なところから、一緒にやっていきたいと思います」

声が、少し震えていた。いつもの陽気なトークではない。もっと平坦な、むしろ暗いと言ってもいい声。でも、それが今の、仮面を少しだけ剥がした私の声だった。

「まず、プログラミングって何だと思いますか? 難しい言葉で言うと、コンピュータに指示を出すための言語なんですけど……僕は、もっと単純にこう思っています。『嘘をつかない世界』だと」

参加者の一人が、不思議そうな顔をした。私は苦笑いを浮かべる——それが仮面かどうか、自分でもわからない。

「人間って、よく嘘をつくじゃないですか。建前とか、社交辞令とか、『大丈夫』って言いながら実は大丈夫じゃなかったりとか。でも、プログラムはそうじゃない。書いた通りに動く。エラーが出たら、その原因が必ずある。直せる。嘘がないんです。それが、僕にとってはすごく、救いだったんです」

言いながら、私は自分で驚いていた。こんなこと、普段の自分なら決して口にしない。仮面を被ったまま、スマートなテクニック論を語って、時間をやり過ごす。それがいつものパターンだ。でも今日は、なぜか、素の言葉が出てきた。

六人の参加者は、それぞれに頷いたり、メモを取ったりしている。その中に、最初に席に着いたあの女性がいた。彼女は、真剣な眼差しで私を見つめていた。その視線に、私は少しだけ勇気をもらった。

***

ワークショップは、思っていたよりもうまくいった。

最初に書いたのは、お決まりの「Hello, World!」だ。これを、皆で一緒に打ち込む。画面に「Hello, World!」という文字が浮かび上がった時、一人の中年男性が「おおっ」と声を上げた。

「動いた! これ、動いたんですね!」

その喜びようが、まるで子供のようで、私は思わず笑ってしまった。それが、私にとってはとても自然な笑顔だったことに、あとで気がついた。

次に、簡単な計算プログラムを作った。二つの数字を入力すると、その合計を表示するだけのもの。それでも、参加者たちはそれぞれに試行錯誤しながら、楽しそうに取り組んでいた。

「先生、これ、どうすればいいんですか?」

「先生、できました!」

先生、という呼ばれ方に、私はまだ慣れない。でも、それが悪い気はしなかった。むしろ、少しだけ、胸の奥が温かくなるような感覚があった。

途中、あの女性が手を挙げた。

「すみません。エラーが出たんですけど……どうやって直せばいいですか?」

私は彼女の席に歩いていき、画面を覗き込んだ。エラーメッセージは、よくあるタイプミスだった。変数名が間違っていたのだ。

「あ、ここですね。'num1'じゃなくて、'num_1'になってます。アンダースコアが抜けてますね」

直しながら、私は説明した。変数名の付け方のルール、なぜそれが大事か——そういう基本的なことを、噛み砕いて話した。

彼女は「あー、なるほど」と言って、自分で修正した。そして、コードが正しく動いたのを確認すると、ぱっと顔を輝かせた。

「動いた! ありがとうございます!」

その笑顔に、私はまた、胸の奥がきゅっと締め付けられるのを感じた。しかしそれは、かつての自己嫌悪とは違う、別種の感情だった。

***

二時間は、あっという間に過ぎた。

「今日は、本当にありがとうございました。初歩の初歩でしたけど、プログラミングの楽しさが、少しだけわかった気がします」

そう言って帰っていく参加者たちを見送りながら、私は一人、コミュニティスペースに残った。片付けをしながら、今日の出来事を反芻する。

うまくいった部分もあった。全然うまくいかなかった部分もあった。説明がわかりにくかった時もあったし、質問にすぐ答えられなかった時もあった。それでも、参加者たちの表情は、帰るときにはみんな、どこか晴れやかだった。

それが、何よりの報酬だった。

私は窓辺に立った。外はもう暗くなっている。三日月は、もう少し太くなっていた。

「明日も、コードを書くんだろうな」

私は、ぽつりと呟いた。

***

あのエッセイを公開してから、私はいくつかの変化に気づいた。

まず、自分の弱さを、少しだけ認められるようになった。かつては、自分の弱さは隠すべきもの、欠点として修正すべきものだと思っていた。でも、あのエッセイに寄せられたコメントを読んで、違うかもしれないと思い始めた。

弱さは、共有できるものなのだ。誰かとつながるための、入り口になり得るものなのだ。

もちろん、今でも私は仮面を被る。仕事中は、特にそうだ。商談や打ち合わせでは、口角を上げ、目じりを緩め、声のトーンを調整する。その技術は、私の一部としてすり込まれている。

しかし、少しだけ、その仮面を外す勇気が出てきた。今のこのワークショップのように、自分が最も弱いと思う部分——人間関係の苦手さ、自己評価の低さ、コードへの依存——を、あえて見せることを選べるようになった。

それは、私にとって革命的なことだった。

完全に変わったわけではない。むしろ、変わらないままの自分を、どう受け入れるかを学びつつあるのだと思う。弱さと共存する、ということ。それも一つの生き方なのだと、私はようやく理解し始めている。

***

週が明けて、出社した月曜日。

デスクに着くと、一通のメールが届いていた。件名は「ワークショップの感想」。あの女性参加者からだった。

『先日はありがとうございました。プログラミングに触れるのは初めてで、不安だったんですが、Tさんの優しい教え方のおかげで、楽しく学べました。特に、プログラムは嘘をつかない、というお話がとても印象的でした。私も、嘘のない何かを作りたいと思いました。また参加したいです。よろしくお願いします』

私はそのメールを、何度も何度も読み返した。そして、ふと、自分が笑っていることに気がついた。仮面の笑顔ではなく、自然と湧き上がる、心からの笑顔だった。

「どうした、嬉しそうじゃないか」

声がして顔を上げると、S主任がコーヒーカップを手に、私のデスクの脇に立っていた。

「いや、その……ワークショップの参加者から、感想をいただいて」

「お、それは良かったな。どんな感じだった?」

「始める前は本当に不安で、自分なんかが教えていいのか、って思ってたんですけど……意外と、楽しかったです」

「そうか。それが何よりだ」

S主任は、優しい笑顔を浮かべた。私は、その笑顔を見て、また少しだけ、心が軽くなった。

「あ、あの、S主任」

「ん?」

「次のワークショップも、やってもいいですか?」

私の言葉に、S主任は少し驚いた顔をしたあと、大きく頷いた。

「もちろんだ。応援するよ」

その言葉が、胸に染みた。

***

それからの数週間、私は週末ごとにワークショップを開いた。

参加者は少しずつ増えていった。口コミで広がったのか、知らない人から申し込みが来るようになった。中には、他のワークショップにも参加しているというベテランもいたが、ほとんどは初心者だった。

毎回、私は同じように説明する。プログラムは嘘をつかない、という自分の信条を。コードの世界の正直さを。そして、少しだけ自分の弱さも見せる。

「僕は、人間関係がすごく苦手で。昔から、いつも笑顔で誤魔化してきたんです。でも、コードの前では、嘘をつく必要がない。それが、僕にとっての救いでした」

参加者たちは、それぞれに頷く。中には、自分の悩みを打ち明けてくれる人もいた。

「私も、人と話すのがすごく苦手で。会社でも、なかなか打ち解けられなくて」

「僕は、うつ病を患っていて。プログラミングだけが、生きる支えなんです」

私は、そういう話を聞くたびに思う。孤独は、決して特別なものではない。誰もが何かしらの仮面を被って、この世界を生きている。そして、その仮面を少しだけ剥がした時に、初めて本当のつながりが生まれるのだと。

***

十二月に入ったある日、私は久しぶりに、あの屋上に立っていた。

夜の空気は冷たく、吐く息が白く濁る。街の明かりが、眼下に広がっている。その向こうには、満月が煌々と輝いていた。

私は、手すりに両肘をついて、その月を見上げた。

あの日、告白に失敗した夜も、こんな月だった。あの日、エッセイを公開した夜も、こんな月だった。そして今も、月は変わらずそこにある。

月は、いつも孤独だ。誰も住んでいない。空気もない。水もない。ただ、地球の影を浴びながら、静かに回り続けている。

でも、月の裏側には、誰も見たことのない風景がある。そして、それを知っているのは、月自身だけだ。

私はふと、自分と月を重ねてみた。表側では、いつも同じ顔を見せている。口角を上げ、目じりを緩め、誰にでも優しい笑顔を振りまく。でも、裏側には、全く別の世界がある。誰にも見せられない、傷だらけの、弱さに満ちた世界。

そして、その二つは、決して切り離せない。表と裏があって、初めて月は月なのだ。

「まあ、いいか」

私は、独り言を言った。それが、最近の私の口癖だった。

完全に変わる必要なんてない。仮面を全部捨てる必要もない。ただ、時々でいいから、その仮面を少しだけ緩めて、本当の自分を見せられれば。それでいいんだ。

私は、屋上を後にした。階段を下りながら、明日のワークショップのことを考える。新しい教材を用意しよう。もう少しだけ、レベルアップした内容でも大丈夫かもしれない。そう考えている自分が、少しだけ、誇らしかった。

***

数日後、またワークショップの日がやってきた。

今回は、参加者が十人に増えていた。コミュニティスペースの部屋が、少し狭く感じる。その中には、前回の参加者も何人かいて、彼らはもう顔なじみのように、私に話しかけてくる。

「先生、前回やった変数の復習、家でやってきました!」

「私も、簡単な計算プログラム、作ってみました!」

そう言って、ノートパソコンの画面を見せてくれる。そこには、たどたどしいながらも、確かに彼らが書いたプログラムが動いていた。

私は、その一つ一つを確認しながら、適切なアドバイスをしていく。時には、バグの原因を一緒に探す。時には、もっと効率的な書き方を提案する。

そして、そういうやり取りの中で、私は気がつく。これが、私が求めていたつながりなのかもしれない、と。

かつて私は、人とのつながりを、もっと劇的なものだと思っていた。運命的な出会い、一瞬で心を通わせる会話、互いを理解し合える関係——そんなものを夢見ていた。しかし、実際に私が得たのは、もっと小さな、しかし確かなものだった。コードの話をする。バグの原因を一緒に考える。ちょっとした成功を分かち合う。そういう、ごく当たり前のやり取りの中に、私は少しずつ、自分の居場所を見つけ始めていた。

ワークショップが終わり、参加者たちが帰っていく。最後に、あの最初の参加者——二十歳そこそこの女性が、私のところに来た。

「先生、今日もありがとうございました。すごく楽しかったです」

「いえいえ、こちらこそ」

「あの、よかったら、なんですけど……」

彼女は少し躊躇した後、続けた。

「今度、ワークショップの後で、皆でお茶でもしませんか? せっかく知り合ったんだし、もっと話してみたいな、って思って」

私は、一瞬、固まった。断る口実を探そうとした。でも、その前に、私の口は勝手に動いていた。

「……いいですね。そうしましょう」

その言葉に、自分でも驚いた。しかし、その後悔は、すぐに消えた。

彼女が笑顔で「やった! じゃあ、次回、決めましょうね!」と言って、去っていく。その後ろ姿を見送りながら、私は深く息を吐いた。

新しい挑戦だ。また一歩、踏み出した。まだ完全に仮面を外したわけじゃない。でも、少しだけ、その下の素顔が見え始めている。

それでいい。それで十分だ。

***

夜、帰宅して、シャワーを浴び、ベッドに寝転がる。窓からは、また月が見える。今日は、少し欠けている。満ちたり欠けたり、月はいつも形を変える。

人間も、そうかもしれない。完全な姿なんてない。完璧な自分なんて、いない。ただ、その時々で、形を変えながら、生きているだけだ。

私は、枕元のスマートフォンを手に取った。そして、あのエッセイを開いた。もう三ヶ月も前の記事だ。それでも、まだ時々、スキやコメントが届く。

最新のコメントを開く。そこには、娘を持つ母親からのメッセージがあった。

『このエッセイを読んで、私の娘を思い出しました。彼女も、人と話すのが苦手で、いつも無理に笑っているように見えます。でも、あなたのような人がいることを知って、少し安心しました。あなたは、一人じゃないですよ』

私は、そのコメントを何度も読み返した。そして、気がついたら、目の端が熱くなっていた。

「一人じゃない」

その言葉が、胸に沁みる。そうか、私は一人じゃなかったのか——そう思えることが、ただただ、ありがたかった。

私は、スマートフォンを置いて、天井を見上げた。

月の光が、カーテンの隙間から差し込んでいる。薄青い、静かな光。

明日も、私はコードを書く。仕事で、バグと格闘する。たぶん、またどっかでミスをする。自己嫌悪に陥ることもある。仮面を被って、やり過ごす日もある。

でも、もうそれでいいと思えるようになった。

弱さと共存する。自分を許す。偽りの自分と本当の自分の間で、バランスを取りながら生きる。それが、私の選んだ道だ。

そして、月の夜が来るたびに、私は思い出す。自分が、どんなに弱くて、愚かで、それでも前に進もうとしていることを。

月の裏側には、誰も見たことのない風景がある。そして、それを見ているのは、私だけだ。

私は、目を閉じた。

明日も、コードを書く。ワークショップもある。新しい参加者が来るかもしれない。うまく説明できないこともあるだろう。でも、それでいい。

月は、今夜も、静かに昇る。そして、明日もまた、沈む。

その繰り返しの中で、私は少しずつ、自分というプログラムを書き換えていく。バグを修正し、機能を追加し、より良いものにアップデートする。

完璧には、なれないけれど。

それでも、前に進むことを、やめなければ——それだけで、十分なのだ。

窓の外で、月が雲に隠れた。またすぐに、その姿を現すだろう。満ち欠けを繰り返しながら、永遠に、そこにあり続ける。

私も、そうありたいと思う。

弱さを抱えたまま、それでも、その弱さをネタに笑える自分でいること。自分の不完全さを認め、それと共に歩いていくこと。それが、私にとっての再生だった。

幕は、閉じない。まだ、これからだ。

私は、そっと呟いた。

「おやすみ、月。また明日」

そして、私は眠りについた。明日という名の、また一つのループを、受け入れるために。

——

それが、私の物語の、一応の結末だ。

エピローグというには、あまりに不完全な、まだ続きがあることを示唆するような終わり方。でも、それが今の私には、ちょうどいい。

完全な克服なんて、ありえない。魔法のように全てが変わることなんて、ない。あの日の私が、今日の私になるまでには、たくさんの小さなステップがあった。そして、これからも、小さなステップは続いていく。

ワークショップは、毎月続けている。参加者は少しずつ増えて、今では常連もできた。彼らと、ワークショップの後でお茶を飲むこともある。最初は緊張したが、今ではそれが、数少ない「楽しみ」の一つになった。

もちろん、今でも仮面は被る。完全にそれを外すことは、おそらく永遠にないだろう。でも、前よりも、その仮面の下にある自分の顔を、意識できるようになった。時々は、その仮面をちょっとだけ持ち上げて、素顔を見せることもできるようになった。

それが、私の進歩だ。誇れるほどのものではないけれど、確かな一歩だ。

月は、今日も昇る。明日も昇る。その繰り返しの中で、私はコードを書き続ける。

プログラムは嘘をつかない。 でも、人は嘘をつく。 仮面を被る。 偽りの笑顔を作る。

それでも—— その嘘の中に、ほんの少しだけ、本当の自分を混ぜることができたなら。 それが、私にとっての、せめてもの救いなのだ。

そして、いつか。本当にいつか、月の裏側にある本当の自分を、誰かに見せることができる日が来るだろうか。

その日が来るまで、私は書き続ける。コードを。そして、この物語を。

それが、道化に選ばれた、たった一つの抗い方だから。

——

夜が明ける。 月が、西の空に沈む。 入れ替わるように、東の空が白み始める。

新しい一日が、始まる。

私はキーボードの前に座り、そっと息を吸い込む。そして、今日最初の一行を、静かに打ち込んだ。

← 前の章 目次へ 次の章 →
◆ ◆ ◆
AFTERWORD
あとがき

あとがき

この本を手に取ってくださったあなた。どうもありがとうございます。最初にこうして謝辞を述べるのも、なんだか気恥ずかしい。まるで自分の恥部を晒すような、そんな気分です。でも、これを書かずにはいられない。それが私の性分なのです。

私は、いわゆる「普通のプログラマー」にはなれなかった。いや、なろうとしなかった、という方が正確かもしれません。幼い頃から、どうにも自分という人間が好きになれなかった。周りの人たちが楽しそうに笑っているのを見ると、自分だけがその輪の中に入れていないような疎外感に苛まれました。そんな自分をごまかすために、私はコンピュータという、冷たくも誠実な機械に向かい合うことを選んだのです。

コードを書いているときだけは、自分が自分でいられる気がした。バグに悩まされ、エラーに打ちのめされ、それでもただひたすらにキーボードを叩き続ける。その無意味とも思える作業の先に、ほんの少しだけ達成感が待っている。そんな日々の積み重ねでした。この本は、まさにその足跡のようなものです。人に見せるのは恥ずかしい、間抜けな足跡ばかりですが。

書いていて思い出したのは、大学時代の研究室の夜のことです。先輩たちが明かりを消して、月明かりだけでプログラムを組んでいたのを見て、何か神聖な儀式に立ち会っているような気持ちになりました。あの月光は、今でも私の中に燦然と輝いています。暗闇の中に浮かび上がる文字列の一つ一つが、まるで命を宿しているかのようでした。私はその光景にすっかり魅せられてしまい、それ以来、夜な夜なパソコンに向かう生活が始まったのです。

そう、私は道化なのです。自分を大きく見せるために、一生懸命コードを書いている。その滑稽さに気づかないふりをしながら、必死でキーボードを叩いている。でも、読者の皆さんに伝えたいのは、そんなふざけた自分でも、確かに何かを掴めたということです。そしてそれは、あなたにもできるのです。

この本には、私の恥ずかしい失敗談がいくつも詰まっています。同じバグに三日間悩まされた話、変数名を間違えてシステム全体をダウンさせた話、コードレビューで内容が全く通じずに書き直した話。どれも笑い話にできればいいのに、書いているうちに涙が滲んでしまうような、そんな思い出ばかりです。

でも、それこそが大切なのではないでしょうか。完璧な人間なんて存在しない。完璧なプログラマーも、もちろん存在しない。ただ、不完全な私たちが、不完全さの中で少しずつ前に進んでいく。その過程こそが、何より尊いのだと、私は信じています。

この本が、あなたのプログラミング学習の一助となれば、これほど嬉しいことはありません。難しい概念にぶつかって、心が折れそうになったとき、この本のどこかに書かれている私の失敗談を思い出してください。「ああ、この著者もこんな愚かな間違いをしていたのか」と、少しだけ心が軽くなるかもしれません。そして、その軽さこそが、実は最も大切なものなのです。

月夜の下で、一人パソコンに向かっているあなたへ。どうか、その暗闇を恐れないでください。月明かりは確かにそこにあって、あなたのコードを優しく照らしてくれています。私もまた、あなたのその努力を、遠くから応援しています。

最後に、この本を書き終えるまで支えてくれたすべての人々に、心からの感謝を捧げます。特に、私の支離滅裂なコードを辛抱強くレビューしてくれた先輩、深夜の電話に付き合ってくれた友人、そして何よりも、いつも温かい目で見守ってくれた家族に。ありがとう。

この本が、あなたのプログラミングの旅のお守りのようなものになれば、それに勝る幸せはありません。

月の光の下で、またいつかお会いしましょう。その時は、互いのコードを見せ合い、笑い合いながら、新しい夜を共に過ごせますように。

— 著者

← 前の章 目次へ
⚠ 不適切な内容を通報

この作品が気に入ったらシェアしよう

𝕏 ポスト

出版に役立つガイド

KDP出版の始め方ガイド → AI生成書籍のクオリティを上げるコツ → 電子書籍マーケティング戦略 → Kindle本の表紙デザイン作成ガイド →