第2話 失われた呪文と時空の刻印(コミット)
「い、一秒じゃと……!? 貴様、何を寝ぼけたことを言っておるか!」
第一編纂室長バルカスの怒声が、けたたましく鳴り響く警鐘の音を切り裂いた。
天井の警鐘水晶は赤黒い魔力光を脈打つように放ち、部屋全体の空気を焦げ付かせるような熱気が満ち始めている。
王都の街灯魔力炉の臨界爆発まで、あと十五分もない。
「貴様のような下級魔導士に何ができる! 羊皮紙を一枚も書き直さずに呪文を戻すなど、神代の時空魔法でも使わねば不可能じゃ! 戯言を抜かす暇があるなら、逃げる準備でもせんか!」
「室長、避難命令を出すのは障害の全容を把握してからです。それと、パニックを起こして声を荒らげるのは対応の妨げになります。お静かに」
「な、なにぃっ!?」
アイザックは眉毛一本動かさず、平然と言い放った。
前世で幾度となく経験した本番障害――深夜三時の緊急招集、鳴り止まないアラート、役員からの怒号、チャットに飛び交う阿鼻叫喚。
それに比べれば、目の前で喚き散らすオッサンの声など、心地よいBGMのようなものだった。
障害対応において最も不要なものは「慌てる感情」であり、最も必要なものは「正確な記録」と「冷徹な手順」だ。
アイザックは手に持った薄い黒革の手帳――独自開発した魔導端末『クロノス・ターミナル』の頁に、人差し指を滑らせた。
指先から淡い蒼色の魔力が流れ込み、紙面に刻まれた幾何学陣が起動する。
「ルミナさん、中央大魔導書から少し離れていてください」
「は、はい……! で、でもアイザック先輩、本当にあんなに燃え盛る魔力炉を止められるんですか……?」
「止められますよ。原因が分かっていて、戻すべき正常な過去の記録が存在するなら、障害対応の難易度は一番低い部類です」
アイザックが手帳をトンと指先で叩いた。
「――展開、時空履歴樹」
シュバッ、と澄んだ空間破砕音が響いた。
中央大魔導書の上空に、淡い青白い光の粒子が集まり、何層もの半透明な板となって空中に展開された。
そこに浮かび上がったのは、美しいルーン文字と数字で構成された樹形図――コミットグラフだった。
「な、なんじゃこれは……!? 空中に文字が……!?」
目を丸くするバルカスや同僚魔導士たち。
「これは、この編纂室の中央大魔導書に施されたすべての魔導式の変更履歴――僕が独自に構築した『時空刻印ログ』です」
アイザックは淡々と空中の光の文字を指し示した。前世の世界でエンジニアたちの命綱だったバージョン管理の記録――『Gitログ』を、この世界の魔導工学で再現したものだ。
「大魔導書には僕の魔力式をあらかじめ索引として編み込んでありました。誰かがペンを走らせるたび、その変更差分と刻印時刻が時空の断片として自動的に記録される仕組みになっています」
空中に浮かぶ光のログの一行を、アイザックがタップした。
『刻印番号(Commit Hash):a3f91b4』
『刻印時刻:昨夜 21時14分』
『刻印者:ルミナ・ファルク』
『刻印理由:王都常夜街灯の魔力循環安定化のため、第7章34ページに32行の安全制御式を追加』
「あっ……! 私の書いた呪文の表題……!?」
ルミナが驚きの声を上げる。
「ええ。昨夜、ルミナさんが作業を終えてペンを置いた瞬間、僕の手帳にこの刻印が正常に記録されていました。変更された三十二行の記述も、一文字の狂いもなく完全な差分として保存されています」
そしてアイザックは、その直上に浮かぶ、不気味に赤く点滅する最新のログへと視線を移した。
『刻印番号(Commit Hash):e8d27c9』
『刻印時刻:本日 未明 02時40分』
『刻印者:バルカス・グライフェン』
『刻印理由:【紅蓮爆炎球・極大詠唱】余白署名:我ながら天才の閃きである 第一編纂室長バルカス』
編纂室の中が一瞬で静まり返った。
すべての魔導士の視線が、バルカスへと集中する。
「ば、バルカス室長……本当に街灯の式を消して、自分の火炎魔法を上書きしてたんだ……」
「しかも深夜二時半に忍び込んで……」
「余白に『我ながら天才の閃きである』ってサインまで残してるぞ……」
ヒソヒソという若手たちの囁きが、針のようにバルカスの巨体を突き刺す。
バルカスの顔が、赤から青、青から白へと目まぐるしく変化した。
「ば、馬鹿な! な、なぜ儂が昨夜書いたことや、書き添えた自慢文まで丸裸になっておるのだ!? 貴様、儂に邪悪な監視魔法でもかけておったのか!?」
「監視魔法など使っていませんよ」
アイザックは冷ややかに息を吐いた。
「あなたが大魔導書の余白に、ご自慢の金文字で『我ながら天才の閃きである』と大々的にサインを残していったんじゃないですか。僕の魔導具は、その署名と呪文の表題を改訂理由としてそのまま引用しただけです。自分で残した足跡でしょう」
「う、ぐぬぬぬ……!」
「さて、これで根本原因の特定は完了しました。室長が直書きした刻印 【e8d27c9】 こそが、今回の臨界暴走を引き起こした唯一の原因です」
「ぐ、ぬぬ……! し、しかし原因が分かったところでどうする! もう大魔導書には爆炎の魔力が充填されておるのだぞ! 今さら羊皮紙をナイフで削り落としても間に合わんわ!」
「ナイフなど使いませんよ。そんな泥臭い手作業をするから先祖返りやミスが起きるんです」
アイザックは手帳を水平に構え、指先で空中のコミットログ 【e8d27c9】 を掴むように魔力を収束させた。
「健全だった昨夜の記録 【a3f91b4】 をベースに、バルカス室長による悪影響のある変更を打ち消す逆位相の魔力パッチを自動生成……」
アイザックの瞳の奥で、蒼いルーン文字が高速で回転する。
「――コマンド発動。【時空回帰】!」
手帳の紙面に、光の文字で 『git revert e8d27c9』 と刻まれ、カチリと世界が噛み合うような硬質な音が響いた。
直後、中央大魔導書から眩いばかりの純白の光が吹き上がった。
ページの上でドロドロと蠢いていた紅蓮の魔力インクが、逆再生の映像のように宙へと吸い上げられ、霧散していく。
そして――白紙に戻ったはずの第七章三十四ページに、淡い光をまとったルミナの丁寧な文字が、まるで最初からそこにあったかのように鮮やかに蘇った。
三十二行の、完璧な街灯点灯制御式。
『――カチッ……カチッ……シィィィィン……』
天井で狂ったように鳴り響いていた警鐘水晶の音が、急速にトーンダウンした。
赤黒かった警告光が消え去り、穏やかな緑色の平常光へと戻っていく。
窓の外から、遠く王都のざわめきが聞こえてきた。
見れば、先ほどまで火柱を吹きかけていた街路樹沿いの魔導街灯が、ひとつ、またひとつと、青白い清涼な光を安定して灯し始めていた。
「警報が……止まった……?」
誰かが呆然と呟いた。
編纂室の扉が再び開き、先ほどの伝令魔導士が肩で息をしながら飛び込んできた。
「ほ、報告! 街灯魔力炉の逆流が突如完全に停止しました! 回路内の魔力圧が正常値に復旧、王都全域の街灯が安定点灯に移行しました! 臨界爆発の危機は脱しました!!」
おおおおおっ、と編纂室のあちこちから歓声が上がった。
魔導士たちがへたり込み、胸を撫で下ろしている。
その中で、ルミナだけが呆然と中央大魔導書を見つめていた。
おずおずと大魔導書に歩み寄り、第七章三十四ページにそっと指を触れる。
「私の……私の書いた文字だ……。インクの滲みまで、昨日の夜に書いたときのまま……」
ルミナの大きな瞳から、ぽろぽろと涙がこぼれ落ちた。
だが、今度の涙は絶望の涙ではなかった。
「アイザック先輩……! 本当に……本当に戻ってきたんですね……! 私の書いた呪文が……!」
「ええ、言ったでしょう。あなたの努力はどこにも消えていませんよ」
アイザックは微笑み、懐から清潔なハンカチを取り出してルミナに手渡した。
「ば、馬鹿な……あり得ん……!」
一人、腰を抜かして床にへたり込んでいたバルカスが、震える声で呻いた。
「羊皮紙を一枚も破かず……魔力消去液も使わず……一瞬で元の呪文に戻したというのか……!? 貴様、一体どんな禁忌の魔法を使ったのだ! 時間を巻き戻したとでも言うのか!?」
「時間を巻き戻す? そんな大層な時空改変魔法、使えるわけがないでしょう」
アイザックは肩をすくめた。
「僕がやったのはただの状態復元です。大魔導書の過去の状態を【刻印】として記録しておき、必要に応じてその状態へ魔導書の構成を差し戻しただけに過ぎません」
「こ、刻印……コミットじゃと……?」
ルミナが涙を拭いながら、不思議そうに首を傾げた。
「あの、アイザック先輩。コミットって……普通の『魔導書の書き写し』とは違うんですか? 先輩の手帳の中に、大魔導書がまるまる一冊入っているんですか?」
「いい質問ですね、ルミナさん」
アイザックは空中に浮かぶ半透明の樹形図を優しく指さした。
「もし魔導書を丸ごと複製して保存していたら、手帳の魔力容量があっという間に満杯になってパンクしてしまいます。コミットの素晴らしいところは、『前回の状態から、どこがどう変わったかという差分』を、過去から現在まで鎖のように数珠繋ぎにして記録している点にあります」
アイザックはルミナに向き直り、分かりやすい比喩を探した。
「たとえば、危険な迷宮に挑む冒険者を思い浮かべてください。危険な階層に進む前、安全な拠点の魔導水晶に現在地を記録しておくでしょう? 万が一強力な魔物に出くわして全滅しかけても、その記録地点まで安全に帰還してやり直すことができる……コミットとは、魔導書における『帰還の記録地点』なんです」
(前世のゲームで言えば、ボスの直前に作るセーブポイントのようなものだな)とアイザックは心の中で苦笑した。
「記録地点……!」
ルミナの丸眼鏡の奥で、瞳がキラキラと輝き出した。
「じゃあ……! 呪文を少し直すごとにこまめにコミットしておけば、もし間違えて変な文字を書いてしまっても、すぐに直前の安全な状態に戻れるってことですか!?」
「その通りです。だからこそ、コミットには『なぜ変更したのか』を記す理由が不可欠なんです。『街灯の循環式を安定化するため』と書いてあれば、一年後の自分や他の誰かが見ても、何のために書かれた呪文なのか一目で分かります」
アイザックはチラリと、床に座り込んだままのバルカスに視線を向けた。
「どこかの誰かのように『我ながら天才の閃き』などという自分勝手な落書きを残されては、後から保守する人間が胃薬を何十錠飲む羽目になるか分かったものではありませんがね」
「う、うぐぐぐっ……!」
バルカスは顔を真っ赤にして呻いた。
ぐうの音も出ないとはこのことだ。
しかし、そこは長年第一編纂室長を務めてきたベテランの意地か、バルカスはふらふらと立ち上がると、鼻息荒くアイザックを睨みつけた。
「ふ、ふん! 今回はたまたま儂の書いた式と街灯の相性が悪かっただけじゃ! 失敗したから巻き戻せたというがな、アイザック! 魔導士の仕事は現状維持だけではないぞ! 新しい強力な呪文を開発・実験してこそ一流の魔導士だ!」
バルカスは杖を突き出し、勝ち誇ったように声を張り上げた。
「新しい術式を試すには、大魔導書に実際に書いて実験せねば威力が分からん! 失敗するたびに貴様の手帳で巻き戻していては、まともな研究開発などできんわ! 結局、原典大魔導書に筆を入れねば新しい魔法など生まれんのだ!」
その言葉に、周りの魔導士たちも「確かに……」「実験はどうするんだ?」とざわめき始めた。
ルミナも不安そうに眉を寄せる。
「そう……なんですよね。私も新しい防御魔法のアイデアがあるんですけど……もし大魔導書に書いてまた暴走させたらと思うと、怖くて試せなくて……」
失敗を恐れて挑戦できない若手と、挑戦と称して本番環境を破壊する無謀なベテラン。
まさに、健全な開発基盤を持たない組織が陥る典型的な袋小路だった。
だが、アイザックはその光景を見て、満足そうに口元を吊り上げた。
「ええ、その通りです室長。本番の魔導書で直接実験を繰り返すなど、愚の骨頂ですからね」
「な、なに……?」
虚を突かれたバルカスが目を瞬かせる。
アイザックは黒革の手帳を静かに閉じ、胸ポケットへと収めた。
「ですから――次は『どれだけ失敗して大爆発させても、本番の魔導書には傷一つ付かない平行世界』を作ります」
「へ……? へ、平行世界……!?」
ルミナが丸眼鏡を押し上げながら、ぽかんと口を開けた。
「本流の大魔導書から枝分かれし、自分だけの隔離された空間で自由に呪文を書き換え、実験し、壊せる仮想の魔導書――【平行思考枝】の技術です」
アイザックは優しくルミナを見つめ、力強く微笑んだ。
「ルミナさん。あなたの温めていた新しい防御魔法、明日さっそく思いっきり実験してみましょう。どれだけ盛大に失敗しても、僕のブランチの中なら、王都は絶対に爆発しませんから」
「は、はいっ……! やってみたいです、アイザック先輩!」
少女の瞳に、希望の光が宿る。
一方のバルカスは、「ば、化け物め……何を企んでおるのじゃ……」と脂汗を流しながら後退りしていた。
王立魔導院の旧態依然とした開発現場に、近代ソフトウェア工学の嵐が吹き荒れようとしていた。
◆【今話のITまめ知識:コミットとは「セーブポイント」+「未来の自分への手紙」】
第2話でアイザックが発動した「コミット(Commit)」と「リバート(Revert)」。
Gitを使う上で最も頻繁に触れる、エンジニアの命綱とも言える基本機能です。
◆1.コミットは単なる「上書き保存」ではない
普通のワープロソフトで「上書き保存」をすると、過去の文章は消えて最新の状態だけが残ります。
しかしGitの「コミット」は、「その瞬間のプロジェクト全体の完全なスナップショット」を記録します。
過去のコミットはすべて履歴として残り続けるため、何ヶ月前、何年前のコードであっても、当時の状態を正確に再現・復元できます。
◆2.コミットハッシュ(ID)の正体
作中でアイザックが読み上げた 【a3f91b4】 や 【e8d27c9】 といった英数字の並び。
これは「コミットハッシュ(SHA-1 / SHA-256)」と呼ばれるもので、変更内容や日時・作成者情報から計算された「世界で唯一の指紋(ID)」です。
これがあるおかげで、誰がいつ何を変更したのかをごまかすことは絶対にできません。
◆3.「コミットメッセージ」が命を救う
コミットするときには、必ず「何のためにこの変更をしたのか」を文章として残します。
もしバルカス室長のように「我ながら天才」だの、あるいは「修正」「あ」「test」といった適当なメッセージを書いていると、後からバグが発生した際に「どのコミットが原因なのか」が全く分からなくなり、現場は大炎上します。
未来の自分やチームメイトのために、親切で分かりやすいコミットメッセージを書くことが、一人前のエンジニアへの第一歩です!




