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
try_to_making_a_gem_with_pattern_matching.pdf
Search
morihirok
October 16, 2019
Technology
0
190
try_to_making_a_gem_with_pattern_matching.pdf
Ebisu.rb #25
morihirok
October 16, 2019
Tweet
Share
More Decks by morihirok
See All by morihirok
混沌とした例外処理とエラー監視に秩序をもたらす
morihirok
20
3.5k
継続的にRailsアプリを開発する上で早めにやっておきたいこと
morihirok
9
2.9k
1日5分!子育て中もインプットを続ける工夫
morihirok
4
1.1k
rarray_value.pdf
morihirok
0
1.6k
失敗しても大丈夫!ひとりWebサービスのすゝめ
morihirok
2
470
introduce_pattern_matching_with_mongo-clarify
morihirok
0
93
サーバレスアーキテクチャ入門
morihirok
0
230
エンジニアの勉強法
morihirok
0
380
Other Decks in Technology
See All in Technology
偶然 × 行動で人生の可能性を広げよう / Serendipity × Action: Discover Your Possibilities
ar_tama
1
1.1k
インフラをつくるとはどういうことなのか、 あるいはPlatform Engineeringについて
nwiizo
5
2.5k
明日からできる!技術的負債の返済を加速するための実践ガイド~『ホットペッパービューティー』の事例をもとに~
recruitengineers
PRO
3
380
MC906491 を見据えた Microsoft Entra Connect アップグレード対応
tamaiyutaro
1
540
モノレポ開発のエラー、誰が見る?Datadog で実現する適切なトリアージとエスカレーション
biwashi
6
800
Cloud Spanner 導入で実現した快適な開発と運用について
colopl
1
520
エンジニアが加速させるプロダクトディスカバリー 〜最速で価値ある機能を見つける方法〜 / product discovery accelerated by engineers
rince
1
150
エンジニアのためのドキュメント力基礎講座〜構造化思考から始めよう〜(2025/02/15jbug広島#15発表資料)
yasuoyasuo
16
6.5k
Moved to https://speakerdeck.com/toshihue/presales-engineer-career-bridging-tech-biz-ja
toshihue
2
730
2025-02-21 ゆるSRE勉強会 Enhancing SRE Using AI
yoshiiryo1
1
170
トラシューアニマルになろう ~開発者だからこそできる、安定したサービス作りの秘訣~
jacopen
2
2k
SA Night #2 FinatextのSA思想/SA Night #2 Finatext session
satoshiimai
1
140
Featured
See All Featured
A Tale of Four Properties
chriscoyier
158
23k
Code Review Best Practice
trishagee
67
18k
Mobile First: as difficult as doing things right
swwweet
223
9.3k
Code Reviewing Like a Champion
maltzj
521
39k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.3k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Become a Pro
speakerdeck
PRO
26
5.1k
4 Signs Your Business is Dying
shpigford
182
22k
Done Done
chrislema
182
16k
Unsuck your backbone
ammeep
669
57k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Transcript
Ruby2.7Ͱಋೖ͞ΕΔ Pattern matchingͰ GemΛ࡞ͬͯΈͨ Ebisu.rb #25 @_morihirok
About me • Github: morihirok • Twitter: @_morihirok • STORES.jp
inc,
Ruby 2.7ΑΓ Pattern matching ͱ͍͏ػೳ͕ೖΓ·͢
3VCZ,BJHJ1BUUFSONBUDIJOH/FXGFBUVSFJO3VCZΑΓҾ༻ IUUQTTQFBLFSEFDLDPNL@UTKQBUUFSONBUDIJOHOFXGFBUVSFJOSVCZEPU
3VCZ,BJHJ1BUUFSONBUDIJOH/FXGFBUVSFJO3VCZΑΓҾ༻ IUUQTTQFBLFSEFDLDPNL@UTKQBUUFSONBUDIJOHOFXGFBUVSFJOSVCZEPU
ͬͯΈ͍ͨͷͰ Կ͔࡞Ζ͏
STORES.jpϝΠϯDB͕ MongoDB • ओཁͳσʔλશͯMongoDBʹೖ͍ͬͯΔ • ओཁͳΫΤϦશͯMongoDBʹ͔͍ͬͯΔ • વ࣮ߦܭըMongoDBͷͷΛ֬ೝ͢Δ • MongoDBͷexplainಡΈͮΒ͍
MongoDBͷexplain݁Ռͷ αϯϓϧ > db.items.find({price: 119}).explain("executionStats") { "queryPlanner" : { "plannerVersion"
: 1, "namespace" : "sample_db.items", "indexFilterSet" : false, "parsedQuery" : { "price" : { "$eq" : 119 } }, "winningPlan" : { "stage" : "COLLSCAN", "filter" : { "price" : { "$eq" : 119 } શͯ+40/Ͱදݱ͞ΕΔ
Pattern matchingΛ͑ JSONͷѻ͍͕ ָʹͳΔͷͰʁ
ͱ͍͏͜ͱͰ࡞ͬͨͷ͕͜Ε FYQMBJOͷ+40/Λ ͍͍۩߹ʹ.BSLEPXOͷ ςʔϒϧʹม͢Δ
ΠϯσοΫε͕ޮ͍ͯͳ͍ͱ͖ͷ explain݁Ռ ͕͜͜z$0--4$"/zʹͳΔ
͜͏ॻ͚Δ ͕͜͜z$0--4$"/zʹͳΔ
ΠϯσοΫε͕ޮ͍͍ͯΔͱ͖ͷ explain݁Ռ ͕͜͜z'&5$)zʹมΘΔ ͕͜͜z*94$"/zʹͳΔ ͜͜ʹΠϯσοΫε໊͕ೖΔ
͜͏ॻ͚Δ ͕͜͜z'&5$)zʹมΘΔ ͕͜͜z*94$"/zʹͳΔ ͜͜ʹΠϯσοΫε໊͕ೖΔ
͜͏ॻ͚Δ มΛόΠϯυͰ͖Δ ͜͜ʹΠϯσοΫε໊͕ೖΔ
࠷ऴతʹ͜͏ͳΔ
STORES.jpͰ ͍͍ײ͡ʹ͑ͦ͏
͓લຊ൪ͷRubyΛ 2.7ʹ্͛ΔͭΓͳͷ͔ʁ
Pattern matchingແ͠Ͱ ॻ͖͑Δͱ
Pattern matchingແ͠Ͱ ॻ͖͑Δͱ όʔδϣϯ͝ͱͷ ίʔυͷဃ͕ܹ͘͠ͳΔ
͜Μͳํ๏͋Γ·͢
pattern-matchΛར༻͢Δͱ 1SPDDBMM ͷγϯλοΫεγϡΨʔ͕ Ͱ͋Δ͜ͱΛར༻͍ͯ͠Δ
pattern-matchΛར༻͢Δͱ ͋ΔఔࣅͨίʔυΛ อͭ͜ͱ͕Ͱ͖Δ
Ruby2.7Ҏ্Ͱ Pattern matchingΛ͍͍ͨ Ruby2.6ҎԼͰ gem͍͍ͨ
RubyͷόʔδϣϯʹΑͬͯ require͢ΔϑΝΠϧΛม͑Δ • mongo_clarify.rb 3VCZͷόʔδϣϯʹΑͬͯ ϑΝΠϧΛม͍͑ͨϞδϡʔϧ
RubyͷόʔδϣϯʹΑͬͯ require͢ΔϑΝΠϧΛม͑Δ • investigate.rb 3VCZҎ্ͳΒ 1BUUFSO.BUDIJOH൛Λ͏
• ىಈதͷRubyͷόʔδϣϯจࣈྻΛอ࣋͢Δ ఆ Gem::Version • όʔδϣϯจࣈྻΛൺֱՄೳʹ͢ΔΫϥε RUBY_VERSION
ςετRubyͷόʔδϣϯʹΑͬͯ require͢ΔϑΝΠϧΛม͑Δ • mongo_clarify_spec.rb 3VCZͷόʔδϣϯʹΑͬͯ ϑΝΠϧΛม͍͑ͨϞδϡʔϧ
ςετRubyͷόʔδϣϯʹΑͬͯ require͢ΔϑΝΠϧΛม͑Δ • .travis.yml $*ʹෳόʔδϣϯͰ ςετͯ͠Β͏
RubyGemsʹస͕͍ͬͯ·͢ • https://rubygems.org/gems/mongo_clarify
༨ஊ Gemͷ࡞աఔͰ MongoDBͷexplainʹ׳Ε ͜ͷGem͍ͬͯͳ͍