キャリア20年超。ずっとプログラマで生き延びている女のコラム。

何事もなかった2000年の幕開け

»

 それはわたしが社会人になった翌年、まだコーダーで先輩がつくってくださったフローチャートに従ってコードを書いていた頃のことでした。ある指示に疑問を抱いたわたしは先輩に質問をしました。

 「あの、これだと2000年以降は計算がおかしなことになっちゃうような気がするんですけど」

 それはギリギリ1980年代のことで、「あと10年以上も動くシステムじゃないから考慮する必要はない」という先輩の返答にとりあえず納得したわたしは、万が一2000年以降も動いていたらちょっと困ったことになるコードを書きました。

 それから数年が経ち、わたしはテレビのニュースで「2000年問題」の存在を知りました。

 「2000年問題」というのは、めちゃくちゃ簡単にまとめちゃえば、4ケタの西暦を下2ケタだけで取り扱ったがために、1999→2000になった時点で1999→1900になるなどの問題が発生する、ということです(←簡単すぎる説明なので、詳しく知りたい方はご自分でお調べください)。

 わたしはそのニュースを見て「ああ、あの時の先輩のような判断をした人がたくさんいて、そうやってつくられたシステムが予想外に長生きしちゃったんだろうなあ」と思いました。そして、初めてプログラマという仕事を「怖い」と感じました。 ちょっとした判断ミスというか、想定外の出来事が、つもり積もるとこんな騒ぎになるのだなあ、と。

 それからさらに数年が経ち、わたしのところに2000年問題対応の仕事がまわってきました。プリントアウトしたコードの中から、日付関連の処理をしてるとこを探し出して、2000年になっても問題が発生しないかを確認する、というお仕事です。

 両サイドに紙送り用の穴があいたでっかいプリンタ用紙が、目の前に山積みにされました。聞くところによると、当時、稼動中だったシステムのソースファイルを、「date」とか「year」とか「nen」とか、とにかく日付に関連しそうなキーワードでサーチして、該当するものをプリントアウトしたらしいです。「もし、“aa”とかいいかげんな変数名をつけてたらどうするんですか?」と訊ねたら、「とりあえず可能性の高いところから潰していく。後で余裕があったら範囲をひろげる」とのお答えでした。プログラマの皆さん、いいかげんな変数名は付けないようにしましょう(苦笑)。

 というわけで、コードの中から日付関連の処理をしている部分を探し出してラインマーカーでマーキングし、2000年になった時にどういう動きをするかを読み取り、問題の有無を判断する、という地味な日々がはじまりました。これが意外としんどいです。

 わたしみたいな「プログラムが動いた~」が喜びなプログラマにとって、「動いた!」という達成感のない仕事は本当につまらないし、システム全体がみえていればそこそこ楽しいのかもしれないコードリーディングも、一部分を抜き出しただけだと前後関係がまったくわからないので、面白味がありません。そのくせ「もし見落として、問題がすり抜けちゃったらどうしよう」というプレッシャーだけはあるわけです。ちょっとした拷問っぽかったです(泣)。

 さらにさらに数年が経ち、ついに1999年の年末になりました。IT関連部門のスタッフには「大晦日以降は、連絡がついて、なおかつ、問題が発生した場合に出社できる場所にいること」というお達しが出ました。聞いたところによると、一部のスタッフはオフィスで年越しという羽目にあったそうです。特に仕事があるわけでもないのに、年末年始を会社で過ごさなきゃいけないなんて、気の毒すぎる……。

 そして、2000年は無事に幕を開けました。

 年明けに出社すると、皆、「いやあ、何とかなったねえ」とか言いながら、一様にほっとした表情を浮かべていました。しかし、無事に年越ししたといっても、年末年始は休止しているシステムもあるわけで、そこでなんらかの問題が発生する可能性もあるので、臨戦態勢は続きました。

 しかしトラブルの報告はなく、当時、わたしが愛用していたテキストエディタでコードをプリントアウトしたら、ヘッダの日付のとこに「100年△月○日」と印字された程度のことしか、身近では2000年問題は確認されませんでした。

 2000年の3月が終わり、年度末処理も無事に乗り切り、細かいトラブルはあったらしいけど特に社会インフラに影響を及ぼすような問題は発生せず、みんなが警戒心を解いた頃に、「結局、何も起こらなかったじゃないか。あの大騒ぎはなんだったんだ」的な記事をメディアが載せるようになりました。正直、それにはむっとしてて、友人とそのダンナさんと3人で会話をしている時にその話題になり、うっかりそれを爆発させてしまいました。

 「大した問題じゃないのに大騒ぎしたんなら、そりゃあ問題ですけど、たいした問題にならないようにがんばって働いた人たちがいて、結果、たいした問題にならなかったんなら、それは、大した問題にならずにすんでよかったね、と言うべきで、大した問題じゃないのに騒ぐな! っていうのは違うと思うんですよ!」

 熱く語ってしまったわたしに、2人は「そう言われてみればそうだねえ」と納得してくれて、その後、3人で「考えてみれば、何事もないように働いてくれてる人たちがいるから何事もない、ってことは世の中にたくさんあるんだろうね」といった話題で盛り上がりましたが、後になって「あれはちょっと大人げなかった」と反省しました(本当にごめんなさい)。

 いろいろと事情があったとはいえ、ああいった問題を発生させてしまった、という点に関しては弁解の余地がありません。たとえ、何事もなかったとしても、何事かが起こるんじゃないか、という不安を発生させたというだけで、大失敗だと思います。ですから、「ちゃんと対応してやったんだからありがたく思え」とはとても言えません。せいぜい「なんとかリカバリしたので勘弁してください」くらいなものです。

 ですから、どれだけ文句を言われても反論できるような立場じゃない、と思っていますし、「騒ぎをおこしやがって」的な言葉には「すみませんでした」と素直に謝れますけど、「たいしたことなかったのに騒ぎやがって」的な言葉には、どうしても反発する気持ちが湧いてしまいます。

 それは、2000年の年明けにチームのみんなのほっとしている顔をみて「日本国内だけじゃなくって、世界中で、どれだけのエンジニアがこんな気持ちでいるんだろう」と思った時の、連帯感めいた不思議な感情を思い出して、そんなエンジニアたちの不安感とか使命感とかがんばりがどこにも存在しなかった扱いをされてるような気がして、なんだかやりきれない気分になるからなんじゃないかと思います。

 「2000年問題」という言葉を聴くたびに、わたしは「何事もない」状態を維持するという仕事のむずかしさ、そして、それが失敗した時の怖さを思い返します。これはきっと、IT業界で働き続けている限りは、大事に持っておかなければいけない気持ちなんでしょう。

