17.【閑話】プログラミングな夜
プログラミングみたいな作業をする時は無口になることが多い。
しかし、徹夜明けというテンションと、カネリンという相棒がいる状況が重なると、自分を鼓舞するためか独り言が多くなることもある。徹夜明けのプログラミングのテンションを正確に分析したことなんてないから、真実の程は良く分からないけど。
とにかく、そんなこんなで俺はプログラミングに励んでいた。
『これ、引数間違ってない?』
カネリンからの指摘を受けて、プログラミングを見直す。
「どれどれ……、おぉ、危ねぇ。サンクス」
『どういたしましてー』
確かに引数が間違ってたな。気づかなかったよ。久々の徹夜だから疲れてるのかもね。
「あー、でもこれはサブクラス作った方が良さそうだなぁ。多分これから色々使いまわすだろうし」
『でも、製紙魔法にはそんなバリエーション必要ないでしょ?』
「そうだけど、作りたいのは製紙魔法だけじゃないからね。実際、木からパルプを作る工程で薪割り魔法『チョップリン』が役立ったでしょ?」
『それはそうだけどさ』
そう。今作っているのは製紙魔法だけど、それ以外の魔法だって作りたいんだ。
こうやって作ったプログラムは財産だからね! 拡張性も考えて作っていかないと。固定の用途にだけしか使えない関数ばっかり作るのは勿体なさすぎる。
そんなポリシーをもってちゃんと作ってるから、薪割り魔法『チョップリン』も、ちょこっと割るサイズの設定を変えてやるだけであら不思議、木を粉々にする魔法に早変わり! これぞ、拡張性!
『そんな余裕あるの? お尻が爆発しちゃうんでしょ?w』
「草ぁぁぁっ! そうだけどっ、プログラムには妥協したくないと言いますか、個人的なポリシーが許さないと言いますか……」
『うん。作るのは良いと思う。反対もしてないしね』
「あああっ、まさかポリシーと尻のどっちを優先するかで悩む日がこようとは!」
そう言いながら、俺は修正したプログラムをビルドし直して、モジュールを再構成する。
もう何度も繰り返した作業だからスムーズだ。
そこからは、用意していたテストパターンを流して、思った通り動作するかを試していく。
作って、動かして、駄目なところを直して。
プログラミングはそんな地道な作業の繰り返しなのであります。
うんうん。今回はちゃんと動いてるじゃない。前回詰まってた処理もスムーズに流れてるよ。
このまま最後までテストできれば良いけど……。
「お固まりになった!? 何で?!」
急に処理が動かなくなった。今までは良い感じで木材から繊維を抽出する魔法が機能していたのだが、急にその処理が止まったように見える。
『それよりもこっちの処理早く止めないと! 魔力ずっと使われ続けてるよ!』
カネリンの指摘にハッとした。
そうだ、並列で動かし続けている魔法を止めないとずっと成分分析と抽出をトライする事になってしまう。俺の魔力を消費して。
「がーーッ、そこまだエラーハンドリング作ってないところッ。ロジックミスって暴走すると魔力がどんどん減るってどんな罰ゲームだよ」
『原因はこれだね』
「そ、それよりも止めるの手伝って」
『開発スキルには手出しできないから無理だよー』
「ま、マジですか。おぉぉ、吸われる吸われるっ! すごい勢いで魔力が吸われてる。まさにダ〇ソン」
『冗談言えるくらいだからまだ余裕あるみたいだけど、がんばってーw』
くそぅ。他人事だと思って草生やすなんて。
地球だったらカネリンにもアクセス権限与えてたら色々手伝ってもらえたけど、今の開発環境は俺のスキルだからなぁ。カネリンが手出しできないのは当たり前か。
カネリンが俺のスキルに干渉できるようなインターフェースも無いだろうし。
……いや、無いなら作ればいいのか?
『手が止まってるよ?』
おおぅ、急がないと! 余計なこと考えてる場合じゃなかった!
「……ぃよぅし、止めた、全部止めてやったぜ」
『結構魔力使っちゃったねぇ。休憩した方が良いんじゃない?』
「そんな暇は無い。こうしている間にも尻がダメージを負ってるんだ。尻が爆発する前になんとかしないと!」
ただ座ってるだけでも尻が痛いんです。今もちょっと痛いんです。
贅沢は言えないけど、簡素な作りの椅子だから、長時間作業でも結構くるんです。
『そうは言っても……。適度な休憩はパフォーマンス維持に必要だと思うけど?』
「尻が爆発したらパフォーマンスもクソも無いじゃん。尻だけに」
『……面白くないよ』
「うん、俺も思った」
徹夜明けテンションで軽口を叩きつつも、手はしっかりと動かす。こうしてカネリンと話しながらデバッグするくらいが丁度いいのだ。
そうしてプログラムを解析すること十数秒。
「あー、ここかー」
『そうそう。ログ見たらこの値が変わらないこともあるみたい。だから無限ループしてる』
無限ループ。嫌な響きである。ループを作るときはちゃんと脱出条件に穴が無いように作るんだぞっ、お兄さんとの約束だ!
「マジか。……しかも、一回値が変わらなくなったら、暫く変わらない状態が続いてるな。何でだろ」
『分からないなぁ。そもそもこの標準関数の先で何をやってるかも分からないからね。それに、実行環境はグラースそのものだから、その変化も受けるだろうし』
「そうだった、実行環境自体の変化も考慮しないといけないのか。……となると、何らかの条件が揃うとこの処理自体が実行できずに空回りしてるって考えるのが妥当かなぁ」
『かも知れないね』
そうなんです。このプログラミングの難しいところは、実行環境が変化するところにあるんです。
普通の……というか、地球で一般的に行われているプログラムは電子機器上で動作させるわけだから、実行環境が動的に変化するなんてことはまずない。実行中にCPUが増減したり、ストレージが変わったりメモリが増えたりなんてしないからね。
でも、プログラミング魔法の実行環境は、グラースという世界そのものだ。だから、その影響も考慮しておかないと行けない。それが凄く難しくて、失敗を繰り返してる。
「値が変わらなくなる条件を見つけ出すのは……、ちと難しいな。ログ仕込んで再発させてみるしかない、か」
『だね。その時、環境側もモニタリングしておかないと』
その通りだ。……でも、どうやってモニタリングするの?
というか、何が原因かもわからないのに何をモニタリングすれば良いのだろう。気温? 湿度? それとも魔力濃度? 観測対象も分からないじゃないか!
「実行環境を良い感じでモニタリングしてくれる素敵なツールはありませんかっ?!」
あるような気がするんだけどなぁ。そうじゃないと、開発が難しすぎるよ……。
まだ開発スキルの全機能を把握できてる訳じゃないし、スキルレベルがMAXってわけでも無いから、現時点で探し当てられていない、もしくはスキルレベルが低すぎてできないだけかも知れないけど。
『うーん、ツールじゃないけど、一回本番環境で実行してくれたら私が観測できるよ?』
「それだ!」
何という事でしょう。
確かに、本番環境という名の現実世界で実行すれば、カネリンが観測できちゃうんだよね。これはありがたい。
完璧にテストできてないモジュールを本番環境で動かすのはちょっと怖いけど、有効な手立てが他に無いからなぁ。ここはカネリン先生にお願いするとしよう。
「お願いできますか?」
『おけおけ、かしこまりー』
本当に、カネリンには色々とお世話になりっぱなしである。
今度はカネリンが喜ぶ何かも作りたいものですな。
ともあれ、今は製紙魔法のプログラミングに集中集中!
完成まではやり続けますよ!




