第7話:摩擦熱のFor Nextループ 〜マクロが灯す文明の光〜
目の前には、最高の食材と、最悪の欠落があった。
新鮮なホーンラビットの肉ブロック。
そして、圧倒的な熱源の欠如。
俺はため息をつきながら、泉の近くの乾燥した岩場に腰を下ろした。
周囲から集めてきた枯れ枝(`item_branch_dry`)と、少し太めの倒木(`item_log_rotten`)を並べる。
着火剤代わりになりそうな乾燥した苔も用意した。
だが、点火の手段がない。
原始的な「きりもみ式」や「弓切り式」の火起こし。知識としては知っている。木の棒を木の板に押し当てて、猛烈な勢いで回転させ、摩擦熱で火種を作る方法だ。
しかし、あれは重労働だ。今の俺の体力(HP)は満タンだが、スタミナと技術が追いつくとは思えない。途中で腕が疲れて止まってしまえば、熱は冷め、努力は水の泡になる。
「継続的な高速反復運動」。
それが火起こしの本質だ。
人間が苦手とし、コンピュータが最も得意とする分野。
俺はニヤリと笑った。
Excelには、そのための機能があるじゃないか。
「マクロの記録」機能が。
俺は手頃な太さの木の枝を一本手に取り、倒木の平らな面に垂直に立てた。
両手で枝を挟み込む。
深呼吸。これから行うのは、偉大なる儀式の「ひな形」作りだ。
意識のメニューバーから [開発] タブを開く。
左上にある赤い丸ボタン。
[マクロの記録] を選択。
ダイアログが出る。
`マクロ名: Fire_Ignition`
`ショートカットキー: Ctrl + q` (急ぐからな)
`保存先: 作業中のブック` (この世界)
[OK] を念じる。
ピロン。
ステータスバーに「記録中」のアイコンが表示された。
ここからの俺の動作は、すべてコードとして記録される。余計な動きはできない。
俺は両手のひらを擦り合わせ、挟んだ木の枝を回転させた。
ズリッ、ズリッ。
右手が前へ、左手が後ろへ。
その逆。
一往復。
しっかりとした摩擦を感じながら、丁寧に、確実に。
動作終了。
すぐに [記録終了] ボタンを押す。
ふぅ、と息を吐く。
たった一回の往復運動。これだけでは熱の「ね」の字も生まれない。
だが、種は蒔かれた。
俺はすかさず VBE(Visual Basic Editor)を開いた。
`Module2` が生成されている。
中身を確認する。
```vba
Sub Fire_Ignition()
'
' Fire_Ignition Macro
'
Selection.Object("branch_01").Rotate Right:=15, Speed:=Normal
Selection.Object("branch_01").Rotate Left:=15, Speed:=Normal
End Sub
```
世界の記述は、やはりオブジェクト指向らしい。俺の動作が `Rotate` メソッドとして記録されている。
このまま実行しても、一回こするだけで終わってしまう。
ここからがプログラマーの領分だ。
俺はコードを書き換える。
回転の回数を、人間には不可能な領域まで引き上げる。
```vba
Sub Fire_Ignition()
Dim i As Long
' 高速処理のための画面更新停止(物理的なブレをなくすため)
Application.ScreenUpdating = False
' 1万回のループ
For i = 1 To 10000
' 速度パラメータを Max に書き換え
Selection.Object("branch_01").Rotate Right:=15, Speed:=Max
Selection.Object("branch_01").Rotate Left:=15, Speed:=Max
' 100回ごとに排熱処理(という名の酸素供給)がないと発火しないかも?
' いや、摩擦熱だけで押し切る
Next i
Application.ScreenUpdating = True
End Sub
```
よし。
1万回往復。速度MAX。
これを実行した時、俺の腕が物理的にどうなるか(ねじ切れるか、勝手に動くのか)分からない恐怖はある。
だから、今回は `Selection` (選択範囲)を「俺の腕」ではなく、「木の枝そのもの」にフォーカスしておく。
俺は手を離し、ただ木の枝が倒木の上に立っている状態(不安定だが、少し穴を掘って固定した)にした。
対象選択: `木の枝`
実行キー: Ctrl + q
カチッ。
ブゥゥゥゥゥゥン!!!
低周波のような唸り声が、森に響いた。
俺の手は触れていない。
だが、木の枝が、視認できないほどの速度で回転を始めたのだ。
残像すら見えない。ただ、そこにある枝の輪郭がブレて、半透明の霧のように見えるだけ。
キュイイイイイイイ!!
木と木が擦れ合う音が、もはや悲鳴のような高音に変わる。
一瞬で紫煙が立ち上った。
焦げ臭い匂いが爆発的に広がる。
「い、いけっ!」
ボッ!
煙の中に、小さなオレンジ色の光が生まれた。
火だ。
それは瞬く間に乾燥した苔に燃え移り、赤々とした炎へと成長した。
俺は慌ててマクロを強制停止(Escキー連打のイメージ)させた。
そのまま回し続けていたら、摩擦熱で枝がプラズマ化していたかもしれない。
回転が止まる。
先端が炭化した枝が、コロンと転がった。
成功だ。
目の前で揺らめく炎。
文明の象徴。
俺は小枝を継ぎ足し、火を育てた。パチパチという爆ぜる音が、これほど心を落ち着かせるものだとは知らなかった。
MPバーを見る。
`MP: 10/10` → `2/10`
ごっそり減っている。物理現象への干渉、それも高速ループ処理は燃費が悪いらしい。
軽い眩暈を感じるが、今は食欲が勝る。
俺は適当な生木(湿っていて燃えにくい枝)を拾い、皮を剥いで串を作った。
そこに、先ほど解体したホーンラビットの肉ブロックを突き刺す。
塩も胡椒もない。
だが、今の俺には不要な装飾だ。
肉を火にかざす。
ジジッ……。
表面の水分が蒸発し、脂が溶け出す音。
ピンク色の肉が、徐々にキツネ色へと変わっていく。
一滴の脂が滴り落ち、炭火に当たってジュワッと煙を上げる。
その煙が肉を燻し、香ばしい匂いをまとわせる。
たまらない。
匂いだけで白飯が食えそうだ。
腹の虫が暴動を起こしている。
「結合エラー:消化不良」なんてバッドステータスはもうない。あるのは純粋な「空腹」だけだ。
中まで火が通ったか?
俺は肉を凝視した。
数式バーを見る。
`焼きウサギ肉`
まだか。
じっくりと回しながら焼く。
表面がカリッと焦げ、脂が泡立っている。
`焼きウサギ肉`
今だ。
俺は串を火から離し、熱々の肉にかぶりついた。
アグッ。
「――ッ!!」
熱い。
だが、その熱さと共に、強烈な旨味が口の中で爆発した。
カリッとした表面の香ばしさ。
その奥から溢れ出る肉汁。
噛み締めると、繊維の一本一本が弾力を主張し、噛めば噛むほど濃厚なエキスが染み出してくる。
野生の味だ。
スーパーで売っているブロイラーのような淡白な味ではない。
血の気が多く、少し鉄分の味がする、力強い生命の味。
臭みはある。ハーブもスパイスもないから当然だ。
だが、その臭みさえも、今の俺には最高のスパイスだった。
これが「生きる」味だ。
トカゲをデータとして吸収した時とは違う。
俺は今、自分の口で咀嚼し、喉を通し、胃袋に落とし込んでいる。
「うまい……」
涙が出そうだった。
ただの焼いた肉が、こんなに美味いなんて。
社畜時代、デスクで流し込んでいたコンビニ弁当や、接待で食べた味のしない高級フレンチが、霞んで消えていく。
俺は夢中で肉を貪った。
骨の周りの肉までしゃぶり尽くし、指についた脂まで舐め取った。
完食。
およそ300グラムはあった肉塊が、数分で胃の中に消えた。
胃袋からじんわりと熱が広がり、手足の先まで血が巡っていく感覚。
MPバーが少し回復した。
`MP: 2/10` → `4/10`
食事による微量回復効果か。
満腹感と共に、強烈な睡魔が襲ってきた。
緊張の糸が切れ、MP枯渇の反動が来たようだ。
火はまだ燃えている。
この火があれば、獣もある程度は遠ざけられるだろう。
俺は倒木に背中を預け、火の暖かさを感じながら目を閉じた。
Excelスキルがあれば、なんとかなる。
火も起こせるし、狩りもできる。
この異世界で、俺は生き残れる。
いや、生き残るだけじゃない。
このふざけた世界を、俺好みの「快適なワークシート」に変えてやるんだ。
そんな野望を抱きながら、俺の意識は `Application.Quit` されたかのように、深い眠りの底へと落ちていった。
……その時。
眠りに落ちる寸前の俺の耳に、ピロリン、という通知音が聞こえた気がした。
`[Achievement Unlocked]: 原始の炎`
`[New Skill]: マクロ記録 (Lv.1) を習得しました`




