第1話:システム障害の現状と課題
はじめに
本資料は、現在進行中のプロジェクトにおけるシステム構成と運用マニュアルである。
……というのは建前で、本当は最近俺の身に起きている「致命的なバグ」のような現象を整理するための、自分用の非公式ログ(メモ)として残している。
誰に見せるわけでもない。ただ、コード(※1)エディタに向かって文字を打ち込んでいる時だけが、自分が正常な人間であると錯覚できるからだ。
充実した、けれど少し奇妙な日常
現在関わっているプロジェクトのスケジュールは適正に管理されており、決して世間で言うような「デスマーチ(※2)」ではない。
社長の土屋さんは常に現場の意見を尊重してくれるし、先輩の相馬さんのコードレビュー(※3)は的確で死ぬほど勉強になる。クライアント(※4)側のPM(※5)である天宮さんも、要件定義(※6)の段階からこちら側の意図を汲んで積極的に協力してくれている。
俺、小林悠太も、メインプログラマ(※7)としてやりがいのある重たいタスク(※8)を任せられ、チームの役に立てているという確かな実感があった。
残業も少なく、仕事は完璧なまでに順調だ。
だが——問題は「俺自身」のハードウェア(肉体)の方にある。
「す〜は〜...」
スマートウォッチから流れるメトロノームの音。
社長の土屋さんが「GitHub(※9)でたまたま見つけたんだけど、これ妙に集中できるんだよ」と勧めてくれたアプリの音だ。社長本人が愛用していることもあり、何気なくインストールしてみたのだが、最近の俺はこれがないと文字通り『生きていけない』状態になっている。
この一定のリズムに合わせて呼吸を整えないと、自分の意識が、あるいは世界そのもののテクスチャが、薄れていくような奇妙な感覚に陥るのだ。
インシデント発生記録(物理レイヤーの異常)
体調だって悪くない。むしろ頭も体も絶好調なはずだ。寝不足でも過労でもない。
毎朝買っているカフェのコーヒーも普通にうまいし、店員の結衣さんの笑顔にもちゃんと癒されている。
それなのに、三日前の朝、決定的な『インシデント(異常)』が起きた。
出社時、オフィスのエントランスにあるセキュリティゲートを通ろうとした時のことだ。
俺はいつものように、社員証の入ったパスケースをゲートのリーダーにかざした。
『ピッ』という音が鳴るはずが、無音。
ゲートのフラッパー(透明な板)は閉じたままだ。
(あれ? 読み取りエラーか?)
もう一度かざそうとして、一歩前に踏み出した、その瞬間。
俺の足先が、大理石の床に「沈み込んだ」。
「……え?」
自分の目を疑った。床が抜けたのではない。俺のスニーカーの先端が、まるで3Dゲームの当たり判定がバグったかのように、物理的な大理石の床を『透過』してめり込んでいたのだ。
反射的に体勢を崩し、俺は閉まっている透明なフラッパーゲートに手をつこうとした。
ドンッ、とプラスチックの硬い感触が返ってくるはずだった。
しかし、俺の右手はなんの抵抗もなくフラッパーを『すり抜け』、そのまま虚空を掻いた。
「う、わっ……!?」
派手に転ぶ——そう思って目を閉じたが、痛みは来なかった。
恐る恐る目を開けると、俺の体は床に倒れ伏しているのではなく、大理石の床を半分透過した状態で『不自然に宙に浮いて(固定されて)』いた。
右手を見ると、指先の輪郭が古いブラウン管テレビの砂嵐のように、ピクセル(※10)単位でチカチカとノイズを上げて明滅している。
(なんだこれ……! どうなってる!? 俺の体が、バグってる……!?)
声を出そうとしたが、喉から音が出ない。音声出力のプロセス(※11)すらエラーを起こしているかのようだ。
パニックになりかけたその時、背後から足音が近づいてきた。
同じフロアの別会社のサラリーマンだ。俺は床に半分めり込んだ状態で、必死に助けを求めようと手を伸ばした。
だが、スマホを見ながら歩いていたその男は、床でもがく俺の存在に全く気づく様子もなく——そのまま、俺の肩から胸にかけてを『物理的にすり抜けて』歩き去っていった。
男の体が俺の体を通過した瞬間、まるで冷たい静電気の塊を浴びたような、強烈な吐き気と不協和音が脳内に響いた。
(見えてないのか!? いや、それ以前に『ぶつからない』!? オブジェクト同士の干渉が完全にオフになってる……ッ!!)
俺という存在が、この世界の物理エンジンから完全に「除外」されようとしている。
明確な死の恐怖とは違う、存在そのものが『デリート(消去)』されるという得体の知れない絶望感。視界の端から、オフィスの風景が黒いモザイク状に崩れ落ちていく。
その時だった。
『……チッ、チッ、チッ……』
左腕のスマートウォッチから、あのメトロノームアプリの規則正しい音が微かに鳴った。
無意識に起動したままになっていたBPMの刻み音。
「す〜……は〜……」
俺はすがるように、そのリズムに合わせて深く呼吸をした。
1秒、2秒。一定のクロック信号を脳に強制入力するように、メトロノームの音だけに意識を全集中させる。
カチリ、と。
脳の奥で、ピントが合うような音がした。
「……痛っ」
次の瞬間、俺はオフィスの固い大理石の床に派手にうつ伏せに倒れ込んでいた。
ジンジンと痛む膝と掌。それは間違いなく、さっきまで失われていた「現実の物理的な痛み」だった。
指先のノイズも消え、ゲートのフラッパーにはしっかりと自分の指紋がついている。
周囲を見渡すと、何事もなかったかのように朝の出勤風景が流れていた。
誰も、俺がさっきまで半分床にめり込んでいたことなんて気にも留めていない。
これが、今の俺を取り巻く現状だ。
過労による一時的な幻覚だと思いたい。だが、あんな生々しい存在消失の恐怖がただの幻覚であるはずがない。
俺は一体、何に巻き込まれているんだ。
そして、社長が教えてくれたこの「ただのメトロノームアプリ」は、なぜ俺のバグを直す『修正パッチ(※12)』のように機能したのだろうか。
それを解明するためにも、俺は今日も平常心を装ってコードを書き続けるしかない。
【用語解説】
※1 ソースコード / コード / コーディング: 「if (HP < 0) { Game Over }」みたいに、コンピューターへの命令文を英語や記号で書いたもの。これを書く作業を「コーディング」と呼ぶ。
※2 デスマーチ / 炎上: 納期に間に合わせるために、連日徹夜したり休日出勤したりする「死の行軍」。絶対にやりたくない、開発プロジェクトの地獄絵図。「このプロジェクト炎上してる」と言うと、だいたいデスマーチになっている。
※3 コードレビュー: エンジニアが書いたプログラム(コード)に間違いやバグがないか、他の人(先輩など)がチェックすること。学校のテストの答え合わせみたいなもの。
※4 クライアント: アプリやシステム作りを「依頼してくるお客さん」のこと。「もっとこういう機能にして!」と無茶振りをしてくることも少なくない。
※5 PM / PjM: 開発チームの「監督」や「指揮官」にあたる人。「いつまでに、誰が、何を作るか」を計画してチームをまとめ、スケジュール通りに完成させる責任を負う。作中の天宮がこのリーダー役にあたる。
※6 要件定義: システムを作り始める前に、「お客さんは何に困っていて、どういう機能があれば解決できるか」を話し合って決める一番はじめの超重要ステップ。ここが適当だと後で地獄を見る。
※7 エンジニア(プログラマ): 設計図(仕様書)をもとに、実際にソースコードを書いてシステムやアプリを作り上げる職人。主人公の小林がこれにあたる。
※8 タスク: 「やらなきゃいけない一つひとつの作業」のこと。「ログイン画面を作る」「ボタンの色を変える」など、プロジェクトを完成させるためにこなしていくクエストのようなもの。
※9 GitHub: 世界中のエンジニアが自分の書いたプログラム(コード)を保存・共有するための超有名なウェブサービス。他の誰かが作った便利なプログラム(アプリ)が無料で公開されているため、それを見つけて自分の仕事に活用することもよくある。
※10 ピクセル / サンプリング: ピクセルは画面を構成する「めっちゃ小さい光る点」。サンプリングは、現実の景色などをデジタル(ピクセルの集まり)に変換するために情報を抜き出す作業のこと。
※11 プロセス / バックグラウンド(通信): スマホでアプリを開いている「裏側」で、見えないところで動いている仕事や通信のこと。LINEを開いてなくても通知が来るのはこれのおかげ。
※12 パッチ(修正パッチ): プログラムにバグ(欠陥)が見つかったときに、その穴をふさぐために後から当てる「修正用の絆創膏(追加データ)」のこと。「アプデが入った」とほぼ同じ意味。




