表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
新卒エンジニア、観察ノートを開く(中巻) 両輪を、回す  作者: 音無 凪


この作品ページにはなろうチアーズプログラム参加に伴う広告が設置されています。詳細はこちら

PR
17/29

第47話「金曜夜、ロード中で止まる画面」

この物語はフィクションであり、登場する人物、団体、地名、企業名等はすべて架空のものです。実在のいかなる存在とも関係ありません。

 九月の第一週の金曜日、夕方五時三十分。


 ヨキエル株式会社の三階のフロア。チームAのいちばん奥、リリース管理用のホワイトボードの前に、僕はMacBookを抱えて立っていた。


 ホワイトボードには、今夜二十一時予定の本番リリースの案内が、青いマーカーで書かれていた。


「9/5(金) 21:00 本番リリース」


「対象: みなと信用金庫様 業務システム 顧客台帳機能改修(リリースv1.8.4)」


「ヨキエル側 担当: 桐谷蒼太/レビュー: 白瀬凪不在(別案件、深夜帯不可)」


「ヨキエル側 承認: 諏訪千絵マネージャー(移動中、二十一時前後に合流予定)」


「先方リリース確認チーム: みなと信用金庫システム部 川島浩二部長/同 岸隆志(三年目)」


「ロールバック判断: 現場(桐谷蒼太)が材料整理/諏訪マネージャーが遠隔承認」


 いちばん下の「現場が材料整理/諏訪が遠隔承認」の二段。先月、白瀬さんと諏訪マネージャーで決めた新しい運用だった。


 ……新人に判断のすべてを乗せない。先月の運用変更の、ひとつ目の改善。


 胸の奥で言った。


 ヨキエルがみなと信用金庫の業務システムを保守し始めて、十数年。川島部長は、その十数年の途中から先方の担当として入った人だった。諏訪マネージャーが先方を担当して、もう七、八年。十年来のお付き合いの、いまの真ん中の世代に、僕は二年目で接続していた。


 今夜のリリース、ヨキエル側は僕単独。白瀬さんは今週から別案件の深夜の調査対応に入っていて、二十一時の時間帯には立ち会えない。諏訪マネージャーは午前中に別のお客様への訪問アポイントがあり、夕方五時の時点ではまだ会社に戻っていなかった。


 先方の確認チームも、川島部長と岸さん。岸隆志さんは僕と同世代の信用金庫のシステム部の三年目。地元の港川市出身、地元採用、内向的で観察型、と諏訪マネージャーが先週ぽつりと言っていた。「桐谷くんの二歳上、感じはちょっと似てる」と。


 それは、先月末の火曜日の午後、諏訪マネージャーの「九月、近いもう一回ある」のあの間の、続きだった。


 


 夕方六時。


 僕は自分の席でMacBookを開き直して、リリース手順書をもう一度確認していた。


 手順はぜんぶで十五ステップ。ステップ1、本番DBのバックアップ。ステップ2、メンテナンスモードのON。ステップ3、新バージョンのデプロイ。ステップ14、メンテナンスモードのOFF。ステップ15、リリースノートのConfluence更新。


 Pythonのデプロイスクリプトは、白瀬さんと二週間前に二回、ステージング環境で確認済みだった。手順書も白瀬さんと三回、レビュー済み。手順は揃っていた。


 ただ、今回はUATと本番リハーサルが省略されていた。


 UATというのは、ユーザー受入テストのこと。先方のシステム部のメンバーが本番リリース前に動作確認を行う工程。本番リハーサルというのは、本番相当環境でリリース手順を一度実演してみる工程。両方とも、業務影響の大きい改修では双方参加で実施するのが標準だった。


 ただ今回、先方は九月初めの繁忙期だった。月末の決算前で、信用金庫のシステム部は人手が薄かった。今回の顧客台帳機能改修は、過去のリリースで実害が出ていなかった機能の延長だった。両社で「軽微なリリース」と判断し、UATと本番リハーサルを省略した。NFR、つまり非機能要件のうち、データ集計サブシステムの応答時間は契約に明記されていなかった。


 ……揃っているはず。


 内心でつぶやいた。


 「はず」という言葉の、湿った響きを、僕は確かめた。「はず」というのは、まだ不安が残っている言い方だった。


 一年前、初めて自分のコードが本番に乗った日のことを、ふと思い出した。あのときは、ただ嬉しかった。自分の書いたものが、現実の向こう側で動く。その手応えだけが、胸にあった。


 今夜は、その同じ「本番」を前にして、不安のほうが先に立っていた。本番という言葉は、この一年で、嬉しさだけの言葉ではなくなっていた。


 


 夕方七時。


 森山くんが、僕の席のななめ後ろから声をかけた。


「桐谷さん、今夜二十一時の本番リリース、ですよね」


「うん」


「お一人ですか」


「うん。白瀬さん別案件、諏訪さん移動中」


「お疲れさまです」


「ありがとう」


「私、何かお手伝いできることありますか」


「いや、森山くんは先に帰って」

「明日もし何かあったら、月曜日に手伝ってもらうかもしれない」


「はい。もちろんです」


「ありがとう」


「桐谷さん、無理しないでください」


「うん」


 森山くんは軽く頭を下げて、自分の席に戻り、机を片付け始めた。


 森山くんの「お手伝いできること、ありますか」の一行は、ストレートだった。そのストレートさは、僕が一年目のいちばん最初の月、白瀬さんに置こうとして置けなかったものと似ていた。森山くんは、二年目の僕にちゃんと置けている。


 その置けている事実を確かめた瞬間、僕はリュックのストラップのところに、足場の感触を覚えた。


 


 夜八時三十分。


 フロアのほとんどの席は、もう空になっていた。立花さんの席も空。古川先輩の席も空。残っていたのは、僕のリリースの立ち会いと、フロアの隅の別チームの二、三人だけだった。


 諏訪マネージャーから、Slackでダイレクトメッセージが一通来ていた。


「桐谷くん、いま戻ろうとしてるけど市内、渋滞」


「リリースの二十一時前に間に合うか、ぎりぎり」


「もし間に合わなかったら、現場で材料整理。判断は私が遠隔で引き取る」


「リリースは無理しないでいい。何か迷ったら、私のスマホにすぐ電話」


「電話、いつでも出る」


 諏訪マネージャーは、自分の立ち会いの隙間を僕のほうに伝えていた。信頼と、迷ったらすぐ電話の二つが、静かに並んでいた。


「了解です」


 僕は短く返した。


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


「もし迷ったら、電話します」


「うん、よろしく」


 諏訪マネージャーから、すぐレスが来た。


 


 夜九時、五分前。


 僕はホワイトボードの脇のリリース管理用の丸テーブルに、MacBookを置き直した。二画面の外部モニターを接続し、ターミナルのウィンドウを五つ並べた。左の画面に本番DBのステータス、右の画面にデプロイの進行状況。


 社内Slackのリリース用のチャンネル「release-minato-09」を開いた。チャンネルに一行、入力した。


「21:00 リリース開始、対応者: 桐谷蒼太」


「白瀬さん別案件、不在」


「諏訪マネージャー移動中、十五分後到着予定」


 送信。


 チャンネルのメンバーはぜんぶで五人。諏訪マネージャー、白瀬さん、僕、それから先方のみなと信用金庫システム部の川島部長と岸さんの二人。


 川島部長から、すぐレスが来た。


「了解しました。本番リリース、よろしくお願いします」


「弊行側、本番反映の最終確認はこちらでも二十二時に行います」


「岸が画面側、私がログ側で見ます」


「桐谷さん、何かありましたらご連絡ください」


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


 続けて、岸さんから一行。


