第11話 自作プログラムに挑戦・作成と実行、そして――
さて……軽い気持ちで引き受けた仕事が、とんでもないことになってしまった。
広々としたダンスホールに敷き詰められた真っ白な床タイル。これを日付が変わるまでに全て青に塗り替えなければならない。
思わずまとめて雑に塗りたくなるところだが、タイルの継ぎ目に塗料が入るとそこだけ色合いが変わってしまう。手抜き仕事をすれば、あのお嬢様に付け入るスキを与えるだけだ。
なので、はみ出さず塗り残しや色ムラも無くとりあえず素人目には文句を付けられないような品質であることが大前提となる。
そしてそれを五時間で百枚という厳しすぎるノルマ。しかも、作業員は僕一人。
もはや絶望的である。こんな状況、昨日までならきっとひどく狼狽していたことだろう――でも、今日の僕は一味違う。
「ヘルプ。聞こえるかい?」
(はい、マスター)
返事と同時にタブレットからすうっとヘルプが飛び出てきた。
確かにこれは危機的状況だ。だけど、逆に考えればプログラミングの性能を確かめるチャンスでもある。
「この床タイルをはみ出さず、ムラも無く、塗り残しも無く、全部青に塗らなきゃならない。制限時間は五時間。いけるかな」
もしこの難局を乗り切れるほどの性能だというなら――いや、きっと大丈夫。
僕はアイディを起こしながらヘルプに状況説明を始めた。
(もちろん。その程度、マスターなら余裕ですわ!)
ヘルプはそう言うと、にこーっと邪気の無い笑顔を見せてくれた。
どうしてそこまで信頼を寄せてくれるのかは正直よく分からないけど、まあタブレットの所有者特権とでも思っておくことにしよう。
「良かった。ヘルプがそう言うんなら大丈夫そうだね。
それで……僕の記憶だと、『平時』プログラムの場合は
(それは聞くより見た方が早いです。
でも、プログラムを作るのがもっと楽しくなることだけはお約束しますですよ!)
知識としては知っていても、やってみないと分からないこともある。
特に、初めて触る『平時』プログラムは僕の体が勝手に動くのではなく『
「へえ。それは楽しみだな。
じゃあ、まずは『タイル塗り』スキルを手に入れるところからだね」
(ええ、その通りですわ。早く身につけられるよう、頑張ってくださいです!)
プログラムの中で『何に』とか『何をする』といった『対象』は所有者本人が体験し、『スキル』として身に着けて始めて『命令』で使用することが出来るようになる。
塗装など素人の自分には当然のことながらそういったスキルは未収得であり、まずは自分自身の手を動かしてスキルを得るところから始めなくてはならない。
何をどうやるかも知らない人間が指示など出せるわけがない、と考えれば当たり前の話なのではあるが、ここで手間取ると全体の予定がどんどん後ろ倒しになっていってしまう。
なので、プログラムと同じくらい重要な要素であることは間違いないのだ。
刷毛を握ってバケツ入れた塗料に軽く浸し、まっさらな百枚のタイルに対峙した僕は敢えて大きめの声で自らを鼓舞する。
「よし、やるぞ!」
地味だけど熱い夜が――今、始まった。
――――
「うーん……これは……どうだろう」
たっぷり三十分を掛け、ようやく一枚目が終わった。
教わった通り、丁寧にやってみたつもりだけど……。
タブレットの画面に表示された『対象一覧』をタップする。
「あ、あった。
……でも、LV1かあ……」
画面には既に習得したスキルの他に混じって<NEW! タイル塗り LV1>という『対象』が増えていた。
あれだけ時間をかけてやったのに最低レベルでしか習得できていなかったのは少々残念ではあるけど、もう時間も無いし贅沢は言っていられない。
ひとまず、これで進めるしかないだろう。
再びプログラム画面を開くと、<実行条件>を実行ボタンタップ時に変更して命令文を書き込んでいく。
僕の知っているのは『命令』の意味だけで、実際にどう動くかは未知の領域。
アイディたちも実際のプログラム作成には口出しをする気は無いようで、ただ黙って見守っている。
もうチュートリアルは終わった、ということなのだろう。ここからは自力で頑張るしかないようだ。
「うーん。本当にこれで大丈夫かなあ……」
頭を捻り、初めて自分一人で作り上げたプログラム。
だけどその内容は、
『命令:<繰り返し:100回>』
『繰り返し開始』
『命令:タイル塗り』
『繰り返し終端』
こんな感じで非常にシンプルなものだった。
百回の
「あ、百回じゃないか。スキル取りのときに一枚やったからあと九十九回で良いんじゃないかな」
実行前に軽いミスに気付く。
回数を修正し、これで目に見える不具合は無くなったはずだ。
あとは『実行』を押すだけなのだけど――何か引っかかる。
「いや、迷っていても仕方ない、まずは、やってみないと」
アイディの実行ボタンを押す。
すると画面の中央に現れた片開きのドアがガチャっと開き、中から手の平サイズの小人たちが飛び出してきた。
「おお……小人だ」
(シゴトダー! シゴト、シゴト、キョウモオシゴト、ガンバルゾー)
アイディやヘルプを二回りくらい小さくした小人たちは、全部で七人。
体格こそはそれぞれ違うものの、全員が緑のチョッキにこげ茶のズボン、先が上向きにとんがった木靴に赤いナイトキャップという同じ服装をしている。
そんな彼らは陽気に歌いながら横一列に並んで着地すると、肩に下げたカバンから刷毛を取り出した。
そして、塗料を入れたバケツをジャンプで飛び越えながら器用に塗料を付けていく。
「そうか、君たちが
(シゴトハ、オイラタチニマカセロ!)
小人たちはそう言うと、早速真っ白なタイルへの中心へと向かい、凄まじい速度で手を動かし始めた。
内から外へ、布地に落とした水滴のように青い染みが広がっていく。白の領域はエドール家のシンボルカラーに瞬く間に浸食されていき――ものの数十秒で一辺が僕の身長の半分もありそうな大きなタイルは真っ青になってしまっていた。
「もう終わった! 凄すぎる!」
もちろん、出来栄えこそスキルレベル1並みということで僕のやったものと大差は無いのだけど、作業速度は数十倍。比べ物にもならない。
これと似たようなことが出来る、『使い魔の
――
となれば残る問題は僕の作ったプログラムが正常に動くかどうか。
実行前の想定通りなら一枚が終わったらまだ塗り終わっていない場所に移動して、同じようにタイルを塗り始める、はず。
「ニカイメー、イクゾー」
そう言って小人たちが動く。バケツに戻ってまた塗料を付けて、そして次のタイルに………………行かない――?
何故か、彼らはまだまだ沢山ある真っ白なタイルでは無く、今塗ったばかりのタイルの中心へと向かってしまったのだ。
そして、そこをさっきと同じように塗り始め――
「――いやいや! そこもう終わってるって!
想定とは異なった動作に、慌ててプログラムの中断を差し込む。
それと同時に、小人たちの動きは止まり、「チュウダーン!」と声を上げると再びタブレットの中へと戻って行ってしまった。
「えええぇ……なんだったんだ、あれ……」
自作プログラムなのだから、原因があるとすれば自分のはず。……なのに僕は何故か他人事のような疑問を口走ってしまう。
一瞬だけ上手く行っただけに、余計に納得がいかないモヤモヤ感を感じる。
(がっはっは! やったな、見事な初バグだったぜ!)
「バグ……これが?」
プログラムが想定通りに動かないとき、その原因となる部分をバグという。
つまり、僕の作ったプログラムには何か欠陥があるということだ。
(はい。これは間違いなくバグと呼ばれるものですわ、マスター。
ですが、プログラムにはバグが付き物です。『一度もバグも出さなかったプログラムは信用してならない』という格言もあるくらいですよ)
(ああ。そんなもんはただ
(さあマスター、張り切って
欠陥なんて無ければ無い方が良いと思うけど、ことプログラムにおいてはそうではないらしい。
まあ、だからと言って上手くいかないことをすんなり受け入れられるかはまた別問題だと思うけど。
とりあえず、整理して考えてみよう。
今のプログラムでは一周目は想定通りに動いたけど、二周目は『同じ場所を塗って』しまった。あのまま放っておけば、恐らくそのまま九十九回、同じ場所を塗り続けたことだろう。
なんとなく理解していた『プログラムは補足や忖度をすることはなく、良くも悪くも指示された通りに動く』ということがこれではっきりと分かった。
小人たちはこちらから何も指定されていなかったから同じ場所を塗っただけ。となれば、今回は『命令』に不備があったと見て間違いない。
つまり、『どこを』とか、『どんな状態のものを』とか、そういった『対象』の指示が欠けていたということだとすると――
「そうか……繰り返しの中に『条件』を追加する必要がある、ってことだな」
『条件』を使って塗る必要があれば塗り、必要無ければ次に移動する。
そういう動きが出来るようにプログラムを
例えば、『繰り返し』の中に『条件』を入れてみる、とか……?
指を忙しなく動かし、思いついた改修案を早速入力していってみる。
『命令:<繰り返し:98回>』
『繰り返し開始』
『命令:<条件>』
『条件式:<最も近い><タイル>が<塗り終わっていない>とき』
『真のとき:<タイル塗り>』
『偽のとき:<次のタイルへ移動>』
『繰り返し終端』
大体、こんな感じだろうか。
何となくまだしっくりとは来ないけど、再びプログラムを実行してみる。
さっきと同じように小人たちが出てきて――まずは一枚目、目の前の白いタイルを塗り始める。
あとは、これを塗り終わってからちゃんと次に進むかどうか。
通算二枚目、
「やった! 上手くいった!」
彼らは次の白いタイルへと移動し、一枚目と同じように塗り始めてくれたのだ――!
いや、二枚目では止まらない。三枚目、四枚目――次々塗られていく床のタイル。良かった、僕の追加した条件は正しかったようだ。
「見てよ、二人とも! これ、僕が作ったプログラムだよ!」
――自分が考えて、自分で直して、そして上手くいく。世の中に、こんなに面白いことがあったなんて!
だけど、その嬉しさを感じているのは僕だけだったらしい。
(うーん。三十点)
(そ、そんな! せめて五十点は……)
とまあ、二人の評価は散々である。
渋い表情をするアイディ。気の毒そうな顔をしつつ、それでも厳しいヘルプ。
……一体何がダメだというのだろう。
(おおっと。そろそろかー?)
(ああ、マスター。黙っていた私をお許しくださいです)
「……あれ、急に色がかすれてきたような……あ、塗料がもう」
バケツに入れていた塗料が無くなったことに気付いた、その瞬間。
小人たちが一斉にこっちを向いたかと思いきや、その両目がピカと光って――
(
「あだあっ!!」
バシイッ! という音とともに僕の体に衝撃が走った。
何が起こったか分からず、飛び上がった僕は思わず尻もちをついてしまう。
そして、小人たちはタブレットの中に帰って行ってしまった。
(ケケケケケ、やーると思ったぜー)
「い、今のは……何?」
(今のが『
『
今回は塗料切れにより『タイル塗り』が物理的に実行不可能となったことが原因なのだろう。
それにしても……ペナルティがあるのは知っていたけど、まさか小人の目から光線が飛んでくるとは。
衝撃はともかく、体の向きはそのままで首だけがこっちに向いて目が光るアレは普通に怖かった。できれば夜中には見たくない感じのやつ。
(……でもっ、いきなり繰り返しの中に判断を入れることに気付くだなんて、十分すぎるほど素晴らしい成長ぶりだと私は思うです!)
「あ、ありがとう……」
ヘルプが何とかひねり出した精一杯のフォローに感謝しつつ、僕は立ち上がって空になったバケツを持ち、塗料が入った樽へと向かった。
「途中で塗料のチェックも入れないといけないのか……。
でも、どのくらいで補充したらいいんだろう。
半分? 三分の一? あんまり頻繁に補充すると効率が落ちそうだし……」
(かっかっか、悩め悩め! それが『プログラミング』の一番楽しいところなんだからよ!)
木桶を持って樽まで歩く間にも改善案に頭を悩ます僕とは対照的にアイディは実に楽しそうだ。
全く、他人事だと思って……と思いつつも、実際にはそれほど腹が立つことはなかった。
何故なら、まだまだ始めたばかりの初心者である僕でも、彼の言っている事が何となく分かるような気がしたからだ。
プログラミングの一番楽しいところ、か――。
一筋縄ではいかない『プログラム』。こうやって色々と躓くことも多いんだろうけど、これを使いこなせたら冒険者としての仕事にもきっと役立つはず。
こういう実作業はもちろん、陣地構築にトラップ調査、隠し部屋探索なんかでも使えそうだ。
あの命令をこう使えばこんなことが出来るんじゃないか? と、出来そうなことを考えるだけでもワクワクが止まらない。
もしかしたら、神様が僕にタブレットを与えてくれた理由はそういうことを楽しいと思える、僕の隠れた資質に合わせてくれたのかも。
……なんてことを考えていたら、自然と笑みがこぼれてきた。
よーし、完成まできっともう一息。
今回の仕事を終わらせるまでに、きっと形にしてみせるぞ!
塗料の補充を終わらせた僕は、気合を込めて再びタブレットを手にし、慣れない頭脳労働に取り組み始めるのだった――
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます