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
Go言語でシミュレーション用のシンプルなフレームワークStageをつくった/Fukuokago...
Search
monochromegane
July 14, 2020
Technology
760
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Go言語でシミュレーション用のシンプルなフレームワークStageをつくった/Fukuokago Stage
Fukuoka.go#16 (オンライン開催)
https://fukuokago.connpass.com/event/180414/
monochromegane
July 14, 2020
More Decks by monochromegane
See All by monochromegane
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
200
適応的スパムフィルタのための軽量な類似メッセージカウンタ / jsai2026-adaptive-spam-filter
monochromegane
0
5.4k
ベクトル検索のフィルタを用いた機械学習モデルとの統合 / python-meetup-fukuoka-06-vector-attr
monochromegane
3
910
Claude Codeセッション現状確認 2026福岡 / fukuoka-aicoding-00-beacon
monochromegane
4
770
Go言語での実装を通して学ぶLLMファインチューニングの仕組み / fukuokago22-llm-peft
monochromegane
0
300
不確実性下における目的と手段の統合的探索に向けた連続腕バンディットの応用 / iot70_gp_rff_mab
monochromegane
2
510
なめらかなシステムと運用維持の終わらぬ未来 / dicomo2025_coherently_fittable_system
monochromegane
0
44k
ベクトル検索システムの気持ち
monochromegane
38
13k
Go言語での実装を通して学ぶ、高速なベクトル検索を支えるクラスタリング技術/fukuokago-kmeans
monochromegane
1
330
Other Decks in Technology
See All in Technology
#jawssonic2026 あの時代が悪かった ~動かなかったSageMakerと共に迎えたイベント当日~
ktkn1129
0
140
Microsoft 365 Copilot chat -tekoälypalvelun tietosuojaongelmat
hponka
0
580
深夜のクラウド懺悔室 1:29:300 or 1:0:0
kazzpapa3
1
220
全員がプロダクトへ向き合う組織を持続成長させるために——組織づくりのフライホイールと4象限 / The Flywheel Model and Four Quadrants for Organizational Design
hiro_torii
4
940
From Vanilla Kubernetes to a Batteries-Included Platform: Developer Experience at 1,300+ Clusters
yosshi_
0
670
コーディングエージェントでM5Stack系の開発を少し試した時の話 / M5 Japan Tour 2026 Autumn 東京
you
PRO
0
110
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
150
Deploying a Full-Stack Bun-Native Framework on Cloudflare Workers
7nohe
0
130
Adaptive Warehouse を今すぐ導入すべき理由と迷ったときの判断基準
__allllllllez__
0
150
Snowflakeで実現する全社横断の顧客の声(VOC)分析・活用基盤@Snowflake World Tour Tokyo 2026
yuto16
0
150
AI時代だからこそ、スケールしないことをやろう
yutashigemura
1
130
GoCon2026 - Open Source, Open World
sanposhiho
2
1.4k
Featured
See All Featured
Designing Powerful Visuals for Engaging Learning
tmiket
1
540
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
660
Practical Orchestrator
shlominoach
191
12k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
610
Statistics for Hackers
jakevdp
799
230k
For a Future-Friendly Web
brad_frost
183
10k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
What's in a price? How to price your products and services
michaelherold
247
13k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.9k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Transcript
ࡾ༔հ / Pepabo R&D Institute, GMO Pepabo, Inc. 2020.07.14 Fukuoka.go#16
GoݴޠͰγϛϡϨʔγϣϯ༻ͷ γϯϓϧͳϑϨʔϜϫʔΫ StageΛͭͬͨ͘
1SJODJQBMFOHJOFFS :VTVLF.*:",&!NPOPDISPNFHBOF 1FQBCP3%*OTUJUVUF (.01FQBCP *OD IUUQTCMPHNPOPDISPNFHBOFDPN
1. ͡Ίʹ 2. ίϯϐϡʔλγϛϡϨʔγϣϯ ϑϨʔϜϫʔΫStage 3. ·ͱΊ 4. ͓·͚ 3
࣍
1. ͡Ίʹ
• ঢ়گʹԠͨ͡ΫϦοΫͷ࠷େԽมԽݕग़ͷΑ͏ͳɺγεςϜͷదԠతͳ ৼΔ͍Λݕূ͢ΔͨΊʹɺ࣌ܥྻʹର͢ΔίϯϐϡʔλγϛϡϨʔγϣϯΛ ߦ͏͜ͱ͕͋Δɻ • → ֬తͳৼΔ͍ɺ࣮ڥͰൃੜ͢ΔϥϯμϜͳޡࠩΛදݱ͢Δ ߹ɺཚΛ༻͍ͨγϛϡϨʔγϣϯٕ๏Ͱ͋ΔϞϯςΧϧϩ๏ར༻͢Δ 5 ίϯϐϡʔλγϛϡϨʔγϣϯ
6 ίϯϐϡʔλγϛϡϨʔγϣϯ Arm0 Arm1 Arm2 User(s) System ͪߦྻ ଟόϯσ Οοτ
౸ணաఔʹϙΞιϯɺαʔϏεաఔʹࢦ Λద༻ͨͪ͠ߦྻϞσϧͷγϛϡϨʔ γϣϯ ར༻ऀͷᅂ͔ΒΔʹର͢ΔԠʢใ ुʣΛ͋Δ֬ʹݟཱͯɺظؒதͷྦྷੵใ ुΛ࠷େԽ͢ΔํࡦΛ୳ΔγϛϡϨʔγϣϯ
• γϛϡϨʔγϣϯରຖճҟͳΔ͕ɺࣅͨΑ͏ͳॲཧຖճ࣮͍ͯ͠Δ • Ұ࿈ͷॲཧʢධՁରͷɺ͋Δےॻ͖ʹର͢ΔৼΔ͍Λෳճ؍ଌʣ • γϛϡϨʔγϣϯͷฒྻԽ • ਐḿͷࢹʢϓϩάϨεόʔʣ • ϩάग़ྗ
• ཚγʔυͷཧ • →จࠪಡϓϩηεʹ͓͍ͯ࠶࣮ߦͯ͠ಉ݁͡Ռ͕ಘΒΕΔڥॏཁ • ݁ՌͷՄࢹԽ 7 ίϯϐϡʔλγϛϡϨʔγϣϯ࣮ͷ՝
2. Stage
• ཚΛ༻͍ͨίϯϐϡʔλγϛϡϨʔγϣϯʹ͏Ұ࿈͔ͭࡶͳॲཧΛ։ൃ ऀ͔ΒӅṭ͢ΔγϯϓϧͳϑϨʔϜϫʔΫ • Goݴޠ 9 monochromegane/stage https://github.com/monochromegane/stage
• ཚΛ༻͍ͨίϯϐϡʔλγϛϡϨʔγϣϯʹ͏Ұ࿈͔ͭࡶͳॲཧΛ։ൃ ऀ͔ΒӅṭ͢ΔγϯϓϧͳϑϨʔϜϫʔΫ 10 monochromegane/stage • Ұ࿈ͷॲཧʢධՁରͷɺ͋Δےॻ͖ʹର͢ΔৼΔ͍Λෳճ؍ଌʣ • γϛϡϨʔγϣϯͷฒྻԽ •
ਐḿͷࢹʢϓϩάϨεόʔʣ • ϩάग़ྗ • ཚγʔυͷཧ • ݁ՌͷՄࢹԽ 4UBHF͕ରͱ͢Δൣғ ˎҟͳΔɺධՁରͱےॻ͖ͷΈ Λ࣮͢Δ 4UBHF͕ରͱ͠ͳ͍ൣғ ˎγϛϡϨʔγϣϯʹΑͬͯޮՌతͳՄࢹԽ͕ҟͳΔͷͰϩάग़ྗҎ࣮͕߱ྑ͍ͱஅ
11 γφϦΦͱΞΫλʔ • StageͰγϛϡϨʔγϣϯΛܶʹྫ͑ͨϝλϑΝʔΛ࠾༻ • Stage = ܶɺScenario = ຊʢγφϦΦʣɺActor
= ԋऀ • ։ൃऀɺҰճͷγϛϡϨʔγϣϯͷڥͷมԽΛγφϦΦͱɺͦͷڥʹԠ ͨ͡ԋऀͷৼΔ͍ΛίʔυͰ࣮͢Δ
12 StageϑϨʔϜϫʔΫͷϝΠϯॲཧʢٙࣅίʔυʣ γφϦΦ͔ΒηϦϑΛಡΈग़͢ ԋऀ͕ηϦϑʹै͍ԋٕ ԋٕͷ݁ՌΛॻ͖ग़͢
13 StageϑϨʔϜϫʔΫͷϝΠϯॲཧʢٙࣅίʔυʣ ܶͰ͕ܶԿ։࠵͞ΕΔɻ HPSPVUJOFͰͰ͖Δ͚ͩಉ্࣌өʹʂ
• Scenarioͷ࣮ 14 StageͰίϯϐϡʔλγϛϡϨʔγϣϯʢ1/3ʣ γφϦΦΛಡΈਐΊΔɻ ΧϯλΛΠϯΫϦϝϯτ͢ΔॲཧͳͲΛ࣮ Χϯλ࣌ͰͷڥใΛ-JOFͰฦ͢
• Scenarioͷ࣮ 15 StageͰίϯϐϡʔλγϛϡϨʔγϣϯʢ1/3ʣ γφϦΦΛಡΈਐΊΔɻ ΧϯλΛΠϯΫϦϝϯτ͢ΔॲཧͳͲΛ࣮ Χϯλ࣌ͰͷڥใΛ-JOFͰฦ͢ ·͋ͰJOUFSGBDF\^Ͳ͏͔ͳ͋ɻ จࣈྻΛѻ͏ͱܾΊͯ4DBOOFS͕ ͦͷ··͑ΔΑ͏ʹͨ͠΄͏͕ศར͔
• ActorͱActionͷ࣮ 16 StageͰίϯϐϡʔλγϛϡϨʔγϣϯʢ2/3ʣ "DUJPOͷ4USJOH ͕ϩάʹग़ྗ͞ΕΔ -JOFʹର͢ΔৼΔ͍Λ࣮ɻ ԋٕͷ݁ՌΛ"DUJPOͱͯ͠ฦ͢
• ࣮ߦ 17 StageͰίϯϐϡʔλγϛϡϨʔγϣϯʢ3/3ʣ ࣮ߦճͱฒྻɺॳظ ཚγʔυΛࢦఆ ։࢝࣌ࠁ୯ҐͰ࣮ߦ͝ͱͷϩάͱཚγʔυΛه
• ΠςϨʔγϣϯྃ͝ͱʹݺΕΔίʔϧόοΫͷΈΛ༻ҙͯ͠㽂 18 StageͰίϯϐϡʔλγϛϡϨʔγϣϯʢਐḿࢹʣ
ෳͷγφϦΦΛ࣋ͭ γϛϡϨʔγϣϯͷྫ
γϛϡϨʔγϣϯͷྫ 20 • มԽݕग़ͷΞϧΰϦζϜʢADWINʣʹର͢ΔγϛϡϨʔγϣϯ • ࣌ܥྻͷมԽͷ߹͍ʢٸܹɺΏͬ͘Γʣʹରͯ͠ΞϧΰϦζϜΛධՁ γφϦΦͰهड़ γφϦΦʹର͢Δԋٕ
γϛϡϨʔγϣϯͷྫ 21 Scenario (Abrupt change) Scenario (Gradual change) Actor (ADWIN)
Action ({x, mu, sum, W}) • มԽݕग़ͷΞϧΰϦζϜʢADWINʣʹର͢ΔγϛϡϨʔγϣϯ • ࣌ܥྻͷมԽͷ߹͍ʢٸܹɺΏͬ͘Γʣʹରͯ͠ΞϧΰϦζϜΛධՁ
γϛϡϨʔγϣϯͷྫ 22 Scenario (Abrupt change) Scenario (Gradual change)
γϛϡϨʔγϣϯͷྫʢΞϧΰϦζϜͷՃʣ 23 Scenario (Abrupt change) Scenario (Gradual change) Actor (ADWIN)
Actor (ADWIN2) Action ({x, mu, sum, W}) • มԽݕग़ͷΞϧΰϦζϜʢADWINʣʹର͢ΔγϛϡϨʔγϣϯ • ࣌ܥྻͷมԽͷ߹͍ʢٸܹɺΏͬ͘Γʣʹରͯ͠ΞϧΰϦζϜΛධՁ
3. ·ͱΊ
• ࣌ܥྻΛѻ͏ίϯϐϡʔλγϛϡϨʔγϣϯ༻ͷγϯϓϧͳϑϨʔϜϫʔΫ StageΛGoݴޠͰ࣮ͨ͠ • ֤γϛϡϨʔγϣϯʹ͓͍ͯγφϦΦͱΞΫλʔͱ͍͏ཁૉͷΈΛҙࣝ͢Ε Α͘ͳΓ࣮ͷޮ͕֨ஈʹ্͕Γίʔυͷݟ௨͠Α͘ͳͬͨ • GoݴޠΛ͏͜ͱͰฒྻԽ͕༰қʹ࣮Ͱ͖γϯϓϧͳϑϨʔϜϫʔΫͰ͋ Γͳ͕Βेʹ҆ఆͯ͠ߴԽΛୡͰ͖ͨ •
Ճతͳརͱͯ͠ɺϩάߏͳͲ͕౷Ұ͞Εͨ͜ͱͰޙஈͷղੳάϥϑԽ ͷεΫϦϓτڞ௨Խ͕ਐΜͰ͍Δ 25 ·ͱΊ
4. ͓·͚
• γφϦΦɺΞΫλʔ͚࣮ͩͯͦ͠ΕΛΓସ͑ΔίϚϯυϥΠϯΦϓγϣ ϯΛॻ͍ͯɺՄࢹԽ༻ͷεΫϦϓτʹΦϓγϣϯՃͯ͠ɺͦΕΛ·ͱΊΔ γΣϧεΫϦϓτʹΦϓγϣϯͤΔΑ͏ʹͯ͠… 27 ίϚϯυϥΠϯΦϓγϣϯʹΑΔڍಈมߋͷ࣮ ֤ݴޠͰͷίϚϯυϥΠϯύʔαʔͷॻ֮ࣜ͑ͯͳ͍
• Fukuoka.go#14Ͱհͨ͠ • ίϚϯυϥΠϯΦϓγϣϯΛύʔε͢ΔίʔυΛίϚϯυϥΠϯΦϓγϣϯ͔ Βੜ͢Δπʔϧ 28 monochromegane/flagen https://github.com/monochromegane/flagen
Example of Go (preset template) 29 $ flagen go --dist
erlang -e k/l --lambda 1.5 -k 1 -v var ( dist string e string lambda float64 k int v bool ) func init() { flag.StringVar(&dist, "dist", "erlang", "usage of dist") flag.StringVar(&e, "e", "k/l", "usage of e") flag.Float64Var(&lambda, "lambda", 1.5, "usage of lambda") flag.IntVar(&k, "k", 1, "usage of k") flag.BoolVar(&v, "v", false, "usage of v") } ίϚϯυϥΠϯΦϓγϣϯ໊͔Βม໊Λੜ ίϚϯυϥΠϯΦϓγϣϯ͔ΒܕΛਪଌ ࣮ࡍʹ༻͢ΔίϚϯυϥΠϯΦϓγϣϯ͔Β ίϚϯυϥΠϯͷղੳॲཧΛੜ
Example of Python (preset template) 30 $ flagen py --dist
erlang -e k/l --lambda 1.5 -k 1 -v import argparse parser = argparse.ArgumentParser() parser.add_argument("--dist", default="erlang", help="Help of dist") parser.add_argument("-e", default="k/l", help="Help of e") parser.add_argument("--lambda", type=float, default=1.5, help="Help of lambda") parser.add_argument("-k", type=int, default=1, help="Help of k") parser.add_argument("-v", action="store_false", help="Help of v") args = parser.parse_args() ϋϚΓ͕ͪͳ1ZUIPOͷCPPMͷσϑΥϧτͷઃఆ ϘΠϥʔςϯϓϨʔτͳͷͰେৎ
Example of Ruby (preset template) 31 $ flagen rb --dist
erlang -e k/l --lambda 1.5 -k 1 -v require 'optparse' opts = { dist: 'erlang', e: 'k/l', lambda: 1.5, k: 1, v: false, } OptionParser.new do |op| op.on('--dist [VALUE]', 'Desc of dist') {|v| opts[:dist] = v } op.on('-e [VALUE]', 'Desc of e') {|v| opts[:e] = v } op.on('--lambda [VALUE]', 'Desc of lambda') {|v| opts[:lambda] = v.to_f } op.on('-k [VALUE]', 'Desc of k') {|v| opts[:k] = v.to_i } op.on('-v', 'Desc of v') {|v| opts[:v] = v } op.parse!(ARGV) end
Example of Shell (preset template) 32 $ flagen sh --dist
erlang -e k/l --lambda 1.5 -k 1 -v E="k/l" K="1" V="FALSE" while getopts e:k:v OPT do case $OPT in "e" ) E="$OPTARG";; "k" ) K="$OPTARG";; "v" ) V="TRUE";; esac done shift `expr $OPTIND - 1` HFUPQUTҰจࣈͷҾ͚ͩѻ͑ΔͷͰ͍Φϓγϣϯແࢹ
• flagenΛΤσΟλͱ࿈ܞ͢Δ • ྫ͑VimͰҎԼʹΑΓɺΧʔιϧҐஔʹ݁ՌΛૠೖ͢Δ͜ͱ͕Ͱ͖Δɻ ʢಈతͳίʔυεχϖοτͱͯ͠ͷར༻ʣ 33 Collaboration :r!flagen YOUR_TEMPLATE YOUR_COMMAND_LINE_OPTIONS...
None