第6話 そりゃ動かないよ

 ルクシアの指先が照らすソースコードに目をやる。


 大量に書き込まれたソースコード。だが内容はシンプルだ。初回の呼び出しでデータベースにテーブルを作り、そこにデータを格納する。これが明かりを点けるための魔力なのだろう。


「mysql-connectorって……ライブラリが使えるの?」


 Pythonではよく知られたライブラリだし、俺の会社でも使っていた。データベースを操作するためのライブラリだが、まさか異世界で見かけることになるとは思わなかった。


「あなたくらい開発しまくった人なら、使えても不思議じゃないですね」


 しれっとルクシアが言った。まぁ、プログラミングがない世界で魔法をプログラミング言語として読めているのだから、そんなことを今さら考えるのもおかしな話か。


「……あれ?」


 俺はソースコードに違和感を覚えた。


==================

  create_sql = """

  CREATE TABLE mana (

    mana_id INT,

    mana BLOB

    ) ENGINE=InnoDB;

  """

  cur.execute(create_sql)


==================


 テーブルを作るための簡単な処理だ。だがこの処理では、同じテーブルがあっても構わず作ろうとしてしまう。そうなればエラーが発生するし、そもそもエラーを検知するための処理も組み込まれていない。


 初心者の作ったソースコードだ。前職でこんな実装をしたら、相当怒られるだろう。


「ひどいな……」


 直してやりたい。そんな思いを看破したかのように、


「はい、どうぞ」


 ルクシアが横からキーボードとマウスを取り出した。


「何でそんなものがあるの……」


「そこはほら、私が特別な存在ということで」


 どうせこれも能力と一緒に与えられるものだったのだろう。どこまでもセコい天使だ。


 ワイヤレスのキーボードとマウスをテーブルに置くと、カーソルがソースコードの上に現れる。試しにエンターキーを叩いてみると、ソースコードに改行が入った。


「直してみるか」


==================

def main():

 cnx = None

 cur = None

 try:

  create_sql = """

    CREATE TABLE IF NOT EXISTS mana (

      mana_id INT,

      mana BLOB

    ) ENGINE=InnoDB;

    """

    cur.execute(create_sql)

    insert_sql = "INSERT INTO mana (mana_id, mana) VALUES (%s, %s);"

    cur.execute(insert_sql, (1, b"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9."))


    cnx.commit()


  except Error as e:

    if cnx:

      cnx.rollback()

      print(f"エラー: {e}")


  finally:

    if cur is not None:

      cur.close()

    if cnx is not None and cnx.is_connected():

      cnx.close()

==================


 書き直して照明を付け替え、スイッチを押した。


 明かりが灯り、またスイッチを押す。消灯してからまたスイッチを押すと、また明かりが点いた。


「お、直りましたね」


 ルクシアが感心したように言った。一度消してからもう一度点けようとして、上手く動かなかった原因はこれだったらしい。


 処理が途中で止まるのだから、そりゃあ動くわけもないか。


「それにしても、何でこんな初歩的なミスを……」


 俺にはソースコードに見えているだけで、実態は魔法。幼少からやり込んでいたメリナが、こんなミスをするのが不思議だった。


「魔法は想像力が物を言うんですよ」


 ルクシアがその答えを教えてくれた。


「書いてある呪文は何のことはありません。あれをしなさい、これをしなさい、って書いてあるだけです。それがどのくらい正確に動作するかは、術者がどこまで細かく想像したかによるんです」


 魔法ってそんな曖昧なのか。


「プログラミングみたいに指示したことを忠実にやってくれるわけじゃありません。だからこそ何でもできるし、何もできないんです」


 つまり、メリナの想像力が細かいところまで行き届かなかった結果がこのお粗末なソースコードというわけだ。


 別にメリナの魔法や想像力が稚拙というわけでもないだろう。どうしてこんなことが起こったのか、原因ははっきりしている。


「やりたいことが多過ぎるんだな」


 Pythonで表現されたソースコードの処理自体はシンプルで、何がしたいのかは簡単に読み解ける。


 メリナが作りたいのは、ただの卓上ライトではないらしい。


 色々な機能をつけようとしたせいで、想像力が追いつかず、結果不備だらけの魔法が作られてしまったのだ。


 現実を超えたがる理想主義者。現場にいれば混乱を招く存在。


 だがもしその理想を実現できれば、確実に喜んでもらえるものになる。


 そんな人と、また出会えた。


「これ、朝イチで取りに来るんだっけ?」


 独り言のように言って、マウスを動かす。


「朝までに全部直せるかな……」


「テストならお手伝いしましょうか?」


「良いの?」


 天使はあまり介入すべきではない。だから皇帝を名乗るようなことはしなかったし、借金取りにも手を抜いたのに。


「このくらいなら構いませんよ。暇ですしね」


 助かる。おかげで修正に専念できそうだ。


「照明が割れた原因は多分ここだな。数値が高過ぎるんだ」


==================


light_up(20000)


==================



「真っ昼間に使ったから最大値で判定されたけど、照明がそれに耐えられなかったんだ」


「固定値なのも良くない気がしますね。今後どんなに良い照明が作られても、これ以上の光度は出せない、ってことになりますし」


「付けられてる照明から最大値を取るようにして、その値を代入させよう。pipコマンドって使えますか?」


「ショートカットでターミナルを開けますので、どうぞ」

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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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