修羅場でわかる、データ移行の大変さ

投稿日 : 2019年12月13日   更新日 : 2020年05月21日
カテゴリー : IT系物語 / 小説
修羅場でわかる、データ移行の大変さの画像

 冬はイルミネーション。寒空の中、暗闇には不似合いな豪華さを添え、道行く人の寒さを和らげるが如く、周りを煌びやかに灯す。その様、まさに神々の訪れの如き美麗である―

 そんな、まるで古語にも出てきそうな文句がすらすらと出てきてしまいそうなほど、冬の街は夜になると賑やかだ。冬空の中で照らされる灯りは、夜にあまりに不似合いで、しかし夜だからこそ美しい。

 11月を過ぎる頃、あらゆる街や商店がこぞって外に電飾を付け、夜の間灯し続ける―ここに何かがあります、と誇示するかのように。街を挙げた飾り、イルミネーションは地元の人から観光客まで集まるスポットとなる場合もあるほどだ。

 私は、この街のイルミネーションを見るとつい思い出してしまうことがある。

 ―年末に降って沸いてきた、あの地獄の作業を。

 今の私は既にその会社にはいないのに、この街にその会社はまだあるし、新人の初めての冬だったこともあって、記憶から抜け落ちることはない。

 カラン、とベルの音が鳴った。

 「こんばんわ。」
 「いらっしゃい。佐野さんが来ると、水曜日ももう少しだって合図だね。」
 「なんですか、その人時報みたいなの。」

 軽口を叩きながら、いつものカウンター席、店の奥の壁際へ着く。
 私、佐野香代子(かよこ)は中々の酒好きだ。毎週水曜日、週の半ばの17時を少し回った頃にこのバーに来て、赤ワインとチーズを頼み、あとは気分に任せながら一人飲む。店を後にする時間は大抵閉店間際。

 「いつもの。」
 「ミディアムの赤ワインと、チーズ盛り合わせですね。」

 17時を少し回った程度では、客はまだいない。すぐに「いつもの」が運ばれてくる。

 「どうも。」

 軽く会釈をして、私は早速赤ワインを口にする。

 ミディアムの、軽くはないけれど重厚でもない、丁度いい渋さと甘みが口の中を満たす。

 12月、もう何年前になるだろうか。あの出来事をなんとなく思い出し始めた―

