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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Kenta
May 19, 2024
Programming
180
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
260
マイクロプログラム制御方式のCPUを自作した話
kenta11
0
520
失くしたリモコンを作る2
kenta11
0
110
失くしたリモコンを作る
kenta11
0
62
Other Decks in Programming
See All in Programming
Будущее локальных LLM – Алексей Голобурдин, PythoNN
sobolevn
0
120
baseline으로 마이그레이션, 리팩토링 안전하게 맡기기
fornewid
1
960
はじめてのPLATEAU
nokonoko1203
1
630
地方こそサーバーレス — 10年続けた、顔が見えるチームで確かな基盤を / Serverless Matters Most in Regional Areas — 10 Years of Building Reliable Foundations with Close-Knit Teams
seike460
PRO
1
330
Enforcing Your Architecture with Unit Tests in the AI Era (Swift Connection X)
steliosf
PRO
1
150
プロジェクトコードをキレイキレイしよう!暗黙的な参照を読み解く静的解析
ostk0069
0
210
複数ドメインを一つのアプリに統合するFlutterの設計と運用_FlutterKaigi2026登壇資料(須永高弘)
takahirosunaga
0
170
Web3Dライブラリを作ってVue Custom Rendererの仕組みを理解しよう / lets learn vue custom renderer by making 3d library
drumath2237
1
130
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
1.2k
Next.js: The final boss of Web Performance
guaca
0
390
動画プレイヤーはなぜカクつくのか 〜Flutterのレンダリングとネイティブの境界を解剖する〜
naruogram
0
330
Secure Your Coding Agent Like It’s Malware (v1.5) 🇬🇧 @Code.talks 2026
richargh
0
110
Featured
See All Featured
What the history of the web can teach us about the future of AI
inesmontani
PRO
3
800
Embracing the Ebb and Flow
colly
88
5.2k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.9k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.8k
New Earth Scene 8
popppiees
4
2.8k
Between Models and Reality
mayunak
4
570
What's in a price? How to price your products and services
michaelherold
247
13k
So, you think you're a good person
axbom
PRO
2
2.3k
Skip the Path - Find Your Career Trail
mkilby
1
290
BBQ
matthewcrist
90
10k
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