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
yawaraka zouzei
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
uvb_76
December 14, 2019
Programming
2.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
yawaraka zouzei
uvb_76
December 14, 2019
More Decks by uvb_76
See All by uvb_76
地元にいないローカルオーガナイザーの立ち回り
uvb_76
2
1.5k
ユーザーにサブドメインの ECサイトを提供したい (あるいは) 2026年函館で一番熱くなるかもしれない言語の話
uvb_76
0
920
Rails 7.2 のリリースノートを見て思ったこと
uvb_76
0
980
Rails Girls ガイドを使って社内で Rails 講座を開催した
uvb_76
0
170
問い合わせ調査との付き合い方
uvb_76
0
260
メール認証とRuby
uvb_76
0
1.2k
開発環境(物理)を作る
uvb_76
0
1.8k
Other Decks in Programming
See All in Programming
仕様駆動開発の消費期限
watany
20
8.8k
「つくるAI」だけではバグは見つからない ~テストに必要な「見つけるAI」を分離させる戦略~
mfunaki
0
130
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
130
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
450
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.4k
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
280
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
1
150
Flow は今どうなっているか
mizdra
PRO
0
670
Pythonの実行はどこまで賢くなったのか? CPythonとPyPyから見る最適化のしくみ
curekoshimizu
3
1.1k
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
220
源内ハンズオン概要編
hideg
0
200
【QA Test Talk Vol.8】AI-DLC による Whole Team Approach の加速
pkshadeck
PRO
0
220
Featured
See All Featured
A Tale of Four Properties
chriscoyier
163
24k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
220
The Cost Of JavaScript in 2023
addyosmani
55
10k
Design in an AI World
tapps
1
290
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
380
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
660
How to Ace a Technical Interview
jacobian
281
24k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
470
We Have a Design System, Now What?
morganepeng
55
8.3k
Into the Great Unknown - MozCon
thekraken
41
2.7k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
380
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Transcript
͡Ίͯͷ૿੫ରԠ "UTVTIJ,BUTVVSB(.01FQBCP *OD ฏ3VCZձٞ ΘΒ͔૿੫
ࠓ͢͜ͱ w݄ͷফඅ੫૿੫ରԠͰ&$αʔϏεͰඞཁʹͳͬͨ͜ͱ w࣮ࡍʹରԠ͢Δ্ͰؾΛ͚ͭͨ͜ͱ w݄Λܴ͑ͨͱ͖ɺ͏·͍͔͘ͳ͔ͬͨ͜ͱ 3VCZͷ͋·Γͳ͍Ͱ͢ɻੜ׆ൃදͰ͢ɻ
উӜರJLBSVHB!67#@ (.0ϖύϘגࣜձࣾ&$ࣄۀ෦ΧϥʔϛʔϦϐʔτνʔϜ IUUQTJLBSVHBPSH
IUUQTDPMPSNFSFQFBUKQ
ΧϥʔϛʔϦϐʔτ w8FC"1*αʔόʔ 3VCZPO3BJMT wϑϩϯτΤϯυαʔόʔ &YQSFTT 7VFKT αϒεΫϦϓγϣϯͷܖ͕Ͱ͖ΔϥϯσΟϯάϖʔδΛ࡞Δ͜ͱ͕Ͱ ͖ΔαʔϏε
݄αʔϏεϦϦʔε⾣͡Ίͯͷ૿੫
૿੫
&$αʔϏεʹऻ͍͔͔Δফඅ੫૿੫ wγϣοϓΦʔφʔͷαʔϏεར༻ྉͷফඅ੫ wγϣοϓΦʔφʔ͕ઃఆ͢Δͷফඅ੫ wܰݮ੫ͷઃఆΛؚΉ
ܰݮ੫ wಛఆͷ੫͕͡Όͳͯ͘ʹͳΓ·͢Α wαʔϏεఏڙଆ͕அ͢ΔͷͰͳ͘ɺʮγϣοϓ Φʔφʔʯ͕அ͢Δͷ wγϣοϓΦʔφʔʹ͓Βͤͯ͠ઃఆͯ͠͏ඞཁ͕ ͋Δ
૿੫ରԠͰͬͨ͜ͱ wαʔϏεར༻ྉͷফඅ੫૿੫ରԠ wͷফඅ੫૿੫ରԠ wܰݮ੫ͷઃఆͷఏڙ ࣌ࠁΛڥʹදࣔΛΓସ͑Δ ࠓճলུ w ૹྉͷ֎੫Խ w
ாථͷमਖ਼ ۠هࡌٻॻอଘํࣜ w ച্కΊॲཧͷεϓϦΫτͷमਖ਼
੫͕ద༻͞ΕΔλΠϛϯά
Ұ࣍ιʔεΛΑ͘ಡΉ
ࠃ੫ி
αʔϏεར༻ྉͷ੫ wલఏΧϥʔϛʔϦϐʔτͷαʔϏεར༻ྉԁ w݁ܖऴ͕ྃҎ߱ͷͱ͖ɺͷফඅ੫Ͱѻ͏ wࠃ੫ிͷ)1ΛΑΉ wIUUQTXXXOUBHPKQUBYFTTIJSBCFSVUBYBOTXFSTIPIJ IUN
ɹͷఏڙ ɹෛʹΑΔͷఏڙͷ࣌ظɺݪଇͱ͠ ͯɺͷҾ͠Λཁ͢Δෛܖʹ͋ͬͯ తͷશ෦Λͯ͠Ҿ͖ͨ͠ɺͷ Ҿ͠Λཁ͠ͳ͍ෛܖʹ͋ͬͯͦͷ ͨ͠ͷશ෦ͷఏڙΛྃͨ͠Ͱ͢ɻ ɹ·ͨɺෛΛআ͘ਓతͷఏڙͷ࣌ظ ɺݪଇͱͯͦ͠ͷਓతͷఏڙΛྃ͠ ͨͰ͢ɻ
ɹͷఏڙ ɹෛʹΑΔͷఏڙͷ࣌ظɺݪଇͱ͠ ͯɺͷҾ͠Λཁ͢Δෛܖʹ͋ͬͯ తͷશ෦Λͯ͠Ҿ͖ͨ͠ɺͷ Ҿ͠Λཁ͠ͳ͍ෛܖʹ͋ͬͯͦͷ ͨ͠ͷશ෦ͷఏڙΛྃͨ͠Ͱ͢ɻ ɹ·ͨɺෛΛআ͘ਓతͷఏڙͷ࣌ظ ɺݪଇͱͯͦ͠ͷਓతͷఏڙΛྃ͠ ͨͰ͢ɻ
αʔϏεར༻ྉͷ੫ wܖΛͰදݱ͢Δͱ ੫ U ੫ ੫ TUBSUFE@BU FOEFE@BU
Ձ֨ͷ੫͕ద༻͞ΕΔλΠϛϯά w݁Ձ֨ൃૹ࣌ͷ੫Λద༻͢Δ wʹडͨ͋͠ͱʹൃૹ w⾣ͷ੫͕ద༻͞ΕΔ wIUUQTXXXOUBHPKQMBXUTVUBUTVLJIPOTIPIJIUN ΛಡΉ
ʵʵɹ୨Էࢿ࢈ͷҾ͠ͷ͕͍ͭͰ͋ Δ͔ʹ͍ͭͯɺྫ͑ɺग़ՙͨ͠ɺ૬ख ํ͕ݕऩͨ͠ɺ૬खํʹ͓͍ͯ༻ऩӹ͕ Ͱ͖Δ͜ͱͱͳͬͨɺݕʹΑΓൢച ྔΛ֬ೝͨ͠ɺ֘୨Էࢿ࢈ͷछྨٴͼ ੑ࣭ɺͦͷൢചʹΔܖͷ༰ʹԠͯ͡ ͦͷҾ͠ͷͱͯ͠߹ཧతͰ͋ΔͱೝΊΒ ΕΔͷ͏ͪɺࣄۀऀ͕ܧଓͯ͠୨Էࢿ࢈ͷ ৡΛߦͬͨ͜ͱͱ͍ͯ͠ΔʹΑΔͷͱ ͢Δɻ
࣮
੫ΛͲ͏දݱ͢Δ͔ w੫͕ద༻͞ΕΔ࣌ࠁ wܰݮ੫͔Ͳ͏͔ ͕Θ͔Ε੫ٻΊΒΕͦ͏ wఆͰઃఆʹ͢Δ w%#ʹσʔλΛͨͤΔ
%#Ͱ੫Λදݱ͍ͨ͠ "id" "kind" "rate" "started_at" "expired_at" "created_at" "updated_at" 1 0
0.08 "2014-03-31 15:00:00" "2019-09-30 14:59:59.999999" "2019-07-16 09:44:39.516075" "2019-07-16 09:44:39.516075" 2 0 0.1 "2019-09-30 15:00:00" NULL "2019-07-16 09:44:39.519505" "2019-07-16 09:44:39.519505" 3 1 0.08 "2019-09-30 15:00:00" NULL "2019-07-16 09:44:39.521575" "2019-07-16 09:44:39.521575" UBYFTςʔϒϧര ࠓճͪ͜ΒΛ࠾༻
࣮ class Tax < ApplicationRecord enum kind: { ordinary: 0,
reduced: 1 } class << self def ordinary_rate(time = Time.current) # 10%ͷ੫༻ ordinary.where('started_at <= ?', time).order(started_at: :desc).first.rate end def reduced_rate(time = Time.current) # 8%(ܰݮ੫)༻ reduced.where('started_at <= ?', time).order(started_at: :desc).first.rate end end end
UBYFTςʔϒϧͷ 4&-&$5͕ͨΒͱଟ͍
%BUF5JNFΫϥεϛϦඵ·Ͱ࣋ͬͯΔ [1] pry(main)> Time.current.iso8601(7) => "2019-12-09T08:49:24.4245084+09:00" 5JNFDVSSFOUΛ͢ͱ࣮ߦ͢ΔͨͼʹΫΤϦ͕࣮ߦ͞ΕΔͷͰ ΫΤϦΩϟογϡ͕ޮ͔ͳ͍ ੫ܭࢉͷج४࣌Λ໌֬ʹҾͱͯ͢͜͠ͱͰಉ͡ΫΤϦΛ ు͖ग़ͤ͞ɺΫΤϦΩϟογϡΛޮ͔͢
IUUQTHJUIVCDPNDPMPSCPY TIPVIJ[FJ
4IPVIJ[FJ(FN w:BNMͰͷఆಡΈࠐΈ wܰݮ੫ରԠ w͜ͷࢿྉ࡞ͬͯΔ࠷தʹݟͯ͠ʮΑ͍ʜʯͱͳͬͨ irb(main):010:0> Shouhizei.rate_on(Time.current) => (1/10) irb(main):011:0> Shouhizei.rate_on(Time.current,
reduced: true) => (2/25)
Ͳ͕͍͍ͬͪͩΖ͏Ͷ w5BYʹґଘ͢Δ3FMBUJPOଘࡏ͠ͳ͍ͷͰఆͰͳ͍ wҰํͰফඅ੫ͱ͍͏σʔλΛ%#Ͱදݱ͢ΔͷࣗવͰ͋Δ wґଘ(FNগͳ͍΄͏͕ྑ͍ ࠓճͲͬͪΛબΜͰΑ͔ͬͨͱࢥͬͨɻ
࣌ࠁΛڥʹදࣔΛΓସ͑Δ
ͳͥඞཁʹͳ͔ͬͨ wϑϩϯτΤϯυͰΛڥʹදࣔΛΓସ͑ ͍ͨ w࣌ؒΛڥքͱ͢Δςετେม wͰ͖Δ͚ͩ୯७ʹݕূ͍ͨ͠
Ͳ͏͔ͨ͠ w"1*ͷϨεϙϯεʹl૿੫ޙͷใ͔ zͲ͏͔ͷϨε ϙϯεΛCPPMͰՃͨ͠ w࣌ࠁΛฦͯ͠ϑϩϯτΤϯυͰஅ͢ΔͷΛආ͚ͨ
"1*Ͱ࣌ࠁΛฦͯ͠ྑ͍ͷͰ wlใ͕࡞͞Εͨ࣌ࠁzͲ͏͔ͷϨεϙϯεΛՃ͢ ΔͱɺϑϩϯτΤϯυͰ࣌ࠁͷൺֱ͕ඞཁʹͳΔ wϑϩϯτΤϯυͷ࣌ࠁͷൺֱେม
ςετ
34QFDͰςετ࣌ࠁΛม͑Δ # spec/support/traveling.rb RSpec.configure do |config| config.include ActiveSupport::Testing::TimeHelpers config.around(:each, :travel_to)
do |example| travel_to(example.metadata[:travel_to]) do example.run end end end
34QFDͰςετ࣌ࠁΛม͑Δ # spec/support/traveling.rb RSpec.configure do |config| config.include ActiveSupport::Testing::TimeHelpers config.around(:each, :travel_to)
do |example| travel_to(example.metadata[:travel_to]) do example.run end end end IUUQTSFMJTIBQQDPNSTQFDSTQFD DPSFWEPDTIPPLTBSPVOE
͍ํ ྫ context '૿੫લͷͱ͖', travel_to: '2019/09/30 23:59:59' do # ੫8%Ͱ͋Δ͜ͱΛ֬ೝ͢ΔςετΛ͜͜ʹ͔͘
end wϒϩοΫͷதͰAUSBWFM@UPA͕ޮ͍ͯศར w !LBKJTIB͞ΜͷΞΠσΞͰ͢ɻ͋Γ͕ͱ͏͍͟͝·͢ɻ
DPOUFYUͷΓํ w૿੫લ૿੫ޙͰେ͖ͳίϯςΩετΛΔ wͦΕͧΕʹطଘͷςετΛίϐϖ͢Δ w૿੫ޙͷίϯςΩετΛ͢ wςετ૿͑Δ͕ɺޙย͚ ςετͷআ ͷͱ͖૿੫લͷίϯς Ωετʹணͯ͠ςετͷཧΛߦ͑ྑ͍ͷͰָ
૿੫ޙʹ͏·͍͔͘ͳ͔ͬͨ͜ͱ
͏·͍͔͘ͳ͔ͬͨ͜ͱ w૿੫ޙͷදࣔपΓͷෆ۩߹ग़ͯ͠·ͬͨ w"1*ͷςετ͕NBTUFSͰࣦഊ͢ΔΑ͏ʹͳ͍ͬͯͨ
NBTUFSͰςετ͕ίέͩ͢ w૿੫લʹQBTT͍ͯͨ͠ςετ͕ࣦഊͨ͠ w૿੫ޙͷमਖ਼࡞ۀʹӨڹ͕ग़ͨ wUSBWFM@UPͷઃఆΕͰ݄ʹ௨͍ͬͯͨςετ͕݄ʹࣦഊ͍ͯͨ͠ wϩʔΧϧͰະདྷ࣌ࠁʹมߋͯ͠ςετΛҰ௨ͨ͠΄͏͕Α͔ͬͨʜ
·ͱΊ wϑϩϯτΤϯυʹ࣌ࠁΛͣ͞ʹݟͤΔํ๏Λߟ͑Δ wมߋ͢Δ࣌ࠁ͝ͱʹίϯςΩετΛ࡞͓ͬͯ͘ͱޙָ͕ w๏ͷରԠେม ँࣙ !LZNNUϨϏϡʔ͋Γ͕ͱ͏͍͟͝·ͨ͠