第一節 ケオエコ二回目のアップデート『疫病イベント』
『正義を語る者を疑いたまえ、所詮誰もが損得勘定で動いているのだから。執拗に損得を語る相手は「損得勘定に疎い」と早々に切り捨てたまえ。君は金に換えられない、貴重な時間で大損を強いられているのだから』
(依田泰造著『目を逸らされる欺瞞』より引用)
◆◆◆
ケオエコ二回目のアップデートが発表された。
しかし、今回はスクリプト商人や生産職にとって、肩透かしと言えるほどスクリプト仕様は現状維持だった。
目玉と言えば、石材の加工や建築手法といった『公式売買所』に新規販売されたスクリプト群である。
とはいえ『魔力の流れが変わりました』のメッセージが発生し、スクリプト改修は余儀なくされた。
サンローは現状維持に嘆くが、姫子は案外ご機嫌だ。
サンロー「ほぼ現状維持……すなわち相変わらず、私の愛するLISP狙い撃ち継続か。唯一の救いは、スクリプトライブラリのアップデートがごく常識的なことだな」
姫子「これならスクリプト検証も比較的軽微ですむわね。あと、若干だけどメソッド利用の負荷が軽減されたみたい!少しはスクリプトの整理ができるわね!」
そんな安堵を打ち砕くように、全プレイヤーにシステムメッセージが表示された。
『疫病が蔓延しています、お気をつけください』
『エコ・リバース~でこぼこたいら』の周辺に、自称エコ・リバース派のギルド員達が集結した。
ギルド員A[そもそも疫病って何なんだよ」
ギルド員B「これ、絶対俺たちに影響するイベントだろ」
ギルド員C「気をつけろって、何をどう気をつけろって言うんだ……」
ああああ「疫病って言うんだから、病源はモンスターと考えられないか?」
『ああああ』がなんとなく思った事を言うと、姫子もサンローもそれに飛びつく。
姫子「そうよ、明らかに怪しいのはモンスターよ、みんな!『モンスター素材剥ぎ取りスクリプト』に登録されていても、モンスター死体そのものを買い取るわ!従来の二割増しでどう?」
サンロー「医学を志すものから見ても、『ああああ』の見解は妥当だろう。私も疫病について研究を進めよう」
ああああ「ってかサンローさんは、医学部受験生じゃなかったか?」
サンロー「医学部受験生という設定であれば、医学を志すという言葉も嘘ではなかろう」
しかし、得体の知れない疫病ばかりに気を取られてはいられない。
『魔力の流れが変わった』という中、遂に運営公式のスクリプトが出てきたのだ、何かしらのヒントがあるかも知れない。
おおよそ折半になる形で『混沌の街』の商業ギルドと生産職ギルドが、石材に関わるスクリプトを購入して、互いに共有する。
そのスクリプトを見た時、多くのギルド員は難読化されているようなPythonスクリプトに困惑した。サンローも姫子も困惑しながら、オフラインスクリプト構築環境で解析するため変数名を変えていった。
姫子「ねえ、サンロー……これ、トランスパイラを使ってる可能性はないかしら」
(作者注:トランスパイラとはある言語から別言語へ変換するプログラムです。具体的にはTypeScriptからJavaScriptへのトランスパイラが有名です。ここではPythonからケオエコ用Pythonへの変換を、便宜上トランスパイラと呼称しています)
サンロー「ああ、私もそう感じた。
あちこちで頻繁に同じ処理が繰り返し記述されているし、一部では無意味な変数代入とその復帰……少なくとも人間の手によるものとは、到底思えない記述だな。
トランスパイラの線が濃厚だろうう……しかも、かなり雑なトランスパイラと見た」
姫子「やっぱりそうよね……これ全部、せめて解読可能な水準まで、変数名つけなおすの……?」
サンロー「使い回しそうな機能だけでよかろう。流石に公式が動かないスクリプトを配布したとなったら、詫びコインくらいはあるのではないか?」
姫子「それだけでも、結構莫大な作業になるわね……ギルド員総出の作業になりそう」
姫子は深いため息をついてサンローに、ボイスチャットのアカウントを求めた。
サンローはアカウント交換に快く応じ、舞台はボイスチャットに移る。
姫子「そうだ、ボイチャで『エコ・リバース~でこぼこたいら』の会議室作らない?」
サンロー「私は浪人生という立場上あまり声を出せないし、なんなら聞くこともできない。『エコ・リバース~でこぼこたいら』の会議室というのは、私にはボイスチャットの性質上難しいな」
姫子「そっか、ごめんね……そうよサンローは医学部受験生じゃない!社会人が浪人生に対して、なにしているのよ私!」
サンロー「なに、構わんよ。表向きは学力不足で医学部浪人生を偽っているが、受験当日は白紙提出しているのだ。
これなら、万一全力を出しても、医学部側が私のような者は受け入れまい、ははは!ざまぁ見ろ」
姫子「サンロー、あなたは何と戦っているのよ……っていうか医学部の闇を語るの止めなさいよ!」
サンロー「ははは……はぁ、情報科学科に進みたかった。だからケオエコでLISPを使って活躍を……と思ったのに、この仕打ち……」
とりあえず、雑談をしてから本題に入る。
姫子「サンロー、美しさを追求するあなたに、こんな依頼をするのは気が進まないんだけど……ケオエコ運営みたいにトランスパイラ作れない?」
サンロー「私にとっては、LISPかそれ以外かという認識だから構わんのだが……ケオエコに持ってきたときの保守はどうするのだ?」
姫子「そこは、ある程度割り切るしかないでしょうね……私のような『モンスター素材剥ぎ取りスクリプト』の保守としては、正直な所……自分さえ保守できればいいし」
サンロー「前回のメンテナンスで、まるで私を狙い撃ちするような仕様変更が行われた。
トランスパイラは広く公開しない方がいいだろう。トランスパイラの存在で、他のプレイヤーにまで被害拡大するようでは目も当てられない」
姫子「わかった、トランスパイラのやり取りは今後もボイチャのチャット欄経由でお願いするわ。対価はどれくらいがいい?」
サンロー「ちょっと待ちたまえ姫子君、まずはトランスパイラの要求仕様から定めないと、適正な対価請求すらできない」
こうして姫子の依頼でサンローがPythonによる、
通常のPythonスクリプトを関数抜きケオエコ用Pythonスクリプトに出力するという、
ケオエコならではの混沌としたトランスパイラ仕様の話に移った。
サンローの懸念から、
トランスパイラは難読化をしないこと、
変数名は可能な限り保持すること、
不要な変数代入はトランスパイラが削ること……
などの仕様を前提とするという話になった。
姫子としては、オフラインスクリプト構築環境で関数が使えればそれでいい程度の認識だったので、サンローの前提がそのまま仕様となった。
サンロー「ふむ……これなら私自身も使うことになりそうだな」
姫子「あ、そっかサンローも今やPythonistに片足突っ込んでるんだったわね。
うーん……サンロー自身が使う事、仕様の多くはサンローの懸念由来、しかし私にも益がある……値付けが難しいわ、ちょっと待ってね」
サンロー「そうだな、私は通常のケースでは利益の五%を受け取っているのだが。
しかし、これでは姫子君の収入からすれば高すぎる」
姫子「いえ、こっちはそれでもいいんだけど……」
サンロー「正直、私は姫子君からの対価など必要としていないのだがな。それでは姫子君の気が済まないのだろう?というか、姫子君のフィードバックを得られるのだから、私が対価を払うところではないか?」
姫子「売り手が、訳のわからないこと言わないで!商人としての価値観が崩壊するわ!
そうね……トランスパイラ依頼は込み込み三十万コインでどうかしら?
サンローの懸念に関する部分に私は色付けしない、そういう形ならこれ位が最低相場だと思う」
サンロー「いや、高すぎる、そんな高値では売らないぞ!トランスパイラは私自身も使うし必要だ。もう一声お願いする!」
姫子「なによ、これでも高いの?じゃあ思い切って二十万コインでどう?
なんで売り手が買い手の値引き提案交渉をしてるの、訳がわからないわ」
サンロー「まだまだ高い、一万コインならどうだ?」
姫子「えーい、もうヤケクソ、それでいいわよ!これ以上は絶対負けられないわ」
サンロー「了解した、日本円で言うと十万相当か。トランスパイラが問題ないレベルで簡単なら値引きさせて貰おう」
姫子「本来値引きなんて、売り手が言うことじゃないわよ……売り手が『簡単だったからお安くしておきます』なんて話、どこの世界にあるのよ……」
サンロー「私が言っているではないか、ははは、合意形成だな。本来であれば一万コインなど高すぎる。そもそも、関数が使えないPythonなど、実質LISPで書くアセンブラのようなものではないか」
姫子「その例え、わかる人ほとんどいないからね⁉」
(作者注:作者の私にもわかりません)
こうしてサンローはトランスパイラ作成に取り組むのだが、僅か数日で仕上げた。
まるで当然のように差額を返そうとするサンローと姫子が、再び意味不明なやり取りを始めたのだった。
同時進行でサンローはギルド員に、運営公式による事実上難読化スクリプトの読み方を指導していた。
姫子はトランスパイラを作成しながらのサンローの無償活動に呆れる他なかったが、何だかんだで姫子自身も無償指導をしているので、端から見れば大差なかった。
姫子「こんなのが公式って……子供が鉛筆で書いた設計図を、AIがトランスパイルしたって感じね……」
サンロー「しかもその鉛筆が折れてて、途中から隣の子の答案と混ざってるな」
サンローと姫子の手法は、極めてオーソドックスだった。
ケオエコ仕様に反し徹底的に関数化を行い、
整理していき、機能にコメントを付けて、
関数や変数の名前を適切に修正して、
オフラインスクリプト構築環境で動作確認……
そういうリファクタリングの王道だ。
分散型バージョン管理サービスに、公式スクリプトを原本として載せて改変していく。
念のために分散型バージョン管理サービスではプライベート設定として、バージョン管理ソフトを扱えるギルド員が共有し、携わる人だけがスクリプトプロジェクトに登録する。
リファクタリングが仕上がったらケオエコ仕様に置き換え、ケオエコに流していく。
この作業はサンロー作のトランスパイラを利用する形だ。
リファクタリングを進めたギルド員は、ケオエコ仕様に置き換えるとき、涙を堪えていたという噂が、真実味を帯びて流れた。
ライセンスは「改変可/再配布可」なので、この改変は商業ギルドと生産職ギルドで共有された。
改変されたスクリプトは、ギルド内でデファクトスタンダードとして利用された。
手つかずのスクリプトも、ギルド員の時間があるときに少しずつリファクタリングを進める、そういう話になっている。
今回の件で、ギルド員の間では「サンローさんと姫子さんって似たもの同士だよな、デキてるのかな……」という噂が密かに流れるのだった。
ギルド内では、なんとか運営公式の石材にまつわるスクリプトで主要なものを、自分たちで読み下せる程度に改変することに成功した。
そんな日々が続く中でも『ああああ』の狩ってきたモンスター解析は、姫子主導で数日間行われたが、残念ながら疫病に関しての結果は得られなかった。
姫子も音を上げてサンローに愚痴を言う。
姫子「このモンスターもだわ、今までと何ら変わりない……」
サンロー「自称エコ・リバース派の面々の協力を得てさえ、未だ何の手がかりも得られないとはな……」
姫子「本当に、疫病って何なのよ……」
サンロー「まあ、それでも『ああああ』の言っていたように、今のところモンスターが怪しいのは変わらないのだ」
姫子「本当に、雲を掴むような話の中、何をどうやって警戒しろというのよ……」