「岸です。よろしくお願いいたします」


 川島部長のメッセージは、丁寧で落ち着いていた。たぶん五十代後半の信用金庫のシステム部長の、長年の落ち着きだった。岸さんの「岸です」の一行は短いが、川島部長の落ち着きの隣に、ちゃんと薄く並んでいた。


 ……川島部長、岸さん、ちゃんと信頼してくれている。


 胸の内でつぶやいた。


 その確かめが、僕の肩の上の責任の重さのかたちを、もう一段軽く押し下げていた。


 


 夜九時、ちょうど。


 メンテナンスモードのONを、コマンドで実行した。ターミナルの画面に緑色のOKの文字が置かれた。ステップ1、ステップ2、終了。


 ステップ3、新バージョンのデプロイ。コマンドを実行する。画面にぱらぱらとデプロイのログが流れた。ログの最後に「Deploy completed successfully」の一行が置かれた。ステップ3、終了。


 ……順調。


 口の中でつぶやいた。MacBookの画面に軽く寄った。


 九時五分。ステップ4、データベースマイグレーション。コマンドを実行。


「Running migration: 0903_add_customer_metadata.sql」


「Migration completed」


 ……完了。


 ステップ5、ステップ6、ステップ7、順に実行。


 九時十二分。ステップ8、メンテナンスモードのOFFの手前。本番疎通確認。簡単なヘルスチェックAPIを叩く。待つ。画面に「200 OK」の応答が戻ってきた。続いてもう一回。「200 OK」。もう一回。「200 OK」。三回ぜんぶ、「200 OK」。


 ……いける。


 胸の奥でつぶやいた。


 ステップ9、追加の機能のAPI疎通確認。コマンド。応答。「200 OK」。


 ステップ10、ステップ11、追加の関連APIの確認。ぜんぶ「200 OK」。


 ステップ12、ステップ13、ステップ14、メンテナンスモードのOFF。コマンドの実行。緑のOK。


 ステップ15、Confluenceリリースノートの更新。本番反映完了の一行を入力した。


「v1.8.4 本番反映完了、9月5日(金)21時28分」


 九時二十八分。社内Slackのリリースチャンネルに、僕は一行入力した。


「リリース完了。22時の弊行側最終確認、よろしくお願いします」


 送信。すぐに川島部長からレス。


「お疲れさまでした。22時の最終確認、こちらで対応します」


 諏訪マネージャーから、別途DM。


「桐谷くん、お疲れさま」


「会社、もう少しで着く。一緒に22時の最終確認、待つ」


 ……いけた。


 内心でつぶやいた。


 両手を机の上に軽く置いた。肩の力を抜いた。MacBookの画面、ターミナルの緑のログの青さが、目に染みた。息をゆっくり吐いた。


 


 夜九時四十五分。


 諏訪マネージャーがフロアに入ってきた。


「桐谷くん、お疲れ」


「お疲れさまです」


「いま十時前。間に合った」


「リリース、ステップ15まで全部緑」


「はい。Confluence更新、しました」


「うん」


 諏訪マネージャーは、丸テーブルの隣の椅子に座った。


「桐谷くん、コーヒーいる?」


「お願いします」


「自販機の温かいの、持ってくる」


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


 諏訪マネージャーは、給湯室のほうに消えた。


 僕はMacBookの画面を、もう一度上から下まで見直した。


 ターミナルの緑のログの最後に、「200 OK」の応答が三回並んでいた。ぜんぶ緑。緑の向こう側、本番反映、完了。


 ……。


 ターミナルの画面のいちばん右、APIの応答のログ。もう一度、目を凝らした。


 「200 OK」。「200 OK」。「200 OK」。


 三回ぜんぶ、「200 OK」。ぜんぶ緑。なのになぜか、奥のところで湿気がかすかに残っていた。


 ……何か、見落とした。


 胸の内でつぶやいた。


 「見落とした」のかたちは、まだぼやけていた。ぼやけたまま、僕は画面の前で首を傾けた。


 


 夜十時。


 諏訪マネージャーが、温かい缶コーヒーを僕の丸テーブルの隣に置いてくれた。


「お疲れ」


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


「川島さん、二十二時の最終確認もうすぐ」