* * *

 ―私の職場はその中の一角にあった。なんてことのないビルの12階。この辺りでは高層階になるここでは、窓を覗けば地上にいるよりも多くの、ぴかぴか輝くものが嫌というほど目に入る。

 時期は12月が始まった頃。クリスマス、年末、年始に向けて街は煌びやかに飾り立てられていく一方で、私と職場の空気は荒み切っていた。現時点で荒み切っているのだから、これから日数が進んでいったら年末には荒野になっているのではないかというほどだ。

 今日はまだ荒野にはなっていないはず…そう思い、信じ、扉のカードリーダーに社員証をかざした。ピッという無機質な音がして、がちゃんと解錠される。

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

 若干重い扉を開き、なんとも元気のない、聞こえるかどうかもわからないくらいの声を出して入室する。何となく会釈が返されるだけで、特にあいさつを返されるわけでもない。4月に入社したときはこれでいいのかと驚いたが、人間慣れるもので今では特に疑問も感じない。

 さて、昨日も中々荒み切っていた職場はというと、今日も順調に荒んでいた。

 自分の席がある、部屋の壁側、扉から離れた場所にあるシステムの島へ赴くと、その荒み具合は昨日と変わらず存在しているようだった。

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

 やはり誰が返すわけでもないが、一応は挨拶をして自分の席へ座り、パソコンの電源を入れる。起動までしばらく時間がかかるので、その間にマフラーを外し、コートを脱ぐ。その間にも人は一応は通るが、軽く会釈をして通り過ぎていけばいい方だった。

 毎朝、これなのだから本当に出社が憂鬱になる。何度出社拒否しようかと数えるのも馬鹿らしいほどだ。

 11月まではそれでもまだ良い空気感だったが、やらなければいけない仕事が増大した今は辛うじて存在していた「良い空気」は消し飛んでいた。

 「朝会始めまーす。」

 メンバーがある程度出社し終え、時刻が9時を回ったところで、全員が起立して朝会が始まる。始めは一応はお互いのスケジュールを確認し明らかに負担があるようだったら助け合うという意味合いがあったはずだが、今となっては「今日やることを公言するだけ」だ。明らかに負担が集中しているだろうと感じても、それは皆同じで助け合う余裕は皆無だ。惰性で行われているような、無意味なものとなっている。朝会が事業仕分けでなくなってくれないかなと思うほどだ。

 「今日は竹下さんが休み連絡来ています。あとはー…来てるね。じゃあ今日のスケジュールを。僕は…」

 古株だからリーダーね、という何とも安直な決め方で決まったリーダーが、自分のスケジュールを述べて次へ振る。今日のスケジュールを一言で述べた後、最後は私だ。

 「今日は清水工業様案件のデータ移行の準備をしていきたいと思います。以上です。」

 最後の私の発言後、今日も一日頑張りましょうとリーダーが言って、朝会は終了、一斉に着席した。

 システムを作る人は一日ずっとパソコンに向かっていることも珍しくない。むしろそうしていないと効率が悪いくらいだ。この後はそれほど他人と話さなくても一日が終わるので、気楽と言えば気楽だ。

 ただ、気楽ではないのはこの割り振られた仕事だ。

 ―データ移行である。

 お客様が使っていたサイトのウェブページデータを、次に納品する我が社のシステム仕様にデータを変換するという仕事だ。データベースの情報として持ってこられたそれを、我が社のシステムに合うようにデータの構成を変え、リニューアルで正しく動作するように行う。

 手順としては以下のようになる。
 
 ①現時点で存在しているデータベースのテーブルを開発環境へ展開する。
 ②文字列からデータ化する項目の確認し、対応表を作る
 ③入力されている住所がある場合、緯度経度のデータを取得して保存するプログラムを組む
 ④新システムに入れるための、新仕様に沿ったCSVファイルを作成するプログラムを組む
 ⑤新システムのインポート機能を使い、作成したCSVファイルを流し込む
 
 手順を文章にするととても簡単だが、これが全行程においてとてつもない作業量である。到底4月入社の新人が一人でやる作業ではないのでは?と思ってしまうものだ。

 しかし入社してからの7か月、過去にもデータの移行作業は3回ほどやってきて、これが4回目となる。その中でも群を抜いて難しいものになる予想がついていた。

 割り振られた以上やるしかないし、他の先輩方は開発の仕事で手一杯なので他にやる人もいないので新人が担当するのだが、データは間違っていたら見た目に間違って出てしまうものである。

 例えば都道府県のデータをコードで持つことにする場合、北海道を1とし、沖縄を47、その他を99とすることが多かった。これが万一1つずれて登録されてしまうと本来は北海道の住所なのに、「青森県札幌市」と、全くの嘘の情報をサイトに表示してしまう可能性がある。大問題、下手したら客先と損害賠償問題に発展だ。

 旧データは文字列だが、新仕様でコード化される例はこれまでも結構あった。今回も例外なくそれが存在する。簡単なようで、「例外文字列があった」「存在しないはずの文字列があった」だの、問題が多発する。

 それから地図表示をするために、住所から緯度経度のデータを取得する必要がある。GoogleのジオコーディングAPI(※注1)を使って取得し、その値を保存していく。これの問題は「住所が正しく入力されていない」場合に正しく取得できないことだ。取得できたとしても、微妙にずれることも多い。既に緯度経度が入っている場合でも、世界測地系と日本測地系で緯度経度の情報が異なるのでその点も注意しなければならない。
