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

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

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

エラーが発生しました。

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

ブックマーク機能を使うにはログインしてください。
23/140

第22話 リバーシ思考ルーチン作成大会

※今回の話は、プログラミングの知識がないとわかりにくいかもしれませんが、

 雰囲気を感じていただければと思います。


 5月も残すところ、あと1日となったある日。


「そういえば、高遠と朝倉はプログラミングできたよな」


 唐突に、俊さんにそう尋ねられた。


「一応、ちょっとしたことくらいなら」

「私も、ちょっとはできます」

「いや、ミユは全然ちょっとじゃないから」


 ミユは成績全般が優秀だが、特にコンピュータに関する才能は図抜けたものがある。プログラミング実習中に、即席でゲームを作っているくらいだしな。


「で、どうしたんですか、急に」

「いや、ちょっとした遊びを思いついてな」


 俊さんが提案したのは、通信対戦型のリバーシ(いわゆるオセロのこと)を作って、各自の作った思考ルーチン同士で対戦させてみようということだった。実際のリバーシの画像を用意するのは手間がかかるので、「1、2、白」のようなメッセージを送信しあうことで対戦する方式にするということらしい。


「うちはプログラミングができるやつが多いし、記事のネタにでもと思ってな」

「努力はしますけど、俺、絶対弱いですよ」


 リバーシのルールは単純なので、動くものを作るのは難しくないだろうが、博士課程の俊さんやミユには全然勝てる気がしない。


「勝ち負けは気にしなくていいんだ。どういう工夫をしたか、とかが盛り込めれば」

「わかりました。やりましょう」

「ちょっとおもしろそう。わくわくしてきたよ!」


 早くもうずうずとしているミユ。


「で、プログラミング言語については、何でもいいんですか?」


 プログラミング言語というのは、ソフトウェア、いわゆるアプリを作るための人口言語で、用途に応じて、色々なものがある。それがまた個人によって好みの言語があって、論争になったりするのだが。


TCP/IPティーシーピーアイピーでテキストを送り合うだけだから、好きな言語を使えばいい」

「納得です。TCP/IPを扱うのが楽な言語が良さそうですね」

「強い思考ルーチンを作るのだったら、速度が速い言語の方が有利だぞ」

「俺はそんなに強いの作れませんから」


 TCP/IPというのは、インターネット上で通信をする方式の一つで、だいたいどんなプログラミング言語でも使える。もちろん、うちの編集部のような閉じたネットワーク内での通信にも使える。


 というわけで、唐突に始まったリバーシ思考ルーチン作成大会。俺は、普段使い慣れているPython(パイソン)を使うことにした。昨今のAIブームで広まったが、色々な処理がライブラリとして公開されていて扱いやすい。


 俊さんはC++(しーぷらすぷらす)を選択。C++は特に高速な処理が求められる用途に使われる言語で、使いこなすのは難しいが、使いこなせる人は達人級の人も多い。


 ミユが選んだのはRust(ラスト)だ。C++と同じく高速な処理に使えるが、最近できた新しい言語だけあって、C++の欠点が色々改良されていると評判だ。にしても、Rustを選択する時点でやっぱり普通じゃない。


 制限時間は5時間ということで、ひたすらカタカタカタとキーボードを打つ音が編集部に響き渡る。さすがに、俊さんはものすごい速度でプログラムを打ち込んでいるようだ。ミユも同じくらい高速で、迷いなくタイプしているのが恐ろしい。


 俺はというと、いわゆるタッチタイピング(キーボードを見ずに文字を打ち込むこと)はできるものの、この二人には及ばず、試行錯誤しながら、動作確認をしていく。


 3時間が経過した。様子をみると、俺も含め3人とも最低限の思考ルーチンはできたて、自分のマシン内で自分の作った思考ルーチン同士を戦わせるテストに入っている。


「アルフェベータ法を基本にして、GAで行くべきか……」


 俊さんのつぶやきが聞こえる。思考ルーチンの方式らしいが、検索しただけだと、制限時間内に作るのは難しそうだ。GAというのはGenetic Algorithmというらしくて、生物の進化を元にして、プログラム自身を改良するための方式らしい。こちらも、難しそうだ。


 ミユの様子を見ると、思考ルーチン同士を戦わせては改良してを細かく繰り返している様子。こういうときのミユの集中力は凄く、俺が画面を見ているのにも気づいていないようだ。


 俺は、検索して出てきたNegaMax法というのを実装してみることにしたが、勝つのは難しそうだ。


「よし、終了!」


 俊さんの宣言でプログラムの開発はストップ。ここからは、対戦だ。総当り方式で、


・俊さん対ミユ

・俊さん対俺

・ミユ対俺


 の3戦をやることになった。


 まず、1戦目。俊さん対ミユだ。思考ルーチン同士の戦いなので、画面上を高速に


2, 2, 白

...

7, 6, 黒


 いったメッセージが流れていく。ちなみに、1手辺り持ち時間の上限は10秒で、それを過ぎて手が打てなかったら負けが確定する。

というのは、持ち時間を決めないと、思考ルーチンにいつまでも長考させることになりかねいからだ。


 さて、結果として勝ったのは俊さんだった。


「あー、負けちゃった。惜しかったのになあ」


 悔しそうなミユ。


「さすがに先輩としての意地は守れたな」


 ほっとした様子の俊さん。


 次の2戦目は俊さん対俺だ。ミユといい勝負をしていた思考ルーチンに俺が作った弱い思考ルーチンが勝てるわけもなく、大差を付けて敗北してしまった。


「やっぱり、難しいですね」

「ま、1年でこれだけ書けるだけでも上出来だ」


 とはいえ、その1年のミユと比べると差は歴然としているので、少し悔しい気持ちはある。


 最後の3戦目。これまでの2戦を見て、ミユには勝てないだろうな、と思っていたので、消化試合という感じだ。


 と思っていると、何やら盤面が変だ。途中まで、ミユが優勢だったのに、次々と俺が巻き返していく。結果、僅差だが、何故か俺のルーチンが勝ってしまった。


「負けちゃった……」

「勝っちゃいましたけど、なんでですかね」


 これまでの戦績を見る限り、俺のが勝てる要素なんてなさそうだったが。


「そうだな。朝倉の思考ルーチンは、うまく実装されているようだが、弱めの思考ルーチンにうまく対応できずに、変な手を打ってしまった、といったところか。評価関数(評価関数)の設計が甘そうだな」


 そう俊さんが評する。評価関数という言葉の意味はいまいち理解できていない。


「そういうこともあるんですね」


 自分の思考ルーチンが弱いせいで、というのは複雑だが。


「奥が深いだろ?こういう対戦系ゲームで思考ルーチンを作るのは」

「そうですね。色々勉強したくなってきました」

「私も、もっと強いの作りたくなってきました」


 というわけで、結果としては、俊さんが1位、俺とミユが2位という結果になった。


「ね、ね。帰ったら二人で一緒に作ろうよ。俊さんのを負かせるくらいの」

「よし、乗った。色々調べないとな」


 なんだかんだで負けたくなかったので、必死になってしまったし、デートとは違うけど、一緒に考えを巡らせるのもいいかもしれない。

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

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

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

↑ページトップへ