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
DB外の副作用をトランザクションから分離しよう / Isolate out-of-DB sid...
Search
Masato Ohba
April 20, 2023
Programming
8
4.3k
DB外の副作用をトランザクションから分離しよう / Isolate out-of-DB side effects from transactions
gotanda.rb#52@オンライン "DB外の副作用をトランザクションから分離しよう"
Masato Ohba
April 20, 2023
Tweet
Share
More Decks by Masato Ohba
See All by Masato Ohba
On-the-fly Suggestions of Rewriting Method Deprecations
ohbarye
3
6.2k
組織のスケールを見据えたプロジェクトリードエンジニア制度の実践 / Project Lead Engineer for Scaling Engineering Organization
ohbarye
14
3.4k
Two Blades, One Journey: Engineering While Managing
ohbarye
5
5k
Git scrapingで始める継続的なデータ追跡 / Git Scraping
ohbarye
5
1.6k
プロポーザルのつくり方 〜個人技編〜 / How to come up with proposals
ohbarye
6
1.2k
Data Migration on Rails
ohbarye
8
12k
Unlocking Potential of Property Based Testing with Ractor
ohbarye
3
18k
プロトタイピングによる不確実性の低減 / Reducing Uncertainty through Prototyping
ohbarye
5
1.6k
My Favorite Protocol: Idempotency-Key Header
ohbarye
7
7.4k
Other Decks in Programming
See All in Programming
事業KPIを基に価値の解像度を上げる
nealle
0
200
Blueskyのプラグインを作ってみた
hakkadaikon
1
270
AIエージェントによるテストフレームワーク Arbigent
takahirom
0
260
❄️ tmux-nixの実装を通して学ぶNixOSモジュール
momeemt
1
120
ソフトウェア品質特性、意識してますか?AIの真の力を引き出す活用事例 / ai-and-software-quality
minodriven
19
6.6k
技術懸念に立ち向かい 法改正を穏便に乗り切った話
pop_cashew
0
680
TypeScript製IaCツールのAWS CDKが様々な言語で実装できる理由 ~他言語変換の仕組み~ / cdk-language-transformation
gotok365
7
370
Interface vs Types ~型推論が過多推論~
hirokiomote
1
230
〜可視化からアクセス制御まで〜 BigQuery×Looker Studioで コスト管理とデータソース認証制御する方法
cuebic9bic
1
240
コードに語らせよう――自己ドキュメント化が内包する楽しさについて / Let the Code Speak
nrslib
5
920
TypeScript Language Service Plugin で CSS Modules の開発体験を改善する
mizdra
PRO
3
2.4k
List Unfolding - 'unfold' as the Computational Dual of 'fold', and how 'unfold' relates to 'iterate'"
philipschwarz
PRO
0
120
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
Raft: Consensus for Rubyists
vanstee
137
7k
GraphQLとの向き合い方2022年版
quramy
46
14k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Bash Introduction
62gerente
614
210k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
GitHub's CSS Performance
jonrohan
1031
460k
The Pragmatic Product Professional
lauravandoore
35
6.7k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.8k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
34
2.3k
Transcript
%#֎ͷ෭࡞༻Λ τϥϯβΫγϣϯ͔Β͠Α͏ !HPUBOEBSC PICBSZF
τϥϯβΫγϣϯͷ"UPNJDJUZ ͚Δ͜ͱͷͰ͖ͳ͍Ұ࿈ͷใॲ ཧͷ୯Ґɻ͜͜Ͱ3%#.4ͷػೳΛ Πϝʔδ͢Δɻ τϥϯβΫγϣϯͷॲཧ͕શ࣮ͯ ߦ͞ΕΔ͔ɺ͋Δ͍·࣮ͬͨ͘ߦ ͞Εͳ͍͔Λอূ͠ͳ͚ΕͳΒͳ ͍ʢ"UPNJDJUZݪࢠੑʣɻ τϥϯβΫγϣϯͱʁ
จσʔλͷ࡞ ૹσʔλͷ࡞ Λ·ͱΊͯߦ͏
τϥϯβΫγϣϯͷ"UPNJDJUZ τϥϯβΫγϣϯʹσʔλϕʔε ͕อޢͰ͖ͳ͍෭࡞༻ΛಥͬࠐΉ ϒϩοΫͷॲཧ͕શ࣮ͯߦ͞ΕΔ ͔ɺ͋Δ͍·࣮ͬͨ͘ߦ͞Εͳ͍ ͔Λอূ͢Δ͜ͱ͕Ͱ͖ͳ͘ͳΔ "UPNJDJUZͷյ͠ํ จྃϝʔϧ ૹ৴ΛՃ
ϝʔϧωοτϫʔΫΛܦ༝ͯ͠ૹ৴͞ΕΔͷͱ͢Δ
ͳͥյΕΔʁ ʮจσʔλ࡞ʯ ʮૹσʔλ࡞ʯ ʮϝʔϧૹ৴ʯ ͕ͯ͢Ұ؏ͯ͠ޭ͢Ε Α͍ ΫϥΠΞϯτ αʔό ϝʔϧαʔό
ޭ
ͳͥյΕΔʁ )551ϦΫΤετͰωοτ ϫʔΫΤϥʔ͕ى͖ɺϩʔϧ όοΫ͢Δέʔε Ϣʔβʔʹจྃϝʔϧ ͕ૹΒΕͨͷʹจɾૹ σʔλ͕ଘࡏ͠ͳ͍ͱݴͬ ͕ͨى͖͏Δ 💥
αʔόͰૹ৴൱Λ Δ͜ͱͰ͖ͳ͍ ωοτϫʔΫΤϥʔඞͣى͖ΔIUUQTFOXJLJQFEJBPSHXJLJ'BMMBDJFT@PG@EJTUSJCVUFE@DPNQVUJOH ଞʹίϛοτͰࣦഊ͢ΔέʔεͳͲ͕͋Γ͏Δ ΫϥΠΞϯτ αʔό ϝʔϧαʔό
ͷຊ࣭ w ʮจσʔλ࡞ʯʮૹσʔλ࡞ʯʮϝʔϧૹ৴ʯΛͭͷ ཧτϥϯβΫγϣϯʹ͍ͨ͠ w ͔͠͠3%#.4ͷཧτϥϯβΫγϣϯͰαϙʔτͰ͖ͳ͍ w ݎ࿚ੑΛอͭʹ%#τϥϯβΫγϣϯͱɺ%#֎ͷ෭࡞༻͠ ͳ͚ΕͳΒͳ͍
ࢄτϥϯβΫγϣϯΛؤுΔɺͱ͍͏ಓ͋Δ͕ଟ͘ͷέʔεͰίετ͕ߴͭ͘͘ͱࢥΘΕΔ ͜ͷଞʹτϥϯβΫγϣϯͷ࣌ؒԽɺϩοΫղ์ͪͳͲͷى͖Δ
4NBSU#BOLͷࣄ w δϣϒΩϡʔγεςϜʹEFMBZFEKPCΛ͍ͬͯͨ w Ωϡʔͱͯ͠3%#.4Λ͏ w ΤϯΩϡʔ·ͰͷBUPNJDJUZΛอূͰ͖ΔͨΊɺઌड़ͷྫͷΑ͏ʹ %#τϥϯβΫγϣϯͰΤϯΩϡʔ͍ͯ͠ΔՕॴ͕͋ͬͨ w
424ʹҠߦ͢Δ͜ͱʹͳΓɺݕग़ͯ͢͠Δඞཁ͕ੜͨ͡ IUUQTHJUIVCDPNDPMMFDUJWFJEFBEFMBZFE@KPC
ͳΜ͔࡞Εͦ͏ͳؾ͕ͨ͠ͷͰ ࣗ࡞ͯ͠ΈΔ
ݕग़ʢࣗ࡞Ҋʣ w "DUJWF3FDPSE#BTFDPOOFDUJPOUSBOTBDUJPO@PQFO PQFO@USBOTBDUJPOTͰτϥϯβΫγϣϯ͔Ͳ͏͔ఆͰ͖Δ w )551ϦΫΤετʢ/FU)551 OFXʣδϣϒΤϯΩϡʔ ʢ"DUJWF+PC&ORVFVJOHFORVFVFʣͰݺͼग़͞ΕΔϝιουʹ
ఆϑοΫΛࠐΊΑ͍ τϥϯβΫγϣϯ͔Ͳ͏͔ಈతʹఆ͢Δํ๏
ݕग़ʢࣗ࡞Ҋʣ ࠷ॳʹࢼΈͨࣗ࡞ྫ τϥϯβΫγϣϯதʹݺͼग़͢ͱ raiseͯ͘͠ΕΔ
ʢࣗ࡞Ҋʣ w ಓʹ%#τϥϯβΫγϣϯͷ֎ʹҠ͢ w "DUJWF3FDPSE#BTFΛܧঝͯ͠ΔΫϥεͰ͋ΕBGUFS@DPNNJUϑο ΫΛ͏ τϥϯβΫγϣϯ͔Β͢Δํ๏
ࣗ࡞Ͱ͖ͦ͏͚ͩͲ ΑΓચ࿅͞ΕͨHFN͕͋Δ͜ͱʹؾͮ͘
ݕग़ʢHFNʣ τϥϯβΫγϣϯͷ෭࡞༻Λݕग़ ͯ͘͠ΕΔ "DUJWF+PC͚ͩͰͳ͘4JEFLJR 3FTRVFΛαϙʔτ )551ϦΫΤετͷࢹʹ4OJ ff FS Λ༻͠ɺ/FU)551Ҏ֎ͷϥΠϒ
ϥϦαϙʔτ *TPMBUPS IUUQTHJUIVCDPNQBMLBOJTPMBUPS
ݕग़ʢHFNʣ "DUJWF4VQQPSU/PUJ fi DBUJPOTVCTDSJCF ͰTRMBDUJWF@SFDPSEΠϕϯτΛ TVCTDSJCF͢ΔMJTUFOFSΛ࣮͠ɺHFNͷ ίʔυͰτϥϯβΫγϣϯཧΛͯ͠ ͍Δ VTF@USBOTBDUJPOBM@UFTUTαϙʔτͯ͠
͍Δ 💭JOTUSVNFOUBUJPOରԠ͍ͯ͠Ε"3Ҏ ֎Ͱ͑ΔΑ͏ʹ͍ͯ͠Δ *TPMBUPS IUUQTHJUIVCDPNQBMLBOJTPMBUPS
ʢHFNʣ BGUFS@DPNNJU BGUFS@SPMMCBDLΛίʔ υϕʔεͷͲ͜ʹͰॻ͚ΔΑ͏ʹ ͯ͘͠ΕΔ 💭ϏδωεϩδοΫΛूͨ͠·· τϥϯβΫγϣϯͰ͖Δͷ͕ͱ ͯྑ͍ "GUFS$PNNJU&WFSZXIFSF
IUUQTHJUIVCDPN&OWFLBGUFS@DPNNJU@FWFSZXIFSF
ʢHFNʣ "DUJWF3FDPSE$POOFDUJPO"EBQUFST%BUBCB TF4UBUFNFOUTBEE@USBOTBDUJPO@SFDPSEʹϞ σϧ෩ͷΦϒδΣΫτΛ͠ɺτϥϯβΫ γϣϯίϛοτޙͷίʔϧόοΫΛݺͤͯ ͍Δ 💭ͦΜͳ͜ͱͰ͖ΔΜͩ "GUFS$PNNJU&WFSZXIFSF
͜ΕΒΛΈ߹Θͤͯ ίʔυϕʔε্Ͱͯ͢ͷ෭࡞༻Λ %#τϥϯβΫγϣϯ͔Βྃ✅
·ͱΊ *TPMBUPS "GUFS$PNNJU&WFSZXIFSFศར 📡 *TPMBUPSFOWJSPONFOUUFTUͰಥͬࠐΜͰҰ$*ΒͤͯΈΔͱίʔυϕʔεͷ݈શ ੑ͕Θ͔ΔͷͰΦεεϝɻฐࣾͩͱՕॴ͔͠ͳ͘ɺΑ͘Ͱ͖ͯͯײಈͨ͠ 👐 طଘͷHFNΛ͏࣌ʮࣗ࡞͢ΔͳΒͲ͏͢Δ͔ʁʯΛߟ͑Δͱ໘ന͍ 👁
ͦͷ্ͰίʔυϦʔσΟϯά͢Δͱ৽ͨͳൃݟ͕ੜ·Εͯ͞Βʹ໘ന͍ 3BJMTͷJOTUSVNFOUBUJPODBMMCBDLػߏʹ͍ͭͯΔ͜ͱ͕Ͱ͖ͨ
4NBSU#BOL *OD 4PGUXBSF&OHJOFFS .BTBUP0ICB !PICBSZF 8IP*BN !PICBSZF