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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
220
マイクロプログラム制御方式のCPUを自作した話
kenta11
0
500
失くしたリモコンを作る2
kenta11
0
110
失くしたリモコンを作る
kenta11
0
57
Other Decks in Programming
See All in Programming
20260828_品質と開発生産性を両立させる、AI時代のE2Eテストの考え方
magicpod
0
170
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.5k
スマート反転とウェブアクセシビリティ
camiha
0
140
Foundry Localでエージェント開発
seosoft
0
150
Webプラットフォームで議論されているセキュリティ課題 / Security issues being discussed on Web Platforms
petamoriken
0
220
AIエージェント時代のコードレビューを設計する
nogu66
6
2.5k
PHPプロジェクトの結合バランスを可視化する #php_night
kajitack
0
230
フロントエンドUIフレームワークのこれまでとこれから
ssssota
1
630
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
1.1k
片田舎のおっさん、 Swift Buildのダイアモンド問題解決の不具合修正PRを出すが、解決方法がキャッシュをしないようにすることであり、ビルド時間が伸びると言われてマージされないので高速化もする/swiftbuild
yimajo
0
360
tsc.rip を支える技術 / Kyoto.なんか #8
susisu
0
4.3k
FastAPI の並行処理モデルを完全に理解する
hoto17296
9
3.8k
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Making the Leap to Tech Lead
cromwellryan
135
10k
Balancing Empowerment & Direction
lara
6
1.3k
Rails Girls Zürich Keynote
gr2m
96
14k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
340
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.3k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Exploring anti-patterns in Rails
aemeredith
3
500
4 Signs Your Business is Dying
shpigford
187
23k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
650
エンジニアに許された特別な時間の終わり
watany
108
250k
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