第2話 新世界の神
眩しい――。瞼を閉じていてもわかるこの明るさ。朝……? いや、もっと眩しい。何時……? 昨日は確か……
ガバッ
「やべっ。二度寝したっ!」
青い空。すがすがしい風。日は高く、お昼が近そうな頃合いに見える。
そうだ。夢から覚める夢をみていた。ただ何もない白い世界で、名前を入力しろと言われた俺はSQLインジェクションを試みて……。新世界? とやらに導かれた、そんな夢だった。
夢の中で目覚めたつもりで二度寝してしまうとは――。いや? 草原? オフィスの長椅子で横になったはずだ。どういうことだ? 草が生えてるぜ。よもや、異世界転生? そりゃ草が生えるぜ?
「マジか?www」
半笑いになりながら周囲を見渡す。草。
そしてそこに不自然な吹き出しがあることに気づいた。
『(+0.0000000 , +0.0000000)』
座標……? 空中にぺらっぺらな吹き出しが浮かんでいる。手をかざすと通り抜けるが、しかししっかりと視認することはできた。
「案内板なのか……? しかし、0,0 ってのはこの世界の座標系の原点か。大丈夫かよ?」
地図アプリなどでしばしば現在位置が指定されていない場合に北緯0度、西経0度に飛ばされることがある。地球ではアフリカ大陸はギニア湾の洋上になる。 ……ひとまず、海の上でのスタートじゃなかったことを喜ぼう。
しまし、これはマジで異世界か。それもゲーム系だな。異世界転生するようなことなんてしたか? 昨日はオフィスでデバッグ作業やってて午前様だったよな。確か、家に帰ろうと思ったけど頭痛が酷くて長椅子で横になって……。
「……死んだのか?」
あの酷い頭痛、もしかして、くも膜下出血とかだったのだろうか。まさか俺が? しかし、死因としてはありがちである。
「草も生えねえな……」
しばらく俺は、草原の真ん中に佇んでいたが、過ぎてしまったものはしょうがない。やっていた仕事から強制退場した形になってしまったのが少し心残りだが……? いや、そうでもないな。クソな仕事だった。元請けがちゃんと技術分かってないからリスクコントロールがまるでなっちゃいない。俺が死んでしまったら後任なんているわけもないのにな。トラックナンバー(プロジェクトメンバーのうち何人がトラックに轢かれて亡くなってもプロジェクトを続行できるかという数字。少ないほど危うい)は堂々の1だった。今頃あいつら天手古舞だぜ。
そんなことを考えていたらちょっと愉快になってきた。あの責務に追われる日々がすっかりすっきり無くなってしまったのだ。重課金してやりこんだソシャゲがサービス停止してしまったような、侘しさと、ある種の開き直りのような清々しさであった。
§
周囲には人の暮らすような気配はなく、遠目にも人工物らしきものは見えない。そして座標を表すとおぼしき宙に浮いた吹き出し。値は(+0.0000000 , +0.0000000)というゼロ点。およそ、正常なスタートとは思えない状況であった。
「ひとまずはステータス確認をしたいところだが……。えーっと。ステータスオープン?」
最近の若人は照れもしないのかもしれないが、三十路のおっさんには音声入力はこっぱずかしかった。近年は
名前 : hoge
種族 : ヒューマン
年齢 : 0
レベル 0
HP 0/0
MP 0/0
…… 中略 ……
スキル なし
……ぉぅ……やっちまった。自分がSQLインジェクションで入力した文字列がどのようなクエリになって実行されただろうか?
1) INSERT INTO users VALUES (' hoge');
2) INSERT INTO role (name,role) VALUES ('hoge','god');
3) --');
この 1) はユーザーテーブルに'hoge'というユーザーを作るということだが、本来ユーザーってのはいろんなパラメータがある。本来のSQL文はおそらく
INSERT INTO users VALUES (' hoge', 1, 30, 1, 120, 120, ……);
といったように、名前の後ろに種族や年齢、レベルなどの情報がずらずらと並んでいたんじゃないだろうか? 俺は role テーブルに 'god' を付与するなんて悪戯に目がくらんでしまって、これらのパラメータをすっかり無くしてしまった。それがこの、0が並ぶステータス欄というわけだ。
とはいえ、ステータスが0でも身動き取れないわけではなく、とりあえず動けているということは、パラメータが絶対値というわけではなく、なんらかのデフォルト値からの相対値になっているとか、まぁ何らかの理屈があるんだろう。ちょっと今は検証ができないところだが。
HPが0でも死なないのはなんだろうな? 境界値バグとかなんだろうか。いずれにせよ、このままじゃまずそうだな。なんらかのクラッキングで修正できればいいんだが……。ステータスを端から端まで眺めたが自由に変更が可能な入力欄はなかった。ユーザー名なんて基本的なところでSQLインジェクションが起きるような雑な作りだ、システム的な自由入力欄があればそこもSQLインジェクションが通る可能性は高い。どこかに穴がないかは探っていかねばなるまい。
「ん? ところで俺の名前は hoge なのか……?」
hogeというのはそのままローマ字読みで「ほげ」であり、プログラマがサンプルコードなどで特に意味をもたない変数であることを示すために用いられる。こうした変数をメタ構文変数といい、「意味のない名前」であることが広く知られていることに意義があり、これがサンプルコードであるということが明確化される。
SQLインジェクション攻撃ができるかを試したいだけだったので特に名前は何でもよかった。なんでもいいやということでとりあえず適当にhogeと入力したものがそのまま通ってしまい、この世界での名前がhogeに固定されてしまったのだった。
「これは……格好悪いな……」
異世界転生した俺は新世界で神となった。hoge神の第一日目である。
----------
hoge神が爆誕しました。
メタ構文変数として hoge を使うというのは日本に特有のもので、英語圏で広く使われるのは foo, barといったものです。foo, bar については RFC 3092 で語源について記載されているので読んでみるのも面白いかもしれません。
hoge の語源についてははっきりしたことは分かっていません。1980年代前半に日本全国で同時多発的に発生したと言われています。一説にはドラえもん(1969年 -)のジャイアンの歌声に端を発するとか? 真相はどのようなものなのでしょうか。
日本語圏でのメタ構文変数としては他に piyo が用いられることもあります。これはめぞん一刻(1980年 -)のヒロイン、音無響子エプロンの文字が由来といわれています。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます