Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ぼくがかんがえたさいきょうの SoR/SoE あーきてくちゃ #kichijojipm
Search
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.7k
オブジェクト指向考古学 〜人類は再びDCIの夢を見るか〜
a_suenami
5
3.7k
トランザクションスクリプトはどこから来たのか トランザクションスクリプトは何者か トランザクションスクリプトはどこへ行くのか #sekkeinight
a_suenami
14
7.2k
値と属性の話
a_suenami
0
350
ドメインモデラーにとって受託開発であることは制約なのか?
a_suenami
1
1.6k
異なるモデリングパラダイムから見るモデリングの勘所 #ooc_2020
a_suenami
2
3.5k
マルチパラダイムモデリング 〜異なるモデリングパラダイムから見るモデリングの勘所〜 #PHPerKaigi
a_suenami
0
4.1k
“ユーザーファースト”の功罪 〜分析と実験によるアーキテクチャ設計〜 #bpstudy
a_suenami
4
1.6k
ドメインモデルのつくり方 #5000dai
a_suenami
16
5.1k
Other Decks in Technology
See All in Technology
AI時代の開発はウォーターフォールに回帰する? / development-with-ai-back-to-wf
okamototakuyasr2
0
170
なぜ東京にいる私が、新潟の技術コミュニティを運営するのか by 八雲慎之助
yakumo
0
210
AI Search (Foundry IQ) におけるRAGデータの準備と配置
ryomaru0825
1
130
WireGuard for Apache NuttX - Bringing Secure Remote Access to embedded Devices -
aki310ooooo
0
120
Vue で書く 空間コンピューティング、TresJS と WebXR を使ったXR デバイスのフロントエンド開発
hiranuma
0
150
AIコーディングエージェント開発_全体像
happysamurai294
0
150
【Oracle AI SPOTLIGHT ウェビナー】事例から見る!なぜOCIが選ばれたのか ― AI時代のクラウド戦略を紐解く ―
oracle4engineer
PRO
1
150
cdk deployとcdkd deploy、実際にデプロイして5倍速近くの差を実測した
yama3133
1
160
AI AgentによるEmbedded SREの取り組み
tgidgd
1
320
E2Eってつらくないですか?E2Eの管理コストを下げる手段とその実践
akaboshinit
6
2.9k
バックオフィスに染み出すTypeScript ── clasp で安全に仕組みを作る
nealle
1
160
AX時代の自治体支援リソース再配分と役割分担の再構成:戦略とロードマップ(概要)
sishi2026
0
170
Featured
See All Featured
Six Lessons from altMBA
skipperchong
29
4.6k
30 Presentation Tips
portentint
PRO
1
450
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
59k
Facilitating Awesome Meetings
lara
57
7.2k
A Soul's Torment
seathinner
8
3.9k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
740
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1.1k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
530
Scaling GitHub
holman
464
140k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
880
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Designing for humans not robots
tammielis
254
26k
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 తͳઃܭΫϥυϕϯμʔʑʹΑͬͯมԽ͍͖͍ͯͯ͠Δ ͜ͱ͕͋Δͱࢥ͏ͷͰɺͲΜͲΜൃ৴ʢ͈́ • άϩʔόϧͳ߹ੑͱϢʔβϩʔΧϧͳ߹ੑҧ͏Αʂ
ͱ͍͏Θ͚ͰɺҰ۟ʢҰटʣ ઃܭΛ ۦಈ͢Δͷ͕ Կͳͷ͔ ݟۃΊΔ͜ͱͦ͜ ઃܭͳΓ͚Γ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