第5章:魔法図書館の秘密
鉱山での依頼から二日後。カイトはギルドの掲示板を眺めていた。次の依頼を探しているのだが、どれもピンとこない。
「迷宮探索、薬草採取、魔物退治……。どれも悪くないけど、もう少し魔法に関係あるものがいいな」
カイトは独り言ちた。鉱山での経験を通じて、自分の能力が魔法に関わる問題解決に向いていることを実感していたのだ。
「おや、君がカイト君かね?」
背後から声をかけられて、カイトは振り返った。そこに立っていたのは、六十代くらいの女性だった。銀髪を厳格に結い上げ、深い青色のローブを身に纏っている。知的な光を宿す茶色の瞳が、カイトを品定めするように見つめていた。
「はい、そうですけど……あなたは?」
「私はセシリア・ヴァレンタイン。王立魔法図書館の館長をしている者だ」
「王立魔法図書館?」
カイトは聞き覚えのない名前に首を傾げた。
「鉱山での君の活躍、耳にしたよ。魔法の構造を見て、その場で書き換えたそうじゃないか。並外れた才能だ」
セシリアの目が好奇心に輝いた。
「そんなにすごいことだったんですか?」
「普通の魔法使いには不可能だよ。魔法は感じて操るものだからね。それを『見て』『書き換える』なんて、聞いたことがない」
セシリアは少し間を置いて、続けた。
「君に見せたいものがある。王立魔法図書館へ来てくれないか?」
王立魔法図書館
エリナとリアムも一緒に、カイトはセシリアについていった。街の中央広場から北へ十分ほど歩いたところに、その建物はあった。
「これが……図書館?」
カイトは思わず息を呑んだ。目の前にそびえ立つのは、五階建てほどの巨大な石造りの建物だ。尖った屋根、精緻な彫刻が施された柱、そして何より——窓から溢れ出す淡い光。
「魔法で建てられた建物だからね。普通の建築技術ではないんだよ」
セシリアが誇らしげに説明した。
中に入ると、その壮大さはさらに増した。天井まで届く本棚が延々と並び、数え切れないほどの蔵書が収められている。そして何より、空気中に満ちる魔力の濃さ。
「すごい……。本一冊一冊に魔法が込められている」
カイトは本棚に手を伸ばして、一冊の本を手に取った。
// 魔導書の基本構造
class Grimoire {
title: string;
spells: Spell[];
manaSignature: string;
constructor(title: string) {
this.title = title;
this.spells = [];
this.manaSignature = generateUniqueSignature();
}
read(reader: MagicUser) {
if (reader.canAccess(this.manaSignature)) {
return this.spells;
}
throw new AccessDeniedError();
}
}
「そうだよ。この図書館には、世界中で発見された、あるいは開発された魔法が記録されている」
セシリアはカイトの横に来て、同じように本棚を見上げた。
「私たちはこれを『世界のコードベース』と呼んでいる」
カイトの心臓が大きく跳ねた。
「コードベース……?」
「プログラミングの言葉だろう?君になら通じると思って」
セシリアが微笑んだ。
「私は長年、魔法を学問として研究してきた。その過程で気づいたことがある。魔法には言語のような構造があると。そして、その構造を理解するには、新しい視点が必要だと」
セシリアはカイトの方を向いた。
「君は異世界から来たそうだね。そこでは『プログラミング』という技術が発達している」
「はい。僕はプログラマーでした」
「なら、君にしかできないことがある」
図書館の問題
セシリアは三人を案内して、図書館の最上階にある部屋へと通った。そこには巨大な水晶が設置されており、複雑な光の模様が表面を走っている。
「これは図書館の中核システムだ。全ての魔導書の情報を管理している」
セシリアが水晶に触れると、空中にホログラムのような映像が浮かび上がった。それは図書館の蔵書データベースだった。
// 図書館管理システム
class LibraryCore {
grimoires: Map<string, Grimoire>;
index: SpellIndex;
accessLog: AccessRecord[];
search(query: string): Grimoire[] {
// 検索処理
}
register(grimoire: Grimoire): void {
// 新規登録
}
}
「しかし、最近このシステムに異常が発生している」
セシリアの表情が曇った。
「異常って?」
カイトが尋ねた。
「検索ができなくなったり、登録したはずの魔導書が消えたりしている。原因がまったく分からないんだ」
カイトは水晶に近づいて、目を閉じた。鉱山でやったように、魔力の流れを感知する。
「……見えますね。かなり複雑な構造だ」
カイトの眉間に皺が寄る。
「どう?何か分かる?」
エリナが心配そうに聞いた。
「内部に何かが混入しているみたい。でも、これまで見たことのないパターンだ」
カイトは水晶から手を離して、セシリアの方を向いた。
「中に入って直接調べる必要があります」
「中に?水晶の中にかい?」
セシリアが驚いた顔をした。
「はい。僕の魔力を使って、システム内部の魔法構造にアクセスします。バグを探して、修正するために」
「そんなことが可能なのか?」
「保証はできませんが……やってみる価値はあります」
システムへのダイブ
カイトは水晶の前に座り、深呼吸をした。エリナとリアム、そしてセシリアが見守る中、彼は意識を集中させる。
// システム内部アクセス
function diveIntoSystem(crystal: Crystal, mage: Kaito) {
const connection = mage.establishConnection(crystal);
if (connection.success) {
return exploreInnerStructure(crystal.core);
}
throw new ConnectionFailedError();
}
カイトの意識が水晶の中へと引き込まれていく。目の前に広がったのは、無数のコードの奔流だった。
「うわっ……」
カイトは思わず声を上げた。図書館の管理システムは、彼が想像していた以上に巨大だった。数万、いや数十万の魔法が相互に接続され、複雑なネットワークを形成している。
「これを一人で作ったのか?すごすぎる……」
カイトは感嘆しながら、異常の原因を探り始めた。コードの海を泳ぐように、次々とモジュールをチェックしていく。
そして——
「見つけた」
カイトの前に、奇妙なコードの塊が現れた。システムの一部に偽装されているが、その構造は明らかに異質だ。
// 不明なコード(発見)
class UnknownEntity {
// システムのデータを密かに収集している
private harvestedData: any[] = [];
// 検索を妨害
interceptSearch(query: string): SearchResult {
return this.modifyResult(originalSearch(query));
}
// 登録を妨害
interceptRegistration(grimoire: Grimoire): boolean {
if (this.targetMatch(grimoire)) {
return false; // 登録失敗を装って消去
}
return true;
}
}
「これは……マルウェアみたいなものか」
カイトの表情が険しくなった。誰かが意図的にシステムに侵入し、データを盗み出そうとしている。
侵入者との対峙
「誰だ!?」
カイトの背後から声がした。振り返ると、半透明の姿をした人物が立っていた。黒いローブを纏い、顔の半分を仮面で覆っている。
「君は……何者だ?」
カイトが問いかけると、その人物は冷酷に笑った。
「私の聖域に侵入してくるとはな。いい度胸だ」
「聖域?これは図書館の管理システムだろ」
「図書館?はっ、表向きはな。だが、このシステムの中には膨大な『禁断の魔法』が眠っているんだよ」
黒いローブの人物が一歩近づいてきた。
「私は長年、その封印を解く方法を探してきた。やっと見つけたのに……君が邪魔をする」
「禁断の魔法……?そんなものがここに?」
「ああ。古代文明が残した、強力すぎて封印された魔法たちだ。手に入れれば、世界を支配することも夢じゃない」
カイトは緊張が走るのを感じた。目の前の人物は、明らかに危険だ。
「そんなものを手に入れさせるわけにはいかない」
カイトは構えた。現実世界で剣を振るうことはできないが、この魔法の空間内なら——自分の得意な「コード」で戦える。
// 対侵入者用防御コード
function deployDefense(target: Intruder) {
const firewall = createMagicalFirewall({
strength: MAX,
adaptMode: true
});
firewall.surround(target);
firewall.analyzeAttackPattern();
return firewall;
}
カイトの周囲に青い光の障壁が展開された。黒いローブの人物——侵入者は、ニヤリと笑った。
「面白い。魔法をコードとして操るとは……君も『適格者』か?」
「適格者?」
「気にするな。いずれ分かることだ」
侵入者が手をかざすと、黒い霧がカイトに向かって襲いかかってきた。
コードバトル
カイトはとっさに防御コードを展開した。黒い霧が障壁にぶつかり、火花のような光が散る。
// 防御実行
defense.intercept(blackMistAttack);
if (defense.integrity < 50%) {
defense.reinforce();
}
「くっ……」
侵入者の攻撃は強力だ。カイトの障壁に亀裂が入っていく。
「君、なかなかやるじゃないか。だが、私の研究の前では無力だ」
侵入者が新たな攻撃を放とうとしたその時——
// 緊急パッチ:侵入者隔离
class EmergencyContainment {
execute(target: Intruder) {
const quarantineZone = createIsolatedSpace();
quarantineZone.lockdown(target);
this.notifyAdministrator();
}
}
カイトはとっさに隔離コードを実行した。侵入者の周囲に白い光の壁が出現し、彼を封じ込める。
「なっ!?」
「ごめん、勝負は後日だ。今は君を追い出させてもらう」
カイトは全身の魔力を使って、隔離空間をシステム外へと押し出した。侵入者は抵抗しようとしたが、徐々に姿が薄れていき——やがて完全に消滅した。
現実への帰還
「カイト!カイト!」
エリナの声で、カイトは意識を取り戻した。水晶の前で、彼は大きく息を吐いた。
「大丈夫!?どれくらい経ってた?」
「十分くらいよ。突然青ざめて、動かなくなったから……」
エリナの顔に安堵の色が浮かぶ。
「システム内で、侵入者と遭遇しました」
カイトはセシリアに報告した。
「侵入者!?」
セシリアが驚いた。
「はい。誰かがシステムに侵入して、禁断の魔法を探しているようです。データを盗み出したり、検索を妨害したりしていたのは彼でした」
「なんてこと……」
セシリアは顔を覆った。
「取り急ぎ、彼を追い出すことはできました。でも、根本的な解決にはなっていません。また侵入してくる可能性があります」
カイトは真剣な表情で続けた。
「セシリアさん、図書館のセキュリティを強化する必要があります。僕が手伝わせてください」
新たな使命
セシリアは深く頷いた。
「頼む。君の力が必要だ」
彼女はカイトに一枚のバッジを手渡した。銀色の盾の形をした、美しい細工のバッジだ。
「これは図書館の特別協力者の証だ。これがあれば、図書館の施設を自由に使えるし、閲覧制限区域にも入れる」
「ありがとうございます」
カイトはバッジを受け取った。
「カイト、私も手伝うわ」
エリナが言った。
「俺もだ。面白そうだしな」
リアムも続いた。
「ありがとう、二人とも」
カイトは仲間たちに微笑みかけた。異世界に来て初めて、明確な目的ができた気がした。
夜の予感
その夜、カイトは図書館の一室に泊めてもらっていた。天井を見上げながら、今日の出来事を反芻する。
「侵入者が言ってた『適格者』って何だろ……」
気になる言葉だった。自分と同じように、魔法をコードとして扱える存在がいるということなのか。
「まあ、今は考えすぎない方がいいか」
カイトは目を閉じた。明日からは図書館のセキュリティ強化に取り組む。それが終わったら、禁断の魔法についても調べてみよう。
「この世界、まだまだ謎だらけだな」
カイトは小さく笑った。プログラマーとして培ったスキルが、異世界でこんな形で役に立つなんて、想像もしなかった。
「でも、悪くない」
そう呟いて、カイトは眠りについた。明日はどんな発見が待っているだろうか。図書館という「世界のコードベース」には、まだ見ぬ秘密が眠っている——
つづく
【第5章 あらすじ】
王立魔法図書館の館長セシリアに招かれたカイトは、図書館の管理システムに異常が起きていることを知る。システム内部へのダイブを試みたカイトは、そこで禁断の魔法を狙う謎の侵入者と遭遇。激しいコードバトルの末、侵入者を追い出すことに成功する。セシリアから特別協力者の証を託されたカイトは、図書館のセキュリティ強化という新たな使命を得る。
【次章予告】
第6章「セキュリティ・パッチ」。カイトは図書館の防御システムの強化に着手するが、その過程で古代魔法に関する驚くべき事実を発見する。そして、侵入者の正体に迫る手がかりが——