第22章:約束の結晶
カイトは並列世界からの情報を整理していた。左の世界、右の世界、そして今いる中央の世界。三つの並列世界から、絶えずデータが流れ込んでくる。
「情報が多すぎて、処理しきれない……」
カイトは頭を抱えた。世界間通信チャネルは正常に機能しているが、三つの世界からの入力が競合を起こし始めていた。
class EventEmitter {
constructor() {
this.events = {};
}
on(event, listener) {
if (!this.events[event]) {
this.events[event] = [];
}
this.events[event].push(listener);
}
emit(event, data) {
if (this.events[event]) {
this.events[event].forEach(listener => {
try {
listener(data);
} catch (error) {
console.error('Event error:', error);
}
});
}
}
}
const worldChannel = new EventEmitter();
エリナがカイトの横に座り、心配そうに覗き込んだ。
「カイト、顔色が悪いわよ。無理してない?」
「大丈夫。ただ、三つの世界からのデータを整理してるんだ」
カイトは空中に浮かぶコードを指差した。金色の文字が、まるで星座のように並んでいる。
「左の世界では、禁断魔法を使った僕が古代の図書館を発見した。右の世界では、リアムと共に遺跡を破壊した僕が、守人アルフレッドと対峙してる」
「そして、ここでは私たちと一緒にいるカイトがいる、と?」
エリナが確認するように聞く。カイトは頷いた。
「そう。三つの道が、いつか一つに収束するはずなんだ。でも、どうやって……」
その時、世界間通信チャネルに強烈なシグナルが飛び込んできた。
// URGENT: Discovery in World A
// Location: Ancient Library, Sector 7
// Object: Crystal of Promises
// Status: Requires immediate synchronization
カイトは息を呑んだ。「約束の結晶」——それが、ヴェリディアンが遺した最後の魔法書の中で言及されていた物体だ。
「エリナ、リアム! 集まってくれ!」
カイトは仲間たちを呼び集めた。セシリアも、回復魔法の準備を整えて駆けつける。
「何があったんだ?」
リアムが剣を腰に携えながら聞く。
「並列世界の僕が、『約束の結晶』を発見した。それがあれば、三つの世界を一つに統合できるかもしれない」
「統合? どういうこと?」
セシリアが不思議そうに首を傾げる。
「今、僕たちは三つの並列世界に分裂している。それぞれの世界で、異なる選択をした僕が存在するんだ。でも、本来あるべき姿は一つ。それを収束させるには、強力な同期ポイントが必要なんだ」
カイトは説明しながら、空中に図を描いた。
/**
* World Convergence Pattern
*
* World A (Forbidden Magic) ---\
* |--> Crystal of Promises --> Unified World
* World B (Destruction) -------|
* |
* World C (Current) -----------/
*/
エリナが理解したように頷いた。
「つまり、その結晶がハブになるってことね?」
「そう。Promise.all みたいなものだ。全ての非同期処理が完了するのを待って、結果を一つにまとめる」
カイトは立ち上がり、決意を込めて言った。
「左の世界——禁断魔法を使った僕の世界——に行く必要がある」
「えっ? でも、並列世界間の移動は危険じゃなかったの?」
エリナが心配そうに聞く。
「通常はね。でも、今は世界間通信チャネルが確立されてる。それをガイドにすれば、安全に移動できるはずだ」
カイトは魔法陣を描き始めた。三重の円が重なり合い、複雑な幾何学模様を形成していく。
class WorldPortal {
constructor(targetWorld, channel) {
this.target = targetWorld;
this.channel = channel;
this.stable = false;
}
async open() {
// Synchronize with target world
const sync = await this.channel.requestSync(this.target);
if (!sync.success) {
throw new Error('Synchronization failed');
}
// Create portal
this.stable = true;
return this.createGateway();
}
createGateway() {
return {
enter: (traveler) => {
if (!this.stable) {
throw new Error('Portal is unstable');
}
return this.transport(traveler, this.target);
}
};
}
}
カイトの周りに、透明な膜のようなものが張られた。世界間を移動するためのポータルだ。
「僕一人で行く。みんなはここで待っててくれ」
「何言ってるの! 私も行くわ!」
エリナが反論した。
「危険だ。並列世界の移動は、体に負担がかかる」
「カイト一人で行かせる方が危険よ。私が回復魔法を使えるし、セシリアも連れて行きましょう」
リアムも頷いた。
「俺も行くぜ。いざという時は、俺の剣が役に立つ」
カイトは仲間たちの顔を見渡した。皆、決意に満ちた表情をしている。
「……わかった。一緒に行こう。でも、必ず僕の指示に従ってくれ。いいね?」
全員が頷いた。カイトは深呼吸をして、ポータルを完成させた。
const portal = new WorldPortal('WorldA', worldChannel);
await portal.open();
// Transport party
party.forEach(member => {
portal.gateway.enter(member);
});
世界が歪んだ。景色が溶け合い、再構築されていく。重力が反転し、色彩が反転する感覚。
そして——
カイトたちは、左の世界に到着した。
並列世界A:禁断魔法の代償
その世界は、中央の世界とは微妙に異なっていた。空が紫色に染まり、地面から蒸気が立ち上っている。
「ここが……禁断魔法を使った僕の世界……」
カイトは戦慄した。この世界の自分が、どんな代償を払ったのかが見えてきたからだ。
遠くに、一人の人物が立っていた。カイトだ。しかし、その姿は枯れ果てているようだった。肌は蒼白で、目の下には深い隈がある。
「来たか……中央の僕」
もう一人のカイトが、かすれた声で言った。
「君が……禁断魔法を使った僕?」
「ああ。古代の図書館を見つけるために、魂の半分を代償に払った」
もう一人のカイトは、ゆっくりと歩み寄ってきた。その足取りは覚束ない。
「でも、見つけたんだ。約束の結晶を」
もう一人のカイトが手を差し出すと、掌の中に輝く結晶が浮かび上がった。七色に光り、内部には無数の文字が渦巻いている。
「これが……約束の結晶」
カイトは息を呑んだ。結晶からは、計り知れない魔力が放たれている。
「受け取ってくれ。中央の僕。これを君の世界に持ち帰り、三つの世界を統合するんだ」
「でも、君は……?」
「私はもう長くない。禁断魔法の代償は、魂を削り取る。残り時間は少ない」
もう一人のカイトは、悲しげに微笑んだ。
「でも、後悔していない。君が未来を切り開けるなら、それでいい」
エリナが涙を浮かべていた。リアムも、無言で拳を握りしめている。
カイトは震える手で、約束の結晶を受け取った。瞬間、膨大な情報が脳に流れ込んできた。
/**
* Crystal of Promises
*
* This artifact synchronizes all parallel worlds
* and converges them into a single timeline.
*
* Usage:
* 1. Gather all world keys
* 2. Invoke Promise.all()
* 3. Accept the converged result
*/
class CrystalOfPromises {
constructor() {
this.worlds = new Map();
this.resolvers = [];
}
registerWorld(worldId, key) {
this.worlds.set(worldId, key);
}
async converge() {
const promises = [];
for (const [worldId, key] of this.worlds) {
promises.push(this.fetchWorldData(worldId, key));
}
const results = await Promise.all(promises);
return this.mergeWorlds(results);
}
mergeWorlds(worldDataArray) {
// Merge all world data into unified timeline
return {
timeline: 'converged',
worlds: worldDataArray,
timestamp: Date.now()
};
}
}
カイトは理解した。約束の結晶は、並列世界を同期し、一つに統合するためのデバイスだ。
「ありがとう……もう一人の僕」
カイトは言った。もう一人のカイトは、静かに目を閉じた。
「君の中で、私は生き続ける。三つの世界が一つになる時、私の選択も無駄にはならない」
もう一人のカイトの体が、光の粒子となって散っていった。禁断魔法の代償——魂の消失。
カイトは結晶を胸に抱きしめた。涙がこぼれそうになるのを必死に堪える。
「戻ろう。中央の世界に」
エリナがカイトの肩に手を置いた。
「カイト……」
「大丈夫。彼の意思は、この結晶の中に生きている。僕たちが世界を統合すれば、彼の選択も報われる」
カイトはポータルを再び開いた。今度は、中央の世界へ戻るためのゲートだ。
// Return to central world
const returnPortal = new WorldPortal('WorldC', worldChannel);
await returnPortal.open();
party.forEach(member => {
returnPortal.gateway.enter(member);
});
世界が再び歪み、カイトたちは中央の世界に帰還した。
統合への準備
元の世界に戻ったカイトは、すぐに準備を始めた。約束の結晶を使って、三つの並列世界を統合するために。
「まず、三つの世界のキーを集める必要がある」
カイトは説明した。
「左の世界のキーは、もう一人の僕が遺してくれた。右の世界のキーは……」
その時、世界間通信チャネルに別のシグナルが飛び込んできた。
// INCOMING: World B
// From: Parallel Kait (Destruction Path)
// Status: Under attack by Guardian Alfred
// Request: Immediate assistance
カイトは息を呑んだ。右の世界——遺跡を破壊した僕——が危機に瀕している。
「リアム、エリナ! 右の世界にも行く必要がある!」
「えっ、今から!?」
エリナが驚く。
「そう。あっちの僕も助けて、三つ目のキーを手に入れないと、統合できない」
カイトは再びポータルを描き始めた。連続する並列世界移動は、体に大きな負担がかかる。しかし、選択の余地はなかった。
「セシリア、回復魔法を準備してくれ。移動の度に、僕たちの体を癒やす必要がある」
「わかりました。全力でサポートします」
セシリアが杖を構える。
カイトは深呼吸をした。三つの世界、三つの道、そして三つの自分。
「全ての約束を果たす時が来た」
カイトは、約束の結晶を高く掲げた。七色の光が、空を照らす。
Promise.all —— 全ての約束が果たされた時、世界は一つになる。
(第22章 了)