>RSSプログラマで、生きているキャリア20年超。プログラマで生き延びている女のコラム。2011/06/23それはわたしが社会人になった翌年、まだコーダーで先輩がつくってくださったフローチャートに従ってコードを書いていた頃のことでした。ある指示に疑問を抱いたわたしは先輩に質問をしました。「あの、これだと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業界で働き続けている限りは、大事に持っておかなければいけない気持ちなんでしょう。20:32こんにちは。懐かしいですね、2000年問題。あの時、私はユーザー部門のネットワーク担当をしていました。開発系の人達につきあって、会社で(半分酒のみながら)年越しをした事を思い出します。2000年問題って何?という方が増えたんですね。11:02自分はビジネス系ではなかったので、2000年問題はかかわりはありませんでしたがそれが機会となって、2038年問題に光が当てられた事を覚えています。今20~30代のプログラマは、2000年問題の時に引っ張り出されたコボラーさんたちのように大変でしょうね(笑)。この問題の深刻さは、本質的にC/C++言語の仕様の問題であるということです。当たり前ですが、データベースのエンジンはおろか、あらゆる言語、また、OS自体もC言語で作られているので、これらの、改修されていない全てのコードが対象となります。自分の書く、現行リリースする全てのコードは対策済みですが、現在、この認識のないコードを書いてしまっている人もいるかもしれませんねぇ(vv;)。21:03こんにちは。2000年問題、私は会社で年を越しました。日付が1月1日になる瞬間、マシン室(古い)に緊張が走りましたが何事も起きずに本当に嬉しかった事を覚えています。元号の切り替わり(昭和→平成)、消費税率変更も地味に大変でした。22:49こんばんわです。