Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Elixirで作る将棋ソフト
Search
Kenta
May 19, 2024
Programming
170
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
230
マイクロプログラム制御方式のCPUを自作した話
kenta11
0
500
失くしたリモコンを作る2
kenta11
0
110
失くしたリモコンを作る
kenta11
0
57
Other Decks in Programming
See All in Programming
AI活用は、個人から組織へ|マルチプレイヤーエージェントハーネス「QM」の社内活用事例 / AI use is moving from individuals to orgs
rkaga
1
140
Are APIs Still Relevant in the AI Era?
soyuka
0
290
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
8k
新卒PdEのリアル
ryu1013
1
510
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
500
Heart of Swift Concurrency
koher
0
950
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
190
Workers Cache を知る
syumai
0
140
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
4
3.3k
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
6
2.4k
SREの越境 / SRE Collaboration
y0hgi
2
260
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
11
7.9k
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Writing Fast Ruby
sferik
630
63k
Leo the Paperboy
mayatellez
10
2.3k
We Have a Design System, Now What?
morganepeng
55
8.3k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
530
Agile that works and the tools we love
rasmusluckow
331
22k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
530
Game over? The fight for quality and originality in the time of robots
wayneb77
1
290
Claude Code のすすめ
schroneko
67
230k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
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