Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Elixirで作る将棋ソフト
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Kenta
May 19, 2024
Programming
160
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Elixirで作る将棋ソフト
Kenta
May 19, 2024
More Decks by Kenta
See All by Kenta
『Verylで作るCPU』を読んでいる
kenta11
0
210
マイクロプログラム制御方式のCPUを自作した話
kenta11
0
480
失くしたリモコンを作る2
kenta11
0
100
失くしたリモコンを作る
kenta11
0
54
Other Decks in Programming
See All in Programming
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
PRO
1
190
yield再入門 #phpcon
o0h
PRO
0
830
PHPだって関数型したい 〜できること、できないこと〜 / fp-in-php
jsoizo
1
260
信頼性について考えてみる(SRE NEXT 2026 miniLT)
hayama17
0
230
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
130
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
160
継続モナドとリアクティブプログラミング
yukikurage
3
660
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
430
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.8k
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.4k
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
900
AIエージェントで 変わるAndroid開発環境
takahirom
2
740
Featured
See All Featured
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
640
Ruling the World: When Life Gets Gamed
codingconduct
0
290
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
280
The Mindset for Success: Future Career Progression
greggifford
PRO
0
430
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
GitHub's CSS Performance
jonrohan
1033
470k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
230
The Cost Of JavaScript in 2023
addyosmani
55
10k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.7k
Transcript
Elixirで作る将棋ソフト Kenta Arai 2024/05/15 某イベント 1
将棋ソフトとは • ある局面における候補手の 評価値を解析するソフトウェア • 候補手:良さそうな手 • 評価値:手の良し悪しを表す値 • プロアマ問わず、研究や対局
の振り返りで使われている • 2017年に当時の名人が将棋ソ フトに敗れ、その頃から広く使わ れるようになった • 今ではもう人間側が勝てません 2024/05/15 某イベント 2
将棋ソフトの大会がある • だいたい年に2回くらい開催 • 世界コンピュータ将棋選手権 • 世界将棋AI電竜戦 • 自作の将棋ソフトを持ち寄り 一番強いソフトを決める
2024/05/15 某イベント 3
大会に出たいけど… • ハードウェアが凄すぎる • 企業がクラスタを引っ提げて参加 • EPYC 7742 A100×8,9台 •
非企業の開発者グループもそれに対抗 • Ryzen 3955WX + GeForce RTX 4090 * 9 • マシンがない人たちはクラウドで強いマシンを調達 • ソフトウェアが凄すぎる • 詳しくは以下を参照下さい • https://yaneuraou.yaneu.com/2024/05/07/wcsc34-summary/ • https://tadaoyamaoka.hatenablog.com/entry/2024/05/06/140552 • うーむ、勝負にならなそうだわい 2024/05/15 某イベント 4
勝てなくても良いからやっぱり出よう! • 強くなくても入賞のチャンスがある(フロムスクラッチ表彰、独創賞) • まさかの理由で番狂わせがあるかも • 反則負け(動かせない位置に駒を動かした) • 対局中にクラッシュした •
対局中にマシンのコンセントが抜けた • 自分のアイデアを共有したい ☜これが一番重要! 2024/05/15 某イベント 5
よくある将棋ソフトの設計 2024/05/15 某イベント 6 GUI エンジン 対局サーバ CSA protocol USI
protocol 今回作るもの USI 探索部 評価関数 • エンジン:最善手を解析し、GUIに伝える • 探索部:局面のゲーム木を調べる • 評価関数:局面の評価値を算出 • 局面管理:局面の情報(盤面、持ち駒など)を管理 • USI:GUIとの通信 局面管理
Elixirで実装してみたら面白そう • Elixir:高い並列性能をもつ関数型言語 • 例:1から1000000の値にfoo(), bar() の順番で関数を適用する [1] • 各値に対する処理は依存関係がない
• よって全ての値に対する処理は並列に実行できる 2024/05/15 某イベント 7 1..1_000_000 |> Enum.map(&M.foo(&1)) |> Enum.map(&M.bar(&2)) [1] Susumu Yamazaki:“組込みに使うプログラミング言語について語ろう! Elixir (エリクサー) 編”, https://speakerdeck.com/zacky1972/zu-ip-minishi-upuroguraminguyan-yu- nituiteyu-rou-elixir-erikusa-bian?slide=25 • 既存のエンジンはC++やPythonで実装されている • 並列処理が得意なElixirでエンジンを実装したら、 よりハードウェアの性能を引き出せないだろうか? どのように並列化するかは よしなにしてくれるっぽい?
実装しました(一部だけ) • USIを実装し、必ず投了するエンジンを開発 • できること • 対局を開始できる • 投了できる •
並列処理とはなんだったのか 2024/05/15 某イベント 8 エンジン USI 探索部 評価関数 局面管理 ☜対局が成立する!
初めてのElixir開発で困ったこと • Elixirの情報は他の言語と比べると少ない(気がする) • 初めは ChatGPT-3.5 にコードを書いてもらうつもりだったが、提示さ れたソースコードのコンパイルが通らないことが多々あった • 私のプロンプトスキルが低いだけかも
• そんなことを考えていたらGPT-4が無料で使えるようになった。今度試して みます。 • 代わりにMicrosoft Copilotにお世話になりました • プロンプトに答えてくれるだけでなく、参考のURLも提示してくれたのがGood • 回答がとてもゆっくりなところがある 2024/05/15 某イベント 9
追記 • 取り合えずできたものを公開 • https://github.com/Kenta11/elixir_shogi/ 2024/05/15 某イベント 10