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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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.4k
ユーザーにサブドメインの ECサイトを提供したい (あるいは) 2026年函館で一番熱くなるかもしれない言語の話
uvb_76
0
910
Rails 7.2 のリリースノートを見て思ったこと
uvb_76
0
970
Rails Girls ガイドを使って社内で Rails 講座を開催した
uvb_76
0
160
問い合わせ調査との付き合い方
uvb_76
0
260
メール認証とRuby
uvb_76
0
1.1k
開発環境(物理)を作る
uvb_76
0
1.8k
Other Decks in Programming
See All in Programming
OSINT for SRE: 学術論文とポストモーテムから探る システム障害の共通パターン / SRE NEXT 2026
tomoyk
1
3.8k
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
170
PHP初心者セッション2026 〜生成AIでは見えない裏側を知る:今だからLAMPを通して仕組みを学ぶ〜
kashioka
0
450
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
200
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
100
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
760
信頼性について考えてみる(SRE NEXT 2026 miniLT)
hayama17
0
190
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
850
どこまでゆるくて許されるのか
tk3fftk
0
490
「正の参照」と 「負の導出」で組む ハーネスエンジニアリング
cottpan
1
140
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
260
Apache Hive: そしてCloud Native Lakehouseへ
okumin
1
130
Featured
See All Featured
Writing Fast Ruby
sferik
630
63k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Test your architecture with Archunit
thirion
1
2.3k
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
The Language of Interfaces
destraynor
162
27k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
390
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
190
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
870
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
370
Optimizing for Happiness
mojombo
378
71k
The Invisible Side of Design
smashingmag
301
52k
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ϨϏϡʔ͋Γ͕ͱ͏͍͟͝·ͨ͠