表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
BAKU  作者: 不覚たん
13/19

ブラック企業の夢を見た(一)

 その日、俺は大広間に座していた。

 旅館……だろうか?


 いや、角ばった和服を着たちょんまげのおじさんたちが、壁際にずらっと並んでいた。

 江戸時代だろうか?


「ふむ。集まったようだな。わしは織田信長である。これより、お前たちにはプログラミングによる御前試合をしてもらう」

 なぜ織田信長が?

 しかもプログラミングの御前試合とは?

 主の野郎、きっと風邪でも引いているに違いない。病気のときに見る夢は、たいていロクでもない。


 俺たちは織田信長の前に並んでいた。

 A子もいた。

 ほかにも和服ではないプログラマーたち。


 出っ張の男が、くいとメガネを押し上げた。

「くくく。どいつもこいつも弱そうでヤンスねぇ。この勝負、もらったでヤンス!」

 これは間違いなく役者アクターだろう。語尾にヤンスをつける人間は実在しない。少なくとも俺はそう信じている。


 太った半裸の男がハンカチで汗を拭きながら言った。

「これはこれは、ずいぶんナメられたものでゴワス。ゴッドフィンガー下山田の名を聞いたことがないとお見受けするでゴワス」

 こいつも役者。


 なにも発言していないスーツを着たサラリーマンふうの男も参加者か。

 おそらくこいつが主だろう。


 信長公は「ふん」と鼻を鳴らした。

「いずれも腕自慢を集めておる。簡単に勝てるとは思わぬことだ」

 すると小間使いの男たちが、両手にパソコンを持って現れた。

 ディスプレイとキーボードが一体化したタイプのものだ。ノートパソコンではない。画像でしか見たことのない、古いタイプのパソコンだ。まあキーボードの配置はいまと一緒のはずだが……。マウスなどという便利なものは付属していない。


 A子は泣きそうになっている。

「え、あたし、プログラミングとかやったことないんだけど……」

「……」

 ダメだ。

 誰も取り合ってくれない。

 織田信長がやると言ったからには、もうやるしかないのだ。


「現在、我が領地に、今川の軍勢が迫っておる。お前たちには、その撃退プログラムを組んでもらう。もっとも優秀だったものには褒美を使わす。では、始めよ」

 ピコンとスイッチが入った。

 中でモーターが回転を始め、ガタガタとフロッピーディスクを読む音が響いた。フロッピーはどこかの現場で見たことがあったが、またこうしてお目にかかることになるとは。


「え、なんかすごい音出てる。怖いんだけど」

「大丈夫だ。古いパソコンはたいていこうだ。待ってれば起動する」

 A子にとっては未知のテクノロジーだろう。

 スマホはHDDでさえない。

 ファイルアクセスのたびに音も出ない。


 しかし「では、始めよ」と言われても、なにを始めればよいのやら。

 仕様書はない。なにをインプットして、なにをアウトプットするかの定義もない。どんな言語で組むのかも不明。マニュアルもない。なのに依頼主には質問もできない。絵に描いたようなクソ現場だ。


 二分ほど待つとようやくPCが起動した。

 黒い背景に、白いプロンプト。

 カレントドライブがAであることしか分からない。

 HELPコマンドを打ってみるが、無情にもそんなコマンドはないとの反応。しかもコマンドを打つたびにプーとビープ音が鳴る。

 マジでなんの説明もない。


 ところが、ヤンスもゴワスもカタカタとキーボードを打ちまくっていた。なにをすべきか理解しているのだ。

 サラリーマンふうの男は動いていない。となると、こいつが主か。


 信長公が片眉をあげた。

