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
Creating gems 101
Search
Masafumi Okura
September 05, 2024
Programming
1
58
Creating gems 101
Gem作成に関するトークです。
https://omotesandorb.connpass.com/event/328438/
Masafumi Okura
September 05, 2024
Tweet
Share
More Decks by Masafumi Okura
See All by Masafumi Okura
How NOT to make your DSL terrible
okuramasafumi
0
250
オブジェクトしこう
okuramasafumi
2
200
Debugging Alba
okuramasafumi
1
170
Learning Ruby
okuramasafumi
5
530
How to build a conference for both newbies and seasoned devs
okuramasafumi
1
1.6k
Why doesn't Ruby have Boolean class?
okuramasafumi
4
2.1k
Writing Minitest clone in 30 minutes
okuramasafumi
0
470
Developing a Vim plugin with Ruby
okuramasafumi
0
650
On proposals
okuramasafumi
0
390
Other Decks in Programming
See All in Programming
Rubyのobject_id
qnighy
6
1.3k
マルチモジュールにおけるテスト最適化
fxwx23
0
200
ECMAScript、Web標準の型はどう管理されているか / How ECMAScript and Web standards types are maintained
petamoriken
3
390
ブラウザ互換の重要性 - あらゆるユーザーに価値を届けるために必要なこと
yamanoku
0
110
rbs-inlineを導入してYARDからRBSに移行する
euglena1215
1
260
Boost Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
310
What you can do with Ruby on WebAssembly
kateinoigakukun
0
160
Method Swizzlingを行うライブラリにおけるマルチモジュール設計
yoshikma
0
110
GraphQLの魅力を引き出すAndroidクライアント実装
morux2
3
320
Using Livebook to build and deploy internal tools @ ElixirConf 2024
hugobarauna
0
240
Rustではじめる負荷試験
skanehira
5
1.2k
rails_girls_is_my_gate_to_join_the_ruby_commuinty
maimux2x
0
190
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
230
130k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
24
600
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
248
20k
It's Worth the Effort
3n
182
27k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
123
18k
Optimizing for Happiness
mojombo
375
69k
The Illustrated Children's Guide to Kubernetes
chrisshort
47
48k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
278
13k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
89
16k
RailsConf 2023
tenderlove
28
800
Scaling GitHub
holman
458
140k
Docker and Python
trallard
39
3k
Transcript
Creating gems 101 Omotesando.rb #101 OKURA Masafumi, 2024-09-05
101ճ։࠵ ͓ΊͰͱ͏ ͍͟͝·͢ʂʂʂ
101
ೖ
ೖgem࡞ Omotesando.rb #101 OKURA Masafumi, 2024-09-05
Dev.introduce(self) • ໊લɿ͓͓͘Β·͞;Έ • ॴଐɿϑϦʔϥϯε • ׆ಈɿKaigi on RailsνʔϑΦʔΨφΠβʔɺAlba gem࡞ऀɺOH!
MY RUBYISTSϙουΩϟετϝΠϯύʔιφϦςΟɺͳͲͳͲ • ࠓͷొஃͷഎܠɿFeikuͱ͍͏৽͍͠gemΛ࡞ͬͨͷͰɺͦͷྲྀΕ ʹ͍ͭͯ͝հ
None
gemΛ࡞Δͱ͖ʹ ·ͣߟ͑Δ͜ͱ
gemΛ࡞Δͱ͖ʹ·ͣߟ͑Δ͜ͱ • ཧ༝ • ΠϯλʔϑΣʔε • ໊લ
લఏ
Feiku https://github.com/okuramasafumi/feiku
Faker Έ͍ͨͳͭ
ཧ༝
ͳͥͦΕ͕ ΄͍͠ͷ͔
طଘͷͷͰ μϝͳͷ͔
Feikuͷ߹
???ɿ ʮFakerͷίʔυͬ ͯΞϨͰ͢ΑͶ͑ʯ
FakerͷίʔυΛ ݟͨࣗɿ ʮ…ʯ
FakerͷύϑΥʔ ϚϯεΛଌఆ
Comparison: feiku: 11239359.0 i/s ffaker: 1296337.9 i/s - 8.67x slower
faker: 10084.1 i/s - 1114.57x slower
1000ഒʂʁ
Comparison: feiku: 0 allocated ffaker: 637748 allocated - Infx more
faker: 98919397 allocated - Infx more
100MB!?
Faker::Name.name ͢Δ͚ͩͰʁ
ڥʹѱ͍ʂ
ஔ͖͑Α͏ʂ
ࣗͷΛ ࣗͰ͢
͕ࣗ΄͍͠ͷ Λ࡞Δ
ΠϯλʔϑΣʔε
Feikuͷ߹
Fakerʹ߹ΘͤΔ
͘ΘΕ͍ͯΔ ΠϯλʔϑΣʔε ʹ߹ΘͤΔ
ਓ৽͍͍͠ํ Λ֮͑ͨ͘ͳ͍
໊લ
໊લॏཁʂʂʂ
Feikuͷ߹
ॳͷҊɿ “Realer”
Fakerͷٯ
ࢥ͍͢ ʮ͕͢͞ʹฆΒΘ ͍͠ͳ͋ʯ
ࠔͬͨͱ͖ͷ ϩʔϚࣈදه
͓·͚ɿ Albaͷ߹
ίϯηϓτ ʮߴʯ
͍ͷ
͍ੜ͖
ࢲɿ ʮΞϗυϦͬͯ ࣌100kmͳͷʂʯ
ࢲɿ ʮ໊͔͠લ͕ Ξϗ͍͍ͬͯͶʯ
ΞϗυϦ
Albatross
Alba
FeikuͱAlbaͷ ڞ௨
͍ ൃԻ༰қ ͍֮͑͢
·ͱΊ
Creating gems 101 • ཧ༝ • ύϑΥʔϚϯεͳͲɺࣗͷΛࣗͰ͢ • ΠϯλʔϑΣʔε •
͢Ͱʹ͘ΘΕ͍ͯΔͷʹ߹ΘͤΔ • ໊લ • ͘ɺൃԻ͕༰қͰ໊͍֮͑͢લʹ͢Δ
Happy hacking!