ソフトウェアの世界で、I18N という言葉を見かけることがある。これは何だろう?
である。英語の意味は「国際化」。ソフトウェアを各国語対応にすることを意味する。最初の I と最後の N の間にアルファベットが 18 個あることから I18N または i18n と書くらしい。
では
L10N は?
これも I18N と似たような意味で使われる。
それでは M17N は?
で、他言語化、I18N = L10N = M17N である。
私は、入社当時より将来、海外 (特にアメリカ) で働いたり生活したりしたいと考えていた。その 「夢」 は、今まさにかなっていると言える。
でもどうしてここまでこれたのか、今まで私も理由がわからなかった。漠然とその答えを出すなら、「常日頃それを強く思っていた」 に過ぎない。
私は、アメリカン航空のマイレージが X 万マイルあるが、2005/03/18 に有効期限が切れてしまうようなことがあった。
基本前提として
基本的に3年間に1度でも同じ航空会社の飛行機に乗り続ければ、マイレージは消失することなく貯まっていくのである。
しかし、3年間乗らなかった場合はどうなるのか?マイレージを使わなければ、全部パーになってしまう。
今まさにアメリカン航空の私のマイレージがその状態にある。
しかしここで落とし穴があって、実はマイレージをすぐに使おうと思ってもすぐには使えないのだ。
マイレージを使うには、航空会社が用意した「マイレージのための座席」があるので、基本的に 3ヶ月先くらいまで希望の日に予約は取れないと思ってよい。
そうすると、私のマイレージは使わないまま(予約も取れず旅行に行く予定も合わず)消失してしまうのだろうか?
ちなみにマイレージは、計算すると1マイル2.5~3円の価値がある。たとえば 10 万マイルあると、25万~30 万の価値だ(航空券換算の場合)。
マジで使わないともったいないのだ。
で、日本のアメリカン航空に電話して聞いたら、以下のことがわかってきた。
ちょっとしつこく聞いていたら、アメリカン航空のオペレータが、「マイレージの端数はありますか?お客様のマイレージ番号をお聞きしてもよろしいですか?」と聞いて来た。マイレージ番号を伝えると、
「xxx,383マイルありますね。。。実は。。マイレージを『寄付』していただいて 3年間延長する方法もあります。通常は 1,000 マイル単位なんですが…最低は250マイルでOKです。」
そうすると、結論としては今無理に使わなくても2005/03/17 に 250 マイル寄付すれば 3年間延長できることになる。この方法を使えばたまにアメリカン航空に乗って永遠にマイレージが延長できそうだ(仕組みが変わらない限り)。
しかし。。今回(来週)は、自腹を切って旅行することにするが・・家族(旅行)を優先させるのか、恵まれない子どものためにマイレージを使うのか、神様から試されてる気がする。もちろん、他の方法でも恵まれない子どもを
救う手段はいろいろとあると思うのだが。。。マイレージが寄付できるのは知っていたが、こんな裏技に使っていいものだろうか。とりあえず 250 マイル寄付するけど。
よくネットで「何万マイル貯まった」とか自慢してる人がいるのだが(そういえばツインズのオフ会でも会ったなぁ…)、とても自慢などできない、、(とか言いつつ、私にマイルがあることをこのメールで書いているのだが…
マイレージは第 2の貨幣とはよく言ったもので、航空チケット以外にも ホテル、レンタカーもマイレージで取ることができるのだ。)
1997 年頃だったか、マイクロソフトが 「ActiveX」 というインターネットの新しい技術を発表した。今我々が使っているインターネットエクスプローラーという名前のブラウザも、この頃初期のバージョンが発表された。
我々技術者は、その新しい技術を使ってソフトを開発しなければならなくなった。マイクロソフトのずさんなセキュリティのために、全世界のウィンドウズを使うユーザーは現在、ウィルス付きメールや月に 1度のパッチを充てなければならないという煩わしさに悩まされ続けているが、すべてはここから始まった。
この頃、マイクロソフトはそれぞれのソフトウェアに世界で一意(=ユニークな)番号を与えるから、それを使え、と言い出した。
世界中のプログラマは、個人や企業に関わらず、ウィンドウズのプログラムを作ったら、そのプログラムを識別するために番号を付けるのだ。
ちょっとパソコンに詳しい人なら、ウィンドウズの 「レジストリ」 というコトバを聞いたことがあるだろう?実は、そこにソフトの番号がたくさん貯められているのだ。
しかしすぐにこんな質問が思いつく。
「いったい誰がどうやって他のプログラムとバッティングしないように番号を振るのか?」
まず自分で勝手に振ったら、世界で無数にあるウィンドウズのソフトの番号とバッティングしそうだ。それは容易に想像できる。
では、マイクロソフトにいちいち申請をして番号を振ってもらうのか?オンラインですべて自動で行われたとしても、ちょっと面倒だ。マイクロソフト自身もそんな番号を管理するのはコストがかかって仕方ないだろう。
実はマイクロソフトは、自社のソフトウェア開発のためのソフト(ソフトを作るソフト)が、自動的に番号を振るから、それを使え、といっていた。
そんなことが可能なのだろうか?世界で、本当に自分しか所有しない番号、、しかも誰ともその番号を調整しないで・・・
このとき、ウィンドウズのソフト開発に非常に詳しい同僚に質問してみたが、実は上の説明をされただけで、どうしてそうなるのかまでは説明してもらえなかった。しかし、今ならその仕組みを説明できる。ヒントは、件名にある「ハッシュ」だ。まずはググってみよう。
上では、マイクロソフトが「世界で唯一の番号を各人が作ったソフトに自動的に割り振る」という話をした。
実際にそんなことは可能なのだろうか?答えは、「事実上」 可能なのである。事実上と、枕詞がつく理由は、「十分に実用的に耐えうる」からである。
それには、このメールのタイトルのハッシュというものを使う。
中高で 「関数」 を習ったが、ハッシュとは関数の一種だ。
この関数は特殊で、A というものを入れると B というものが出てくるが、一度 A を B に変換してしまうと、元のAには絶対に戻せない、というものだ。戻せないというより、元のAは何だったかわからない、といった方が正しい。
たとえば 1234 を入力すると 7890 が出てくるような感じである。7890 から 1234 を復元する方法はこの世に存在しない。1234 を入力すると必ず決まった値である 7890 が出てくるもので、1234 を入力したときの 7890 という値は、この世の中で(おそらく)あなたの他に誰も 7890 という値を持っていないものである。
では 1234 から 7890 どうやって計算するのか?というと、複雑な計算手順が必要らしく、実は私にもわからない。ひとつ言えるのは世界で唯一の数字はどんなものか?と少し考えると、「時刻」 があると思う。その計算をした瞬間の時刻をそのまま数値化すれば、あなたとまったく同じ計算をした人はおそらくいないだろうから、時刻は唯一であると言える、というものだ。
しかしやはり本当にその瞬間に全世界で同じ計算をした人が存在しないかと言われたら、ひょっとしたらいるかも知れない。だから、時刻という値はハッシュであることの最有力候補であるけれども、もっともっとバラバラな数字が必要だ。だからハッシュを計算する関数、つまりハッシュ関数はもっと複雑な計算を行い、その出力が世界で唯一であることを数学的に保証する、というものなのだ。
ハッシュは、乱数(ランダムな、バラバラな数字)に見えて、実はインプットが同じなら出力も常に同じ、という性質を持っている。
ではハッシュは日常生活でどんなところに使われているのだろう?
実はもっといろいろな応用があるが、ちょっと難しかったと思うので今回はここまで。
Kenny G とは、世界的に有名な SAX 奏者であり、Smooth Jazz という新しい分野を切り開いたのは彼だといっていい。
その昔私は、来日した Kenny G のコンサートを代々木体育館に観に行った(というか聴きに行ったというべきか)ことがある。彼はエンターテイナーで、非常にサービス心旺盛なコンサートであった。彼の音楽は pure そのものだが、彼の人柄などが伝わってくるものであった。
彼は、これまでクリスマスシーズンになるとホリデーアルバムを出しているのだが、単に売れるから、という理由の他にも、敬虔なクリスチャンであることがうかがえると思う。その真面目さが彼の創る音楽に表れていると思う。
さて、コンサート中で、おそらく彼は(感覚的には)5分以上は同じ音を出し続けた記憶がある。そんなことが可能なのか?と思うが、実際に耳で確かめたし、彼の CD で Kenny G Live! というにロングトーンをしている曲が入っていたと思う。事実であることは確かだ。しかし自分が管楽器を吹くときに、同じ音をそんなに長く出せるものだろうか?
ずっと頭の片隅に疑問に思っていたところ、そのやり方が書いてある HP を偶然見つけたので記しておくことにする。