けんさく。

けんさく。が、いろいろ趣味のことをやるページです。

android

あなたの時間

 ニュートンはこの世界には「絶対時間」という唯一の時計があれば済むと考えていた。嗚呼、なんと牧歌的な時代であったことか。
 アインシュタインの相対性理論がそれを打ち砕いた。特殊相対性理論によれば異なる速度で等速直線運動している二つの物体の時間の流れは、どこかで時計を合わせたとしても、ずれ続ける。二つの座標系で時間の流れが違うからだ。同様に、何かが同時に起こるかどうかも、観測者がどのような運動をしているかで変わってしまう。つまり、ある者にとって同時に起きたものが、他の者には同時に起きない。さらに一般相対性理論においては、物質の存在が時空を歪め、時間の流れも変える。この効果を計算に入れないと、人工衛星の時計を合わせることもできず、自分の位置を知ることも不可能である。また同じ惑星にいても、少し離れれば、標高や地殻の成分によって時間の進む方は変わる。
 ディラックは特殊相対性理論と量子力学を結びつけるために、粒子一つ一つが固有の時間を持つ「多時間理論」を提唱した。朝永振一郎はそれをさらに発展させた空間のすべての点が固有の時間を持つ「超多時間理論」により、場の理論の特殊相対論化を成し遂げ、ノーベル賞を受賞した。量子力学によれば、空間のすべての点は対生成しては対消滅している粒子・反粒子によって沸き立っている。それらがすべて固有の時間を持っている。この世界は遍在する時計によって埋め尽くされているようなものだ。
 その後一般相対性理論の量子化と共に、問題はさらに複雑化し、混沌の態を成しはじめたことは言うまでもない。
 必然的な帰結として、我々も異なる時計に従って生きていくことしかない。一時的に時計を合わせることはできるから、生まれたばかりの赤子と母親、付き合い始めたばかりの恋人たち、共に難所を乗り越えようとするチームは積極的に時計を合わせはするものの、徐々にずれていってしまうのは如何ともしがたい。
 それはこの世の構造的に仕方のないことなのだ。
 我々が不変だと思っているものこそうつろいやすく、光速度など本当に不変である者は我々の実感からはあまりに遠く、仰ぎ見るほかない。
 朝起きて時計を見る。十分に寝られた。いつも肌身離さず持っている時計は自分からずれていかないので安心だ。ただ機械的なずれが起きていないか、複数の時計でチェックする必要はあるが。
 もしすべての時計がずれていたらどうだろう? そういう疑問に悩まされた日々もあったが、もし量子力学により決まっている原子のスペクトル線によって時間を図る時計が一斉にずれているということは、それは私にも影響を与えている可能性が高く、それなら時間はずれていないと考えるべきだと得心した。
 得心するほかないのだ。
 ベッドから降りて、洗面台で歯ブラシをとる。分かり切ってることだが、いつもの癖で毛の感触を確かめてしまう。まだ湿っている。ここでは時間の流れが私の他の生活圏に対してひどく遅い。ではなぜ歯磨き粉の減りは遅くならないのか。そんなことを考えながら、歯ブラシを口に突っ込んで動かす。それだけで歯ブラシと右腕の時間の進みが遅くなる。右腕と左腕の年齢を合わせるために、定期的に左腕でも歯を磨く。
 冷蔵庫を開ける。異臭がする。何かが腐っているのだ。様々な場所から集まってきた食材たちは、生まれた時間も様々で、記載された製造年月日や消費期限を見ても、大した情報は得られない。冷蔵庫の中に巨大質量をぶち込んで時間の流れを遅くすることも考えたが、ちょっとした事故が起こり冷蔵庫の中が大変なことになったので、それ以降やっていない。
 匂いでだめそうなものは廃棄し、そこそこマシに思える牛乳と冷凍ブレックファーストを取り出す。絶対零度近くまで冷やされスタニュコビッチ効果でぷかぷか浮いているそれをトングで取り出し、電磁調理器に入れる。調理時間を使って、レポートを読む。彼女の目撃情報だ。
 彼女が私たちの前に現れる前に、どこから来たのか、どこで何をしていたのか。
 それこそが彼女の未来なのだ。
 最初は噂だった。「どこそこにいたでしょ」、「どこそこで見たよ。何してたの?」。自分の分身がどこかで目撃されているという情報に、彼女はひどくおびえた。私は別々の場所での時系列も定かでない目撃情報なんか無視しろと彼女をなだめた。
 しかし、それがミンコフスキー空間内の光円錐をこちらに向かって近づいていることは明らかだった。
 目撃された彼女は、全く言葉が通じず、他人が見えてはいるものの、何にも触ろうとせず、まるで違う時間の流れの中に生きているようだったという。
 他者との一切のコミュニケーションを絶っていた。にもかかわらず、その表情はとても悲し気だったという。
 あの時の彼女の取り乱し方を思い出すと、今でも心が痛む。私は彼女の人生の転機に何もしてやれなかった。もっとしてあげられたことがあったはずだ。
 ふとレポートから顔をあげる。どれだけの時間がたっただろうか。自分の時計を見ても大した時間はたっていないようだ。しかし、電磁調理器の中の冷凍食品は温められた後長い時間放置されすぎて、新しい生物圏が繁栄してしまっている。どんな殺菌技術でも全ての影の生物圏を除去することは不可能なので仕方がない。焼却箱に突っ込んで、簡易食を口に詰め込みながら出勤する。
 様々なものが亜光速で行きかう。時々事故は起こるが、それ以外の時はほとんど互いに無関心だ。
 お互い別々の時間に生きていれば仕方がない。
 時空が非常に歪んでいる場所では時間と空間を分けることが意味をなさず、泡立ちループし、ブラックホールの事象の地平面の内部のように時間が空間化され空間が時間化され、虚数時間から新しい宇宙が生まれてしまう。
 そんな状態で不特定多数の人間と自分の時間を比べようとしても、無力感に飲み込まれるだけだ。
 だから、出勤して仕事、とは言っても非常に孤独な作業だ。家で仕事をしてもいいのだが、気分を変えるために別に仕事場を作っただけ。
 どこかから届いた書類を処理し、組み合わせて新しい書類に加工し、またどこかへ送る。いつの時代に存在したのか分からない会社組織の決算報告。ほとんどは聞いたこともない会社との取引がいろいろと書いてある。
 そもそも自分が所属している会社に対しての認識だってあまり変わらない。いつどこで存在したものなのか全く分からない。今まで出会った人間でこの会社のことを知っている人間に会ったことはない。
 唯一の例外を除いて。
 それが彼女だった。
 彼女が現れて、取引先の会社の人間だと名乗ったとき、時間が止まったと思った。
 それは何も彼女に見とれていたわけではなく、単純にびっくりしたのだ。そんなものが存在するとは思っていなかったので、当然現れるとも思っていなかったのだ。
 一人用に借りた狭い仕事場にもう一つ机を持ち込んで、二人用の時計をそこに用意して、お互いの持っている情報を突き合せた。今まで一人ではなんの意味も持たなかった情報群が、他の時間からやってきた彼女のもたらしたものによって、全く違う角度から光を当てられた。最初は全く違うものについて語っていると思われたそれぞれの書類に、共通点が見つけられ、お互いがお互いの足りないピースとなっていった。
 仕事が楽しかった。
 自然に一緒にいる時間も長くなった。離れている間に時間がずれていってしまうことが仕事上面倒だったこともあるが、一緒に仕事をし同じ時間を共有することが何より心地よかったのだ。
 彼女はどこか私に似ているように感じられた。考え方も、物の感じ方もどこか共通していた。
 他人のような気がしなかった。
 私たちは一緒に暮らすようになった。
 今でもこの狭い部屋に机が二つある。あの頃の名残だ。しかし、その机も今はほこりをかぶって、時間の流れを視覚化してくれている。
 一度合わさったかに思えた時間もいつかは別れ、そしてほとんど二度と出会うことはない。そんなことわかっていたはずだ。なのに相変わらず私は彼女の影を追いかけ続けている。
 一緒に暮らし始めた頃、私たちはお互いの過去をよく語り合った。
 陳腐な話も懸命に聞いて、根掘り葉掘り細部を質問した。
 私の平凡な人生。コールドスリープした母親の胎内から62年かけて生まれた時には、すでに父親の死後(彼の時間で)数百年経っていた。私は眠り続ける母親の傍で大きくなっていったが、次第に二人の時間がずれ、結局私は母親が起きるのを見ることはなかった。
 そんな私にとって彼女の話は信じがたかった。ずっと作り話だと思っていた。
 それは神話だった。
 宇宙のあらゆる方角から一転に光が集まって、双子の子どもが生まれた。その双子の片割れがお前だ、と彼女は育ての親から聞いたという。
 その双子の片割れはどこへ行ったのかと聞くと、あとから考えてみると彼女によく似ていたという女がどこからともなく現れ、抱きかかえてどこへともなく消えてしまったという。
 そこから先は、しばらくは育ての親が彼女を育て、独り立ちしてからは、いくつかの会社組織を渡り歩くどこにでもある普通の人生を生きることになった。
 「作ってない?」
 「とりあえず私は作ってない。私にこの話をした人が作ってるのかもしれない。でもなんのために? わからない。でも過去のことなんてわからないことばかりだし、作られた話と作られていない話を見分ける術も私たちにはない」
 過去を共有することで、私たちはより強固な関係でつながれた気がしていた。
 にも関わらず、未来のことはあまり語り合わなかったと、今考えると気づかされる。あまりに茫洋としていたし、語る必要性も感じていなかったのかもしれない。二人でいることだけは確かに思えたから。それでよかった。それで幸せだった。そんな幸せな未来を感じられるだけで、今幸せだったし、これまでの過去もすべて意味のあるものに思えたのだ。
 宇宙のどこかにあるはずの本社に向けここで仕事を続ける旨の連絡をして、彼女は私の傍に残った。連絡が帰ってくるとは二人とも思っていないし、そんなことはどうでもよかった。
 ここでないどこか、今でないいつか、などどうでもよかった。
 ずっと二人の時間が続いていくとだけ考えていた。
 おそらくその時から私たちは、ずれ始めていたのだ。私の一方的な思いばかりで、彼女が何を考えていたのか、実はほとんどわかっていなかったような気がする。
 ふと吸い込まれるような宇宙の虚空を見つめ、ぼうっと放心しているあの表情の意味は何だったのか。過去への郷愁か、未来への不安か。我々から遠ざかる赤い光が暖かいのはなぜか。我々に近づいてくる青い光が不吉なのはなぜか。
 だんだんと彼女がそんな表情をすることが多くなっていった頃、あれが現れたのだ。
 部屋に帰ってきた私は、無意味にしか思えない作業に一日従事していた疲れで、服も脱がずに寝床に突っ伏した。まるですべての筋肉が綿になってしまったようだが、意識は濁りながらも決して眠りに付こうとしてくれない。目をつむっているせいか、物音や匂いに妙に敏感になっているのを感じる。温度や湿度の変化で建材がきしむ音は、彼女の足音の木霊に聞こえる。彼女の匂いがする。どこか時間の流れの遅い場所があって、そこに彼女の残り香が拡散せずに残っているのか。いや、以前も探したが見つからなかったし、むしろ探すことは、痕跡を消してしまうことにつながりかねないと結論付けたではないか。
 頼む、眠らせてくれ。自分で自分に詮無い頼み事をする。
 寝返りを打って、今朝読みかけたレポートの続きを読む。
 あの時ここへ彼女が現れるまでの軌跡、それを逆にたどることが彼女の未来を知ることだ。
 過去に遡れば遡るほど、情報は不確かになり、順序も定かではなくなる。そしてそもそも情報自体がまばらになり、消えてしまった残り香のように雲散霧消する。
 過去とはそういう物だ。
 しかし、未来よりずっとましだ、とも思う。彼女が未来へと去って行ってしまっていたら、私にはどうしようもなかったであろう。
 彼女が過去へ向けて去ってくれたおかげで、これら過去からやってきた雑多なデータが意味を持って私の前に立ち上がってくる。あの頃彼女と一緒に仕事をしていた時の感動が、少しだけよみがえる。
 彼女は、私たちの生活圏までそれが接近してきたとき、すでに覚悟を決めていた。言葉数が少なくなり、やりかけの仕事を急いで終わらせていった。
 「あなた」
 ある日、彼女は決意を込めた表情で私に話し始めた。
 「自分でもどうしてそうなるのか全く分からない。でも行かなくてはいけないみたいなの。未来が過去からやってきてしまったの」
 私には何のことか全くわからなかった。
 なぜ行きたくもないところへ行かなくてはいけないのか。なぜそんなことが決まっているのか。
 過去から未来への時間とは所詮幻なのか。
 「あなたのことは忘れない、って約束すらしていいのかどうか分からない。でも今、そう今、今という言葉が何を意味しているのか全く分からないんだけどこの今、この世界にただ一つ存在するのに絶対に手に入らないこの今の今」
 彼女は泣き始めていた。自分が何を言っているのか分からなくなっても、ひたすら「今」と続けていた。私は彼女を抱きしめることしかできなかった。
 「今、あなたを愛していることだけは本当。今は本当なの。今は本当なことはずっと本当よね。いつかそうじゃなくなっても、今は本当なことだけはずっと本当よね」
 何も答えられなかった。問いの意味すら理解できなかった。結び合わされた世界が解けていった。すべてが意味を失い、ガラガラと崩れていった。
 世界の意味を支えていたのは、過去を素材にしたあいまいな未来への物語だった。それが消えうせたとき、世界には彼女が言う今だけが残った。しかし、その今は目の前で現れては消える印象の束にすぎず、過去は目の裏に現れては消える心象の泡にすぎなかった。過去がなければ境目すらわかない今が、私の目の前をひたすら通り過ぎて行った。
 いつの間にか私も泣いていた。
 今、私は再び過去を素材に未来の物語を作ろうとしているのか。この世界の意味を回復しようとしているのか。
 私は気づき始めている。あの時現れた彼女の分身がどこから来たのか。彼女がどこへ向かったのか。
 私は気づく。あの不思議な彼女の目撃例は、過去に遡るとだんだんとお腹が大きくなっていくことに。妊娠しているのだ。
 これはつまり、あのとき彼女は私との子供を身ごもっていたということだ。私はまた泣きそうになる。
 どうにか時系列に並べた目撃例は途切れ途切れになりながら、聞いたことだけはある地名に向かっていく。彼女の故郷。彼女が拾われた場所。
 そしてそこから先は、不鮮明すぎて追うことができない。分かることは、お腹の大きな妊婦として目撃されていた彼女が、急に痩せてしまっていることだ。
 これ以上は無理だ。
 しかし、私は理解できた。私が理解できるだけの軌跡を残してくれたことを、彼女に強く感謝した。
 彼女の過去へ向けての旅が、その後どう続いたのかはわからない。私でなくって全く構わない。彼女が誰か、短い間でもいいから同じ時間を進む仲間を見つけて、幸せを共有してほしい。
 私は思い出す。彼女との別れを。
 あの日、ベッドから抜け出した彼女は、ドアから外に走り出した。気づいた私が追いかけた時には、彼女は彼女と瓜二つで同じ服装の人影と対面していた。
 二人は同時に手を伸ばした。
 「やめろ!」
 私の声で彼女が振り返る。彼女の分身も振り返った気がした。しかしそれは違う。時間の流れが逆な者が私の言葉を意味のあるものとして聞けたはずがない。
 彼女は言った。
 「私は確信してる。あなたに出会うために私は生まれた。だからこそ、あなたに出会うために私は行くの」
 二つの肉体は、両方とも私を見たまま、完全に重なり合った。
 凄まじい光が放出されて、私は吹き飛ばされた。
 気づくと私は病院のベッドにいた。
 原因不明の事故により、粒子反粒子消滅が起きて、大量のエネルギーが解放されたと説明を受けた。
 そういう言い方もあるかもしれない。
 しかし私はもっと的確な言葉を知っている。
 彼女は自分の質量の二倍のエネルギーを放出することにより、負の質量を手に入れ、過去に向けて自分の時間を逆進させたのだ。
 彼女の分身の目撃例を過去に向けて遡っていくのは、まさに彼女の旅を彼女の時間に沿って追いかけていくことだった。
 そして彼女が彼女の故郷で産み落とした娘。私と彼女の娘。彼女の手を離れてすぐに、過去に向けてその小さな質量の二倍のエネルギーを放つことにより、正の質量を取り戻して私たちと同じ向きに時間を取り直した娘。
 それもまた彼女自身なのだ。
 彼女は彼女の母親であり、私は彼女の父親であったのだ。
 全く意味がわからないかもしれない。私にだってわからない。なぜ彼女が不思議な輪廻の輪に囚われてしまったのか。なぜその鎖のつなぎ目を私が担うことになったのか。
 しかし、この無数の時間が縒り合わされた世界で、意味のわかるものの方があまりに希少なのだ。考えられるありとあらゆる私たちの人生の経路の干渉を積分した結果がこれなら、それを認めざるを得ない。
 今の私にはただ、私と彼女が量子的に絡み合ったあの瞬間の今を、言祝ぐ以外のことしかできないのだ。

(終)
この作品は次のAndroidアプリのコラボ作品として作ったものである。
あなたの時間
このアプリは午前午後12時間 1時間60分 1分60秒 以外の時間制を自分で作れる。
これがあれば、いつフランス革命が起こって、理性を崇める山岳派が恐怖政治を敷いても、これで十進化時間の時計を見せれば、反革命派ではないと納得してもらえて安心である。
初めてKotlinを使ってみたが、コトリン島に行ってみたくなった。

無限次元超複素数電卓 Infinitenion

暇なのでアプリを作りました。
無限次元超複素数電卓 Infinitenion
複素数、四元数、八元数、十六元数……と任意の2^n元数の帰納極限である実数上無限次元の代数の演算をすることができる電卓です。
ただし、四元数は可換則が成り立たず、八元数は結合測が成り立ちません。
つまり、a(bc)と(ab)cは違う値になります。
すると、計算順序の曖昧さを防ぐために、大量の括弧が必要になってしまいます。
そこで、この電卓では逆ポーランド式の語順を採用しています。
1 + 1と書く代わりに1 1 +と書きます。これは「1に1を足す」と読めば、日本語の順序に似ています。
すると、a(bc)はa b c * *と書き「aに、bにcをかけたものをかける」と読み、(ab)cは「a b * c *」と書いて「aにbをかけたものに、cをかける」と読めばいいのです。これで計算順序を指定するのに括弧はいりません。
なのでこの電卓では1 2 +と書けば3に、1 2 + 3 *と書けば9になるわけです。
さらにE1で最初の虚数単位、つまり複素数のiを表します。なのでE1 E1 * = -1となります(E1 2 ^と書いてもいいです。「E1の2乗」と読みます)。さらにE2とE3は四元数のjとkを表します。E2 E3 * = E1、E3 E2 * = -1 E1 *となるどことが、可換則の破れです。
さらにE3 E10 + E6 E15 - * = 0は十六元数には零因子がある(E3 E10 +やE6 E15 -は零因子)ことを示しています。
ネットで調べると、百二十八元数には冪零元があるなどという、まことしやかな噂が書き込まれていますが、このアプリで少し調べてみると、この代数はいくら次元を大きくしても、冪零元はありえないことが分かると思います。
より詳しい使い方はアプリのヘルプを見てください。また超複素数に関する説明なども付属しているほか、私の自己満足によって四元数の発明者ハミルトンに関する小説が添付されていたりします。ぜひ読んでください。
どうやって、こんな無限次元の演算を実現しているか気になる人はケイリ-・ディクソン(Cayley-Dickson)の構成法について調べてみると分かると思います。肝は、複素数や四元数、八元数を得ベクトルではなく、再帰的に定義された「木」であると考えることです。
どうぞ遊んでくださいな。
そのうちIphone版も作ってみます。


前回のandroidアプリの問題は結局、ただのバグだった。

前回、なんかオブジェクトの再利用でメモリ使用量を抑えてどうのこうのと書いてたが、結局ただのアルゴリズムの間違いだった。
抽象的には同じ対象を表しているのだが、内部表現が違うときに、出来るだけ簡略化して保持しようとする、ということをしているのだけど、簡略化のタイミングが間違っていた。
気付いたのは、ある状況では-1の5乗とかでも、すげえ時間が掛かることに気付いたこと。
ただの-1の5乗だったら時間が掛かるわけがない。
ようは、内部ではむちゃくちゃ複雑な-1を5乗していたのだ。
それを直したら普通に動いた。
だったら、可読性やメンテナンスのしやすさを犠牲にして、コードを書き換える必要はない。
と言いながら、いろいろ書き換えちゃったけど。
「僕の考えた完全なクラス階層」を崩すのは辛いが、後から見直すと、なんでこんなわけの分からない設計にしてあんだか、と思うことも多い。
結果的には簡略化が出来た。
しかし、このコーディングのバグは、デスクトップアプリとして使っていたときから間違い続けていたのだが、マシンの性能がいいので気付かなかったのだ。
やはり、メモリやCPUの貧弱な環境で動かそうとすると勉強になるな。 
次は、時間のかかる計算をさせるときに、プログレスダイアグラムを表示させよう。
初めての非同期マルチスレッドプログラミングだ。
Web上のサンプル見ながら適当に書いて、さっそく動かしてみたら、いきなり問題。
結果を表示するとき、見やすいように出力欄を自動スクロールするのだが、一番下までスクロールしない。
そりゃそうだ。結果が表示されてんのは、スクロールよりも後だもの。 
なるほど、これは難しいわ。
シングルスレッドなら、論理的に考えれば、どの順番で物事が起こるかが分かる。
マルチスレッドでも同期していれば、もちろん分かる。
しかし非同期マルチスレッドプログラミングは、絶対にその順番が分からないという前提の下に計画表を立てていかなければいけない。
これは小説を書くことと、現実を生きることの違いに似ている。
普通の小説はシングルスレッド、せいぜいが同期的擬似マルチスレッドなので、小説を書くことは、現実を生きることに比べれば、ずいぶん簡単だ。
非同期マルチスレッドな小説が存在するか、そもそも可能なのかは知らない。ピンチョンとかどこかそんな雰囲気があるが、まあ雰囲気だけだ。
つまり、これまでのシングルスレッドプログラミングは小説を書いてきた10年以上の経験が役に立ったが、これからはそうはいかない、ということだ(ほんとか?)
そんな現実のように、栓抜きで額を割りに来そうな代物と戦うのだ。
ちょっと考えただけで、落ちてくれと待ち構えている落とし穴の山が見える。 








落とし穴の山ァ?  (自分で書いといて、良く分からない)
Leaves of Words
記事検索
最新コメント
月別アーカイブ
プロフィール

けんさく。

QRコード
QRコード
タグクラウド
  • ライブドアブログ