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
[Roppongi.rb#38] RubyによるStrategyパターンの実践
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Hoang Duc Quan
January 14, 2026
33
0
Share
[Roppongi.rb#38] RubyによるStrategyパターンの実践
Hoang Duc Quan
January 14, 2026
More Decks by Hoang Duc Quan
See All by Hoang Duc Quan
[Roppongi.rb#31]Roda紹介
blazingrockstorm
0
100
[SaigonRB#20] Clean code in Ruby
blazingrockstorm
0
33
[SaigonRB#21] Ruby Silver & Ruby Gold
blazingrockstorm
0
39
[Roppongi.rb#28] Sentiment-aIというgemを作りました
blazingrockstorm
0
170
Featured
See All Featured
From π to Pie charts
rasagy
0
160
Ruling the World: When Life Gets Gamed
codingconduct
0
190
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
330
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
310
Utilizing Notion as your number one productivity tool
mfonobong
4
280
How to train your dragon (web standard)
notwaldorf
97
6.6k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
250
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
68
38k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.8k
4 Signs Your Business is Dying
shpigford
187
22k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
94
Transcript
RubyによるStrategyパターンの実践 2025.12.30
⾃⼰紹介 Hoang Quan (ホアン クアン) GitHub: https://github.com/BlazingRockStorm LinkedIn: https://www.linkedin.com/in/hoang-quan-841 8a7155/
クラウドとバックエンドに特化したシステムエンジ ニア Ruby と AWS と Agile が好き 折り紙インスタグラマー、ドラマー‧パーカッショ ニスト © BlazingRockStorm 1
デザインパターンとは 設計における「共通⾔語」と「型」 再利⽤性 検証済みの解決策 保守性 変更に強い構造 共通⾔語 意図の即時共有 © BlazingRockStorm
2
なぜデザインパターンが重要か 特にRubyにおける重要性とメリット 変更への耐性 ロジックを分離し、既存コー ドへの影響を最⼩限に抑えて 機能拡張 が可能になる テストの容易性 各戦略が独⽴しているため、 ユニットテストが極めてシン
プルになる Rubyの柔軟性 動的型付けとブロックを活⽤ し、他⾔語より 簡潔にパ ターンを実装 できる © BlazingRockStorm 3
Strategyパターンとは? 交換可能なアルゴリズムのカプセル化 カプセル化 ⼀連のアルゴリズムを定義し、それぞれを 独⽴したクラス に閉じ込める 交換可能性 アルゴリズムを利⽤側(クライアント)から 独⽴ して切り替え可能にする
コンポジション 継承ではなく オブジェクトの構成 を利⽤し、実⾏時に振る舞いを選択する © BlazingRockStorm 4
Strategyパターンの例 崩壊:スターレイル HoYoverseが開発したターン制 スペースファ ンタジーRPG プレイヤーは 星穹列⾞ に乗り、銀河を旅する 運命 と
属性 に基づいた戦略的な戦闘システ ム 独⾃の戦闘役割を持つ多彩なキャラクターが登 場 © BlazingRockStorm 5
Strategyパターンの例 崩壊:スターレイル - 財貨の抗争 オートチェスにインスパイアされた戦略的なエ ンドコンテンツ 経済 (⾦貨) を管理し、キャラを雇⽤‧アップグ レードする
「出撃」(4)と「待機」(6)の役割を持つ10⼈の チーム編成 絆 と 投資戦略 によるダイナミックなバフ効 果 例:Belabog(2,4,6), Xianzhou(3,5,7,10) © BlazingRockStorm 6
ソースコード main.rb © BlazingRockStorm 10
財貨の抗争:Strategy実装 Bondのロジックをカプセル化 https://github.com/Viet-CodingStars/ruby-strategy-design-pattern-demo 数値検証(奇数、偶数、連番)のための アルゴリズム群 を定義 これらの振る舞いを 交換可能なStrategyクラス にカプセル化 絆(コンテキスト)は、特定のStrategyを選択して振る舞いを決定
メインロジックから複雑な if-elsifの連鎖 を排除 開放閉鎖の原則 : 既存コードを汚さずに新しい絆のルールを追加可能 © BlazingRockStorm 7
デモプロジェクトの構成 「絆」と「検証ロジック」の分離 BaseStrategy (イン ターフェース) 具体的Strategy (奇 数/偶数/連番) Bondクラス (Strategyを継承)
Main実⾏部 (実⾏時 の選択) © BlazingRockStorm 8
デモの主要構成要素 パターンの役割とコードの対応 Strategies Odd/EvenNumbersStrategy 。 検証アルゴリズム をカ プセル化 Bonds ベロブルグ、巡狩。特定の振
る舞いを持つ ゲーム内の概 念 を表現 Application main.rb。実⾏時に絆を特定 し、 選択されたStrategy を実⾏ © BlazingRockStorm 9
プロジェクトのファイル構造 StrategyとBondの整理 ├── lib/ │ ├── strategies/ │ │ ├──
base_strategy.rb │ │ ├── odd_numbers_strategy.rb │ │ ├── even_numbers_strategy.rb │ │ └── sequence_numbers_strategy.rb │ └── bonds/ │ ├── xianzhou_bond.rb │ ├── wolf_hunt_bond.rb │ └── … (etc.) ├── main.rb ├── README.md © BlazingRockStorm 10
ソースコード lib/strategies/even_numbers_strategy.rb © BlazingRockStorm 10
ソースコード lib/bonds/belobog_bond.rb © BlazingRockStorm 10
ソースコード main.rb © BlazingRockStorm 10
デモの実⾏ Strategyベースのロジックを動かす 使⽤法 : ruby main.rb <絆名>,<数値> 例 1 :
ruby main.rb Belobog,3 → “bronze” 例 2 : ruby main.rb Belobog,1 → “none” 例 3 : ruby main.rb Belobog,6 → “gold” アプリが「ベロブルグ」の絆を特定し、 EvenNumbersStrategy(偶数戦略) を使⽤して結果 を出⼒します。 © BlazingRockStorm 11
None