Comment(7)

コメント

9_3_0

こんにちは。

懐かしいですね、2000年問題。
あの時、私はユーザー部門のネットワーク担当をしていました。
開発系の人達につきあって、会社で(半分酒のみながら)年越しをした事を思い出します。

でも、2000年問題って何?という方が増えたんですね。
歳を感じますww

仲澤@失業者

自分はビジネス系ではなかったので、2000年問題はかかわりはありませんでしたが
それが機会となって、2038年問題に光が当てられた事を覚えています。

2038年、自分はすでに死んでいるのがほぼ確実なので気楽ですが、
今20~30代のプログラマは、2000年問題の時に引っ張り出されたコボラーさん
たちのように大変でしょうね(笑)。

この問題の深刻さは、本質的にC/C++言語の仕様の問題であるということです。
当たり前ですが、データベースのエンジンはおろか、あらゆる言語、また、
OS自体もC言語で作られているので、これらの、改修されていない全ての
コードが対象となります。
自分の書く、現行リリースする全てのコードは対策済みですが、現在、
この認識のないコードを書いてしまっている人もいるかもしれませんねぇ(vv;)。

ともかく、若いみなさん、初老になってもがんばってね(^^)/

大局

こんにちは。
2000年問題、私は会社で年を越しました。
日付が1月1日になる瞬間、マシン室(古い)に緊張が走りましたが
何事も起きずに本当に嬉しかった事を覚えています。
元号の切り替わり(昭和→平成)、消費税率変更も地味に大変でした。
基準値をリテラルで持ってるプログラムが意外と多くて
泣きながら人海戦術で乗り切った苦い思い出が...

