見出し画像

風物詩!どうぶつしょうぎ🦁 学生とのガチンコ勝負開幕!

今年もやってきました!信州大学とのどうぶつしょうぎ対戦!
「どうぶつしょうぎって何?」「どんなことするの?」「今年度の結果は!?」といった盛りだくさんの記事になってます。
ぜひ見ていってください!


はじめに

当社では、信州大学工学部電子情報システム工学科の講義「デザインプロジェクト」に参加させていただき、「どうぶつしょうぎ」対戦会を実施しています。対戦会では、社員と学生の交流、それぞれの知識・技術のぶつけ合いが行われています。今年もその時期がやってまいりました!⛄
そもそもどうぶつしょうぎって何?という人のために、簡単に説明します。

どうぶつしょうぎとは

一言で説明すると、将棋を簡単にしたゲームです。
将棋の駒が動物に置き換わり、駒には動ける方向に赤い点が打ってあります。相手のライオンを取るか、相手陣地の奥に自身のライオンを置くと勝利です。
基本的には将棋と同じようなルールですが、より簡単になっているので初心者でもすぐに楽しめます。

どうぶつしょうぎ対戦会の概要

信州大学工学部との産学連携プロジェクト「どうぶつしょうぎ」対戦会は、「秋の陣」・「冬の陣」と毎年2回あります。
対戦会とは、自身が作成したAI(1手あたりの制限時間内で最適な次の手を考えるプログラム)で、お互いのプログラム同士を競い合わせるモノです。
今年11月に開催された2023年度「秋の陣」でも熱い戦いが繰り広げられていましたので、その様子をご紹介します。
インテージテクノスフィアから4名のメンバーが会社のハッピを羽織り、挑戦状を持っていざ出陣!

それぞれのプログラムを引っさげて、学生のみなさんと対決します!

「秋の陣」最終日には、当社取締役の秦も駆けつけました。

こんなことやっていたんだ~とはじめて知った人も多いのではないでしょうか。
そこで今回は、前年度参加者の小澤さんに、「どうぶつしょうぎ」で培った経験や、参加時の思いなどを執筆してもらいました。
それでは小澤さん、よろしくお願いします!

自己紹介

みなさん、はじめまして。こんにちは。
ヘルスケアセンター所属、2年目社員の小澤です。
普段の業務では、健康管理システムの「設計・開発・保守」などを行っています。
最近の趣味は競馬で、レースの予想をしたり部署のメンバーとレースを見に行ったりしています。
やはり勝負に勝つにはより馬の事を知る必要がある(?)ということで、乗馬体験をしてきました。

ゆっくり歩いただけですが、想像以上に揺れたのが印象的でした。ひとまず振り落とされなくて安心しています。
(別の記事で同期の佐倉さんも馬に乗っているのを見ました。2022年入社は乗馬好きが多い説...?)
佐倉さんの記事はこちら👇👇

また出身校は信州大学で、今回のキーワードである「どうぶつしょうぎ」は大学の授業ではじめて知りました。
入社後は社員として信州大学の授業に参加したり、「どうぶつしょうぎ」がテーマのCTO杯(※1)で優勝していることなどもあり、これまで参加してきたどうぶつしょうぎ対戦会の体験談をお話しすることになりました。

※1:インテージグループ内で毎年実施している技術コンペです。初心者から上級者まで幅広く参加することができます。2022年度のお題は「どうぶつしょうぎ」でした。

対戦会参加の背景

私は学生時代に受講生として参加していたこともあり、2022年度開催の対戦会へは社員として参加しました。
その対戦会のノウハウを活かしつつ、さらに成長できるのではないかと思い、CTO杯も参加を決意しました。
(...という立派な決意の裏で、CTO杯の優勝賞金10万円にも惹かれていました。)

私の大胆な戦略 ~To win, think~

対戦会では、制限時間内にいかに高速に次の手を読むかということが非常に大切になります。(より多くの手を調べるためには、より高速な処理にする必要がある)

高速化の手法はさまざまありますが、私は使用するプログラミング言語を変えるという方法で高速化を実現しました。
これまでのプログラムは書きやすさ重視でPythonを使っていましたが、書きやすい反面処理速度はかなり遅い(※2)です。そこで新しい言語の勉強もかねて、処理速度の速い「Rust」という言語を使って書くことにしました。

※2:最近は「Mojo🔥」というPython進化版の速いやつがあるらしい

Rustはプログラミング言語の中でも速いといわれているC言語やC++などと同じ程度の速度がありつつ、それらの弱点であったメモリ安全性を保障している言語です。(つまり安全かつ速い)
 
Pythonとは違う言語なので、当然同じようには書けない部分もあり、Rust流の書き方に直すのはとても大変でした。ググって出てきた苦手な英語のページを翻訳して調べたり、ChatGPTに聞いてみたりしながら何とか形になりました。
 
最終的なプログラムは、初期のプログラムより格段に速くなっていました。
最善手を探すアルゴリズムとしてお互いの打てる手を読んでいくのですが、これまでのPythonのプログラムだと7~8手読みが限界でした。
それが、Rustのプログラムでは最大15手読みまでできるようになりました。読み手を1手増やすと、調べる手は指数関数的に増えていくので、本当にたくさんの手を調べられるようになっているのが分かるかと思います。

参加した信州大学とのどうぶつしょうぎ対戦会では、プログラム内にバグが残っており優勝することはできませんでした。しかしCTO杯ではそのバグを修正し、見事優勝することができました!
(自称)最強のプログラムでCTO杯を優勝できたのは本当に嬉しかったですし、自身の対戦用プログラムが強くなっていく過程もゲームでレベルアップしているような感覚で楽しかったです。

今年度の対戦結果は...

なんと!!
2年目社員のKさんとFさんが同率トップで、総合優勝!
「1回引き分けた以外はすべて勝利」という素晴らしい結果を残しました。

学生相手に大人げない? 
いえいえ、誠心誠意全力を尽くすのが礼儀というもの。

対戦会終了後には、当社参加メンバーがそれぞれ工夫した点を発表しました。知見を共有することで高め合います。

2023年度「冬の陣」も12月20日から始まりますので、ご注目ください!

おわりに

対戦会は自身の実力アップになることはもちろんですが、普段関わることのない人たち(学生や他グループ会社の人)と関わることもできます。
特に新入社員や若手メンバーは参加してみることをおすすめします。学生たちと対戦することで、きっといい刺激になると思います。
(もちろん若手メンバー以外も!)
いつか私のプログラムに打ち勝つ人が現れることを願っています👐

業務でRustを使って何か作るようなことはまだありませんが、今後、新しい言語に触るときに活かせる部分があると思います。特に分からないことがあった時の調べ方は今も役立っています。(まだまだ分からないことだらけです)
また、新しいことにチャレンジすることは、業務に関わらず大事なことだと思っています。

「冬の陣」参加者へのメッセージ

社員の方へ。
毎年「冬の陣」のほうが学生さんが強くなっているので、負けないように頑張ってください!あと長野は寒いので防寒対策も忘れずに!🥶
「冬の陣」もがんばれ~!!

学生さんへ。
参加している社員に負けないように頑張ってください!
社員は勝つために奮闘しています!


この記事が参加している募集