OOP-ARTS(オーパーツ)

楠樹 暖

Object-Oriented Programming Artifact

「それが終わったら、次はこのシステムのチェックを頼むよ」

 渡されたのは8インチのフロッピーディスク。

 30年以上も前のシステムだ。

 今、自分が関わっている仕事は、元号が切り替わることで発生する不具合をあらかじめ見つけること。平成から新しい元号に切り替わるときにシステムが落ちてしまったら大変だ。あらかじめ問題点を洗い出して修正しておかなければならない。

 他人が書いたプログラムを実際に動作させることなく机上でチェックする。ハッキリ言うと地味で面白くない仕事だ。Webを使ってウィンドウを操作するようなクリエイティブな仕事をしたいのに、今の自分に振られたのは昔の人が手を抜いたツケを払わされるような内容だ。


 西暦が1999年から2000年に変わるときにも一騒動があったという。2000年問題というやつだ。

 西暦を使用するのに下2桁しか使わないようにしていたプログラムが多かった。たとえば『1998年』なら『98』だ。1998年と1999年の比較では、98と99なので当然99の方が大きい。しかし、1999年と2000年の比較だと99と00となってしまうため、99の方が大きいと判断されて1999年>2000年とおかしなことになってしまう。

 そのため、西暦下2桁で扱っているところを洗い出し、画面に表示するだけなら【問題なし】、計算に使っているなら【問題あり】として西暦4桁に修正していたという。

 昔システムを作っていた人は、まさか2000年以降もシステムが使い続けられるとは想定していなかったのだろう。いやひょっとしたら、想定していたが、その頃はもう自分は居ないだろうからと、ほかっておいたのかもしれない。

 元号の問題も似たようなものだ。

 多くのシステムでは、元号の設定はプログラムの修正をしなくていいように設定ファイルやデータベースのマスタデータに入れられている。

 昭和で64年もあったのだから、平成もすぐには終わらないと思われたのだろう、中には日付の選択肢が〝明治〟、〝大正〟、〝昭和〟、〝平成〟とソースファイルに直接書き込まれ、新しい元号が簡単には追加できないようになっているシステムもある。

 西暦と和暦の変換処理などでは、平成の次の新しい元号が設定していない場合はいつまでも平成が続いていくことになってしまう。

 自分の仕事は新元号に関して、【問題なし】、【要プログラム修正】、【要ファイル修正】、【要データ修正】を切り分けることだ。プログラムの修正までは手をつけず、実際の修正は他の担当者へとまわされる。

 元号をどのように扱っているかは仕様を見れば分かることになっている。ドキュメントが残っているものはいいが、そもそもドキュメントが存在しなかったり、ものによってはドキュメントとソースコードが食い違っていたりして、結局ソースファイルを見ていくしかない。

 次にチェックする30年前のシステムのソースファイルが入った8インチフロッピーディスクは複数枚ある。

「最新」、「最新2」「バージョンアップ版」、「受入検査修正版」

 一体全体どれが実際に動いている版か不明である。

 当時のシステムに関わっている人間も居なく、一つ一つ中身を確認してタイムスタンプの日付が新しいファイルが最新と判断するしかなさそうだ。

 C++ですらなく、単なるC言語で書かれたソースファイルを開いて一つずつ確認していく。

 見始めたソースコードは他のソースコードよりも多くのコメントが書かれていた。多くは、プログラム処理の解説である。どうやらこのコメントを書いた人――Aさん――はこのプログラムを最初に作った人ではなく、後から改修を任された人らしい。元々のソースコードにはコメントが全然なかったのであろう。Aさんがプログラムの内容を解析して記述したように見受けられる。

「この処理は必要なし」とか「本当はもっと簡単にできる」とか「本来は別リソースで管理するべき」などと書いてあったりする。きっとAさんも自分と同じように不本意ながらも元号変更の仕事をこなしていたのだろう。なんとなく親近感を覚える。

 年月日を扱う処理のソースコードを確認していって何かおかしなことに気がついた。

 ソースコードに残されたコメントを見ると「新元号対応版」となっており、ソースコードに書かれた元号は「平成」となっている。ただし、その横のコメントには「この元号は仮」と書かれている。

 それだけなら正式な元号を書いてコメントを消し忘れたのかと思うのだが、気になるのはタイムスタンプだ。

 西暦が1988年になっている。

 平成は1989年1月からだ。

 つまり、このソースコードは平成が始まる前に書かれたものということだ。

 平成の元号が発表されたのは昭和が終わった次の日だ。それまでは「平成」という文字は一般には出ていなかったはず。

 このソースコードを書いた人はどこで次の元号が「平成」になるという情報を知ったのだろう?

《昭和の時代に『平成』という元号をどうやって知ったのか?》

 まるで、本来その時代に存在しない技術で作られたオーパーツのようだ。

 Aさんの名前はこの会社では聞いたことがない。会社の古参の人に確認すると10年ほど前に会社を辞めて独立したとのこと。

 Aさんについては色々と噂があったようだ。仕事で使う新しい技術なのにまるで昔から知っているかのように精通しているとか、その人が手を出したものはすぐに社会的な流行りものになるとか。まるでこれから起こることをあらかじめ知っているかのようだったらしい。


 Aさんに興味を持った自分はAさんの名前をネットで検索し、Aさんの会社と連絡先を調べ、会う約束を取り付けた。

 夜でも大丈夫とのことで、仕事は定時で切り上げAさんの会社へと足を運んだ。

 ベンチャー企業が多く入るビルの一室にAさんの会社があった。

 白髪が多く交じった髪の毛に、黒縁の眼鏡。50代であろう見た目の人物が出迎えてくれた。この会社の社長のAさんである。

 一通り挨拶をし、Aさんが切り出した。