ひでみ

こんばんわです。ひでみです。


9_3_0さん。

9_3_0さんは会社で年越しをしたくちでしたか。ご苦労さまでした。
さすがに10年以上も経つと、実際に対応した人たちは開発現場にはあまり残っていないようです。
ですから、当時のことを知らない世代に、あの時のことをちょっとでも伝えておきたい、と思いました。
苦労話ではなくて、居合わせていたエンジニアの気持ちを。


仲澤@失業者さん。

「2038年問題」の話をはじめてきいた時、「どうせその頃には定年過ぎてるし」と思った記憶が(←次世代に丸投げする気満々だった)。
確かに2000年問題よりも根が深い問題、というか、根っこの問題というか。


大局さん。

ここにも職場で年越しした方がいらっしゃいましたか。
私はテレビを観ながら、「トラブルの速報が出たらどうしようっ」とビビってました(苦笑)。
まあ、家でぬくぬくできてただけラッキーだったのかもしれません。

元号対応は関わってなかったんですが、知人からは「小渕さんが新しい元号を発表した途端に、みんながいっせいに動きだして修羅場になった」とききました。
想像しただけで怖くて泣きそうです(笑)。

ちょびちょび

こんばんは。ちょびちょびです。
ウチの先輩はその質問に「その頃おまえは嫁に行って子ども育ててカルチャースクールにでも通っているだろう(から気にするな?)」と、セクハラ的なお答えを頂きました。確かにその頃、子どもは育ててましたが、しっかり現場で作業しましたし。職場で年越しは免除されましたが、それはそれで少~し寂しかったです。
その先輩自身は「オレはその頃偉くなってるし、やっぱ関係ないわな」とか言ってましたが、予言はどこまで当たったものやら。

2000年問題懐かしいです。私も職場で日付関連コードをレビューしたような。
実は私も2000年に動かないコードを分かっていながら埋めました。ゴメンなさい。幸いそのシステムは2000年まで使われませんでしたが。

昔ってメモリやディスク資源については割とシビアだった覚えがあります。特に日時はデータベースやログにも使われるので、レコードが大量にあると2バイトの差でも大きくなります。21世紀もまだ遠い時代は年に2バイトも現実的であった可能性はありますよね。

でも思ったより長く使われるのもソフトウェアかもしれません。8086は8ビットからのつなぎであったことはアーキテクチャからも明らかで、設計者はまさかこのプロセッサが21世紀まで使われるとは思わなかったに違いありません(笑)

ひでみ

こんばんわです。ひでみです。


ちょびちょびさん。

IT業界内での予言はあてにならない、はデフォルトです(笑)。
10年以上も先の話なんてほとんど希望的観測ですから、自分に都合のいいように予測しちゃって、結果、失敗するんでしょうねえ。
その失敗がつもりつもると、ああいった騒動に……とか想像するとかなり怖いです。
でも、自分に都合の悪い予想ばっかりする人は、この業界では生き残れないような気もします(苦笑)。


yasuhoさん。

昔はメモリを節約できるプログラマがいいプログラマ、みたいなことを言われてましたよね。
今では「読みにくいし修正しにくいから、ケチくさいコードを書くな」とか言われますが。

2000年に問題がでるコードを書いたことを覚えていたのは、なんだかやっぱり気にかかってたからなんじゃないかと思います。
さすがに、そんなことをやった人たちがそんなに多いとは思いもしませんでしたけど(苦笑)。

コメントを投稿する