翠文書


Y10K/1999年11月12日(金)/No.9

2 000年問題ってあるじゃないですか。それに関連してRFCが出ていて、Y10K問題っ てのがあるんですよ。10000年問題。RFCってのは現在のネットの標準に関して提 案されて発展している文書群の事。こういう動的な法律みた いなものは文系学問の研究対象に十分なりうるよね。社会科学としても面白い。 とまあそれはおいといて、件のRFCは RFC2550 (日本語訳)で半分読み物のRFCなんですけど(RFCってこういうのがあるから面白 いね。MIMEのフォーマットやらと同列に並んでるってのが。)、SFとして面白い のです。4桁にしたら9999年まではOKだけど、その後もしくはその前はどうする の?って話。

2000年問題ってのはコンピュータで桁を西暦の下2桁で扱ってたので、2000年を 表せないという問題。(00になってしまって1900年ってカウントされちゃう訳だ。 どうでもいいけど私のところでは100になって、エラーが出るプログラムが多かっ たよUNIX系の流れなんですかね?1900年からの差を出力するって言ってるけど、 素直に19XX年っていう文字を出力してくれればいいと思うのですが…) 2000年問題ってアシモフなんかに指摘されてたら起こらなかっただろうなぁ。 先見の明があった方は居なかったのでしょうかね。それはいいとして。

今のPCが西暦10000年に動いてたら嫌なんだけど、数の表現としてはまだ残っ てるかもしれない。模倣子(ミーム?)は意伝するってことかな?その前に人類が 滅びているかもしれないけどね。岡崎二郎のSFでは人類を継ぐものとして機械生 命や昆虫が出てきてたけど、1万年くらいであっけなく人類を滅ぼしてたなぁ。 1000万年とは言わないけど、まあ100万年単位くらいでは生き残ってて欲しいなぁ。 無理かな。機械で楽すること覚えちゃったし、やわらかいものばっかり食べるよ うになっちゃったし、人類の体はどんどんそういう方向に進化していっちゃうん だろうねぇ?顎なんてどんどん小さくなってるし、そのうちグレイみたいな感じ になっても変じゃない。…ええと、Y10Kに話を戻しますけど、2000年問題に関し ての解決法(桁を4桁にする)に対してこう言ってます。

This is exactly the faulty logic and lazy programming practice that led to the current Y2K problem!
現在のY2K問題へつながる怠惰なプログラミングの習慣である。

つまり2桁だった年表記を単純に4桁にするってのはいかんと言ってるわけで す。確かにその通りなのですが、この辺からもうSFっすよね。4桁にすれば後 8000年は大丈夫じゃない?SFって言えばIPv9に関する考察とかも物語RFCで面白 いんですけど。あれどう考えてもスタートレックとか入ってるよね?まあ自分の 死んだ8000年後の事なんかどーでもいいが流石に2桁はまずかった。2桁でコーディ ングした本人が生き残ってて(生きてるだろうね当然)責任取らされてしまうかも しれない。やるんだったら3桁だった(笑)。

年号表記は以下の特性が無いといかんと言ってます。

現在の表記と互換可能で、しかも保存に効率が良く、年代順に簡易なソート が可能で、拡張性をそなえていなければいけない。いい感じですね。たしかにそ んな感じだろうと思います。ところがこうきましたよ。

2.4.2 Transcending Environmental Considerations
2.4.2 超越的な環境への配慮
However, we might get lucky. So, Y10K dates are able to represent any possible time without any limits to their range either in the past or future.
しかしながら、我々は幸運である。 Y10K対応の時刻表現は過去にも未来にも その範囲に制限を課すことなく時刻を表現することが出来る。

おおーすげーよ。宇宙が生まれて無くなってからも時刻を一意に表現できる とおっしゃいますか。大きく出ましたね。SFっすねー。いやフィクションじゃ無 いのですが、話が大きくていいじゃないですか。

結局どういう解決をするかというと、固定長フォーマットはダメって事です。 可変長のフォーマットで表現しましょうということ。これはEメールのヘッダな んかもそうですね。賢いですよ。ほんと固定長だと融通利かないんだよね。桁ず れるとすぐバグるしね…。なんか嫌な思い出でもありますか?>私
可変長ってのは基本的に正しいですよ。後は処理速度との兼ね合いくらい。