(※注1 2019年現在、Google APIはアクセス回数が多いと有料になります。こういった開発用途で使用する場合でも、リクエスト回数が多くなってしまう可能性が十分にあるので、使用できないと思った方が良いでしょう。尚、佐野の若い頃は無料で使用して必要な情報を取得できました。)

 そういった問題があるのなら、手入力でやった方が良いのではないかと思わなくもない。しかし、その件数が1万を超える場合はどうだろう。全データを手入力したとして、順調にいったとして1データ5分。1時間に12件、8時間勤務で96件だ。実際は後半になるにつれて能率は下がるし、問題があるデータについては5分以上かかるので、1日50件できればいい方だろう。その場合、1人でやったら200日かかる。とても現実的な日数ではないし、何より納期は25日までなので到底間に合わない。それに人の手で入力するのはどうしたって間違いが発生するので、その確認コストもかかってくるので、どう考えても効率的ではない。物理的な人員を現状割けないので、人海戦術で早く終わらせることも難しい。

 それなら準備に時間がかかったとしても、担当者を作ってデータで一括取り込みをしてしまった方がまだ効率的、という話だ。開発の仕事ではないけれどプログラムは組むし、新システムのデータに詳しくない人にやらせても進まないだろう。ということで、丁度開発に区切りがついて、次の仕事を決めかねていた新人の私に白羽の矢が立ったのだった。私としては「またか」という印象だ。

 そうこうしているうちにパソコンが起動した。開発環境のphpMyAdmin(※データベースをブラウザ上から操作できるシステム)へアクセスする。昨日もらったデータベースのSQLをエクスポートする。完了したところで、中身を確認した。

 テーブル名で中身を予想し、一つ一つ閲覧していく。連日の残業で寝不足なのもあって、作業は遅々として進まない。メモを取りながら、船を漕ぎながら、時に休憩を入れながらゆっくりと進めていく。良くも悪くも監視している人はいないので、多少遊んでいても居眠りしても、とにかく終わらせればなんでもいい。今日はデータの確認をして、文字列からコード値へ変更する表を作るところまでが現実的なラインだろう。

 ちらと周りを見れば、眠い頭を叩き起こして何とか仕事をしていますという人、エナジードリンク系を飲んでとにかくパソコンの画面に向かう人、慌ただしく社内を飛び回る人などがいる。

 仕事ばかりで睡眠時間も少なく、ほとんど掃除のされないフロアでは埃もたまる。見えない埃と菌がたくさん舞っていそうだ。冬ということもあり、何かと咳込んでいる人が多い。予防のためにマスクをして仕事をしているものの、果たしてどれほどの効果があるのか謎だ。

 更に空調が回っているとはいえ、社内サーバーがシステムの島にあるせいで年中冷房。暖房など入らない。サーバーが発する熱があるとはいえ、寒い物は寒いし、足元は底冷えする。セキュリティエリアで高層階ということもあってか、窓を開けることはない。ここでは予防の一つである換気という基本的概念はどこかへ消し飛んでいるようだった。

 ―与えられた仕事はこなさなければ。今日は早く帰りたいな。みんなが残業してる中帰るの、難しいから20時くらいかな…それでも定時から2時間延長なんだけど…。

 12月17日。そうして何とか変換表を作り、実際に変換してみて想定していなかったものは逐一確認し、新システムへデータを入れるためのCSVファイルを出力するよう加工をしていた。納期まであと一週間ほど、このままいけばデータを入れて確認まで問題なくできるはず、と見通しが立ってきた頃だった。

 「追加データが、1万件!?」
 「そう、先方ができるだけ新しく登録したデータを入れたいって言いだして…」
 「それが1万件もあるっていうんですか?」
 「そう。大体の加工手順はできているみたいだし、大丈夫だよね?」
 「大丈夫…だと思いますけど、その、確認作業とか、今以上に想定外の物が来たときや、緯度経度の情報が取れないなどが発生すると思うので…」

 ―大変です、難しいです。あとデータ加工前の移行したいデータを精査するのにPM(プロジェクトマネージャー)の仕事も増えますけど。その言葉は何となく言ってはいけない気がして、言えなかった。

 今は「③入力されている住所から、緯度経度のデータを取得して保存するプログラムを組む」ところの、住所が途中までしか入っていないものについては緯度経度のデータを入力しない処理を入れて、その動作を確認している段階だった。「④新システムに入れるための、新仕様に沿ったCSVファイルを作成するプログラムを組む」も大体できてはいるが、まだテストのデータ移行を試してはいない。今日の午後くらいでようやく試せるかな、と思っていた矢先に「追加1万件」だった。

  「…やらないといけないんですよね。」
  「まあね。」

  聞いても当たり前の回答だ。やらないという選択肢はそもそも会社員、下っ端にはない。

  「その追加データはいつ来るんですか?」
  「まだ来てないんだよね。いつ来るのかちょっとわからないんだけど。」
 ―いつ来るのかわからない!
  「え、期限25日ですよね?」
  「そうだねー早めにもらえるように言っておくね。」
  「お願いします…。」

 これは毎日聞いてそれとなく催促しないとぎりぎりでデータを寄こされて泣きを見るパターンだと直感した。毎日この上司、鈴木さんに話しかけて様子を伺わなければならない。非常に面倒だ。そもそも話すことが面倒なのだから…。

 失意の中、自分のテーブルに戻る。画面を睨む。デバッグ途中だったEclipse(※IDA統合開発環境の名称)がブレイクポイントで処理を停止して、変数の中身を表示して停まっていた。

 ―とりあえず、今あるデータは入れられるようにしないと。

 今日中にやらなければ、と思い直す。水筒で持ってきている温かい緑茶を一口飲み、もう一度画面は向かった。

 「あ、落ちた。」

 Eclipseの突然の強制終了。自分用にと供されているパソコンが低スペックのせいか、度々起こることだった。何とか奮い立たせた意気込みが削られてしまい、仕方なく気分転換に、と席を立つ。

 セキュリティエリアの一歩外に出れば、床にカーペットが敷かれて、清掃業者の日々の仕事のおかげでそれなりに綺麗な場所に出る。同じフロアの別会社の人も見かける。オフィスよりは綺麗な空気を胸いっぱいに吸い込み、そのまま吐いた。

 取り込みデータそのものはプログラムが自動で作るのだから、1万だろうと2万だろうと、正直件数はあまり関係ないのかもしれない。しかしそうはいっても「問題なくデータを移行する」作業がなんと難しく、細かいところまで気にしなければならない仕事なのか、それはデータ移行最前線で関わる私がよく知っていた。社内でデータ移行のやり方が確立されているわけでもなかったので、初回のときに自分なりの手順を確立した。この仕事なら私でも大丈夫、とどこかで思っていた。

 …だったのだが。

 今回は予想以上に想定外のデータが多く、ある程度出てからまとめてPMへ確認と確定を仰いでいた。例えば旧データの「製品項目」というカラムに「A製品」とテキストデータで持っているものを、新システムではコードで持つように変更する必要がある。この場合、「製品項目」カラムに入力された「、(読点)」や「 (全角スペース)」「 (半角スペース)」、「\r\n(改行)」、「<br>(HTMLコードの改行)」のを判別して分割し、その中に「A製品」というテキストを見つけたら、新システムの「製品項目」というカラムに「1」を入れる、といったコード変換する。しかし素直にいくばかりではなく、他製品情報もまとめて書いてある場合、例えば「A、B、C製品」と入っている場合もあった。そういったときは追加で「A」と入ってきたときも製品項目に「1」と入れるようにする。

