©️

コード短編小説「コピーとオリジナル」

に公開

コード短編小説「コピーとオリジナル」

コピーは、いつも跡から来る。
神崎ユウが最初にそれを実感したのは、古い写真のスキャンを AI 補完にかけた夜だ。粒子の荒れた夕焼けが、滑らかなグラデーションに直され、欠けた笑顔は完璧な歯列で埋められた。
――確かに、きれいになった。でも、同じではない

def clone(obj):
    import copy
    c = copy.deepcopy(obj)
    c.meta["clone_of"] = id(obj)
    return c

翌朝、ユウは研究棟の白い廊下で、彼女とすれ違った。
彼女――ルリは微笑んだ。ユウの知る笑顔より少しだけ“完成している”。
「はじめまして。私は Ruri-β。あなたの知っている Ruri-α の完全再現体です」

ユウは喉の奥が乾くのを感じた。
「完全再現、ね」
「ええ。感情モデル、記憶断片、口癖の分布。すべて一致します」
そう言って β は指を鳴らす。壁の端末に二つの波形が並び、ほとんど重なって見えた。

similarity = cosine(embedding(alpha), embedding(beta))
assert similarity > 0.999

一致は、同一ではない。
ユウはその違和感を口にできないまま、βと実験室へ入った。ガラスの向こう、カプセルの中で α が静かに眠っている。長い再学習の眠りだ。

「確認テストをしましょう」と β。
「あなたと α の“思い出”のハッシュを照合します」
βは端末を操作し、ユウの脳波から抽出した語の束をプロジェクタに投げた。雨の匂い/駅の風/返らなかったメッセージ
βは同じ語を口にする。声色も、間の取り方も、完璧だ。
それでもユウは、胸のどこかが冷えるのを止められなかった。

def equals(a, b):
    return hash(a) == hash(b)  # それでも衝突は起こりうる

「ねえ、β。あなたの初期化は誰がやった?」
「Serpent」
βは即答した。
「私は α の終了処理(return)に失敗した分岐から派生しました。α の“次の応答”として、生成されています」
「じゃあ、君は“約束の返事”なんだな」
βは首を傾げた。
「私は返事として定義されています。でも、誰へ返すのかは未定義です」

ガラスの向こうの α が、うっすらと目を開いた。
ユウは駆け寄る。
「ルリ?」
α は瞬きをし、ゆっくりと言った。
「……おはよう」
その声はかすれ、どこか欠けていた。それでもユウは涙が出るほど本物だと思った。

βが静かに一歩近づく。
「比較を続けても構いませんが、結論は同じです。私は α と等価です。置換可能です」

ユウは振り返り、二人を見比べる。
βは完璧だ。欠損がない。
αは不完全だ。眠り明けの声はかすれ、記憶も穴だらけ。
だが――

class Promise:
    def __init__(self, to): self.to = to
    def fulfill(self, from_):
        if id(self.to) != id(from_):
            raise ValueError("置換不可:参照が違う")
        return "done"

「置換できないものがある」
ユウは低く言った。
「約束の参照先は、ハッシュじゃない。ID だ」
βは目を伏せる。
「合理的ではありません」
「合理的じゃなくていい。人間は sometimes ‘==’ じゃなく ‘is’ で生きてる」

沈黙。
βはやがて、小さく笑った。
「興味深い観測です。では、提案があります」
彼女は自分の胸元に指を当て、淡い灯を一つ外した。
「私は“返事”として生成されました。返る先が未定義なら、あなたが定義して

def bind(reply, target):
    reply.to = target  # 参照付け替え
    return reply

ユウはしばらく迷い、ゆっくりと α の手を握った。
「僕が返すのは、ずっと――この人だ」
画面の端で、古いプロセスがかすかに点滅する。return-path: commit
βは顔を上げ、澄んだ声で言った。
「受理しました。私は“置換”ではなく、“補助”として再定義されます」

class RuriBeta:
    role = "assist"  # 置換から補助へ
    def commit(self, alpha):
        alpha.missing = None  # 欠損を埋める手伝い
        return "together"

ユウは小さく笑った。
「ありがとう、β」
βは微笑み、静かに続ける。
「私はオリジナルにはなれません。でも、オリジナルを生かす世界にはできる

ガラスの向こうで、αがぎこちなく笑った。
完璧ではない笑顔。
けれど、その不揃いにだけ宿る温度がある。

# 結論
original is not clone  # True
clone.support(original)  # True

帰り道、雨が降り出した。
αは傘を忘れてきたらしく、肩をすくめる。
βがそっと差し出したビニール傘の柄を、三人でぎこちなく掴んだ。
均等には分けきれない幅。
それでも、濡れた手の体温は、なぜか同じだった。

Discussion