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
4.2k
入門 境界づけられたコンテキスト
phperkaigi 2022の資料です。
理解しながら共通化するところはするなどいいバランスを心がけましょう。
音声が悪いですが資料だけでなく、トーク内容も併せて・・!
yuuki takezawa
April 11, 2022
Tweet
Share
More Decks by yuuki takezawa
See All by yuuki takezawa
PHP ステートレス VS ステートフル 状態管理と並行性 / php-stateless-stateful
ytake
0
110
PHPでアクターモデルを理解・体験しよう / Understand and experience the actor model in PHP
ytake
2
250
再考 アクターモデル/ reconsider actor model
ytake
0
1k
GoとアクターモデルでES+CQRSを実践! / proto_actor_es_cqrs
ytake
1
410
Phluxorでアクターモデルを 理解・体験しよう / toolkit-for-flexible-actor-models-in-php-phluxor
ytake
1
250
オブジェクトのおしゃべり大失敗 メッセージングアンチパターン集 / messaging anti-pattern collection
ytake
2
1.1k
DRE/SREのプラクティス融合によるクラウドネイティブなデータ基盤作り / dre_sre
ytake
0
770
技術的負債と向き合う取り組みでよかったもの / positive_efforts_to_tackle_technical_debt
ytake
10
3.8k
アプリケーションエンジニアから強いデータエンジニアへの歩き方 / How to transition and become a Data Engineer from an Application Engineer
ytake
1
550
Other Decks in Technology
See All in Technology
EDRの検知の仕組みと検知回避について
chayakonanaika
2
490
「正しく」失敗できる チームの作り方 〜リアルな事例から紐解く失敗を恐れない組織とは〜 / A team that can fail correctly
i35_267
1
520
急成長する企業で作った、エンジニアが輝ける制度/ 20250214 Rinto Ikenoue
shift_evolve
3
1.9k
依存パッケージの更新はコツコツが勝つコツ! / phpcon_nagoya2025
blue_goheimochi
3
180
PHPで印刷所に入稿できる名札データを作る / Generating Print-Ready Name Tag Data with PHP
tomzoh
0
140
あれは良かった、あれは苦労したB2B2C型SaaSの新規開発におけるCloud Spanner
hirohito1108
2
770
AI エージェント開発を支える MaaS としての Azure AI Foundry
ryohtaka
6
630
人はなぜISUCONに夢中になるのか
kakehashi
PRO
6
1.7k
Exadata Database Service on Cloud@Customer セキュリティ、ネットワーク、および管理について
oracle4engineer
PRO
1
1.5k
2.5Dモデルのすべて
yu4u
2
930
Raycast AI APIを使ってちょっと便利な拡張機能を作ってみた / created-a-handy-extension-using-the-raycast-ai-api
kawamataryo
0
150
開発組織のための セキュアコーディング研修の始め方
flatt_security
3
2.7k
Featured
See All Featured
Statistics for Hackers
jakevdp
797
220k
Into the Great Unknown - MozCon
thekraken
35
1.6k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.1k
Building Your Own Lightsaber
phodgson
104
6.2k
Practical Orchestrator
shlominoach
186
10k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
What's in a price? How to price your products and services
michaelherold
244
12k
Side Projects
sachag
452
42k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
For a Future-Friendly Web
brad_frost
176
9.5k
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తͳࢪࡦͱͯ͠࡞༻͢ΔͷͰɺ ΄ͱΜͲαʔϏεར༻ऀͷͨΊͷͷ͔͠Εͳ͍ • ଞͷ৯ྉͷཱͰΈΔͱ ϨϏϡʔͷ͕͍͍ͭͯΑ͏͕ͳ͔Ζ͏ͱ
Ұؔ৺ͷͳ͍ͷ • ৯ྉͱ͍͏ݴ༿͕ͭ͘ͷͯ͢ʹΛؔͤͯ͞ͳΒͳ͍
࣮ફͷͨΊʹ͢Δ͜ͱ
࣮ફͷͨΊͷεςοϓ • ϓϩδΣΫτ͘͠ձࣾશମͷ༻ޠूͱ ίϯςΩετϚοϓΛ࡞Δ • ݸਓͷ؍Ͱͳ͘ɺརؔऀΛר͖ࠐΉ •
ݸਓతʹ࠷ॳʹऔΓΉͷ͕͜Ε
࣮ફͷͨΊͷεςοϓ • ڥք͚ͮΒΕͨίϯςΩετʹ߹Θͤͯ ίʔυ͚ͯߟ͑Δ • ίʔυڞ௨Խͤͯ͞ɺ ࣄ͚ͩ͏·͚ͯ͘ߟ͑Δͷ͍͠
• Ͱόϥϯεେࣄ
۩ମతͳ࣮ํ๏ɾɾ
·ͱΊ • ڥք͚ͮΒΕͨίϯςΩετΛೝࣝ͠ɺ දݱͷώϯτͱ͢Δ͜ͱͰࢥߟͷෳࡶ͞Λճආ͢Δ • ίϯςΩετ͕ੜ·ΕΔࣄΛݟ͚ͭग़͢͜ͱͰ ଟ͘ͷώϯτʹͭͳ͕Δ
• ͷલͷࣄϝλใͷҰ෦ͱͯ͠ଊ͑Δͷେࣄ