Y10K年代表記ですが、とりあえず1年から9999年までは現行西暦表記と互換性 を持たせています。その先はどうするかというと頭にA,B,Cと付けてゆ き桁を増やす。これでA10000年、B100000年と増えていく訳です。 だからZ999999999999999999999999999999年まで はOKってことですね。0000年から10の30乗年までまで数えられると。これだけあ りゃ十分だろって感じですが、さらにその先を考えちゃうあたりがSFチックです。 ここはネットで原文(の訳なんかでも)読んでみてください。月日時分それ以下に 関しても単にYYYYMMDDhhmmssと並べて書くだけです。年の部分の文字数が定義さ れてるから、残りは月日時間と分かる。シンプルで良いですね。フェムト秒まで 定義してありましたが、それ以下にも拡張は容易です。

私が興味あるのは紀元前なんで、こっちの話。これで紀元前も表現しようと しています。現在の考古学なんかではどうなんですかね。普通にBCって感じでや るのかな。でもこれだと昔になるほど数が増えていく訳だから、西暦元年を挟ん で単純なASCII順ソートだと逆順になってしまう。これは確かによろしくないと 思います。コンピュータのある現代なんだから比較をするにも良くない。でどう してるかというと、RFC2550では10の補数とスラッシュ"/"とアスタリスク"*"で 表現しようという事になってます。「正の年号」から補数を取って、"/"と"*"で 「負の年号」であることを表現しようという方法。紀元元年は0000年で、紀元前 1年は/9998年ね。(/9999年と0000年は同じ年。)紀元前9999年は/0000年で紀元前 10000年は*Z89999年。考古学なんかだと紀元前50億年くらいまで表せれば問題な いので、確かにこれでアスキー順ソートは可能だし、いいかんじなんですが、補 数なんでややこしいです。ぱっと見いまいちいつ頃かつかめないんですね。桁も なんだかややこしいのが難ですね。ちょこっと西暦元年前後を挟んで並べてみま すと…

*U0000000000 紀元前100億-1年
*V000000000  紀元前10億-1年
*Y000000     紀元前100万-1年
*Y899999     紀元前10万年
*Z00000      紀元前10万-1年
*Z89999      紀元前1万年
/0000        紀元前9999年
/4999        紀元前5000年
/9899        紀元前100年
/9989        紀元前10年
/9998        紀元前1年
0000 = /9999 西暦0年
0001         西暦1年
9999         西暦9999年
A10000       西暦1万年
A10001       西暦1万1年
C1000000     西暦100万年
E100000000   西暦1億年
G10000000000 西暦100億年

という感じで西暦1万年以降の簡易な表記に対して、紀元前は人の目にはあま り優しくないというのが正直な感想。西暦10000年(Y10K表記ではA10000と書くこ とになります。)を扱うプログラムよりは、紀元前をコンピュータで扱う方が機 会としては多い様な気がするのですがどうなんだろ。だいたい年単位で問題にな りそうなのはBC5000年くらいからだろうと思うので、そのころからを美しく扱え ると便利だと思うのですが。

ということで(どういうことや)やっぱややこしいので、西暦0年を地球歴45億 年ということにしちゃえば…1999年は45億1999年…互換性無いやん。もうすぐ解 散する(今年1999 年です)バンドのメンバーじゃ無いんだから。でもY10K年代表 記は私が好きな恐竜時代が美しく表せないのがダメです。この化石は4390029381 年に120歳で死んだサウロポセイドンの化石ですとか、そういう表記出来るよう にならないですかね…そもそもそういう時代は100万年単位くらいでしか必要な いのか?よくしらない(笑)今でも縄文時代くらいは結構な誤差で年代測定できる そうじゃない?そういうときに紀元前〜年はやっぱり今ひとつだと思うのですが。 慣習の問題かな。西暦前の年代の美しい表記法は無いのか。でもY10Kでの要求を 飲みつつ作るとなると、実際補数くらいしか無いよな…。難しいところです。

他に問題点としてこんなことを書いてますが、ここまでくるともう完全にSF です。

銀河間の時刻表現の標準化なんてねぇ?大学の物理の時間のネタじゃ無いん だから。そもそも相対論的になっちゃえば標準化しようが無いと思うんだが。と もあれ話がでかいことはいいことです。こういう壮大なRFCいいですね。

で、この駄文のオチはどうつけるのだ…?いや、腹減ってきたしそろそろ今 日の夕食のメニュー考えないと…。