「どうした? すでにテンプレートは用意してあるぞ。EDITコマンドを打ってみよ」

 織田信長はそんなこと言わない!


 EDITと打ち込むと、ソースが表示された。

 大半がifとthenで構成されている。

 これは……BASICか?

 フォートランかもしれない。

 コードの上部で定義されている構造体が互いの戦力だろうか。今川の手勢が2万5千なのに対し、織田の軍勢は2千と定義されている。


 これ、定義さえ書き換えたら圧勝できるのでは?

 そこは変えてはダメなのか?


 定義がたくさんある。

 なんだか分からない変数の定義。

 なんだか分からない関数の定義。


 この長い関数は経路探索プログラムだろうか。おそらくダイクストラ法だろう。関数名がもろにダイクストラだからな。これを使って両軍が兵を進めて、互いに衝突する仕組みだ。

 どの経路に、どの程度の兵を進ませるのか。そういう戦術の処理は別の関数で定義されている。戦術はループのたびに変化してゆく……。

 ダメだ! 複雑すぎる!

 そもそもまともなプログラムなのかこれは……。


 ふと、キーを叩くターンという音が鳴り響いた。

「チェックメイトでヤンス!」


 やや遅れて、ゴワスもキーボードを叩いた。

「ゴワぁス!」

 日本語で頼む。


 しかしマズい展開だ。

 プログラムに時間を取られている場合ではない。俺は主に護符を貼りつけて、悪意を駆除しなくてはならないのだ。

 ところが、侍どもに囲まれているから、うかつな行動はとれない。へたに立ち上がったりしたら、その時点で取り押さえられてしまうだろう。

 時間だけが過ぎてゆく。


 A子は完全に試合放棄して頭を抱えている。


 男は……露骨にイライラしていた。畳にあぐらをかいたまま、とめどなく足を動かしている。ストレスを表に出すタイプ。職場でもこうなのだろうか。とはいえ、プログラマーの職場では珍しくない光景だ。物騒な独り言が飛び交っていないだけまだマシとも言える。

 俺たちは機械を支配的に扱っているつもりだから、その機械が言うことを聞かないとすぐに怒り出す。だからプログラマーは毎日怒っている。大袈裟ではない。


「ムリですよこんなの! せめて仕様書! 仕様書くらいくださいよ! できるわけないでしょこんなの!」

 しまいには喚き始めてしまった。


 だが、周囲の侍たちは動じない。

 置物みたいに無反応。

 なんだか……この男が普段どんな職場で働いているのか、垣間見えてしまう。


 信長公は不快そうに目を細めた。

「仕様書は、ない。当然であろう」

「ぐっ……ぐうっ……」

 男は崩れ落ちたまま、泣き出してしまった。


 仕様書というのは、客のオーダーをエンジニア用に定義したものだ。

 どんな入力があり、どんな処理をし、どんな出力があるかが定義されている。


 客のオーダーは、たいてい人の言葉で語られる。なのでいくらかふわふわしている。輪郭がぼやけている。「だいたいこんな感じで、うまいことやっといて」というオーダーになる。

 一方、機械は曖昧な情報を受け付けない。事前に備わった機能しかない。その機能を逸脱する命令を与えると、即座にエラーを返して止まる。エラーを返さない場合、黙って壊れる。いずれの場合も客から苦情が来る。もちろん客には苦情を言う権利がある。金を払っているのだから。

 間に挟まったプログラマーは……その両者をつないで、望まれた結果を出力する。


 ともあれ、仕様書が存在しない場合、あとはプログラマーが想像で補うしかなくなってしまう。

 あるいは、既存のコードがある場合、それが仕様書の代わりとなる。決して望ましい状況ではないが。たとえば今回の一件がそう。信長公は、既存の仕様を変更して、自軍を勝利させろと言っている。


 天才の作ったコードは、天才過ぎて読めない。省略が行き過ぎてキレそうになる。

 逆にあまり得意でないヤツのコードは、クソ過ぎて読めたものじゃない。これもキレそうになる。殺意さえ湧く。

 普通のエンジニアの組んだコードが一番だ。平凡で、なんの取り柄もなく、ありきたりで、パターン化されていて、分かりやすい。欲を言えば、天才が凡夫のフリをしてこれをやってくれたときが一番嬉しい。優しいママとなぞなぞ遊びをしている気分になれる。最高だ。


 まあいまならAIを使うという手もなくはない、か……。だが少なくとも俺の感覚では、現行のAIはまだそのレベルに達していない。よほど単純なプログラムならともかく。

 個人的には、サイコロでも振って結果を出した方がまだマシだ。


 信長公が立ち上がった。

「では、ヤンスよ。プログラムを実行して見せい」