「はい」


 諏訪マネージャーは、自分のMacBookを、丸テーブルの僕の隣に開いた。


 社内Slackのリリースチャンネルに、川島部長から二十一時五十八分にメッセージが来た。


「二十二時の最終確認、開始します」


「岸が画面側、私がログ側で見ます」


「うん、よろしくお願いします」


 諏訪マネージャーが、即レス。


 二十二時、ちょうど。二十二時五分。二十二時八分。先方から、応答がなかった。十分、過ぎた。


「諏訪さん、まだ応答が来ません」


「うん」


「ちょっと長いね」


「いつもは五分くらいで最初の応答が来るのですけれど」


「うん」


 諏訪マネージャーは、画面を見直した。


 二十二時十二分。岸さんから、社内Slackに一行入った。


「岸です。画面が応答しません」


 続けて、もう一行。


「顧客台帳の画面、ロード中で止まったままです。五分、応答が戻ってきません」


 すぐ川島部長から。


「諏訪さん、桐谷さん」


「弊行のテスト端末でも、同じ症状」


「もしかして本番反映で、何かありましたか」


 僕の奥が、ぐっと押し上げられた。


 ……戻ってきません。


 胸の奥でつぶやいた。


 僕はターミナルの画面のAPI応答ログを、もう一度確認した。


 「200 OK」、「200 OK」、「200 OK」、三回ぜんぶ緑。なのに、岸さんの側で画面がロード中で止まっている。


 ……何かがずれている。


 内心で言った。


 諏訪マネージャーが、こちらに振り返った。


「桐谷くん、僕らのAPIのヘルスチェックは緑」


「はい」


「ただ、向こうの画面が戻ってこない」


「はい」


「APIと画面の間に、何か別の層がある」


「層」


「うん。フロントのJSのローディングの層、新バージョンで何か変わった?」

 僕は、画面の向こう側で、自分が書いたフロントエンドのJavaScriptの変更を思い出した。


 v1.8.4で、顧客台帳の検索画面のフロントエンドに、新しい検索条件のリッチな絞り込みコンポーネントを追加していた。その新しいコンポーネントは、追加のAPIを、画面ロードのいちばん最初のところで同期的に呼び出していた。同期的に呼び出すAPIは、本番環境のいちばん奥のデータ集計用サブシステムの応答を待つ形になっていた。


 データ集計用サブシステムは、ステージング環境では応答二百ミリ秒以内だった。本番環境では、データの量と同時接続の負荷がまったく違っていた。


 ……ステージングと本番、データの量が違う。


 胸の内でつぶやいた。


 僕は、ステージングのデータ集計用サブシステムの応答二百ミリ秒と、本番のデータ集計用サブシステムの応答時間を、ぜんぜん確かめていなかった。確かめずに、デプロイした。本番のデータ集計用サブシステムの応答時間は、たぶん十秒以上かかっていた。その十秒以上の応答待ちの間、岸さんと川島部長の画面は、ロード中で止まっていた。


 ……このまま月曜朝の業務開始時刻まで直らなければ、みなと信用金庫の窓口の向こうで、お客様の応対が止まる。


 胸の奥で繰り返した。


 みなと信用金庫の業務時刻は、平日の朝九時から十五時まで。今夜は金曜日の二十二時。窓口はもう閉まっている。深夜帯は業務システムの応答停止が直接の実害にはならない。ただし月曜の朝九時を迎える時点で画面が止まっていれば、窓口の担当者の手が止まり、お客様をお待たせすることになる。


 五月の1on1で諏訪さんが見せてくれた数字が、ふっと裏側から立ち上がった。顧客満足度八十パーセント。解約率三パーセント。あのとき僕は、自分のコードは数字に繋がっていると、頭で頷いた。いま、その繋がりが逆向きに動きかけていた。僕の足した一行が、月曜朝に画面を止めかねない。


 最初に胸をついて出たのは、自分を守る側の声だった。UATは省いた、でもそれは両社で合意したことだ。本番リハーサルもやらなかった、でもそれも先方の繁忙で双方が決めたことだ。応答時間は、契約にも書かれていなかった。だから、これは僕だけのせいじゃ……。


 ……だから、なんだ。


 言いかけた逃げ場が、自分の奥でぐしゃりと潰れた。同期的にAPIを呼ぶ一行を足したのは、僕だ。本番の応答時間を確かめずにデプロイしたのも、僕だった。並べた言い訳の真ん中に、結局、自分の手だけが残った。それはたしかに、僕個別の判断ミスだった。


 ただ、逃げ場を潰したあとで、もうひとつの像が、今度は静かに立ち上がった。今回はUATと本番リハーサルが省略されていた。NFRの応答時間は契約に明記されていなかった。本来であれば、双方参加の本番リハーサルで気づけたはずだった事象。それは僕個別ではなく、両社の確認プロセスの欠如でもあった。言い訳としてではなく、事実として、それも確かにそこにあった。


 ……自分のミスと、組織のプロセスの欠如、両方。


 内心で言った。


「諏訪さん」


「うん」


「僕、ステージングと本番のデータ集計用サブシステムの応答時間、確認してませんでした」

「本番の応答、遅いです」


「うん」


「新しいコンポーネントが同期的に呼び出してるAPI、データ集計用サブシステムの応答待ちが長いです」


「長い」


 諏訪マネージャーは軽く頷いた。


 僕は、ぐっと息を吸い直した。判断の材料は、いま僕の手元のターミナルの中に揃っていた。


「諏訪さん」


「うん」


「これ、僕が書いた箇所です。いま画面ロード中で止まっていて、月曜朝の業務開始までに直らなければ、窓口の対応が止まります」


「うん」


「前バージョンへのロールバックを提案させてください。実行コマンドは手順書のステップ16として用意してあります」


 諏訪マネージャーは、僕のほうにゆっくり目を向けた。間が、一拍置かれた。


「桐谷くん、いまちょっと落ち着いて」


「はい」


「材料、ありがとう。判断は、私が引き取る」

「桐谷くんが書いた箇所だ。判断材料を整理してくれて助かった。ただ、本番のロールバックの判断は、組織として私が引き取る範囲」


「はい」


「ロールバック、する」


「ロールバック」


「うん。月曜朝までに直しきれる保証は、今夜の時点では立たない。すぐ前のバージョンに戻す」


「はい」


「桐谷くん、ロールバックのコマンド、実行お願い」


「はい」


 諏訪マネージャーは、社内Slackのリリースチャンネルに、すぐメッセージを入力した。


「川島さん、岸さん、ロールバック、いま開始します」


「五分以内に前バージョンに戻します」


「お待ちください」


 川島部長から、すぐ応答。


「了解しました。お待ちします」


 


 夜二十二時十八分。


 ロールバック、開始。コマンドの実行。画面のターミナルに別のログが流れ始めた。


「Rolling back: v1.8.4 -> v1.8.3」


「Restoring database backup: 0905_20:59」


「Restoring application files」


「Restoring frontend assets」


 ロールバックのログは、長く流れた。二十二時二十一分。二十二時二十三分。二十二時二十六分。画面に「Rollback completed」の一行が置かれた。


「諏訪さん、ロールバック完了」


「うん」


「川島さんと岸さんに連絡」


 諏訪マネージャーが、すぐ入力した。


「川島さん、岸さん、ロールバック完了しました」


「業務システム、前バージョンv1.8.3で応答が戻ったか、ご確認お願いします」


 岸さんから、応答。


「岸です、確認します」


 二十二時二十八分。岸さんから、二通目。


「岸です。画面の応答が戻りました」


「顧客台帳、正常に動作しています」


 続けて川島部長から。


「ありがとうございます。月曜朝の業務開始までに復旧が必要な深刻な状態でしたが、夜間に発覚できて幸いでした」


「これより別途お電話入れさせていただきます」


 ぜんぶ、戻った。


 戻ったのに、川島部長の最後の一行、「別途お電話入れさせていただきます」が、僕の奥の湿気をもう一度ぐっと押し上げた。


 ……電話、来る。


 胸の内でつぶやいた。


 


 二十二時三十分。


 諏訪マネージャーの内線電話が、ぴりりと鳴った。諏訪マネージャーは、丸テーブルの隣のデスクの内線電話の受話器を、ゆっくり取った。


「はい、ヨキエルの諏訪です」


 しばらく、無音。


「川島さん、ご連絡ありがとうございます」


 無音。諏訪マネージャーの顔は、ほんの少し翳っていた。けれど、こわばってはいなかった。


「はい」


「はい。月曜朝までの対応、すぐ仕上げます」


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


 川島部長の声は、こちらからは直接聞こえなかった。ただ、諏訪マネージャーの受話器を握る手は、湿ってはいなかった。十年来のお付き合いの、いつもの握り方だった。


 ふと、川島部長の低い声が、受話器の隙間から、こちらにかすかに漏れた。


「諏訪さん、夜間に発覚できたのは幸いでした。ただ、これは月曜朝までの対応を、すぐに相談したい」


 間。


「桐谷さんは、お疲れだと思います。無理はさせないでください」


 僕の奥がぐっと押し上げられた。「無理はさせないでください」。川島部長の一行は、苦情ではなく、こちらの若手への気遣いのぬくもりだった。


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


 諏訪マネージャーの低い声。


「桐谷は、私が見ます」


「すべて、私の管理責任です」


「明日の朝、再発防止策のドラフトをお持ちします」


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


「改めてご連絡いたします」


「失礼いたします」


 諏訪マネージャーは、ゆっくり受話器を下ろした。内線電話の置く音が、かちりと丸テーブルの隣に置かれた。


 


 諏訪マネージャーは、僕のほうに振り返った。


「桐谷くん」


「はい」


「大丈夫?」

「立てる?」


「はい」


 僕は軽く頷いた。頷いたけれど、口はまだ開かなかった。「すみません」の衝動が、奥にまだ残っていた。


「桐谷くん、いま何も言わなくていい」

「座って」


「はい」


 諏訪マネージャーは、丸テーブルの隣の椅子を僕のほうに押し出した。僕はゆっくり椅子に座った。


「桐谷くん、まず修復作業」


「修復」


「うん。いまロールバックが終わって、業務システムの応答は戻った」


「はい」


「ただ、月曜朝の業務開始までに、本番反映の設計をもう一度見直す」


「はい」


「新しいコンポーネントの同期的APIを、非同期に変える」

「データ集計用サブシステム、本番の応答時間を計測する」


「はい」


「月曜日のお客様向けの再発防止策のConfluenceのページ、これから書く」


「Confluenceのページ」


「はい」


「桐谷くん、明日土曜日の朝九時前に、私にドラフト共有して」


「はい」


「無理はしないでいい。書けるところまで」


「はい」


「明日の午前、私が隣でレビューする」


「はい。お願いします」


「うん」


 諏訪マネージャーは軽く頷いた。その低い声は、丸テーブルの奥の内線電話の隣で、丁寧に置かれていた。


 


 修復作業、夜二十三時。


 諏訪マネージャーは自分の席に戻り、別の社内Slackで、上司の島田副部長への第一報を書き始めた。


 僕は丸テーブルの隣で、本番反映の設計の見直しを、MacBookの白いエディタの画面のまっさらのファイルに、かたかたと書き始めた。ファイルのいちばん上にタイトルを置いた。


「再発防止策ドラフトv0.1」


 v0.1というのは、七月下旬の夜のLT原稿v0.1の続きの、いちばん最初のバージョン番号だった。ただ、今夜のv0.1は、八月のはじめのLTのv0.1と、ぜんぜん別の温度だった。


 ……v0.1、温度、別。


 胸の奥でつぶやいた。


 画面の白いエディタのいちばん上、まっさらの行に、最初の見出しを置いた。


「1. 障害の経緯」


 続けて。


「2. 原因の分析」


「3. ステージングと本番の、データ集計サブシステムの応答時間差(NFRの未明記)」


「4. 同期APIから非同期への変更」


「5. UATと本番リハーサルの双方参加プロセス(両社共同)」


「6. リリース判断のGo/No-Go二名以上同席プロセス」


 項目はぜんぶで六つ。いちばん最後の項目、6を僕はぐっと入力した。


 項目を眺め直した。書き直す前のドラフトの中に、「桐谷の判断ミスの自己分析」を、もう一度書こうかと指が止まった。書きかけて、消した。それは僕個別の内省で、組織として先方に出す再発防止策の中身ではない、と僕の奥のところで一行立っていた。


 その一行は、たぶん二年目の僕がまだ一度も置いたことのない温度だった。湿った重み。その湿気の奥のところに、まだしゃべれない何かが、そっと置かれていた。


 


 深夜零時十分。


 再発防止策ドラフトv0.1の、見出しと項目がぜんぶ揃った。本文はまだ、入り口の書きかけだった。


 諏訪マネージャーが、自分の席からこちらに立ち上がった。


「桐谷くん」


「はい」


「今日はここまででいい」

「もう零時を過ぎてる」


「うん」


「明日の朝九時前、ドラフトv0.1を共有」


「はい」


「寮戻って、休もう」


「はい」


「桐谷くん」


「はい」


「無理しないでいい」

「明日の朝、目が覚めなかったら、私にすぐ電話」


「はい」


「ありがとう」


 諏訪マネージャーは軽く頭を下げた。その頭の下げ方は、僕に向けた労いの向こう側で、川島部長の十年来の信頼を引き受ける重さとかすかにつながっていた。


 


 深夜零時四十五分。


 僕はMacBookをリュックにしまった。フロアの電気を消し、エレベーターのほうに向かった。エレベーターの内側で、鏡の自分の顔を見た。顔は白かった。目の奥に、湿気の残ったかげがそっと置かれていた。


 ロビーの警備員の田所さんは、もう別の夜勤の人に交代していた。夜勤の若い警備員さんが、軽く頭を下げた。


「お疲れさまです」


「お疲れさまです」


 自動ドアの外、深夜零時五十五分。桜並木通り。九月の初めの夜。田所さんが置いてくれた、軽くなった夜の空気。


 その向こう側で、僕の奥の湿気はまだ湿気のままだった。田所さんの軽い夜気と、僕の湿りの二つが、桜並木通りの葉桜の青い葉の揺れのところで、わずかにずれていた。


 足を、寮のほうに進めた。徒歩十二分のルートが、今夜は二十四分くらい長く感じた。足が、重かった。


 


 寮の自分の部屋。


 ドアを開けて、リュックを机の横に置いた。机の電気はつけなかった。MacBookも開かなかった。ノートも開かなかった。


 台所の共用冷蔵庫の前まで行った。けれど、何も食べたくなかった。ペットボトルの水を取り出して、コップに注がず直接ひとくち飲んだ。冷たかった。


 自分の部屋に戻った。布団に横になる。目を開いたまま、天井の白い四角のかたちを見上げた。


 目を軽く閉じた。暗闇の奥に、ターミナルの緑の「200 OK」の三回のログの青い文字が、ぽつりと置かれていた。「200 OK」の緑の向こう側に、岸さんの「岸です。画面が応答しません」の一行が、置かれていた。そのすぐ隣に、川島部長の「桐谷さんは、お疲れだと思います。無理はさせないでください」の低い一行が、置かれていた。


 三つの一行は、暗闇の奥でひっそり並んでいた。その並びの中で、僕の湿った口の「すみません」の、まだ出していない衝動の湿気が、かすかに留まっていた。


 目の奥はまだ湿ったまま。頬はまだ乾いたまま。今夜は、留まったままゆっくり眠りに落ちていくしかなかった。


 目を、もう一度閉じ直した。緑の「200 OK」の青い文字は、まだ消えなかった。消えないまま、僕は夜のいちばん奥の薄い眠りに落ちていった。


評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

↑ページトップへ