第07章 たまには初心に帰ろう
イベントの申し込みをしたのは良いものの、その事実を知った壱人は、予想以上に一杯一杯になってしまった。
「イベント会場への交通手段と所要時間を調べておいた方がいいよね?」
「まだ早いって」
「飯はコンビニでおにぎりとお茶買ってく?」
「その日の気分でいいよ」
「着ていく服どうする?ちゃんとしたのは入学式に着たスーツしかないんだけど?」
「お前、イベント行った事あるだろ?洗濯しとけば普段着で大丈夫だよ」
「あ、そうだ!釣銭ってどれくらい用意しよう?」
「値段すら決めてないぞ!」
気が動転して頭に浮かんだ事をとりあえず口走る壱人に、イッQは落ち着くように言った。
「まだイベントに参加できるかどうかも分からないんだから、通知が来てから考えても間に合うよ。大体、その前にやらなきゃいけない事があるだろ?」
そう話を振られ、壱人は混乱している頭で考えたが何も思いつかず「やることって何?」とおかしな質問を返した。それを聞いたイッQは頭を抱えたが、一旦息を吐き、もう一度吸ってから断言する。
「お前は、まずゲームを作れ!」
その言葉に、まだ基本システムすらできていないという状況を思い出した壱人は、慌てて「そ、そうだな!」と答え、とにかくゲームを作らなければ話にならないのだと強く思った。
冷たい麦茶を飲んで頭を冷やし、壱人はこの前から詰まっている箇所を見直す。しかし何度修正してもエラーが出て上手くいかなかった。
エラーの内容は、あるポインタ変数が異常な値になっているというものだが、その変数にはちゃんと正常な値を入れている。だからなぜそんなエラーが出るのかが分らなくて、ずっと悩んでいるのだ。
イッQは壱人から相談を受け、何が原因なのかを突き止めるために、処理を分散するようにアドバイスした。
作った部分をほぼコメントアウトして無効化し、複数の動作を一遍に処理していたコードは分けて書き直し、一つ一つの動作を確認して、問題のないものを確定していくのだ。かなり効率は悪いが、勘や思い付きで修正するよりはマシである。
しかしこれでは簡単な動作を作るにも、かなりの時間がかかってしまうので、壱人は心配になってイッQに確認したが「問題ない」という答えが返ってきた。
最初はどうしても考えながら作るので、時間がかかって当たり前だというのだ。1つの動作を作るのに、100箇所調べて、1000回試す。初めて自分のプログラムを作るというのはそういう事だという。
それを聞いて壱人は安心して作業を始めようとした…のだが、イッQの励ましは止まらなかった。
「これが普通なんだ。決してお前だけじゃない。初心者はみんなそうだ」
「傍目には簡単な動作でも様々な工程が必要で、それは自分で作って初めて気付く事なんだ」
「初心者なんだから調べる事も多いし、それを調べるにもかなりの手間がかかるんだから、中々進まなくても仕方がないんだぞ」
「最初は手順が分らないんだから、時間と労力がかかるのは当たり前だ」
「作業の進行が遅くてもあまり気にするな。自信をなくす必要は無いぞ!」
「あ、うん、ありがとう」
お礼を言いつつも、イッQの必死すぎる励ましに壱人は気付いてしまった。
(こいつ、ここで挫折したな)
だが、それを口に出さない優しさは持ち合わせていたので黙っていた。
自分より緊張している人間がいると冷静になれるように、それと似た感覚で壱人は今の状況を客観的に見る事ができた。そのおかげで根気のいる作業ではあったが、なんとか集中して進められたのである。
そうは言ってもすぐに完成する訳ではなく、一週間かかって基本システムはなんとか格好が付いた。最後は不要なテキストを非表示にするコードを書いて実行してみる。するとプログラムは壱人が考えた通りに動いてくれた。
固まった肩をグルグルと回し、万歳するように腕を伸ばして「できたー」と声を出す。その声にイッQが反応して壱人の側に来て労うと、プログラムの動作を確認して嬉しそうに頷いていた。
実際の処理は大したものではないが、これを作った事で前に進めたと壱人は思った。
翌日、ひと段落ついたので、今後の方針について話し合う事にした。
「次はどうする?」
壱人がイッQに問い掛ける。
本来なら基本システムを拡張して、特殊攻撃や防御を付け、バトル部分を作り込むべきなのだが、イッQは同じ部分ばかり作業していては目新しさがなく、飽きてしまう可能性があるのでそろそろ別の事をやるべきだろうと考えた。
そこでまずは「ゲーム作りの書!」の復習をしてみてはどうかと提案したが、それを聞いた壱人はすぐに「そんな暇があるなら新しい事がしたい」と反対した。しかし「一度やった事だからすぐに終わる」とイッQは返し、さらに「騙されたと思ってやってみろ」と壱人を説得した。
気は進まなかったが、イッQの言葉に押され、壱人はしぶしぶ復習を始める。しかし…
「あーっ、前に分からなかったやつ、こういう事か。今、読んだら分かる!」
「これ、こういう意味だったのか!勘違いしてたー」
「やりたいと思ってた処理がそのまま書いてある!読み飛ばしてたよ」
そうやって新たな発見を次々にして、壱人はどんどんページを進めていった。
「今までやった事が力になっているのが分かっただろ?」
「なんか自信がでてきた!俺、頑張るよ」
一度目より早くなったとはいえ、復習もそれなりに時間はかかったが無事に終わった。そして壱人自体のやる気が上がっているのを見て、イッQはゲーム作りを次の段階に進める事にした。
「次はゲームの流れを作るってのはどうだ?」
「流れ?」
「普通のゲームみたいに、実行したらタイトル画面になって、スタートボタンを押したらメニュー画面になってってやつだ」
「それ、いいな」
壱人も同意して新しい作業が始まった。まずゲームの流れを想定し、どんな場面が必要なのかを書き出すように依頼され、壱人は考えてみる。しかし言われてみると思い付かない。
「必要な場面って意外と出てこないな」
そんな壱人にイッQは言った。
「そのための企画書だ」
そして前に書いた企画書を見せる。
「ああ!そういえば、こんなのを作ってたよな」
壱人は自分の書いた企画書に目を通して「まずはストーリーモードか」と頷き、次のページを捲る。しかし読む進むうちに顔が疑問の表情に変わり、そして最後まで読み終わったところで壱人は言った。
「この企画書、具体的な事が書いてないから役に立たない!」
「それが分かるようになったなら、成長した証だよ」
自分の企画書の完成度の低さに壱人が驚いているのを見て、イッQは温かい目でそう答えた。
「でも、こんなゲームが作りたいってのは思い出せただろ?これを元に考えてみろ」
そう言われて、作りたい内容を思い出しながら場面を書き出してみる。
・タイトル
・メニュー
・ストーリーモード
・一人用モード
・バトル
・ゲームクリア
・ゲームオーバー
「中身の処理は無くていいから、フラグが何かでそれぞれに移動できるようにするんだ。場面ごとに分離して動くようにするんだぞ。そのために必要なデータは他のものと分けておけよ」
こうして壱人のゲーム作りは次の段階へと進んだ。そして壱人の成長のおかげで、ヒヨコのような何かであるピヤ號は、数センチ浮かぶだけだが飛べるようになったのである。
【おまけ】プログラムの闇
「配列、なんか分かってきた気がする!」
「配列の闇はこの後が本番だけどな。」
「?」
「ポインタ使えるようになってきた!」
「ポインタの真の闇はこれからだけどな。」
「何、その闇って?」
「他にも、ファイル入出力の深淵の闇や、メモリ確保と解放の永遠の闇、ネット通信の底なしの闇とか、デバッグビルドとリリースビルドでの動作の違いの不可解な闇なんかがあるぞ」
「プログラムには闇しかないのかよ?」
「闇しかねえよ」
その答えを聞いて、今更ながらとんでもないものに手を出してしまったのではないかと思う壱人だった。