第30話 タイマー処理
離れに戻って確認すると、水魔法のウォーターの魔法はあっさりと出来てしまった。出来た水を鑑定してみるとやはり魔力水だった。いっそ出来ない方が面倒に巻き込まれそうになかったのだが、魔法が使えたのが嬉しい反面、マチルダさんに引っ張りまわされる明日のことを考える。
ちょっと、水魔法が使えると報告するのが憂鬱である。
別の課題も見つかった。先程質問されたライトの魔法がどれくらい持続するかということである。持続時間を定量的にするには時計を作る必要があると結論に達した。
僕がプログラミングを学んだ世界では、時計は水晶の振動子から振動数を数える事で実現していた。手順としては、その振動子が指定時間ごとに処理を行うように初期設定すると、決められた特殊処理を実行する事が出来る。この特殊処理はメイン処理に割り込む形で動作するため割り込み処理と言い、この割り込み処理で数字を1つずつ足していく事により時間をつくることが出来る。それをメイン処理で参照することによって時間の経過を測ることが出来るというものだった。
まだ、魔法の文法もろくに分からず実験段階であるから、簡易的なもので何か代用出来ないかと考える。魔法エンサイクロペディアで探してみようかと思ったときに閃いた。
僕の心拍数である。心拍数を基準信号とすればよい。
成人男子の安静時の平均心拍数は、1分間に70~80である。そのため、簡易的に心拍数75を1分とする単位時間が出来る。魔法の発動から心拍数を数える割り込み処理を作成して時計を作り、本来のライトの魔法を実行する。そのライトの魔法を実行するループ処理の中で割り込み処理が作る時間を確認するのだ。
ライトの魔法は、属性魔力を用意し、点灯するポイントの設定、魔素を包む属性魔力の範囲の設定、その圧縮率の設定の初期設定を行い、魔素集め、圧縮、点火の後ろに脱出フラグを作って魔素集め以下の処理の繰り返し、脱出フラグが立ったら、繰り返しを抜ける、その後、空間の設定を解除して終了するイメージだった。初期設定に、心拍数で割り込むイメージを追加する。さらに、脱出フラグの確認の前に、このカウンターの値を僕に通知するようなイメージを作る。これはデバッガーがないときよくやった数値で内容を確認するprintデバッグ。
まず、実行だ。
「ライト」
〈1、2、3、4、5、6、7、8、9、10、11、12……〉
うわぁー、煩い。うるさい。頭が痛い。なんだ、これ。
「ライト停止」
痛い。こんなに頭に響くとは。通知頻度と通知音量を変更だ。今までは1拍ごとに1回割り込んでいたのを、75拍ごとに1回に変えるように設定し、通知音量を小として、再度、チャレンジ。
「ライト」
光っている。
〈1〉
まだ、光ってる。
〈2〉
良さそうだ。数字の読み上げと同時に左手の脈拍を右手でカウントしよう。
〈3〉
計測開始、脈が1、2、3、4、5……75
〈4〉
で正しくカウント出来ている。1分タイマーが出来ている。嬉しくなった。なんとか使えそうだ。でも、心拍は変化するから別の振動子を最終的には見つける必要があるが、それまでの代用としよう。
今回の目的はライトがどれくらい使えるかだからこのまま実行してみよう。その前に、現在のMPは、600/620。えっ、全体量が増えている。
『はじめての魔法』に書いてあった、魔臓が大きくなるというのは、こういうことか。
計測用のライトを止め、今度はベッドの下で光るように設定し直す。朝、目が覚めたときにカウンターの数字を確かめれば、どれくらい光っていたか分かるはずだ。
「ライト」
ベッドの下から、光が漏れてきた。間接照明だね。
快適。
魔力切れでなく眠れるのがちょっとうれしい。
「おやすみなさい」
誰に言うでもなく、眠りに包まれる。
今日も色んなことがあった。




