未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

ソフトウェアの国際化をやっていたころの話をしよう

2008年の10月ごろ受けたインタビューが最近再掲された。スーパーハッカー列伝というタイトルなんで、ちょっと気恥ずかしいが、まあ、それはそれとして、昔話をはてなの方でも引用してみる。

http://web-engineer.buyuden.net/hacker/2009/10/1-1.html

DECでの仕事。

川井その先は、どんな仕事をされてたんですか?

吉岡DEC の中で日本語COBOLを作って、その後にいくつかプロジェクトはあったんですけど、 RDBMSでVAX Rdbっていうのがあって、それの日本語化をやったんです。
そのソースコードを持って、香港のエンジニアリングチームが中国語版とか韓国語版かなんかを作ったんですね。ソースコードを1つにしてアジア共通のRDBを作ったわけです。

Cで言う所の#ifdefでソースをかき分けるみたいなことをやっていたわけだ。だけど、複数のバイナリが出来てしまってよろしくない。というのが今から20年くらい前のお話。

ただ問題があって、ソースコードは一緒なんだけど各国語毎に違うものができてるんですよ。そうするとメンテナンスのコストもかかっちゃうし、テストの工数もかかっちゃうし、なんかバグが起こった時にこっちでは再現するんだけど、こっちでは再現しないみたいなややこしい問題があるんで、それを1つにしてインターナショナライズしたRDBを作りましょうとなったんですね。
それは当然の流れだと思うんですよ。そういう流れのもとで我々の作ったソースコードを持って USの本社に乗り込んでVAX Rdbに国際化の機能を付け加えるっていう仕事をしたのが89年とかですね。
その当時、1980年代っていうのはソフトウェアの国際化という概念に関してはまだ十分知見がなくて、皆で試行錯誤をしていた時代なんですよ。
よく日本人は欧米の連中は全然わかっちゃいないなんていうことを言うんですけど、実は米国のソフトウェアを欧州に持っていくっていうだけでも相当大変なんですね。なんでかっていうとASCIIにはaにウムラウト(¨)が付いた文字はないし、 8bitで表現されるんだけど、ASCIIは7bitなんで、 7bitから8bitにもっていくだけでも相当大変なわけですよ。それとかエラーメッセージがプログラムの中に埋め込まれてて、それをフランス語にするにはどうすればいいんだみたいなとこもありますよね。米国と欧州も違えば、欧州の中でもイギリスだとかフランスだとかドイツだとかで全然違うんで、「欧米は」なんていうのは大間違いです。
そこで80年代の中ぐらいからDECの中では、国際化ということをどういうアーキテクチャデザインパターンでやるのがいいのかっていうのが相当議論されていました。80年代の後半にはソフトウェアのインターナショナリゼーションについての議論をして、実際に自分のソースコードを持ってVAX Rdbのチームと喧々諤々しながらやっていたっていうのが89年から90年ぐらいですね。

国際化という概念が確立していなかったし、ベストプラクティスも全然共有出来ていなかったので、試行錯誤の連続だった。
文字コードだけじゃなくて、数字の表記、住所の表記、通貨記号、日付、時刻、数え上げればきりがないほど様々な文化的な依存性がソフトウェアの中には埋め込まれていた。

川井言語が違うと全く違うということなんですよね。

吉岡そうですね。そこらへんの国際化をした経験があまりにもないから、結構日本人が上から目線で言っちゃう部分があって、それも大間違いだなと思ってるんです。
とはいうものの1980年代に外資系に勤めていた私がベンチマークしてた部分は「富士通」とか「NEC」とか「日立」の日本語化だったりするんです。そういうところはやっぱり一生懸命参考にしましたね。
だけど結局のところ、そういう先輩たちがやってたのは日本語化であって、国際化はやってなかったんですね。彼らの製品を輸出して、日本語だけじゃなくて色んな言語に対応するような経験を先輩たちが十分できてたかっていうと、実はそれはないんですね。日本ていう地域だけに閉じてたっていうのが非常に残念ですね。
そういうようなこともあり、 1980年代後半に国際化について色んな人たちと議論した時に、「DEC」だけじゃなくて同じことをやっているのは他の会社にもいたので、会社の壁を乗り越えたところで共同にできる共通の問題っていうのを我々は発見したなみたいな部分はあったんですよ。それは技術っていうのが会社だけに閉じこもっているんじゃなくて、横に広がっていくんだなっていうことを自分の体験として理解した最初の経験でしたね。

技術というのは一つの会社に属しているのではなくて社会全体のものだというような思いになった経験につながっていく。

そして、「そろそろUnicodeについて一言いっておくか」というような経験をしたのである。

昔の話を読んだ今、ソフトウェアの国際化について原点に立ち戻って考えてみたいと思った。