「ははーっ!」

 今回の一番槍といったところだな。

 クソ。

 このまま勝負がついてしまうのか……。


 プログラムが実行されると、ピーとビープ音がなって、画面にマップが表示された。マップといっても絵ではなく、文字で再現されたものだ。

 いちいちピッと鳴ってから画面が変化してゆく。

 今川の大軍勢が、織田の領地に入り込んでくる。


 ちゃんと動いているように見える。

 たぶんプログラムをいじったのではなく、戦術の定義を変えたのだろう。


 信長公は真面目な顔で画面を見つめている。

 ヤンスは得意顔だ。


 だが、ピーと音がして、急に処理が止まった。

 画面に表示された文字は「Out Of Memoly」。

 メモリを使い過ぎたのだ……。


「止まってしまったぞ」

 信長公の言葉に、ヤンスは顔面蒼白。

「あ……いえ、これは……。く、組み直します! おねげぇでヤンス! もう一度チャンスを!」

「残念だが、戦にやり直しはない。誰か、この男を引っ立てい!」

 すると屈強な男たちが立ちあがり、ヤンスを取り囲んだ。


「ま、待つでヤンス! あっしをどうするつもりでヤンス!?」

「打ち首といたす」

「ひぃっ」

 ヤンスは縄で縛られて、どこかへ連れ去られてしまった。


 メモリエラーを出しただけで、打ち首だと……!?


 信長公は冷徹な微笑を浮かべた。

「ほかに完成したものは?」

「……」

 ゴワスは目を反らした。

 確かにゴワスはゴワスと喚いただけであって、完成したとは一言も言っていない。


「よかろう。では続けよ。言い忘れておったが、最初に完成させたもの以外は、全員打ち首といたすゆえそのつもりで」


 理不尽!

 俺も泣きたい!


 A子と男は泣いている。

 ゴワスは脂汗をかきながらコードを見直している。


 あせるな。

 冷静になれ。


 このマシンは、あまりにメモリがショボい。

 そのくせコードだけが異様に長い。

 きっと実行プログラムにメモリを取られているせいで、変数で使える領域がタイトになっているのだ。削らなくては。


 これはコンパイルせずに実行する「インタプリタ」という形式。

 変数名の長さがそのままメモリ消費につながる。だから変数名を短くするのはひとつの手かもしれない。

 織田と今川の兵力を定義する構造体も、別々に領域を確保するのではなく、配列にしたほうがいい。構造が完全に一致しているのだから。となると関連したコードはすべて書き直し。浮動小数点もやめて整数型に置き換える。兵の人数に小数点は要らない。


 完成を宣言する前に、テスト実行するのも大事だ。

 バグがないか事前にチェックする。

 自分を疑え。人間は完璧ではない。必ずミスをする。そのミスを機械に見つけてもらうのだ。


「ゴワぁス!」

 またゴワスが奇声を上げた。

 こいつ、はやい。


「ほう。出来上がったか。ではお前のプログラムを見せてみよ」

「ゴワス……」

 もはやキーボードが脂まみれだ。


 ビープ音とともに、プログラムが起動する。

 画面にマップが表示され、兵が動いてゆく。

 攻め上がる今川の軍勢。

 迎え撃つ織田。


 かくして――。


 プログラムは、エラーで止まることなく、最後まで実行されてしまった。


 信長公はにこりと笑みを浮かべた。

「こやつを打ち首にいたせ」


 もちろんそうだ。

 確かにこいつのプログラムは、エラーを起こすことなく実行を終えた。

 その代わり、織田の軍勢が敗北するという結果を見せつけてしまったのだ。

 プログラムの整合性ばかりに気を取られて、依頼主のオーダーを無視してしまった。これではまったく意味がない。


「ゴワぁス!」

 そいつはぐるぐるに縛られて、部屋から引きずり出されていった。

 気の毒ではあるが……。こいつらは役者だから別にいい。


 問題は、このあと。

 プログラムを完成させるのは絶対条件ではない。主に護符を貼り、悪意を排除できれば俺の目的は果たせる。だが、そのためにはプログラムを完成させないといけない……。

 頭がどうにかなりそうだ。


(続く)

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