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
ぼくがかんがえたさいきょうの SoR/SoE あーきてくちゃ #kichijojipm
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Akira Suenami
May 17, 2019
Technology
6.6k
13
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ぼくがかんがえたさいきょうの SoR/SoE あーきてくちゃ #kichijojipm
Akira Suenami
May 17, 2019
More Decks by Akira Suenami
See All by Akira Suenami
可変性を制する設計: 構造と振る舞いから考える概念モデリングとその実装
a_suenami
9
2.6k
オブジェクト指向考古学 〜人類は再びDCIの夢を見るか〜
a_suenami
5
3.5k
トランザクションスクリプトはどこから来たのか トランザクションスクリプトは何者か トランザクションスクリプトはどこへ行くのか #sekkeinight
a_suenami
14
7k
値と属性の話
a_suenami
0
320
ドメインモデラーにとって受託開発であることは制約なのか?
a_suenami
1
1.6k
異なるモデリングパラダイムから見るモデリングの勘所 #ooc_2020
a_suenami
2
3.4k
マルチパラダイムモデリング 〜異なるモデリングパラダイムから見るモデリングの勘所〜 #PHPerKaigi
a_suenami
0
4k
“ユーザーファースト”の功罪 〜分析と実験によるアーキテクチャ設計〜 #bpstudy
a_suenami
4
1.5k
ドメインモデルのつくり方 #5000dai
a_suenami
16
5k
Other Decks in Technology
See All in Technology
2026 TECHFRESH 畢業分享會 - AI-Native 重塑軟體工程與虛擬講師
line_developers_tw
PRO
0
730
作って終わりにしない タイミーのセマンティックレイヤー育成の現在地
chanyou0311
3
2.1k
LLMにもCAP定理があるという話
harukasakihara
0
280
ルールやカスタム機能、どう活かす?ハンズオンで体感するIBM Bobの出力コントロール
muehara
1
130
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
RAG を使わないという選択肢
tatsutaka
1
160
自律型AIエージェントは何を破壊するのか
kojira
0
150
データサイエンスを価値につなげるプロジェクト設計 〜 DS一年目が現場で得た気づき 〜
ysd113
1
160
日本 Fintech 未来予測レポート 2027〜2028年(オリジナル版)
8maki
0
1.4k
爆速でマルチプロダクトを立ち上げる時 事業・CTO目線で大事にしたい事
miyatakoji
0
100
AIの性能が向上しても未解決な組織の重大問題は何か?/An Unsolved Organizational Problem in the Age of AI
moriyuya
3
610
AAIFに入ってみた ~内から見えるコミュニティ動向~
sato4
0
140
Featured
See All Featured
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
470
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.7k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
330
Designing Experiences People Love
moore
143
24k
Automating Front-end Workflow
addyosmani
1370
210k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
770
For a Future-Friendly Web
brad_frost
183
10k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
300
Transcript
΅͕͔͘Μ͕͍͖͑ͨ͞ΐ͏ͷ SoR/SoE͋ʔ͖ͯͪ͘Ό ٢ࣉpm#18 2019/05/17 ͑͢ͳΈ ͖͋Β Twitter: @a_suenami Github: a-suenami
ࣗݾհ • ฒ ߊʢ͑͢ͳΈ ͖͋Βʣ @a_suenami • ͖ͳͷ RDB ͱ͔ΦϒδΣΫτࢦͱ͔
TDD ͱ͔ɻ • ʮԿͬͯΔΜͰ͔͢ʁʯͬͯΑ͘ฉ͔Ε·͕͢ɺ։ൃͷϚωδϝ ϯτͬͯͨΓɺٕज़ސతͳ͜ͱͬͯͨΓɺࣗࣗͰRails ΞϓϦέʔγϣϯॻ͍ͨΓReactΞϓϦέʔγϣϯॻ͍ͨΓͯͯ͠ɺ ͏໘ͳͷͰΑ͘ʮແ৬Ͱ͢ʯͬͯݴͬͯ·͕͢ҰԠࣄͯ͠· ͢ɻ
ຊൃදʹ͍ͭͯ • ʮ৽͍࣌͠ͷελʔτͷɺॳΊͷҰาʯ͜ͱͱ͍͏͜ͱͰɺ࠷ۙ SoRʢSystem of RecordʣͱSoEʢSystem of Engagementʣʹ͍ͭ ͍ͯΖ͍Ζߟ͍͑ͯΔͷͰɺࣗࣗͷࢥߟཧͷͨΊʹ͜ͷ Ͱ͓ͯ͠ҙݟͱ͔Β͑Δͱخ͍͠Ͱ͢ͶͬͯओࢫͰ͢ɻ
• ઈࢍࢼߦࡨޡதͰ·ͩ۩ମతʹԿ͔Ռ͕ग़ͯΔ͍ͬͯ͏ײ͡Ͱ ·ͩͳ͍ͷͰɺ͍Ζ͍ΖϑΟʔυόοΫ͍͚ͨͩΔͱ͍Ͱ͢ɻ
SoR ͱ SoE
SoRͱSoE • SoR: System of Record • ͦͷ໊ͷ௨ΓɺʮهʯͷͨΊͷγεςϜɻ • ೖྗͷࣄલνΣοΫͷݎ࿚ੑɺσʔλ߹ੑͷ୲อͳͲ͕ٻΊΒ
ΕΔɻ • SoE: System of Engagement • ར༻ऀͱͷؔΛߏங͢ΔͨΊͷγεςϜɻ • ࠓͲ͖ͷݴ༿Λ͏ͱΑ͍ UX Λఏڙ͢ΔͨΊͷγεςϜɺͱݴ ͍͑ͯΑ͍ɻ
SoRͱSoE • τϥσΟγϣφϧͳιϑτΣΞ։ൃʹର͢ΔݟύλʔϯͳͲ ʢPoEAAͳͲʣ SoR ͷͨΊͷͷͰ͋Δέʔε͕ଟ͍ɻ • ٯʹ SoE ʹର͢ΔઃܭݱࡏਐߦܥͰ֤͕ࣾɾڞ༗͍ͯ͠Δͱ
ײ͍ͯͯ͡ɺͨͱ֤͑Ϋϥυϕϯμʔ͕ެ։͍ͯ͠ΔΫϥυ σβΠϯύλʔϯͳͲʢSoR ͚ͷͷ͋Δ͕ʣSoE Λࢧ͑Δ ͨΊͷͰ͋Δ͜ͱଟ͍ɻ • ͯ͢ͷγεςϜ͕໌֬ʹͲͪΒ͔ʹଐ͢ΔΘ͚Ͱͳ͘ɺSoR త ଆ໘ͱ SoE తଆ໘Λ͕࣋ͭɺ͔ͳΓڧΊʹͲͪΒ͔ͷੑ࣭Λ࣋ͭ͜ ͱগͳ͘ͳ͘ɺͦ͏͍ͬͨ߹ʹઃܭஅΛؒҧ͑Δͱͦͷޙͷ ϝϯςφϯεʹଟେͳӨڹΛ༩͑ΔͷͰҙ͕ඞཁɻ
SoR ʹ͍ͭͯ • SoR ʹ͍ͭͯͱΓ͋͑ͣ͜ͷ͋ͨΓಡΜͰ͓͚͍͍Μ͡Όͳ͍ Ͱ͔͢Ͷɻʢࡶʣ
υϝΠϯͱʁ • ΤϦοΫɾΤϰΝϯεͷ DDD ຊ ʹॻ͔Ε͍ͯΔઃܭύλʔϯ SoR తଆ໘͕ڧ͗͢Δͱײ͡Δɻ • ͰɺI/O
ʹ I/O ͷɺϓϨθϯ ςʔγϣϯʹϓϨθϯςʔγϣ ϯͷυϝΠϯ͕͋ΔͷͰͳ͍͔ʁ • γεςϜͷత͕ҧ͏ͷͰ͋Εɺ ͦΕͧΕͷυϝΠϯʹۦಈ͞ΕΔ ΄͏͕͍͍ͣɻ
SoR / SoE ରൺ SoR SoE جຊతͳઃܭ؍ σʔλ߹ੑ ॊೈੑɺੑೳ σʔλετΞ
τϥϯβΫγϣφϧͳDB ଟ͘ͷ߹ɺRDB εέʔϥϏϦςΟ͕͋Δߴͳσʔ λετΞ υΩϡϝϯτࢦDBɺKVSɺશจݕ ࡧΠϯσοΫεͳͲ ϦϦʔεαΠΫϧ SoEͱൺΔͱ૬ରతʹ͍ʢॾઆ͋ Δ͔ʣ ߴͳϦϦʔεαΠΫϧ͕ٻΊΒΕΔ ࣭ධՁ τϥσΟγϣφϧͳιϑτΣΞςε ςΟϯάख๏Λద༻͍͢͠ τϥσΟγϣφϧͳख๏ʹՃ͑ɺϢ ʔβʔςετɺϢʔβʔΠϯλϏϡ ʔɺA/BςετͳͲ ΧφϦΞϦϦʔε࣮τϥϑΟοΫ Λར༻ͨ͠ςετͱଊ͑Δ͜ͱ͕Ͱ ͖Δ σʔλ߹ੑ τϥϯβΫγϣϯ߹ੑ͕ඞਢ ݁Ռ߹ੑͰΑ͍ཁ݅ଟ͍ ཁ͢Δʹʁ ݎ࿚ͳMutation ॊೈͳQuery ઃܭΛۦಈ͢Δʢ͍͢͠ʣͷ υϝΠϯϞσϧɺ֓೦σʔλϞσϧ UIʢϏδϡΞϧσβΠϯɺϢʔβΠϯ λϥΫγϣϯʣɺΩϟογϡ
CQRSͱͷؔ
۩ମతΞʔΩςΫνϟ
۩ମతΞʔΩςΫνϟ • SoR • ҰൠతͳΞϓϦέʔγϣϯ + RDBͷߏ • ΤϦοΫɾΤϰΝϯεͷ DDD
ຊͷઃܭ͕ग़ͯ͘Δ͜ͱ͕ଟ͍ɻ • SoE • SPA • BFF + Ωϟογϡ༻σʔλετΞʢϚςϦΞϥΠζυɾϏϡʔ, Redis, DynamoDB, ElasticSearchʣ + CDN • ʮCDNʹΩϟογϡͤ͞Δ୯ҐͰʯΤϯυϙΠϯτΛઃܭ͢Δɻ
͍Ζ͍Ζ͍ͨ͜͠ͱ͋ΔΜͰ͕͢ ࠓ 10 ͔͠ͳ͍ͷͰ
߹ੑͷ
άϩʔόϧͳ߹ੑͱϢʔβϩʔΧϧͳ߹ੑ • SoR తੈք؍ͰγεςϜશମɺ͋Δ͍࿈ܞγεςϜؚΊͨશ ੈքʢେ͛͞ʣͰෆ߹͕ͳ͍͜ͱ͕ٻΊΒΕΔɻ • ҰํɺSoE తੈք؍ͰͦΕΛར༻͢Δར༻ऀҰਓͻͱΓ͕ࣗࣗ ͷੈքΛ͓࣋ͬͯΓɺͦΕ͕ͦͷਓʹͱͬͯੈքͷͯ͢Ͱ͋ Δɻ
ϢʔβϩʔΧϧͳ߹ੑͷྫ • ͕ࣗݟ͍ͯΔੈքͰʮ͍͍ͶʂʯΛԡ͢ͱɺ͍͍ͶࡁΈʹঢ়ଶ ͕มԽ͢Δɻ • Ͱɺຊʹ͍͍Ͷ͕ΧϯτΞοϓ͞Εͨͷʁ • ͍͔ͭ૿͑Δ͕ͣͩਖ਼֬ʹ͍ͭ૿͑Δ͔ຊਓʹΘ͔Βͳ͍ ͠ɺར༻ऀʹͱͬͯڵຯͳ͍ɻ
άϩʔόϧͳ߹ੑͱϢʔβϩʔΧϧͳ߹ੑ • SoR ͷઃܭੈքશମʢେ͛͞ʣΛཏతʹ؍͢Δඞཁ͕͋Γɺ SoE ͷઃܭར༻ऀҰਓͻͱΓΛҙਂ͘؍͢Δඞཁ͕͋Δɻ • SoE ʹ͓͚Δ෭࡞༻Λ͏ϦΫΤετจࣈ௨ΓʮϦΫΤετʯͰ͋ Γɺඞͣ͠ಉظతɾଈ࣌తʹྃ͢ΔͷͱݶΒͳ͍ɺͭ·Γ݁
Ռ߹ੑ͔͠୲อ͞Εͳ͍ͱ͍͏ҙࣝͰઃܭΛ৺͕͚ΔͱΑ͍ɻ • SoR SoE ͔ΒͷϦΫΤετΛड͚ͱͬͨͱ͍͏ࣄ࣮ͷΈΛฦ͠ɺ SoE ͦΕΛड͚ͱͬͨޙʹʮͦͷར༻ऀͷੈքʹ͓͚Δঢ়ଶʯΛม ߋ͢Δɻ
ͦ͏ݴͬͯ άϩʔόϧͳ߹ੑ͕ ٻΊΒΕΔ͜ͱ͋ΔͰ͠ΐ͏ʁ
ͪΖΜ͋Γ·͢ɻ
SoE Ͱάϩʔόϧͳ߹ੑ͕ඞཁͳྫ • ࡏݿ͕ͳ͍ͷʹߪೖʢͷडʣΛͯ͠͠·ͬͨɻ • ΫϨδοτΧʔυͷݶֹΛ͍͑ͯΔͷʹߪೖʢ͈́ • ಉ͡ϝʔϧΞυϨεͷਓ͕͢Ͱʹొ͍ͯ͠Δͷʹձһొʢͷडʣ Λͯ͠͠·ͬͨɻ ্هͷΑ͏ͳෆ߹ͳϦΫΤετ
System of “Engagement” ͱ࣭͕͍͍ͯ͠ͱݴ͑ͳ͍ɻ Ͱ͖Δ͚ͩૣ͍λΠϛϯάͰͦͷϦΫΤετΛड͚͚Δ͜ͱͰ ͖ͳ͍͜ͱΛར༻ऀʹڭ͑ͯ͋͛Δ͖Ͱ͋Δɻ
SoE Ͱͷάϩʔόϧͳ߹ੑͷར༻ • ϦΫΤετՄೳ͔Ͳ͏͔ΛԠ͑ΔʢՄೳͳ߹ɺϩοΫΛͱΔɺ͘͠༧͢ΔʣΤϯυϙΠϯτΛ SoR ʹ࣮͠ɺ͜ΕΒඇಉظͳ݁Ռ߹ੑͰͳ͘ಉظతʹ SoE ʹ݁ՌΛฦ͢Α͏ʹ͢Δɻ • ܾࡁγεςϜͷ༩৴ͱܾࡁ֬ఆͷؔʹ͍ۙɻ
• ϦΫΤετՄ൱ͷ֬ೝͱ࣮ࡍͷ࣮ߦΛ͚Δ͜ͱͰɺੑೳোੑͷ໘Ͱ࣭ͷߴ͍γεςϜΛߏ ங͢Δ͜ͱ͕Ͱ͖Δɻ • BFF ͕͋Δ߹ɺͦͷޙΖʹ͋Δ SoR ʹର͢ΔϦόʔεϓϩΩγͱͯ͠ͷΈৼΔ͏͜ͱʹͳΔɻ
·ͱΊ • γεςϜͷઃܭΛߟ͑Δͱ͖ɺͦΕ͕ SoR తଆ໘͕ڧ͍γεςϜͳ ͷ͔ɺSoE తଆ໘͕ڧ͍γεςϜͳͷ͔Λҙࣝ͢Δͱ͍͍͜ͱ͕͋ Δ͔͠Ε·ͤΜɻ • SoE
తͳઃܭϊϋ·ͩ·ͩੈͷதʹগͳ͍ͱࢥ͍ͬͯΔͷ ͰΈͳ͞ΜͲΜͲΜൃ৴͖ͯ͠·͠ΐ͏ɻ • SoR తͳઃܭΫϥυϕϯμʔʑʹΑͬͯมԽ͍͖͍ͯͯ͠Δ ͜ͱ͕͋Δͱࢥ͏ͷͰɺͲΜͲΜൃ৴ʢ͈́ • άϩʔόϧͳ߹ੑͱϢʔβϩʔΧϧͳ߹ੑҧ͏Αʂ
ͱ͍͏Θ͚ͰɺҰ۟ʢҰटʣ ઃܭΛ ۦಈ͢Δͷ͕ Կͳͷ͔ ݟۃΊΔ͜ͱͦ͜ ઃܭͳΓ͚Γ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