第16話 家を建てる

 アイテムボックスを作るのは出来たので使用の呪文を解析する。

 『ヒラニシ・モチニミゆヒラニシよ・が・

カイリ・けカセレ・

モチキニソ・けモセレ・

カセほカラセイミゆふ魂名に書き換えふよレ・

モセほニカイモろコラサろリラチシゆカセよレ・

ニカイモろコラサろラセイミゆモセよレ・

カソリラトイゆカセよレ・む』、これが使用の呪文だ。


 イメージは。


void main(void)

{

 TEL *tp; /*魂の定義*/

 MAGIC *mp; /*魔法定義*/

 tp=topen("魂名に書き換え"); /*魂を開く*/

 mp=item_box_load(tp); /*魔法の情報を魂から読み取り*/

 item_box_open(mp); /*アイテムボックスを開く*/

 tclose(tp); /*閉じる*/

}


 こんなところだろう。

 『item_box_load』は『item_box_save』の逆の働き、つまり読み込みだと思う。

 『item_box_open』でアイテムボックスを開く。

 ブラックボックスを考えなければ簡単な呪文だ。


 俺用にアイテムボックスを作る呪文の領域を百万に増やしてコンパイルしておいた。

 ミニア用には領域を一万で呪文を作りコンパイルするように指示。

 試させたところミニアのアイテムボックスの容量は1立方メートルだった。

 という事は俺のは100立方メートルだな。


 ここで一つ疑問がある。

 アイテムボックスを作る呪文でしか領域は確保していない。

 コンピュータープログラムで領域は通常ならスタックという場所に確保される。

 関数が終わる時に解放される。

 だからコスト的な物はゼロだ。

 魔法はコストが発生するとかえってきたりしない。

 だからデータ領域は魔法の場合、自分にある魔力が消費されて生成されていると考えられる。

 アイテムボックスは一度作られた領域がそのまま残っているのだろう。

 そして、俺は気づいた。

 魔力に存在する領域はかまわない。

 じゃあ、魔力外に取られる領域はなんだ。

 要するに大域変数だ。

 まだ呪文で出てきてはいないが、なんか凄い事が起こりそうな予感がする。

 試すのが恐ろしい。


 そして今まで目を背けていたが、呪文のイメージの『char』ってなんだ。

 薄々分かっていたが単なる文字情報ではないな。

 イメージが一塊になった物だと想像した。

 それなら外部から受け取る『char *argv[]』もイメージだと納得できる。

 魂はイメージの塊を更に集めた物だということだ。

 伝言魔法もイメージを送る物だしな。

 なんとなく考えがまとまってすっきりした。


 すっきりした頭でまだ見ていない呪文をミニアに広げさせた。

 沢山の呪文がある。

 後の楽しみに少しずつ解析しよう。

 今日は一つだけ。

 君に決めたストーンウォール。

 イメージは。


void main(void)

{


 MAGIC *mp; /*魔法定義*/

 mp=stone_wall_make(400); /*2メートルの石の壁を作る*/

}


 捻りもなんにもない呪文だ。

 『stone_wall_make』の中身を想像したが、言うまでもないだろう。

 データ領域にデータをセットするだけのプログラムなんてのはループだけでつまらない。

 魔力を現象に変換するところなら興味があるのだが、多分ブラックボックスだろう。

 数行で示せるとは思わない。

 膨大な手順が必要なはずだ。

 用意されている物は不具合がなければ疑問なく使う。

 今までもプログラマーとして、そうやってやってきた。

 今更スタンスを変えるのもな。


 使い易いように改造する。

 イメージはこうだ。


void main(int argc,char *argv[]) {

 magic *mp; /*魔法定義*/

 mp=stone_wall_make(argv[1]);  /*石壁をイメージの大きさで作る*/

}


 コンパイルがパラメーターの所で引っ掛かった。

 『argv[1]』はイメージだからこれを数字に直さないといけないらしい。

 これを解決するヒントなんだが、もらった魔法の中に合言葉魔法ってのがあった。


 呪文はイメージはこうだ。


char main(int argc,char *argv[]) { /*入出力付き冒頭*/

 int i; /*数字定義*/

 i=atoi(argv[1]); /*数字変換*/

 if(i==5834) return('y'); /*もし数字があっていれば『y』を返す*/

 return('n');  /*間違っていれば『n』を返す*/

}


 この魔法の肝は『atoi』で入力したイメージを数字に変えている。

 これを踏まえて改良した呪文イメージは。


void main(int argc,char *argv[]) {

 magic *mp; /*魔法定義*/

 mp=stone_wall_make(atoi(argv[1]));  /*石壁をイメージの大きさで作る*/

}




「家を作るぞ」


 魔法を使い俺はミニアに話し掛けた。


「ウィザ。同じ部屋。眠りたい」

「分かった」




 手始めに床だな。

 10×10メートルの石板をドスンと出した。

 それを二枚出して床にする。


 お次は壁だ。

 板を五枚出して壁とした。

 これだけだと壁が倒れそうだ。

 こういう時はブレス溶接だ。

 巣穴の壁もこのテクニックを使ってツルツルに仕上げた。

 俺はブレスを細く絞り継ぎ目を溶接し始める。

 ブレスに熱せられた石板は真っ赤になり、しばらく経つとガラス状になって固まった。

 うん我ながら上手くいったな。


 11×11メートルの石板を二枚出して載せ屋根に。

 次は中だな3×3メートルの板を出してミニアの私室を中に作る。

 溶接して完成だ。


 まるっきり豆腐ハウスだが仮住まいとしては上出来だろう。

 中に納まって居心地を確かめる。

 屋根があるのは嬉しいが、入り口が開いたままでは締まらない。

 どうするかな。

 10メートルを越える扉なんて発注したら凄い金額取られそう。

 とりあえずミニアの私室にドアをつければ問題ないか。

 そうだ怪獣シダをもってこよう。

 そして、入り口に吊るすんだ。


 そうと決まれば実行だ。

 俺とミニアは森の奥地に飛び怪獣シダを収穫してアイテムボックスに突っ込んだ。


 帰りに6メートルを越える巨大な猪が見えた。

 あいつ美味いんだよな。


「ギガントボア。Aランク魔獣」


 腹は減ってないが持ってかえって干し肉にしたら思う存分食えるだろうな。

 よし、狩って帰ろう。


「狩るぞ」


 空から魔力千の誘導弾を放つ。

 ギガントボアが石の礫のブレスを吐いた。

 だが、誘導弾が粉砕して頭を吹き飛ばした。

 そして、血抜きしてからアイテムボックスに詰め込み街に帰った。


 街に門前に帰ってギガントボアを出すとお祭り騒ぎに。

 何でも幻の極上肉という事らしい。

 街道を使うのは商人が多いから、目の色が変わるのもやむを得ない。

 十年前にSランクパーティが十キロほど持ち帰り金貨百枚の値がついたと商人が話すのが聞こえた。

 それがトンクラスで持ち込まれればな。

 ギルドから解体の人間がやって来て肉は次々に街に運ばれて行った。

 大半は俺用に干し肉に加工してくれる事になっている。

 んっと言って、ミニアが虚空を見つめる。

 何かあったのか。


「腕試しと。会いたい人。居る」

「おー、ミニアにも新しい友達ができたのか。家も出来たし、是非呼びなさい」

「呼ぶ」


 ミニアは再び虚空を見つめ、程なくして口を開く。


「大歓迎無用」


 照れたのか。可愛い奴だな。

 でも、そんな訳にはいかないでしょ。

 ギガントボアの肉でおもてなしだな。

 パパ頑張っちゃうぞ。

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る