「さて、君はどうして私のところへ来ようと思ったんだい?」

 ことの経緯を話すとAさんの口元が緩んだ。

「《昭和の時代に『平成』という元号をどうやって知ったのか?》を知りたいんだよね。

 でもその前に質問。君はこの世界は誰が作ったと思う?」

 いきなり突拍子もないことをきかれた。

「神様……ですか?」

「ふふふ、違うね。神様じゃない。私が作ったんだよ」

「ええ!?」

「もちろん何もないところから一から作ることはできないよ。元からあった世界を『派生』させたんだ。プログラムだってそうだよね。何もないところから作ると大変だから、他の人が作ったサンプルとなるソースコードをコピーして自分が使うように改造するだろ」

「オブジェクト指向プログラミングで、ベースとなるクラスを派生させて新しいクラスを作るようなものですか」

「理解が早くて助かるよ」

「えっと、じゃあ派生させる前の世界は誰が作ったのですか?」

「さぁ、誰だろうな。きっとその誰かも別の誰かが派生させた世界を派生させたんじゃないかな?

 派生させた世界を派生させていき、どんどんと世界が枝分かれしていく。

 派生された世界は、元の世界に存在するすべてを継承しているうえに、派生させた人が新しい属性を追加することができるんだよ」

「え、じゃあこの世界を派生させたのはいつなんですか?」

「君が見ていたソースファイルを書いていた時だよ。

 元号変更なんてやりたくない仕事だったんだよね。プログラムの改修は前の作りを踏襲するようにという指示で面白味もない。

 このままだと元号が変わったときにまた同じ事になるよ、一から作り直した方がいいよと言ったんだけどね、却下されたんだ。

 面白くないからそのことをコメントにぶつけてね。まぁ若気の至りっていうやつだね。

 その時の一つに『平成』が始まる前に『平成』って使っていたら面白いだろうなって考えてね」

「イタズラ……だったということですね」

「君も気づいていると思うけど、私がやっていたのは年の切り替わりの改修で、試験の都合上よくマシンのシステム日付を変更していたからね」

「過去の日付に変えてソースコードを書いた!?」

「その通り! 昭和の時代に『平成』の文字が出てくるのに気がついてくれる人がいないかなと思っていたんだよね。結局30年かかっちゃったけど」

「では、イタズラが世界を派生するきっかけになった……と?」

「あの頃は、与えられた仕事が嫌で嫌でしょうがなかったんだよ。

 これは自分の仕事じゃないって。

 自分は他人の世界の中の登場人物に過ぎないのかなって思いが頭をよぎってね。いやいやこれは自分の世界なんだ! 自分が主役なんだって。

 それで、他人から与えられた世界ではなく、自分が主役の物語だと仕様を変更してね。自分が主役だから自分だけの属性を追加して。イタズラという属性をね。

 元の世界にイタズラという属性を追加するために世界を派生する必要があったんだ。

 その日以来、この世界は自分の世界になったんだよ。嫌だった元号変更の仕事も自分の仕事だと認識できるようになったし」

《昭和の時代に『平成』という元号をどうやって知ったのか?》という問題はタネを明かせば単純なことだった。実は、自分もファイルのタイムスタンプをツールか何かで書き換えていたのではないかと思っていた。

『どうやって?』ということよりも『どうして?』ということの方が気になっていたのだ。どうしてわざわざそんな手の込んだことをしたのだろうという動機だ。

 Aさんに直接会って話をすることで、疑問は解決した。

 Aさんは世界を自分のものとして楽しんでいたのだ。

 そして自分は、Aさんが仕込んだイタズラに気がつくAさんの世界の中の登場人物の一人に過ぎなかったのだ。

「他にもイタズラはアチコチにいっぱい仕込んであるよ。ひと様に悪さをしないレベルで、しかも分かる人じゃないと分からないように。

 今日も一つ収穫できて嬉しいよ。

 おっと、話が横道にそれちゃったね。

 本題に戻ろうか。

 それで、君はいつから仕事に入れる?」

「それって……?」

「採用だよ」


 そのあと、Aさんが今手掛けている仕事の話で盛り上がり、会社を出る頃にはいつも帰るのと同じような時間になってしまった。

 電車の人達はみんな疲れた顔をしている。昨日までの自分もその一人だったのだろう。

 世界がいつもと違うような気がした。

 きっとAさんのものだった世界を自分が派生させて新しい世界を作ったのだ。

 今、この瞬間から、この世界は自分が支配している世界だ。

 自分の世界にはどんな属性を追加しよう?

 とりあえず新しい世界への第一声は決まっている。

「Hello, World!」


(了)


  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

OOP-ARTS(オーパーツ) 楠樹 暖 @kusunokidan

★で称える

この小説が面白かったら★をつけてください。おすすめレビューも書けます。

カクヨムを、もっと楽しもう

この小説のおすすめレビューを見る