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
Listかもしれない
Search
irof
January 30, 2023
Programming
2
540
Listかもしれない
【オンライン】 JJUGナイトセミナー「コレクションフレームワーク特集」1/30(月) 開催
https://jjug.doorkeeper.jp/events/149811
irof
January 30, 2023
Tweet
Share
More Decks by irof
See All by irof
SpringBoot3.4の構造化ログ #kanjava
irof
2
990
自分ひとりから始められる生産性向上の取り組み #でぃーぷらすオオサカ
irof
8
2.9k
役立つログに取り組もう
irof
33
12k
Javaのリリースモデル変更 その後
irof
0
100
プールにゆこう
irof
2
330
Javaマルチバージョンビルディング
irof
1
410
データ/データベースパターン
irof
0
190
勉強会で話すハードルを下げてみる
irof
0
390
Gatlingによる負荷テスト入門
irof
6
2.7k
Other Decks in Programming
See All in Programming
JavaScriptツール群「UnJS」を5分で一気に駆け巡る!
k1tikurisu
9
1.8k
AIの力でお手軽Chrome拡張機能作り
taiseiue
0
170
Ruby on cygwin 2025-02
fd0
0
140
SwiftUIで単方向アーキテクチャを導入して得られた成果
takuyaosawa
0
270
CNCF Project の作者が考えている OSS の運営
utam0k
6
710
負債になりにくいCSSをデザイナとつくるには?
fsubal
9
2.4k
Multi Step Form, Decentralized Autonomous Organization
pumpkiinbell
1
740
Domain-Driven Transformation
hschwentner
2
1.9k
color-scheme: light dark; を完全に理解する
uhyo
3
290
Immutable ActiveRecord
megane42
0
140
Djangoアプリケーション 運用のリアル 〜問題発生から可視化、最適化への道〜 #pyconshizu
kashewnuts
1
250
Lottieアニメーションをカスタマイズしてみた
tahia910
0
130
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
330
The Invisible Side of Design
smashingmag
299
50k
The Cult of Friendly URLs
andyhume
78
6.2k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
We Have a Design System, Now What?
morganepeng
51
7.4k
Making Projects Easy
brettharned
116
6k
Six Lessons from altMBA
skipperchong
27
3.6k
Practical Orchestrator
shlominoach
186
10k
Code Review Best Practice
trishagee
67
18k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.8k
Transcript
-JTU͔͠Εͳ͍ ++6(φΠτηϛφʔʮίϨΫγϣϯϑϨʔϜϫʔΫಛूʯ 5
ࠓͷ 話 気 ……
ίϨΫγϣϯͱ
ίϨΫγϣϯͱ ίϨΫγϣϯʢࡶʣ ίϨΫγϣϯʢͱΓ͋͑ͣʣ ίϨΫγϣϯʢͪΌΜͱʣ ͦͷଞͷίϨΫγϣϯ ίϨΫγϣϯͱྻ
ίϨΫγϣϯͱ ʢࡶʣ
ࡶͳίϨΫγϣϯ ཁૉΛෳ·ͱΊͯѻ͏ͷ ෳʹO ೖΕɺ͔ͨ·Γɺଋɺίϯς φɺू߹ɺɺɺ
ίϨΫγϣϯͷؒ $PMMFDUJPOT'SBNFXPSLʢࠓճʣ ྻ 0QUJPOBM 4USFBN ଞͷίϨΫγϣϯ 覚
ίϨΫγϣϯ ʢͱΓ͋͑ͣʣ
ͱΓ͋͑ͣ -JTU ͍͍ͩͨ͜ΕͰࣄΓΔ .BQ ΩʔͰҰຊΓ͍ͨ͠ͱ͖ʹ
લఏΠϯλϑΣʔεͱ࣮Ϋϥε ίϨΫγϣϯجຊతʹΠϯλ ϑΣʔεͰѻ͍·͢ɻ ࣮ΫϥεΠϯελϯεੜ ࣌ͳͲಛผͳ߹͚ͩɻ ͰͱΓ͍͍͋͑ͣɻ
-JTUͱΓ͋͑ͣ͑Δ Πϯελϯε͕࡞ΕΔ ཁૉΛՃͰ͖Δ ϧʔϓͰ͖Δ
-JTUͱΓ͋͑ͣ͑Δ List完全
શʹϚελʔͨ͠ ʮͱΓ͋͑ͣ͑Δʯ͜ΕΛ ͪΌΜͱͰ͖Ε͍͍ɻ ͱΓ͋͑ͣ"SSBZ-JTU ͱΓ͋͑ͣδΣωϦΫεॻ͍ͱ͘ BEE GPSFBDIϧʔϓ
ͪΌΜͱ͑ͯͳ͍ྫ
.BQͱΓ͋͑ͣ͑Δ Πϯελϯε͕࡞ΕΔ ཁૉΛՃͰ͖Δ ཁૉΛऔΓग़ͤΔ
.BQͱΓ͋͑ͣ͑Δ
શʹϚελʔͨ͠ ʮͱΓ͋͑ͣ͑Δʯ͜ΕΛ ͪΌΜͱͰ͖Ε͍͍ɻ )BTI.BQ LFZ)BTI.BQͰѻ͑Δͷ ͱΓ͋͑ͣ4USJOHͰ͍͍ɻ͋ͱͰΘ͔Δ
ͱΓ͋͑ͣίϨΫγϣϯ͑Δ ͬͯݴ͍͍ͬͯɻ ͜ΕͰۀॲཧॻ͚ͳ͘ͳ͍ɻ Α͘Θ͔ΒΜͷग़͖ͯͨΒʮͱΓ͋ ͑ͣʯͷ࣍ʹਐΈ·͠ΐ͏ɻ ͍͖ͳΓίϨΫγϣϯશΫϥεͱ͔શϝ ιουͷ͍ํͱ͔֮͑ͳ͍͍ͯ͘Αɺ΄ Μͱʹɻ
ͱΓ͋͑ͣʹ͚ম͖ਕ ଘࡏνΣοΫDPOUBJOT আSFNPWF ͜Ε͘Β͍ͰʮͰ͖ͳ͍ॲཧʯͦ͏ ͳ͍ͱࢥ͏ ޮѱ͍ͱ͔อकੑѱ͍ͱ͔μα͍ͱ ͔͋Δ͚Ͳɺͦ͜Εํͳ͍
ίϨΫγϣϯ ʢͪΌΜͱʣ Java SE 話
$PMMFDUJPOT'SBNFXPSL ίϨΫγϣϯͷϑϨʔϜϫʔΫ +BWBͰಋೖ͞Εͨͷ ʢલʣ ʜʜಋೖͩͱࢥͬͯͨΑɻϓϩ δΣΫτͬͯͨ࣌7FDUPSͱ͔ग़͖ͯ ͔ͨΒɻ
$PMMFDUJPOT'SBNFXPSL ΠϯλϑΣʔεͱ࣮Λ͚Δ ͷ͕ྲྀߦ͍ͬͯͨ࣌ ࠓ͑ͯΔͷ͜Εͷ͓͔͛ײ͋Δ ϚγϯεϖοΫ͕ශऑͳ࣌ Α͘Ͱ͖ͯΔʢਖ਼ʣ
$PMMFDUJPOT'SBNFXPSLͷ ΠϯλϑΣʔεͨͪ 覚
ΫϥεೖΕΔͱΧΦεʹͳΔ 知
ͬ͠ͱ͚ -JTU .BQ $PNQBSBCMF $PNQBSBUPS 4FU 4PSUFE4FU
4PSUFE.BQ ൪֎ $PMMFDUJPO ΄͔ 各層 中 話
ίϨΫγϣϯͪΌΜͱ͑Δ ͬͯͳΜΑʁͱͳΓ·͢ɻ ͳͷͰͪΌΜͱΛϨϕϧʹ͚ ͯΈΔɻ
ͪΌΜͱ ΠϯλϑΣʔεΛબͰ͖Δ ࣮ΛબͰ͖Δ ඇίϨΫγϣϯͱมͰ͖Δ ʢ͜·͝·ͨࣝ͠κʔϯʣ ίϨΫγϣϯΛ࣮Ͱ͖Δ #FUUFSίϨΫγϣϯΛ࡞ΕΔ =====超 壁=====
ଞͷίϨΫγϣϯ
ଞͷίϨΫγϣϯʁ $PMMFDUJPOT'SBNFXPSLҎ֎ʹί ϨΫγϣϯଘࡏ͠·͢ɻ Γͳ͍ྖҬͰಠࣗͷίϨΫ γϣϯ͕ΘΕΔ͜ͱ͋Γ·͢ɻ นΛඈͼӽ͑ͨਓ͕ͨͪͬͯ· ͢ɻ
ίϨΫγϣϯ $PMMFDUJPOT'SBNFXPSL+BWB 4&Ͱఏڙ͞Ε·͕͢ɺݴޠతʹ ಛผѻ͍͞Ε͍ͯΔͷ*UFSBCMF ͘Β͍Ͱ͢ɻ
*UFSBCMFͷಛผѻ͍
ͱ͍͑GPSFBDIϧʔϓ ࠷ۙʢ+BWB݄ɺͭ· ΓલʜʜʣGPS&BDIϝιο υ͕ੜ͑ͯ-BNCEBͤΔΑ͏ʹ ͳͬͨΓͯ͠ΔͷͰɺGPSFBDI ϧʔϓͦ͜·ͰརͰͳ͍ Ͱ͢ɻ
ଞͷίϨΫγϣϯ̎छྨ ίϨΫγϣϯͷΠϯλϑΣʔε Ұ෦ΫϥεΛͬͯɺΑΓతʹ ߹ͬͨίϨΫγϣϯ࣮ ΠϯλϑΣʔε͔Βؙ͝ͱ࠶ઃܭ ͞Εͨ$PMMFDUJPOT'SBNFXPSLͱ ޓੑͷͳ͍#FUUFSίϨΫγϣϯ
ίϨΫγϣϯ࣮ +BWBඪ४ϥΠϒϥϦʹࢄݟ͞ΕΔɻ γʔϜϨεʹସͰ͖ɺతʹ߹͍ͬͯͨ ΒྗΛൃش͢Δɻ ΠϯλϑΣʔε͑͞߹ͬͯΕ͍͍ͷͰɺ 3%#ʹଓ͢ΔίϨΫγϣϯͱ͔࡞ ΕΔɻ ͍ʹͳΔ͔ΒΜɻ
#FUUFSίϨΫγϣϯ $PMMFDUJPOT'SBNFXPSLͷܕ֊ૢ࡞ ʹҟΛএ͑Δಠࣗ࿏ઢɻ ੑೳ"1*ͷ͍উख༏Δͷͷɺඪ ४ͱ֎ΕΔ͕Ώ͑ʹଞͷϥΠϒϥϦͱ ͷΓͱΓͷ෦Ͱଟগటष͘ͳΔɻ ͰศརͰ҆શͰޮ͍͍ɻ
ίϨΫγϣϯͷૢ࡞
Γ͍ͨૢ࡞ Ճ আ ஔ நग़ ׂ ूܭ ҙͷॲཧ ม ଞ͋Δ͔
ίϨΫγϣϯૢ࡞ ҰݸͣͭऔΓग़ͯ͠ΕͱΓ͋ ͑ͣͳΜͱ͔ͳΔ ੑೳ͕ڐͤɻ ࣮ྔ͕ڐͤɻ ίʔυ͕ଟ͍ͱ୯७ʹ໘ͩ͠ɺ ίʔυ͕ଟ͍͚ͩόάΓ͍͢ɻ
࣍Ͱ😉
ίϨΫγϣϯΘ͔Δ
Θ͔Δ͍Ζ͍Ζ ΫϥεϝιουΛ҉ه͍ͯ͠ ͯΘ͔Δͱ͍͑·ͤΜɻ
$PMMFDUJPOT'SBNFXPSLͷ ΠϯλϑΣʔεͨͪ 覚 再掲
ΫϥεೖΕΔͱΧΦεʹͳΔ 知 再掲
KBWBVUJM ͚ͩݟͯ List実装 Map実装
Θ͔Δ͍Ζ͍Ζ ֮ͦͦ͑ΔͷແཧΑͶ
ͳͷͰ͝ͱʹ ʮ͜ΕΘ͔Δʯͱݴ͑ͦ͏ͳΛ͠·͢
-JTU ॱংͷ͋ΔίϨΫγϣϯͰ͢ɻ ॱং͕͋ΔͷͰ ೖΕͨॱ͕ҡ࣋͞ΕΔ ฒͼସ͕͑Ͱ͖Δ ฒͼॱΛѻ͑Δඞཁ͕͋Δ
-JTUͷมߋՄೳੑ -JTUPG"SSBZTBT-JTUͰ࡞ͬͨΓɺ $PMMFDUJPOTVONPEJ fi BCMF-JTUΛ௨ͨ͠-JTUมߋͰ ͖ͳ͍ɻ มߋͰ͖ͳ͍-JTUʹมߋૢ࡞Λߦ͏ͱ 6OTVQQPSUFE0QFSBUJPO&YDFQUJPO͕ൃੜ͢Δɻ࣮ߦ࣌ྫ֎ͭ Β͍ɻ -JTUʹݶΒͳ͍͚ΕͲίϨΫγϣϯશൠ๊͕͑Δɺ
ݹ͔͘ΒΑ͘ΒΕͨڍಈɻ มߋෆՄΛલఏʹ͢Δͷ͕ྑ͍ɻ
-JTUͷ࣮બ KBWBVUJM"SSBZ-JTU -JTUPG & ੜ͢Δͱ͖͜ͷ̎ɻ ଞ͋Δ͚Ͳ͋·Γؾʹ͠ͳ͍͍ͯ͘ Ͱ͢ɻ
"SSBZ-JTUͱ-JOLFE-JTU ΄ͱΜͲ"SSBZ-JTUͰ͍͍ -JOLFE-JTUͷํ͕దΆ͍໘Ͱ "SSBZ-JTUͷํ͕ੑೳͰͨΓ͠ ͯ͠·͏͜ͱ͠͠ "SSBZ-JTU͕͍͞Εͨ݁Ռͱ͔ͳ Μͱ͔
.BQ ΩʔͰѻ͏࣌ʹ͍·͢ɻ ΩʔಉੑʢFRVBMTIBTI$PEFʣ͕ద ʹ࣮͞Ε͍ͯΔඞཁ͕͋Γ·͢ɻ FRVBMTIBTI$PEF.BQͷͨΊʹ͋Δͱ ݴͬͯաݴͰͳ͍ɻ աݴͩͬͨɻͰίϨΫγϣϯͷͨΊʹ͋Δͱ ݴͬͯաݴͰͳ͍ؾ͠ͳ͍Ͱͳ͍ɻ
.BQͷࠪ $PMMFDUJPOͰͳ͍ ͭ·Γ*UFSBCMF͕࣮͞Ε͍ͯͳ͍ FOUSZ4FU Ͱ4FU&OUSZʹͯ͠ ͔ΒͿΜ·Θ͢ɻ LFZ4FU WBMVFT ͋Δ͚Ͳɺѹ తʹFOUSZ4FU
ͷग़൪͕ଟ͍ɻ
ฒͼॱ ൺֱ͢ΔͨΊͷ $PNQBSBCMF͕࣮͞ΕͨΫϥε ͕ཁૉͳΒͦͷॱͰฒΒΕΔ ฒͼସ͕͑ࣗ༝ʹͰ͖ΔͱΘ͔ͬͯΔ ײ͋Δ
ฒͼॱ ฒͼସ͑Δ࣌ʹ༩͑Δɻ
$PNQBSBUPS $PNQBSBUPSͷϑΝΫτϦϝιο υʢDPNQBSJOHͱ͔ʣͰ࡞Δɻ $PNQBSBUPSΠϯλϑΣʔεΛ࣮ ͠ͳ͍ɻ
$PNQBSBUPS -JTU -JTUΛιʔτ͢Δͱ͖ʹTPSUϝ ιουʹ$PNQBSBUPSΛ͚͢Ε Ͳɺ-JTU͕มߋՄೳ-JTU͔Ͳ͏͔ Ͱ࣮ߦ࣌ΤϥʔʹͳΔɻ ࠷ۙ͋·Γ͠ͳ͍ɻ 4USFBNͰTPSUͯ͠UP-JTUͪ͠Ό͏ɻ
4FU ॏෳ͠ͳ͍ίϨΫγϣϯͰ͢ɻ ॏෳ͢Δ͔Ͳ͏͔ಉੑʹ ͞Ε·͢ɻ ಉੑ࣌ؒ࣍ୈͰ͋ͱͰɻ جຊతʹॱংͳ͍Ͱ͢ɻ ͋Δ͚ͲΞςʹͨ͠Βμϝɻ
4PSUFE4FU4PSUFE.BQ ͱݴ͑ʮ4FU͍͍͚ͨͲॱং ʔʯͱ͔ݴ͍ग़͢͜ͱଟ͍Ͱ ͢ɻΘ͕··ɻ ͳͷͰηοτͰ4PSUFE4FU͑ ͓͖ͯ·͠ΐ͏ɻ ͍ͭͰʹ4PSUFE.BQɻ
൪֎$PMMFDUJPO $PMMFDUJPO͕ग़ͯ͘Δ͜ͱ໓ଟ ʹͳ͍Ͱ͢ɻ
"SSBZ-JTU͡Όͳ͘-JTUΛ͏
ͦͷઌ ίϨΫγϣϯ͕બΔ
൚༻࣮ͷબࢶ 覚 ( 「⼊⾨」)
ͨͩ͠ ੑೳ໘͔ΒదͳίϨΫγϣϯΛબ ΜͩͭΓͰɺ࠷ۙͷίϯϐϡʔ λʔϦιʔεͩͱޡࠩʹऩ·ͬͨΓ ͠·͢ɻίϨΫγϣϯͰؤுͬͨΓ ͢Δ·͑ʹɺઃܭ4USFBNɺαʔυ ύʔςΟʔͷ#FUUFSίϨΫγϣϯͰ ରॲ͢Δ΄͏͕ྑ͍ײ͡͠·͢ɻ
༩ଠ ⽂句
͑ͳ͍ϝιου͕͋Δ 6OTVQQPSUFE0QFSBUJPO&YDFQUJPO ͕ى͜Δɻ࣮ߦ࣌ྫ֎ͭΒ͍ɻ ͜ΕKBWBMBOHύοέʔδͷͤ͘ʹ $PMMFDUJPOT'SBNFXPSLͷϝϯ όʔͳΜͰ͢ΑͶɻଞͰΘΕ ͯΔ͚Ͳɻ
OVMMͷѻ͍͕·ͪ·ͪ OVMM͕ೖΔίϨΫγϣϯͩͬͨΓɺೖΒͳ ͍ίϨΫγϣϯͩͬͨΓɺ·ͪ·ͪɻ OVMM͕ೖΒͳ͍ίϨΫγϣϯʹOVMMೖΕΔ ͱ࣮ߦ࣌ྫ֎ͭΒ͍ɻ +BWBEPDʹॻ͍ͯΔ͚Ͳಡ·ͳ͍ʢࣗനʣ ςετͰؾ͔ͮ͘Β͍͍͔ͳͬͯʜʜ
ΓΈͯ͌Ϳ JOUͱ͔CPPMFBOͱݴͬͨϓϦϛςΟϒ ʢ·ͩʣίϨΫγϣϯͰѻ͑ͳ͍ɻ ԼखʹΔͱϘΫγϯάʗΞϯϘΫγϯ ά͕සൃ͢Δɻ ͚ͲϚγϯύϫʔ্͕ͬͯผʹʹͳ Βͳ͍ͷඍົʹ໘ͳͱ͜Ζɻ
IBTI$PEFFRVBMT ίϨΫγϣϯͰཁૉಉ࢜Λൺֱ ͢Δ͜ͱଟ͍ɻ ͳͷͰ͜ΕΒΛѻ͑ͳ͍ͱʮίϨ Ϋγϣϯ͑ΔʯʹͳΒͳ͍ɻ ͜ͷ࣍ʹ$PNQBSBCMF͕ग़ͯ͘Δɻ
ಓIBTI$PEF IBTI$PEF͕Ұக͍ͯͯ͠Π ίʔϧͰͳ͍ʢશવҧ͏ͷͰ ඃ͍͍ͬͯʣ IBTI$PEF͕ҧͬͨΒඞͣҧ͏ʹ ͠ͳ͖Ό͍͚ͳ͍
͍ͨͩ͠IBTI$PEFͷ࣮ 役 ⽴
IBTI$PEFFRVBMTͷ࣮ ͖ͯͱ͏ʹ͠Β͍ͯͩ͘͞ɻ *%&ʹ࡞ΒͤΔͰ͍͍͠ɺ SFDPSEʹཔΔͰ͍͍͠ɻ
ίϨΫγϣϯͱ γϦΞϥΠζ
γϦΞϥΠζ ࣮Ͱ΄ͱΜͲҙࣝ͞Εͳ͍ Ͱ͋Ζ͏4FSJBMJ[BCMFͷɻ Βͳ͍͍ͯ͘Μ͚ͩͲɺΒ ͳ͍ͳΒΘͳ͍͜ͱɻ͏ͳ Β͓͔ͬͯͳ͖Ό͍͚ͳ͍ɻ
4FSJBMJ[BCMFੲ ҰੲલηογϣϯϨϓϦέʔγϣϯͱ͔Ͱඞཁ ͩͬͨΓͰඞ͚ͣͭ·͠ΐ͏ͱ͔ͳͬͯͨΜ͚ͩ ͲɺࠓΦϒδΣΫτΛγϦΞϥΠζ͢Δํ๏͕ ͜ΕʹݶΒͳ͘ͳͬͯΔͷͰग़൪ݮͬͯΔɻ ηογϣϯϨϓϦέʔγϣϯͰSFEJTͱ͔ͷ֎෦ ετϨʔδ͏ͳΒ͚ͦͬͪͷγϦΞϥΠζΛ ͢Ε͍͍ͷͰɻ ͨͱ͑+40/ʹॻ͖ग़͢ͳΒ4FSJBMJ[BCMFཁΒͳ͍ɻ
4FSJBMJ[BCMFੲ TFSJBM7FSTJPO6*%ͱ͍͏ͷ ʮܯࠂͰΔ͔Βͬͱ͜͏ʯ͘Β͍Ͱ࡞ ΒΕͯͨΓ͢Δɻ ͦΕͳΒ࡞Βͳ͍ํ͕ϚγͳΜ͚ͩͲͳ͊ʜʜ ͱԣͰݟͯΔɻ࣮ͳ͍ͷͰ͠͠εϧʔͪ͠Ό͏ɻ ͜ͷΛ࢝ΊΔͱऴΘΒͳ͍ͷͰলུɻ
ίϨΫγϣϯͱγϦΞϥΠζ -JTU4FSJBMJ[BCMFͰͳ͍ $PMMFDUJPOT'SBNFXPSLͷΠϯλ ϑΣʔεશ෦4FSJBMJ[BCMFͰͳ͍ "SSBZ-JTU4FSJBMJ[BCMFͰ͋Δ
ͨͱ͑͜͏͍͏࣮ NG 。 保証 。
)BTI4FUͷத
)BTI4FUͷத ॏෳΛͳ͍ͨ͘͠ͱ͖ʹΑ͘Θ ΕΔ)BTI4FUɺ)BTI.BQͱࣅ ͍ͯΔ͚ΕͲɺ)BTI.BQ͕Ωʔ ͱͷϖΞͰ͋Δͷʹରͯ͠ )BTI4FUཁૉ͚ͩΛѻ͏ͷͰγ ϯϓϧͩͱࢥ͏͔͠Εͳ͍ɻ
KBWBVUJM)BTI4FU
KBWBVUJM)BTI4FU 👈 中⾝HashMap
ੲͷࢠͨͪ
ग़͖ͯͨΒʮ͋ɺੲͷʜʜʯͱ Թ͔͍Ͱݟ͍ͯ͋͛ͯͩ͘͞ 「昔」 ⾔ 側 24年前問題
ίϨΫγϣϯͷ ެࣜυΩϡϝϯτ
ެࣜυΩϡϝϯτ 存在知 辿 着 問題
ͨͲΓ͖͔ͭͨ
None
όʔδϣϯ ̓ 分布差 込
出典 感覚
όʔδϣϯ ̓ 実際⾒ 現場
割合
👇
👉
👈
👇
👈
None
👈
None
読 物 ⾯⽩