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
入門 境界づけられたコンテキスト
Search
yuuki takezawa
April 11, 2022
Technology
6
3.8k
入門 境界づけられたコンテキスト
phperkaigi 2022の資料です。
理解しながら共通化するところはするなどいいバランスを心がけましょう。
音声が悪いですが資料だけでなく、トーク内容も併せて・・!
yuuki takezawa
April 11, 2022
Tweet
Share
More Decks by yuuki takezawa
See All by yuuki takezawa
オブジェクトのおしゃべり大失敗 メッセージングアンチパターン集 / messaging anti-pattern collection
ytake
2
760
DRE/SREのプラクティス融合によるクラウドネイティブなデータ基盤作り / dre_sre
ytake
0
540
技術的負債と向き合う取り組みでよかったもの / positive_efforts_to_tackle_technical_debt
ytake
10
3.5k
アプリケーションエンジニアから強いデータエンジニアへの歩き方 / How to transition and become a Data Engineer from an Application Engineer
ytake
1
320
時間軸とドメインイベントとデータ処理
ytake
1
2k
事業のスケールアウトを支える PHPで作る分散アーキテクチャ
ytake
4
4.4k
Hack HTTP Request and Response Interfaces
ytake
0
6.6k
Hackで作る堅実な アプリケーションアーキテクチャ / Hack-application-architecture
ytake
3
7.6k
PHPとApache Sparkで始めるデータ解析処理 / php-with-apache-spark
ytake
2
3.7k
Other Decks in Technology
See All in Technology
障害対応をちょっとずつよくしていくための 演習の作りかた
heleeen
1
1.7k
開発パフォーマンスを最大化するための開発体制
ham0215
7
1.1k
The AI Revolution Will Not Be Monopolized: Behind the scenes
inesmontani
PRO
1
160
TechFeed Experts Night#27 〜 フロントエンドフレームワーク最前線 (Svelte)
baseballyama
2
590
VSCodeの拡張機能を作っている話
ebarakazuhiro
1
800
Babylon.js JAPAN活動紹介 (2024/4)
limes2018
1
120
Rustで「プリズモイダル法」を利用して「土量計算」をガチでやる
nokonoko1203
1
300
M5stackで使用できるpHセンサの開発
shinrinakamura
0
170
IPUT App Dev. Co. -Overview 2024/4
iputapp
0
120
いいたいことちゃんという
tkengo
0
230
M5と自作基板をくっつけてみた〜M5 Japan Tour 2024 Spring 福冈 (Fukuoka|福岡)〜
keropiyo
0
130
IaCジェネレーターとBedrockで詳細設計書を生成してみた
tsukasa_ishimaru
4
890
Featured
See All Featured
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
104
6.6k
Learning to Love Humans: Emotional Interface Design
aarron
267
39k
The MySQL Ecosystem @ GitHub 2015
samlambert
244
12k
The Mythical Team-Month
searls
216
42k
Fireside Chat
paigeccino
22
2.6k
Build The Right Thing And Hit Your Dates
maggiecrowley
25
2k
GraphQLの誤解/rethinking-graphql
sonatard
55
9.3k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
8
1.3k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
The Power of CSS Pseudo Elements
geoffreycrofte
62
5k
Being A Developer After 40
akosma
66
580k
Practical Orchestrator
shlominoach
183
9.7k
Transcript
1)1FS,BJHJ:VVLJ5BLF[BXB ೖڥք͚ͮΒΕͨίϯςΩετ
1SP fi MF • ᖒ༗وBLBZUBLF • ελʔϑΣεςΟόϧגࣜձࣾଞࣾ • ετϦʔϜॲཧɺσʔλج൫తͳ͜ͱɺ1E.ͳͲ
• UXJUUFSIUUQTUXJUUFSDPNFY@UBLF[BXB • GBDFCPPLIUUQTXXXGBDFCPPLDPNZVVLJUBLF[BXB • HJUIVCIUUQTHJUIVCDPNZUBLF
"HFOEB • ڥք͚ͮΒΕͨίϯςΩετΛແࢹ͢Δ • ڥք͚ͮΒΕͨίϯςΩετΛཧղ͢Δ
ίϯςΩετΛཧղ͢Δ͜ͱ͕ γεςϜ։ൃ͋ΒΏΔ׆ಈʹ͓͍ͯͷϙΠϯτ
ΒΉ
͡·Γ • ͜͜Ͱ͍͏ͱ Ұൠతͳ৯ྉΛࢦ͠·͠ΐ͏ • ͜ͷاۀ͕ܝ͛Δϛογϣϯ ͨ͘͞Μͷ৯ྉʹग़ձ͏ॴΛఏڙ͠ɺ
৯จԽΛ๛͔ʹʂ
͡·Γ • ࠷ॳʹ৯ྉͷϨϏϡʔαΠτ εϞʔϧελʔτͰ·͔ͣ͜͜Β • ࠷ॳʹ͋Γͱ͋ΒΏΔ৯ྉͷ ϚελʔσʔλΛ࣋ͭͷ͍͠
• ϨϏϡʔΛଅਐ͢ΔͨΊʹ ϨϏϡΞʔʹ৯ྉΛొͰ͖ΔΑ͏ʹ͠Α͏ʂ
࠷ॳͷ৯ྉ • ৯ྉ໊ • ϝʔΧʔ໊ • ࢢൢചՁ֨ʢNJONBYͷΑ͏ͳൣғ͔͠Εͳ͍ʣ • δϟϯϧ
• ϨϏϡʔຊจ • ৯ྉొϢʔβʔ
࠷ॳͷ৯ྉ • ݕࡧ͢ΔϢʔβʔͷ͜ͱΛߟ͑ͯ δϟϯϧࢢՁ֨ͳͲͲ͏ࣺͯͯ͠ΒΕͳ͍ • ੈؒҰൠͷ৯ྉʹର͢Δೝࣝͱେ͖ͣ͘Εͳ͍ͷͰ ͜ΕͰྑ͍Ͱ͠ΐ͏ʂ
ӡ༻Λղܾ͢ΔͨΊͷػೳՃ
ϦϦʔε͔ͯ͠Βগ͠ͷ͜ͱ • ΓϚελʔͷσʔλ͕ͳ͍ͱɺ ΧλΧφͻΒ͕ͳࣈɺ֯શ֯ͳͲඍົͳදه༳ΕͰ ಉ͚ͩ͡Ͳҧ͏ͷʹͳͬͯ͠·͏ • ͜ΕαʔϏεར༻ऀେมΘ͔ΓͮΒ͍ʂ
ϦϦʔε͔ͯ͠Βগ͠ͷ͜ͱ • ໊લొ༰ͷ໊دͤΛ͠Α͏ʂʢਖ਼نԽʣ • ໊دͤࡁΈ͔Ͳ͏͔Λݟͯɺӡ༻ۀʹͯ ٵऩ͢Δ͜ͱ͕Ճʢ໊ͷมߋΛӡ༻ͱͯ͠ߦ͏ʣ
໊د͔ͤΒݟ͑ͨ৯ྉͷଐੑ • ৯ྉ໊ • ϝʔΧʔ໊ • ೖྗ࣌ͷ৯ྉ໊ • ໊د࣮ͤࢪ
໊دͤͷೝࣝ ΤϯδχΞ • ৯ྉ໊ • ϝʔΧʔ໊ • ೖྗ࣌ͷ৯ྉ •
໊د࣮ͤࢪͱϑϥά • ໊دͤ࣌ʹݩͷ৯ྉ໊*%Λ࣋ͨͤΔ • ৽͍͠৯ྉ໊*%Λ༩
໊دͤͷೝࣝ ΤϯδχΞ • ಉ͡৯ྉͩ͠ɺ ίʔυڞ௨Խ͓ͤͯ͜͞͏ • ͍ͭͰʹσʔλϕʔεΧϥϜՃ͘Β͍Ͱ͍͍͔ͳʔ
ΑΓ͔ͨ͠ͳσʔλΛఏڙ͢ΔͨΊͷػೳՃ
લճͷϦϦʔε͔ͯ͠Β·ͨগ͠ޙ • ৯ྉσʔλͷ໊دͤۀΛ ొޙʹ͢ΔͷͰΓେมɾɾʂ • ొ࣌ʹਖ਼͍͠ͷͰ͋Δ͔Ͳ͏͔Λ֬ೝ͢ΔͨΊʹ ొਃϑϩʔΛՃ͠·͠ΐ͏ʂ
৯ྉొਃͷೝࣝ • ৯ྉ໊ • ϝʔΧʔ໊ • ࢢൢചՁ֨ʢNJONBYͷΑ͏ͳൣғ͔͠Εͳ͍ʣ • δϟϯϧ
• ϨϏϡʔ • ৯ྉొϢʔβʔ • ೝՄ
৯ྉొਃͷೝࣝ ΤϯδχΞ • ಉ͡৯ྉͩ͠ɺ ίʔυڞ௨Խ͓ͤͯ͜͞͏ • ೝՄ͍ͬͯ͏ͷ͕͍͖͚ͭͯͨͲɺ
৯ྉͷεςʔλεͩΑͶɺΧϥϜՃͰ͍͍͔ͳʔ
ϨϏϡʔଅਐͷͨΊͷػೳՃ
લճͷϦϦʔε͔ͯ͠Β·ͨগ͠ޙ • ϨϏϡʔΛߘͯ͘͠ΕΔํͷ Ϟνϕʔγϣϯ͕Լ͕Βͳ͍Α͏ʹ ࢀߟʹͳͬͨͳͲͷϑΟʔυόοΫΛ͚ͭΑ͏ʂ • ϨϏϡʔ͔Βʹ৯ྉʹΛ͚ͭͨΓɺ
ฏۉΛ৯ྉʹ༩ͤͯ͞ ݕࡧͷฒͼॱͷҰͭʹ͓͏ʂ
ϨϏϡʔଅਐࢪࡦͷೝࣝ • ৯ྉ໊ • ϝʔΧʔ໊ • δϟϯϧ • ϨϏϡʔจ
• ϨϏϡϫʔʢߘऀʣ • • ฏۉ • ฒͼॱ
ϨϏϡʔଅਐࢪࡦͷೝࣝ ΤϯδχΞ • ಉ͡৯ྉͩ͠ɺ ίʔυಉ༷ʹڞ௨Խ͓ͤͯ͜͞͏ • ϨϏϡʔͱ͔ͷ࣋ͨͤํ͕ͪΐͬͱมΘ͖ͬͯͨͳ͊
ςʔϒϧΛͦΖͦΖׂ͢Δ͔ʔ ͜ͷฏۉݕࡧʹ͔͠Θͳ͍͚Ͳɺ͜͜ʹͳ͍ͱ ද͕ࣔେมͩ͠ɺݕࡧ࣌ͷ0SEFS͜͜ʹͳ͍ͱҰճͰऔΕͳ͍ ͳ͊ɾɾ
Ϗδωε֦େͷͨΊͷػೳՃ
લճͷϦϦʔε͔ͯ͠Β·ͨ·ͨগ͠ޙ • ϨϏϡʔ͔Β࢝·ͬͨαʔϏεେ͖͘ͳΓɺ ͍ͭʹ௨ൢΛελʔτ • ࡏݿঢ়ଶΛөͤ͞ͳ͕Βɺ ϩάΠϯϢʔβʔͷॅॴͷૹ࣌༧ΛೖΕΑ͏ʂ
௨ൢ͔ΒΈͨ৯ྉͷೝࣝ • ৯ྉ໊ • ϝʔΧʔ໊ • ৯ྉ • δϟϯϧ
• ௨৴ൢചՁ֨ • ϨϏϡʔจ • ϨϏϡϫʔʢߘऀʣ • • ฏۉ • ฒͼॱ • ૹઌ • ࡏݿཧ • 4,6 • ൢചεςʔλε༗ແ • Ϩίʔυঢ়ଶ
ٸʹΈ͕ • ͜ͷ৯ྉڊେ͗͢Δ͚Ͳɺ ڞ௨͍ͯ͠Δͱ͜ΖҎ֎ׂͰ͖ͳ͍ʁ • Ͱ͋ͬͪͱͬͪ͜Ͱ͍ͬͯͯͰ͢Ͷ • ͬͪ͜Λม͑ΔͳΒɺ༷ม͑ͳ͍ͱ͍͚ͳ͍Ͱ͢Ͷ
͏ʔΜɹෳࡶͩɾɾʂ ʢ͜ΕҎ্͍͠ͷͰʣͰ͖·ͤΜʂ
৯ྉͱ͍͏໊લ͚ͩͰ શͯΛͭͳ͛Δͱɾɾɾʁ
class Product { public function __construct( private string $name,
private string $maker, private ?DateTime $created = null, private ?User $user = null, private ?string $marketPrice = null, private ?string $originalName = null, private ?DateTime $nameIdentificationDate = null, private ?string $genre = null, private ?string $reviewBody = null, private ?User $reviewUser = null, private ?int $score = null, private ?float $avg = null, private ?int $orderNumber = null, private ?int $salePrice = null, private ?string $deliveryArea = null, private ?int $stockKeepingUnit = null, private ?int $saleStatus = null, private ?int $enabled = null ) {} }
ʢͯ͢Λแͨ͠ʣ৯ྉΛදݱ͢ΔͨΊʹ OVMMBCMFͰදݱʂ
ڥք͚ͮΒΕͨίϯςΩετΛཧղ͢Δ
৯ྉͱʢΤϯδχΞʣ • ৯ྉQSPEVDUTͱͯ͠උ͍ͯͨ͠ • ৯ྉʹೖྗݩͷ໊ͱਃঢ়ଶ͕͋Γɺ ಉ͡Α͏ͳσʔλ͕ͲΜͲΜ࡞ΒΕ͍ͯ͘ ໊دͤ͞Εͨͷਃ͞Ε͍ͯͳ͍͚ͲೝՄঢ়ଶͰɺ
໊دͤϑϥά͕͋Δ • ϝʔΧʔ߹Ͱ௨ൢͰചΕͳ͍͜ͱ͋Δ͕ɺ ϨϏϡʔ͕͍͍ͭͯΔͷදࣔ͠ͳ͚ΕͳΒͳ͍ • Ϩίʔυ͕ແޮͳͱ͖ͳʹΑΓ༏ઌͤ͞ͳ͚ΕͳΒͳ͍ ʢཧআʣ
৯ྉͱʢΤϯδχΞʣ • ৯ྉૹՄೳͳͷͰ͋Δ͔Ͳ͏͔ͷఆ͕͋Γɺ Ӿཡऀͷॅॴ͔ΒૹΛܭࢉ͢Δඞཁ͕͋Δ • ݕࡧϖʔδͰฒͼॱ͕͋Γɺ
ଞͷϖʔδͰ৽͍͠ॱʹฒͤͳ͚ΕͳΒͳ͍ • ৯ྉࢢൢചՁ֨ͱɺฐࣾͰͷ௨৴ൢചՁ͕֨͋Γɺ ௨৴ൢച࣌ʹ4,6Λߟ͑ͳ͚ΕͳΒͳ͍
ΒΈ͗ͨ͢৯ྉͱ͍͏ଘࡏ • ৯ྉͱ͍͏ྖҬΛڞ௨Խ͓͚ͤͯ͞ શ͕ͯ͏·͍ͣͩͬͨ͘͘ • ཁΛΞϓϦέʔγϣϯͷ༷ͱͯ͠औΓΜͩ ͜Ε༷͕ෳࡶͳ͍ͤͩʂ
ίϯςΩετΛҙࣝ͢Δ
ίϯςΩετͱ • ར༻ऀͷҙཱࣝʹΑͬͯ ࣄഎܠঢ়گΛࢦ͢ͷ • ৗੜ׆ͷ͋ͪ͜ʹͪଟ͋͘ΔͷͰɺ ೝࣝͷᴥᴪͷ΄ͱΜͲ͜ͷίϯςΩετΛཧղͤͣʹ
ࣗͷཱͰͷࢥߟͳͲͱҧ͏··ਐΉ͜ͱͰى͖Δ
ΤϯδχΞʹ৯ྉʹର͢Δ ߟ͑ํ͕ܾ·ͬͯ͠·͍ͬͯͨ
σʔλϕʔε߹ϥΠϒϥϦ߹ͳͲ͕ ؚ·Ε͍ͯͨ ΤϯδχΞࢹͰͷίϯςΩετͱͯ͠ද໘Խ
ίϯςΩετΛཧղ͢ΔϝϦοτ • ࣄͷίϯςΩετΛཧղͯ͠ɺཧ͢Δ͜ͱͰ ཱͳͲ͕ҧ͏߹Ͱ ೝࣝϨϕϧΛଗ͑Δ͜ͱ͕Ͱ͖Δ • ೝࣝͷᴥᴪͷ΄ͱΜͲ͕͜ͷίϯςΩετ͔Β͘Δͷ
ίϛϡχέʔγϣϯͷվળͱཧղͷΞοϓ • ͜ͷίϯςΩετΛ͏·͘දݱ͢Δ͜ͱͰϦϑΝΫλϦϯάͪΖΜɺ ΞϓϦέʔγϣϯͱͷ͖߹͍ํɺෳࡶ͞ͷճආʹܨ͕Δ
Ͳ͏͢ΕΑ͔ͬͨͷ͔
ίϯςΩετ͕࡞༻͢ΔൣғʢྖҬʣΛ ݟ͚ͭग़͠ɺڥքઢΛݟ͚ͭΔ
໊دͤͷέʔε • ৯ྉͱϨϏϡʔؔΛ࣋ͭ • ৯ྉͱ໊دͤؔΛ࣋ͭ • ϨϏϡʔͱ໊دͤ৯ྉΛڬΜͰؔΛ͔࣋ͭ͠Εͳ͍
໊دͤͷέʔε • ϨϏϡʔͷཱ͔ΒݟΔ৯ྉͱ ໊د͔ͤΒݟΔ৯ྉಉ͔͡Ͳ͏͔ • ϨϏϡʔ͔ΒݟΔ৯ྉͷ໊د࣮ͤߦͱ • ೖྗݩͷ৯ྉ໊ϨϏϡΞʔɺӾཡऀ͕ೝࣝ͢Δͷ
• ໊د͔ͤΒΈΔϨϏϡΞʔϨϏϡʔͱ
໊دͤͷέʔε • ϨϏϡΞʔ͔ΒΈͨ৯ྉͷೝࣝͱ ӡ༻্ͷ໊دͤʹؔ͢Δ৯ྉ͕ࠩ͋Δ • ͭ·Γ໊લ͕ಉ͡Ͱ ೝࣝϨϕϧɾҙຯ߹͍͕ඍົʹҟͳΔͱ͍͏͜ͱ
ొਃͷέʔε • ໊د͔ͤΒΈΔ৯ྉɺϨϏϡΞʔ͔ΒݟΔ৯ྉɺ ਃϑϩʔ͔ΒݟΔ৯ྉಉ͔͡Ͳ͏͔ • ਃϑϩʔͷ͏ͪɺڐՄ͞Εͨͷ͚͕ͩ ॳΊͯϨϏϡʔରͷ৯ྉͱͳΔ
• ϨϏϡʔ͔Βݟ͑Δ৯ྉͱਃڐՄ͞Εͨ৯ྉಉ͡ͷ ਃ͕ڐՄ͞ΕΔ·Ͱશ͘ҟͳΔ৯ྉ
ొਃͷέʔε • ਃڐՄ͞ΕΔ·ͰϨϏϡʔແ͍ ৯ྉͱೝࣝ͞Εͳ͍ͨΊɺ σʔλߏతʹ৯ྉ*%ΛৼΔ͜ͱ΄ͱΜͲͳ͍ • ͨͩ͠ɺσʔλੳྖҬͰ͕มΘͬͯ͘Δέʔε
ొਃͨ͠৯ྉͷ͏ͪɺͲΕ͚ͩڐՄ͞Ε͔ͨɺͳͲ
ϨϏϡΞʔ
໊دͤ
ΤϯδχΞ
৯ྉͱ͍͏໊લ͕ಉ͚ͩ͡Ͱ ֤ྖҬͰͷೝ͕ࣝҟͳ͍ͬͯͨ
͜ͷίϯςΩετͷڥքઢ͕ ڥք͚ͮΒΕͨίϯςΩετ
ڥքઢΛݟ͚ͭΔ࣌ͷϙΠϯτ
ίϯςΩετΛݟ͚ͭग़͢ϙΠϯτ • ͷલʹ͋ΔจষԽ͞Εͨࣄɺ͍ۙ͠ձɺ ༷͔Βຊʹ࣮ݱ͍ͨ͜͠ͱΘ͔Βͳ͍ • ͜ΕΒΛݟ͚ͭΔίϛϡχέʔγϣϯɺ ࣄΛଟ֯తʹΈΔࢥߟํ๏நͷఐࢠΛ͏·͘औΓೖΕ
ϝλใΛݟൈ͘͜ͱ
ίϯςΩετΛݟ͚ͭग़͢ϙΠϯτ • աڈͷܦݧͳͲ͔Β͘Δ ʮ͋͋ͳͬͨΒ͜͏ͳΔʯͱ͍ͬͨʮߦಈͷΠϝʔδʯΛ த৺ͱ͢ΔͷͰͳ͘ɺ ཱ͔ΒͷഎܠɺจষձҎ֎ͷཪʹજΉͷΛΔ
• ܾΊ͚ͭࢥ͍ࠐΈͰͳ͘ རؔऀΛΓɺใΛҾ͖ग़ͯ͠ຊ࣭తͳղΛΔ
ίϯςΩετݟ͚ͭग़͢ϙΠϯτ • σʔλϕʔεϥΠϒϥϦͷ͜ͱҰߟ͑ͳ͍ • ࣮߹Ͱߟ͑ͳ͍͜ͱ • ͜ΕΒΤϯδχΞͷཱ͔Βͷࣄͷ͖߹͍ํʹ ڧ͘ґଘͯ͠͠·͏ͨΊɺ
ձͷத߹ͬͯɺදݱטΈ߹Θͳ͍ঢ়ଶʹ
ίϯςΩετݟ͚ͭͩͨ͠Β • ಉ໊͡લͰ͋ͬͯؔ࿈ੑ͕͋Δ͔͠Εͳ͍ɺ ͙Β͍Ͱߟ͑Δ • ڞ௨ͯ͠ߟ͑Δͷͨ͘͞ΜͷॏͳΓ͕ݟ͖͔͑ͯͯΒ
ଞͷྫʹ͍ͭͯಉ༷
ϨϏϡʔͷͷέʔε • 69తͳࢪࡦͱͯ͠࡞༻͢ΔͷͰɺ ΄ͱΜͲαʔϏεར༻ऀͷͨΊͷͷ͔͠Εͳ͍ • ଞͷ৯ྉͷཱͰΈΔͱ ϨϏϡʔͷ͕͍͍ͭͯΑ͏͕ͳ͔Ζ͏ͱ
Ұؔ৺ͷͳ͍ͷ • ৯ྉͱ͍͏ݴ༿͕ͭ͘ͷͯ͢ʹΛؔͤͯ͞ͳΒͳ͍
࣮ફͷͨΊʹ͢Δ͜ͱ
࣮ફͷͨΊͷεςοϓ • ϓϩδΣΫτ͘͠ձࣾશମͷ༻ޠूͱ ίϯςΩετϚοϓΛ࡞Δ • ݸਓͷ؍Ͱͳ͘ɺརؔऀΛר͖ࠐΉ •
ݸਓతʹ࠷ॳʹऔΓΉͷ͕͜Ε
࣮ફͷͨΊͷεςοϓ • ڥք͚ͮΒΕͨίϯςΩετʹ߹Θͤͯ ίʔυ͚ͯߟ͑Δ • ίʔυڞ௨Խͤͯ͞ɺ ࣄ͚ͩ͏·͚ͯ͘ߟ͑Δͷ͍͠
• Ͱόϥϯεେࣄ
۩ମతͳ࣮ํ๏ɾɾ
·ͱΊ • ڥք͚ͮΒΕͨίϯςΩετΛೝࣝ͠ɺ දݱͷώϯτͱ͢Δ͜ͱͰࢥߟͷෳࡶ͞Λճආ͢Δ • ίϯςΩετ͕ੜ·ΕΔࣄΛݟ͚ͭग़͢͜ͱͰ ଟ͘ͷώϯτʹͭͳ͕Δ
• ͷલͷࣄϝλใͷҰ෦ͱͯ͠ଊ͑Δͷେࣄ