/dev/worldとインタフェース
宿屋の部屋で魔法書とやらを確認することにした。
マッチョが隣の席をたった直後、すぐさま足元の魔法書を回収。服の下にこれを隠して、宿屋の自室に逃げ帰った。それはもうヒヤヒヤした。元の持ち主は未だに下の食堂で酒を飲んでいる。
「どれどれ……」
[sato@world items]$ cat Hono-no-Sho.org
{ header: { .......................
.....
.....
power: 1000, type: fire,
........
..............................................} } }
中身は巨大なJSONファイル。
---JSONファイル---
JSON形式という、テキストで記述可能な書式で書かれたデータのファイル。
打倒XMLの御旗の下に語られることが多く、実際に打倒して最近の主流。
------------------
「…………」
なんでだよ、と思った。
ただ、それを言ったらこちらの黒い画面そのものがツッコミどころ満載である。なので素直に受け入れることにした。
その中でも気になったのは、powerだとか、typeだとかいった要素だ。なんかこう、この辺りをいじったら、いい感じの出力結果を変更できるんじゃないかって、思わないでもない。
ただし、実行するには魔石が必要だと、マッチョは言っていた。
魔石ってなんだろう。
「…………」
疑問に思ったところで、ふと思いついた。
[sato@world ~]$ cat items/Hono-no-Sho.org > /dev/world
エンターキーを打とうとして、思いとどまる。
火力の具合によっては、部屋が燃えそうだ。
だって炎の魔法書。
「……明日、外でやるか」
念の為、町の外まで足を運ぶとしよう。
◇ ◆ ◇
翌日、魔法書を片手に町の外に向かった。
外壁から十分に距離を取り、人が行き交う街道からも少し外れて、人気もほとんどない辺り。コンソールを呼び出して目当てのコマンドを打つ。結果が気になって、昨晩はろくに眠れなかったほどだ。
[sato@world ~]$ cat items/Hono-no-Sho.org > /dev/world
エンターキーを押下する。
直後、足元に魔法陣が浮かび上がった。
「マジかっ……」
これってどっち向きに発射されるんだろう。誤爆して自分が怪我とか、絶対にイヤである。すぐ近くにはタッ君の姿もある。この愛らしいペンギンが焼き鳥になるような光景は見たくない。
怖くなったところで意識を頭上に向ける。
すると、ちょうど自身の正面ほどに火球が浮かび上がった。
「うぉっ」
間髪をいれず、それは頭上に向かい飛んでいった。
まるで打ち上げ花火だ。
数十メートルほど上昇して、最後はドカンと轟音を立てて炸裂した。
「…………」
これは危ない。
宿屋でエンターキーを押していたら、死んでいた。
きっと建物ごと吹き飛んでいた。
それくらいの威力が、頭上の爆発には窺えた。
「……しかし、これは夢が広がるな」
どうやら/dev/worldには、特定のインタフェース仕様があるようだ。一定の規則に従って記述されたJSONを入力に与えることで、対応した何かしらの現象が発生するようである。きっとそうに違いない。もしかしたら他の形式も対応しているかも。
ということで、ファイル中に記述があったpowerを100から1に書き換える。
そして、今一度コマンドを実行してみた。
すると今度は、チャッカマンほどの火が手元に浮かび上がり、ポンと軽い音を立てて弾けた。ライターのガスに火を付けたような感じだ。どうやら炎の移動については、こちらの意識に対応して動いてくれるみらい。
なるほど。
「いいじゃないの」
こちらの世界で出来ることの幅が大きく広がった気がする。
/dev/worldは重要だ。
「タッ君、こいつは凄いよ」
『ぐぁ』
もしかしたら、彼に何か変化があるかも、などとも考えていたけれど、そんなことはなかった。少なくともマッチョからコピーさせれもらった魔法書については、炎を吐き出すだけのようである。
◇ ◆ ◇
同所で引き続き、魔法書の中身について勉強することにした。
すると、幾つか見えてきたものがある。
「……良い設計しているじゃないの」
これといってマニュアルを求めることもなく、それっぽい名前の要素を弄ると、/dev/worldに流し込んだ際の挙動が変化した。たとえばtype: fireをtype: iceにすると、氷のようなモノが発射された。そんな感じだ。
要素間の依存関係が十分に疎であるのだろう。
おかげでマッチョからコピった一冊の本があれば、割と色々な魔法を様々な威力で発射する事ができるようになった。
ただ、一つだけ分からないものがある。
JSONの中に一部、base64でエンコードされたバイナリがウバババババっと収まっていた。しかもそれが結構な容量だったりして、データの可読性を著しく落としていた。試しにデコードしてみたがサッパリだ。
一部をいじってみたら、上書きした瞬間、手元から本が消え去った。
フッて、フッて消えた。
ただし、コンソール上には存在を確認できる不思議。
「お、おぉ……」
もしかしたら「モノ」の「外観」のデータなのかも知れない。
そう考えて、お財布の中の硬貨をcatして中身を確認してみた。すると硬貨のJSON構造の中にも、同じkeyでbase64エンコードのバイナリが見つかった。ただし、サイズは物によってまちまちで、同じ大きさの硬貨は一つもなかった。
下手に弄ると崩壊する、という反応は怖いけれど、おかげで判断することができた。当面は弄くらないようにしようと思う。本については弄る前にコピーを取っておいたので、幸い手持ちが消失することはなかった。
「性能と外観のデータが疎結合で良かった」
もしも密結合だったら、威力や方向性を弄ることはできなかっただろう。
この状況で問題のバイナリを逆アセできるほど、自分のスキルは高くない。仮に出来たとしても、ごく一部を解析するのに数ヶ月、場合によっては数年という時間が掛かるのではなかろうか。
「…………」
あれこれ考えていて、ふと思い浮かんだことがある。
魔法書のコピーから、外観のデータを抜いたものを用意する。これを新しいファイルとして保存した上、/dev/worldに突っ込んだらどうなるだろうか。モノとしては手元に存在しないが、コンソール上からは確認できる。
[sato@world items]$ cat fire_with_power_1.json > /dev/world
おっかなびっくりエンターキーを押下する。
すると自身の正面で小さな炎が灯った。
直後にポンと、小気味良い音を立てて爆ぜる。
「……マジか」
「モノ」としては存在せずとも、データとしては存在できるらしい。
いや、これをデータと呼ぶことが正しいのかどうか、それさえも定かではない。そもそも見えない、触れない、どこにあるのか分からない。ただ、コンソールからは確認できる。そんな謎の物体X状態。
「…………」
なんだか怖くなってきた。
本日はとりあえず、type: fireだの、type: iceだの、/dev/worldに突っ込んで反応があったtypeの魔法をデータのみ、威力を十刻みで各々用意して終わりだ。これで当面の戦力としては申し分ない。
万が一、暴漢の類いに襲われても抵抗くらいはできるだろう。
◇ ◆ ◇
宿屋に戻って少し遅めの昼食を取っていると、声を掛けられた。
「おう、昨日の黄色いヤツじゃねぇか!」
「っ……」
肩をドンと後ろから叩かれて、思わず吹き出してしまった。
耳に覚えのある声である。
振り返ってみたら、ドンピシャ。昨晩のマッチョである。
「あ、どうも……」
「いいもん食ってるじゃねぇか。肉定の大盛りか!」
「あ、はい」
肉定、肉定食の大盛りである。
久しぶりに屋外を歩き回ったものだから、ガッツリ食べたい気分だった。何の肉なのかは知らない。濃い感じのタレで味付けされた、焼き肉っぽいお肉と大きなパンが野菜の酢漬けとセットになった一食である。
「オマエ、仕事は何やってんだ?」
「え……」
「ここの宿はそれなりに値が張るからな。ある程度の仕事に就いてなけりゃ、そう何日も泊まることはできねぇだろう? みたところ荒事で稼いでいるようには見えねぇし、そうなるとある程度の仕事を持ってるんじゃねぇのか?」
「あ、いえ、自分はその……」
マジかよ。いきなり過ぎていい返事が浮かばないぞ。
こんなことなら事前に設定とか考えておけばよかった。
「どうした?」
「き、機械の操作員のようなものです」
「なんだそりゃ。職人みてぇなもんか?」
「ええまあ……」
「なるほど、職人なら懐が暖かくなることもあるわな」
よかった、どうやら切り抜けられた予感。
こちらの世界でも手に職のある人たちは一定の地位を築いているようだ。
「ちなみに俺は、これから冒険よ!」
「冒険、ですか」
「町のすぐ近くに手付かずの遺跡が見つかってな。こいつを攻略するのが俺の仕事ってわけだ。珍しいお宝が見つかった日には、一夜にして大金持ちも夢じゃねぇ。やっぱり男なら、大きな夢を追わねぇとな!」
「……たしかに、そうかも知れませんね」
「とは言っても、今日はまだ下見なんだけどよ」
「手付かずの場所というのは、危ないんじゃないですか?」
「そりゃもう当然、危険も危険な仕事ばよぉ。どんなモンスターがいるかも分からねぇ場所に足を踏み入れるんだ。トラップだって沢山あるだろう。けどよ、だからこそ実入りがいいんだよ」
「なるほど」
「おう、店長! 俺にも肉定大盛りで頼むわ!」
「あいよー!」
それからしばらく、マッチョと話をしながら昼食を取った。
冒険者を名乗る彼の話は、以外と為になるものが多かった。少しだけ話したら席を移ろうかとも考えていたのだが、気づけば大量に盛られていた肉の最後の一欠片を食べ終えるまで、彼と話をしてしまった。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます