第12話 メソッド・真偽判定★

(うーむ……)


 その後、ユキは作業を続けていた。


(やりたいことは魔石から魔素を取り込んで、魔法補助具に埋め込まれた魔法論理マジック・ロジックを実行すること……理屈は単純なんだが……)


 理屈は単純であっても、もちろんそんなことはしたことがなかった。


(ひとまずは……簡単なところから試していくか……)


 ユキはとりあえず魔法補助具と魔石をくっつけてみる。


 すると……


「…………うん、何も起きないよね」


 何も起きなかった。


(……どうしたものか)


 作業は早くも暗礁に乗り上げる。


 ……


 しばらく考えているうちに、ユキはふと思う。


 魔法補助具を使うときに必ず行っていること。

 それが「実行エグゼ」の宣言である。


(そもそも実行エグゼの宣言なしに魔法補助具を使えないとどうしようもないのでは……?)


実行エグゼの宣言なしに魔法補助具を使うなんて考えたこともなかったけど……」


(……少し、可能性を探ってみるか……)


 ユキは魔法補助具に手を添えて、目を瞑る。

 魔法補助具の魔法論理マジック・ロジックの改変を行う時はいつもこのように集中して、魔法論理マジック・ロジックを感じ取るのだ。


(…………まずはいつもの部分)


////////////////////////////////////////////


// 弾の初期化処理

time = 0 // 射出時間

interval = 0 // 射出間隔

angle = device.angle // 射出角度

position = device.position //射出位置

size = 2 // 大きさ

power = 0.5 // 威力

attribute = ICE // 属性=氷

speed = 0 // 速度

acceleration = 0 // 加速度

・・・


// 弾の更新処理

position = device.position //弾の位置


////////////////////////////////////////////


 冷却装置の試作品プロトタイプ魔法論理マジック・ロジックである。


 この部分が普段、ユキが読み取り、改変している箇所である。

 この改変だけでも魔法の出力に関する改変が可能である。

 だが……


(……ここだけじゃダメだ……もっと基幹に関わる部分を読み取らなければ……)


 ユキは今まであまり読み取ろうと思ったことがなかった、プログラムをコントロールする上位レイヤーまでを読み取ろうと試みる。


 すると、想定外に膨大な量のコードがユキの頭の中に流れ込んでくる。


 実のところ、過去にも魔法の出力に関する魔法論理マジック・ロジックの周辺に、もっとコードがあるのではないかと読み取ろうと試みたことがあるのだが、なかなかうまくいかなかったのである。


(ひょっとして、魔法出力の周辺に近いコードは、読み取りが難しくなっているのだろうか……)


 そんなことを考えながら、流れ込んできたコードの中から地道に、必要とするコードを探していく。


(……違う……ここじゃない……違う……このコードはどこから呼び出されているんだ? あるとしたら、もっと上位のコードにあるはずだ……)


「あぁー、開発ツールがあればもっと簡単なんだけどなーー!!」


 前世では、プログラミングをするための開発ツールがあり、それを用いれば、特定の処理を呼び出しているコードを一覧で表示したりすることができるのだ。

 開発ツールを使用することで、効率的にコード解析を行うことができる。


(うーん、いつか……そういう開発ツールの代替的なこともできるようになったらなぁ……)


 しかし、ないものねだりをしても仕方がない。


 ユキは地道な作業を続けていく、

 そして、数時間後……


「……んんんん!?」


////////////////////////////////////////////


if(input.check_exe() == true){


 user.execute_magic() //魔法実行処理


}


////////////////////////////////////////////


(それっぽい! それっぽいぞ……!)


////////////////////////////////////////////

if(input.check_exe() == true)

////////////////////////////////////////////


 これが、

 もしも(if)、入力として、実行エグゼを検知し(input.check_exe() )、それが真(true)であるならば


 魔法実行処理(user.execute_magic())を実行する。


(おぉおおおお!!)


 ユキはワクワクしてくる。


(つまり、この条件(input.check_exe() == true)を取っ払ってしまえば……!)


「…………いやいや、待て、落ち着け」


 ユキはすぐに取っ払ってしまいたい衝動を抑える。


 無条件で魔法が発動するようになってしまったら、一体、何が起こるかわからない。下手したら暴発して、自身の魔力を吸い取られ続けて、干からびてしまうかもしれない。


(魔法発動のために他の条件がないかも確認しておこう……ひとまずはuser.execute_magic()の中を覗いてみるか……)


 ユキは魔法実行処理であるuser.execute_magic()の処理の中身を探すことにする。


 execute_magic()のようなものをプログラム用語でメソッドと呼ぶ。


 ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

【プログラミング豆知識】


 以前、device.positionのように、

 左の値ドット右の値

 というように、〝ドット〟でつなぐ場合、


 左の値〝の〟右の値


 という意味になることを解説しましたが、


 あれは嘘……ではないのですが、正確ではありません。


 実は、

 user.execute_magic()のように右側に()が付くと、意味が変わります。


 この場合、

 左の値

 という意味になるのです。

 詳しい説明はまたの機会にしますが、

()が付くと、値ではなく、メソッドという〝処理〟に変わるので、このように微妙に変化します。


 ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※


 ユキは魔法実行処理であるuser.execute_magic()の処理の中身を探すことにする。


 execute_magic()のようなものをプログラム用語でメソッドと呼ぶ。


 この中には、更に別の処理が記載されているのだ。


 このメソッドという考え方がないと、コードが全てひと続きになってしまい、とんでもなく長く、解読しづらいコードができあがってしまう。


 そのため、ひとまとまりの処理を別の場所に、記載しておくことができるのが、メソッドの役割だ。


 さらに言うと、メソッドは複数の処理から呼び出して使いまわすことができるという利点もある。

 execute_magic()を処理Aからも、別の処理である処理Bからも呼び出すことができるというわけだ。


 メソッドの説明はこれくらいにして……


(やっと……見つけた……)


 ユキは小一時間かけて、ようやくexecute_magic()メソッドを発見する。


////////////////////////////////////////////


execute_magic(){


 if(check_magic_point() == true){


  fire() //着火


 }

}


////////////////////////////////////////////


(おぉーー、なるほど……ちゃんとMPの確認チェックも行われてるのね……)


////////////////////////////////////////////

if(check_magic_point() == true)

////////////////////////////////////////////


 これがMP(=magic_point=マジックポイント=魔素残量)の確認(check)処理だろう。

 ユキはおそらくこのメソッドで、魔素の残量が閾値を超えたら、魔法が発動しないようになっているんだと判断する。


 ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

【プログラミング豆知識】

 プログラムでは処理の結果として真(true)か偽(false)を返すことがよくあります。

 ・真(true)は成功

 ・偽(false)は失敗

 と思ってもらえばよいです。


 上の

 if(check_magic_point() == true)

 において、

 check_magic_point()は

 ・マジックポイントが残っていれば真(true)

 ・マジックポイントが残っていなければ偽(false)

 となる処理が内部に記載されているものと考えれば、


 if(check_magic_point() == true)

 は

〝もし、マジックポイントが残っていれば〟


 という意味になります。

 ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※


(……本当はcheck_magic_point() の中身まで追った方がいいのだろうけど……)


 もはや、ユキはすぐに試したい衝動を抑えきれなかった。


(これを……こうやって……こうじゃ……!)


////////////////////////////////////////////


【変更前】

if(input.check_exe() == true){


 user.execute_magic() //魔法実行処理


}


 ↓↓↓


【変更後】


user.execute_magic() //魔法実行処理


////////////////////////////////////////////


 ユキは単純に実行エグゼチェック処理

 if(input.check_exe() == true)

 を取っ払う。


 そしてユキは恐る恐る魔法補助具に手を触れる。


 すると……


(……出た……!!)


 実行エグゼを宣言していないのに、魔法補助具から冷気が出たではないか……


(……すげぇ……! やったぞ……!!)


 ユキは一人、達成感に酔いしれる。


 が、しかし……


(ん…………?)


「あびゃぁああああああああ!!」


 魔法補助具からは次々に冷気が発せられる。


 そして、ユキの魔力はぐんぐんと吸い込まれていくのであった。


「はぁ……はぁ……止まったか……」


(そりゃ……そうだよな……)


 無条件に発動としたことで、次々に発動条件を満たし、ユキの魔力を吸い、限度に達するまで魔法の発動が何度も繰り返されたのである。


(はぁ……はぁ……MPチェック処理様々さまさまだな……)


////////////////////////////////////////////

if(check_magic_point() == true)

////////////////////////////////////////////


 の〝もし、マジックポイントが残っていれば〟の処理がなければ今頃、ユキは干からびていたかもしれない。


 と……


 ちゅんちゅんちゅん……


 小鳥のさえずる声が聞こえてくる。


(……もう朝か……)


 ユキは気づけば、徹夜で作業を続けていたようであった。


(やばいな…………今日も仕事だった……)


「……はは」


 ユキは思わず空笑いしてしまう。


(こっちの世界に来てもやってることは一緒だな……)


 思えば、ユキは前世でも仕事の前日に、趣味のゲームプログラムが止まらなくなってしまい、そのまま徹夜……

 満身創痍のまま出社するというセルフ・デスマーチをしてしまうことがしばしばあった。


(……まぁ、自業自得だな)


 などと、自虐をしていると……


「……ん、んん……」


(ん……?)


 ふいに、何やらちょっぴりセクシーな感じの女性の声のようなものが聞こえてきたような気がした。

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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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