(※変換プログラム例【PHP】
// データベースから旧データの値を取得する
~上略~
$cnt = 0;
foreach($oldData as $ary) {
    $cnt ++;
        foreach($ary as $key=>$d) {
              if($key == ‘product_name’) {
                     // 分割コードを<br>にすべて変換
                     $d = str_replace(“、”, “<br />”, $d);
                     $d = str_replace(“ ”, “<br>”, $d);
                     $d = str_replace(“ ”, “<br>”, $d);
                     $d = str_replace(“\r\n”, “\n”, $d);
                     $d = str_replace(“\n”, “<br>”, $d);
                     $d = str_replace(“<br />”, “<br>”, $d);
                     $d = str_replace(“<br/>”, “<br>”, $d);
                     // <br>で配列にする
                     $strAry = exolode(‘<br>’, $d);

                     $catAry = [];
                     // 配列の中身を確認し、指定の物だった場合はコードを入れる
                     foreach($strAry as $str) {
                             if($str == ‘A製品’ || $str == ‘A’) $catAry[] = 1;
                             if($str == ‘B製品’ || $str == ‘B’) $catAry[] = 2;
                             // 変換したら新コードをカンマ区切りで入れる
                             $newData[$cnt][‘product’] = implode($catAry, ‘,’);
                      }
              }
        }
}
~下略~)

 この製品項目データがなければ、移行後に「このページにはA製品と出てこなければならないのに、ない」といった事態が発生する。単に定型データを変換して移行すればいいわけではなく、膨大なチェックも必要とする、中々に大きな作業である。

 また鬼門と言えるべきは画像データだ。各ページに画像が挿入されていることがあるが、この画像も新システムへ当然持っていく。これは新システムの都合、CSVファイルと一緒に階層分けされた画像を一緒にアップロードして取り込まなければならない。この保存先のパスも決められており、その動的生成と元画像を振り分ける作業(これも当然プログラムを組んで行うのだが)、整合性を確かめる作業もある。地味に面倒だ。

 大きい作業量であるというのに、このPMが入社したばかりで、しかもプロジェクトマネジメントの仕事自体が新人のためか、はたまた客先の担当者がうまく答えられないのか何なのか、理由は私が知る由もないがとにかく回答が遅かった。回答が遅いからと言って私が偏見を持ってこのデータはこれに変更と独断するわけにもいかないので、重要でありながら待ち時間が多いタスクとして、とても煩わしかった。

 ―25日までに終わると思っていたのに。

 窓側に身を寄せると、眼下には煌びやかな景色が映る。クリスマスを控えたイルミネーションがぴかぴか、ちかちかとカラフルに点灯している。

 今日はこのままではとても終わらない。残業続きだ。その上、25日の直前の21日と22日は土日。何となく休めないんだろうなと休日出勤の未来が見えた。

 既に定時から追加2時間とはいえ、残業続きの日々だ。土日も休みはとれているものの、休日はほぼ寝るだけ。火曜には疲れも溜まってきていて相当に眠い。ぼーっとする頭は睡眠をとらないことにはどうにもならない。

 もうすぐ日暮れということもあり、眼下に映る街並みは薄暗くなってきていた。冬は5時を回るともう夜の景色だ。周りが暗くなっていくのに合わせて、イルミネーションの輝きも増していく。

 そう、世はクリスマス。クリスマスを控えている。世間は諸外国のキリスト行事をただの祭りと捉えて何となく浮かれる時期だ。なのに、納期が何故クリスマスなのか。恐らく先方が年末前にはチェックを入れたいからなのだろうけれど、こちらは大迷惑だ。あちらの担当者も迷惑ではないのか?いや、あちらはクリスマスの日に納品してもらって、次の日から確認作業に入ればいいのだから、無関係なのか?発注先が被害を被ればいいと?なんて無慈悲な。作業者が若い男女になる可能性を考慮しないのか。いや年上でも家族でクリスマスなどがあるかもしれない。夕飯は豪華な食事をしに行くかもしれないじゃないか。大体新卒一年目、このうら若い私を、こんなビルに押し込めてひたすら作業させておいていいというのか。

 眠くて思考が怪しくなってきているので、八つ当たりのような言葉も頭に浮かぶ。イルミネーションがその脳内の言葉を聞いて、やーいみじめな奴ー!とでも囃し立てているように見えた。

 私だって、デート行きたいよ。行きたかったよ。当日とは言わなくても、その前の土日で、イルミネーションを見るだけに寒い冬空の下を彼氏と歩いて、楽しみたかったよ。でも今の状況じゃそれすら無理だ。恐らく年末までプライベートなんてものは存在しない。25日を過ぎて、年内に2人でイルミネーションを拝めたらラッキーだ。この「25日」を過ぎるとあっという間に年末正月ムードになる日本では、クリスマスらしいイルミネーションは一斉に撤去され、多少は冬の風物詩として残るイルミネーション…私が彼と見たいのは、一番豪華な、25日までの、クリスマスイベントだと感じる時期のイルミネーションだというのに。無慈悲だ。神など存在しない。

 もともと神を崇めるという信仰など持ち合わせていないが、神などは存在しない。救済者はいないのだ。天才の夜神月(※DEATH NOTE 大場つぐみ原作・小畑健作画の漫画の主人公)でさえ、新世界の神にはなれなかった。到底自分が神になれるわけではないだろう。

 滅茶苦茶な思考をさせたまま、窓辺から身を離し、陰鬱たる仕事場へ戻ることにした。

 ―神など存在しない。そう脳内でリフレインさせ、愛用のiPodで音楽を聴きながら作業する日々が続いた。残業は4時間に増えた。データ移行用のCSVはほぼ完成しているが、これを確認しているとやはり「予想外データ」や「ごみデータ」、「誤って変換したデータ」、「変換しきれていないもの」、「正常に取得できていない緯度経度」、「やっぱりこれ入れておいて追加データ」が発生していた。「誤って変換したデータ」や明らかな「ごみデータ」は気付き次第、修正してファイルを出力し直す。その他のものについては、その度にPMに確認と指示を仰ぐ。「このデータは変換ルールから反れるけれど、廃棄データでいいか、廃棄しないならどのような扱いにするか?」と。そうしている途中で来た、「追加データ1万件」。もうどうでもよくなっていた。

 22時まで社内に残る日々。学生時代に徹夜などしたこともなく、もう限界超えているんじゃないかな、私?と思っている辺りで仮本番環境と呼ばれる場所へようやくデータを移行の「インポート試行」ができる段階に来た。

 このとき20日。3日でここまで漕ぎつけた私も中々すごいと自分で思う。これがうまくいけば、明日は出勤しなくて大丈夫、休める。そう希望がちらと見えた。お昼のお弁当を食べて仮眠を取り、午後から作業再開。

 「…え、止まっちゃう?」

 移行用のシステムにCSVファイルを入れて実行させている間はとにかく待たされる。新システム側で入れたデータをもとに新たなページを生成したり、画像ファイルをアップロードするので時間がかかるのは当然なのだが、それが途中で「落ちた」のだった。

 「件数が多いからじゃないかな?」
 「何件くらいまでなら大丈夫なんですか?」
 「500かそのくらいかな…予想だけど。1000は多いと思う。というか、この仕組み、そんなに大量のデータを入れること想定してなかったと思うんだけど、何そんな使い方するの?」

 この移行用のシステムを開発した人に聞きに行ってみたら、まさかの返答だった。
 一度フォルダ構成とデータを作ればこれで全件入れられて完了だと思っていたのに!
 まさかの返答で、やるせなさを感じて脱力した。

 「そんな使い方、するんです…今私がやってるデータ移行、全部で2万5000件ちょっとあります…」
 「は!?そんなに!?」
 「あるんです…」
 「1万くらいって言ってなかったっけ?」
 「初めはそうだったんですけど、色々あって増えてこうなりました…」
 「そ、そっか…」
 「…500件に分けて入れてみます。それでもだめならもっと減らして…ファイル分割ですね…。」

 もう一度、データの作り直しである。
 プログラムを改変して500件ごとのCSVデータと、各CSVファイルごとの画像データを取り直して、新システムへ入れ直す。午後いっぱい使って夜までやって、明日休めるだろうかの瀬戸際だ。できれば一旦休みたい。でも仮に休めたとしても疲れ果ててしまっているので、デートどころではない。憧れの街のイルミネーションはただの迷惑なやたらと眩しい光にしか見えなくなっていた。

 2万5000件超えを500件ずつ分けて、ファイル数は51になると予想される。51回、流し込み作業やることになる。

 まずは1つ作って取り込んでみた。やはりひたすら待たされる。この間、特に何かをするわけでもなく、ただ画面の進捗を示すバーを眺めている。途中で止まったら件数を減らさなければならないが、幸いなことに、500件のデータは無事に取り込まれたようで、完了画面が現れた。本当に取り込まれていたのか、仮本番環境のサイトを見て確認する。無事に取り込まれているようだった。ほっとしたと同時に、頬が緩んだ。

 1セット500件につき、大体20分程かかったようだ。ここではたと気づき、また青ざめる。1セットに20分?51セット、最後の1セットは数が少ないので20分もかからないだろうが、それでも全部終わるには1000分以上…時間にすると、16.7時間。もしかしたら画像データが少ないセットもあって20分もかからないものがあるかもしれない。でも1日で8時間作業では2日以上、確認入れたら3日、万一たくさんの手直しがあったら4日、それ以上。まず終わらない。手直しがあった場合、その確認作業を入れたらどうなる?

 発覚した事実に絶望した。しばらく動けなかったし報告にも行きたくなかった。報告したら自分は休日のどちらかは最低でも出なければならないし、週明け23日と24日は帰れない恐れまで見えた。それでも、新人。部下。作業者。上司に報告はしなければならない。

 覚悟を決めて、上司にその旨を報告しに行った。

 「16時間以上!?」
 「今1セット入れてみて20分だったので、単純計算でそのくらいになります…」

 上司も驚いたようだった。ここまでかかると誰が予想していただろうか。いやしていない。

 「いや…それは…うん…やるしかないけど…」
 「出るしかない、ですよね…」
 「そうだね…」

 やはり未来は暗雲どころか、暗闇荒天だった。私の休み、わずかな希望、もしかしたらクリスマスを味わえるかもしれないという希望はこの瞬間、完全に消え去ったのだった。

 金曜夜だというのに、何の彩りもない残業をして退社したのが20時。次の日、土曜日の出勤時間は9時半。会社としては定休日なので、出社時間は遅くても構わない。

 前日と同じ作業、「試行」を繰り返す。取り込みをして、完了したらそのデータを確認する。確認して問題がなければ次の取り込みへ、問題が発生したら修正して取り込み直しへ。果てしなく面倒だ。

 大体、取り込んだデータの確認を私だけでやっているのもおかしいだろうと思い、本番取り込みするデータについては確認するように、PMを依頼した。私一人では正誤判断ができなかったり、見落としがあるかもしれないためだ。よって、PMも休日出勤である。ただ、PMは私が要請しようとしまいと、ここ数日の様子からすると休日出勤は確定事項だったように思えた。自分の直属の上司は予定があるし、確認してもわからないからと休日出勤を逃れていた。かなり腹立つが、確かにデータ移行の結果を見て現行と合っているか確認するのも細かいところはわからないよなとも思った。それでもただ一つ、この会社に属しているものなら誰でもわかることがあった。

 ―これ、休日出勤手当も残業も出ないんだよな。

 取り込み実行ボタンを押してから完了するまでの間、進捗のバーが止まらないように見張る仕事がある。ただただ、画面を見る仕事の間はやることもないし、つまらない。

 1回目500件が取り込まれた後は多少確認して、あとは確認しているフリをしていた。その身は動かせないが、脳内は妄想の世界へいつでも旅行に行ける。

 ―何も報われないのに、クリスマス直前の、一番賑わうときに、仕事か。

 報われることは何もない。お金で報われることもないし、誰かに称賛されて崇めたたえられるわけでもないし、これが終わったら年内はすべて休業になるわけでもない。噂のブラック企業の一つにいるんだなと漠然と実感した。入社してから感じてはいたが、やはりそうだろう。

 きっと街中は賑やかで、綺麗で、カップルが身を寄せ合ってきゃあきゃあ言いながらイルミネーションを眺めて、豪華なクリスマスランチやクリスマスディナーを味わい、プレゼントを贈り合い…夜を過ごすのだろう。友達同士でケーキを囲んでパーティをしているだろうし、もしかしたら家族でお祝いしているところもあるかもしれない。

 私はもう帰ってからパーティをする気力などないし、ただただ寝たい。自分の時間が睡眠だけというのも物悲しいが、とにかく寝たい。睡眠不足だ。休みの彼氏には申し訳ないことをしているとは思うが、連絡するのも億劫だ。

 その日は無事に試行が終わった。一部指摘が出たデータの微調整を行って取り込み直した。それから本番環境へ1000件取り込みができた。明日も出勤するということで終業は19時。次の日はまた9時半に出社し、本番環境へ取り込んでいく作業だ。

 「なんか、データ取り込みのスピードが速い気がしますね。」
 「本番用のサーバーだから、処理が早いのかも。ラッキーだね。」

 それラッキーなのか?ラッキーか、作業が早く終わるのは有難い。だったら試行の環境も早くしておいてくれよと思いながら、次々と取り込み、その間に確認という作業を繰り返していく。単調作業な上に睡眠不足もあって、船を漕ぎながらだった。他の休日出勤組も通常時とは異なり、たまに寝ている人もいる。ここで寝ていて休日出勤の意味があるのだろうか、という疑問が浮かぶが、そんなのは当人も百も承知だが、それでも出ざるを得ない現実があるのだろう。それに、船を漕ぎながらやっている私も他人のことは言えない。

 「本番用のサーバーだから処理が早いのかも」というのは本当だったらしく、順調に取り込みをして、残り2000件程、あと5回の取り込み作業を行えば終了する、というところで平時の定時である18時を迎えた。このままだったらあとは24日に取り込んで確認すれば間に合うし、大丈夫だろうとの判断をもらい、休日出勤は土日の2日で終わった。23日は祝日にあたる(※当時は「天皇誕生日」で祝日だった)ので、最終作業日は24日。25日の朝からお客様確認へ出せる予定だ。

 繁華街のすぐ近くにあるオフィスの外は、夜はまだまだこれからといった空気だった。クリスマスディナーに向かう人も紛れているんだろうなと思うと、やはり切ない。こんなうら若い乙女をクリスマスシーズンに縛り付けてなんの得があるというのだ。仕事なんかに縛り付けなければ、少子化に貢献できるかもしれないのに。そんなことを思いながら、イルミネーションを背に一人帰宅した。とにかく眠かった。

 そしてやってきた、最後の大詰め。24日。クリスマスイブ、クリスマス前夜だ。

 前夜祭は盛大に行われるらしく、諸外国のキリスト教圏では朝からパーティ準備に大忙しらしい。が、日本はキリスト教徒ではない人がほとんどであろう、前夜祭はあっても、平日日中は通常運転、仕事である。

 「おはようございますー。」

 朝、出社するときも少し気持ちが明るい。今日は定時で、残業してもそれほど遅くならずに帰れるはずだからだ。今更彼氏とデートに行こうなど、突然すぎて約束を取りつける気もなかったしやってもいないが、気分上々。少し街並みを歩いてお買い物でもしていこうかと思ったくらいだ。

 相変わらず挨拶に対して挨拶は返ってこないが、そんなことはどうでもいい。今日の私は早く帰ってちょっといいケーキでも買って、一人で撮り溜めたバラエティ鑑賞でもするのだから。

 パソコンを開き、朝会を終え、しばらくしてパソコンが動くようになった頃に、本番取り込みを続けていく。

 ―その日の午後、別で動いていたらしい、HTMLコーダー部隊から小さな悲鳴が聞こえた。

 この悲鳴が、私の運命を左右するものだったとは、聞いた時には思わなかった。何かやらかしたのかな、間違えたのかなくらいにしか思わなかったのだが。

 「ちょっと、佐野さん、本番取り込み、止めてくれる?」
 「え?何かあったんですか?」

 午前からの作業で、取り込みも終盤に来ていたおやつの頃、上司が私に声をかける。

 ―作業を止める?

 「こっちが本番環境で作業したいんだけど、重くて動かなくて作業にならないみたいなんだよね。今取り込みやってるでしょ?止めてくれる?」
 「…止めるのはいいですけど、どのくらいですか?」
 「向こうが終わるまでだから、夜になるかもね。」 

 ―私の作業、終わらないじゃないですか。

 「それから、PMから修正依頼が来てる。ここ、画像が元のデータと合わないみたいなんだ。他にもあるかもしれないからちょっと見てみて。」

 自分の取り込みミスによるデータの作り直しと、データが作りあがっても取り込み作業がストップ。

 ―詰んだ。なんで私もミスしているんだ。元データがおかしい?いや私がおかしなことをやったんだろう。画像のフォルダ構造でも間違えてアップロードしたか?

 つまりそれは、―私、帰れないってことですね。

 上司に返事をした後、PMから詳しい内容を聞き、明らかに自分のミスだと痛感する。ほぼ全件取り込み直しかもしれない。すみません、やり直します、と謝る。同時に今までも確認作業してたのだから、誰か気づけよ!とも思ってしまう。複数人でやって気付かないのはあることかもしれないけれど、私、PM、一応上司の3人でやっていたけれど、やっぱり誰か気付いてほしかった。

 涙を堪えながらおぼつかない足取りでセキュリティエリアから出て、オフィスの廊下に出る。窓辺に寄り添って、呆然と階下を眺めた。

 所狭しと飾られたイルミネーションが、きらきら輝いていた。

 その後、自分のミスを取り除く作業―取り込みプログラムの修正と出力、及びファイルの目視確認、試行環境への取り込み―を続け、実際のデータ移行はできないままに定時を迎えた。

 定時を一時間過ぎてようやくコーダー部隊から本番環境を使っていいです、ありがとうございました、との連絡を受けた。ありがとうございました、じゃないよ、こっちは修正もしてたけど時間持て余してたんだよ、と多少いらつきを覚える。

 19時、夕飯を食べながら、本番環境への取り込み作業を開始する。一度データが作成されて更新になるデータについては多少早くなるらしく、当初の予定よりは早く修正したものを取り込めそうだった。

 ―それでも、これから51ファイル、そうはいっても1件10分。510分。8.5時間。確認入れたら朝方までかかる。終わりの時間は絶望的。

 データ移行中はひたすら画面を眺め、10分後に次の取り込みを開始させ、その間に取り込んだデータに不備がないかを繰り返す。途中で集中力が切れて、船を漕いだ。PMから差し入れも受けた。差し入れ自体は嬉しいし、ちゃんとお礼は言うが、本音は「差し入れするなら、帰してくれ」だ。

 そして明け方5時。早起きの人の起床時間だろうところで、全部のデータの取り込みと確認が終わったのだった。

 一旦家に帰り、そのまま眠る。そのまま眠り続けられたらどれほど幸せだったことだろう。実際は始業時間9時に間に合うように来なければならない。前日に9時から5時まで、「日付をまたいで」働いていてそれは無理というものだった。6時頃から10時ほどまで4時間の睡眠をとり、眠い目をこすりながら支度をし、25日の13時、もう一度オフィスに来た。

 …と、来たのはいいものの、全く使い物にならなかった。少しでも気を抜くと船を漕いでしまう。うつらうつら、夢の世界へ旅立ってしまう。

 幸い、あの後のデータは一旦OKが出ていて、これ以上私の作業は出ないだろうということだった。件数が多くない修正や、内容に統一性のないものであれば、各ページデータごと触って修正した方が早い。

 午後中、ほぼ席にいるだけで船を漕ぎ続け、見かねたリーダー、―直属の上司ではない―が、「今日は早く帰りな」と声をかけてくれた。言われた通り、追加で仕事もなさそうだったし、そのまま定時に帰宅した。

 いつか絶対、どこかのタイミングでここをやめる、心に誓った。
 クリスマスは、最終日を賑やかに照らしていた。

* * *

 「それから、年末に向けて別の案件が炎上して、荒野になった…」

 データ移行は無事に終わったものの、他の開発案件の完成が間に合いそうにないということで年末年始返上、リーダー格はトラブル対応で来れずにテーブルに空席が目立つ会社の忘年会、など、一年目にしては散々な状況を目にしてきたな、と思う。

―今は無事にそこをやめているから、クリスマスだろうと何だろうと自分の裁量で仕事を調整できるようになったし、あんな連日残業からの徹夜なんていうコンボをすることもなくなった。

 「普通に過ごすっていうのは、とても難しいことなんだよねぇ」

 一般的に求められているようなこと、例えば「家族と誕生日を一緒に祝いたい」「彼氏の誕生日を一緒に祝いたい」「クリスマスと正月は休みたい」など、当事者にとって重要なイベントごとで休暇を取るというのは、とても難しい。自分で動いて、自分が決められるところでなければとても大変なことだ。過去はクリスマスは出勤になったし、正月もあわや返上かという炎上を見せたところにいたが、今は違う。かといって仕事、ビジネスは自分の都合で常に待ってくれるわけではない。全部の希望を叶えているとは言い難いが、自分で動けばある程度のものは掴めるはずだ。

 「データ移行は、できればもう関わりたくないね…。また、クリスマスを潰されかねない。」

 今も、私が過去に在籍していた会社は存在する。同じ人ばかりではないだろうが、皆元気にしているだろうか。あのときの上司、PMは今、何をしているのだろう。

 「全く、言うは簡単だけど、あれほど難しくて繊細な作業はないんだからね…」

 ほろ苦い思い出を、ワインで一息に飲み干す。

 クリスマスまで、あと何日だろう。自分のような思いをする若者は少ない方が良い。中年も年寄りも、みんな幸せな日を過ごせたらいい。自分はクリスマス前に年内の営業をほぼ終える予定なので、今年は問題がないはずだ。レアケースが発生しなければ。

 ―皆が幸せでありますように。仕事などに忙殺されませんように。

 当日、街が幸せであふれることを、一人願い、誰ともなく乾杯した。

 バーのすりガラスの扉越しに、イルミネーションが淡く、静かに彩りを添えていた。

***********************

これはフリーランスコミュニティのこみゅーの2019年アドベントカレンダー企画、13日目を担当したものです。
(こみゅーのアドベントカレンダーはこちら→こみゅー Advent Calendar 2019 – Adventar

***********************

運営サイト紹介

みんなのきょうのごはん-みんごは-

みんなのきょうのごはん-みんごは-

「みんなのきょうのごはん-みんごは-」きょうのみんなのごはんは?Twitterに投稿された美味しそうな「食べ物」画像を、リアルタイムで表示します。

みんごははここからアクセスしてね !

その他広告