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
tpac_study (2026)
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Saji
June 23, 2026
Technology
320
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
tpac_study (2026)
#tpac_study
-
https://web-study.connpass.com/event/378948/
X
-
https://twitter.com/sajikix
Saji
June 23, 2026
More Decks by Saji
See All by Saji
本当はややこしい日時のFormatPattern
sajikix
0
380
業務に残された「良くない型」で考える「TypeScriptの難しさ」
sajikix
4
8k
It’s “Time” to use Temporal
sajikix
3
660
ユーザーが作成したコードをブラウザ上で安全に実行できる Plugin システムへのアプローチ
sajikix
1
840
Branded Typesで日時の複雑さと戦う
sajikix
4
1.2k
推しProposalと広がる夢~Intl.MessageFormatとDomLocalization~
sajikix
2
810
自作JSエンジンに推しプロポーザルを実装したい!
sajikix
1
370
Lookback TypeScript ESM support and what should we do now.
sajikix
5
830
フロントエンドで日時処理と戦うために 2025 ver
sajikix
6
4.7k
Other Decks in Technology
See All in Technology
Rust×eBPFでEDRっぽいものをつくる
sunlife3
2
960
Windows の互換機能 - 古いプログラムはなぜ動作できるのか
murachiakira
PRO
0
100
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
20k
AI時代の「OAuth認証」にどう物申すか?(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
230
英語が話せなくてもKubeConスタッフに参加した話
yusuke427
2
1.1k
OpenID for Verifiable Credentials 実装から見えた相互運用性確保までの道のり(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
250
internal/testlog で遊ぼう
rokuosan
0
200
Kiro Crew で始める マルチエージェント開発
miu_crescent
PRO
0
180
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
0
790
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
5k
OAuth SPIFFE Client Authentication(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
240
医療の現場を変革に挑戦した半年間の軌跡 - PythonとAIで現場を変える / From Code to Care
soudai
PRO
1
610
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.8k
What's in a price? How to price your products and services
michaelherold
247
13k
Everyday Curiosity
cassininazir
0
290
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
410
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
480
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
HDC tutorial
michielstock
2
820
Transcript
3ZVTFJ4BKJLJ!TBKJLJY "NCJUJPOBOE*NQSPWFNFOUJOJO UQBD@TUVEZ
4BKJ3ZVTFJ4BKJLJ 'SPOUFOE%FWFMPQFSBU$ZCP[V JOD 𝕏 !TBKJLJY
͕ࣗओʹࢀՃͨ͠8(TFTTJPO ࣗͷڵຯ*OUM࣌ࠃࡍԽͱ͔ͳͷͰ w *O8( ϝΠϯ w *OपΓͷKPJOUNFFUJOHCSFBLPVUTFTTJPO w 8JOUFS5$
গ͚ͩ͠ w 8FC&EJUJOH গ͚ͩ͠ Έ͍ͨͳײ͡
͕ࣗओʹࢀՃͨ͠8(TFTTJPO *O8(ͷ༷ࢠ
"NCJUJPO
৺తͩͳͱࢥͬͨఏҊΛͭհ #SFBLPVU4FTTJPOͳͲͰ݁ߏ৺తͳ༷ఏҊͷ͕ଟ͔ͬͨ ݸਓతʹ࣌ʹ໘ന͔ͬͨͷ͕ҎԼͷͭ %0.-PDBMJ[BUJPO "NPVOU&MFNFOU
%0.-PDBMJ[BUJPO จݴϦιʔεΛ؆୯͔ͭॊೈʹಡΈࠐΉఏҊ w $44ʹࣅͨܗͰར༻͢ΔจݴϦιʔεΛએݴͰ͖ΔΑ͏ʹ͍ͨ͠ w )5.-ଆͰจݴΛ LFZͳͲͰ ࢦఆ͢Δ͜ͱͰϩʔΧϥΠζ͞ΕΔ ͬͯݴΘΕͯ🤔
%0.-PDBMJ[BUJPO Ծ จݴϦιʔεͷಡΈࠐΈ w $44ಉ༷ʹಡΈࠐΉ <html> <head> <link rel="localization" src="uri/for/resource.mf"
/> </head> </html>
%0.-PDBMJ[BUJPO Ծ จݴͷࢦఆ w ઐ༻ͷଐੑͰจݴͷLFZҾΛࢦఆͰ͖Δ <body> <h1 l10n-id="greeting" l10n-args="userName: John"></h1>
</body>
લఏͱͳΔ༷ͨͪ %0.-PDBMJ[BUJPOΛ࣮ݱ͢ΔͨΊʹؔ࿈͢Δඞཁͳ༷͕͋Δ w ϝοηʔδࣗମͷߏจͷ༷ w ˠ*$6.FTTBHF'PSNBUW w ϝοηʔδΛ+4͔Βѻ͏ͨΊͷ༻ w ˠ*OUM.FTTBHF'PSNBU
w ෳͷϝοηʔδΛ·ͱΊͨϦιʔεϑΝΠϧͷ༷ w ˠ.FTTBHF3FTPVSDFT
*$6.FTTBHF'PSNBU 6OJDPEFͷ$-%35$͕ࡦఆͯ͠ΔจݴϑΥʔϚοτͷ༷ w 6OJDPEFͷग़͢$-%3WͰ4UBCMFʹͳͬͨ w Α͋͘ΔΑ͏ͳϓϨΠεϗϧμͷຒΊࠐΈҎ֎ʹ w ϝοηʔδͰͷมએݴɾؔݺͼग़͠ w NBUDIߏจʹΑΔύλʔϯϚον
w ϚʔΫΞοϓॻࣜ
*$6.FTTBHF'PSNBU ύλʔϯϚον ؔݺͼग़͠
*OUM.FTTBHF'PSNBU .FTTBHF'PSNBUΛ*OUMͰॻࣜԽͰ͖ΔΑ͏ʹ͢Δ༷ w ݱࡏ&$."4DSJQUͷ4UBHF const mf = new Intl.MessageFormat("en","Hello {$place}!");
mf.format({ place: "World" }); // ↓ // Hello World!
ϦιʔεϑΝΠϧͷ༷ .FTTBHF'PSNBUWͰॻ͔Ε֤ͨจݴΛ·ͱΊͨϦιʔεϑΟϧͷܗࣜ w ݱࡏ8$ͷJO8(Ͱڠ͕ٞਐΜͰ͍Δஈ֊ ݱࡏఏҊ͞Ε͍ͯΔྫ มΘΔՄೳੑଟ͍ʹ͋Γ @locale en-US ---
one = A plain, simple message. [section] two = Another message with a {$placeholder}.
%0.-PDBMJ[BUJPO ·ͩ·ͩ͜Ε͔Β w հͨ͠Α͏ʹલఏͱͳΔܾΊͳ͖Ό͍͚ͳ͍༷͕ଟ͍ w Өڹൣғ͘͢͝େ͖͍ w )5.-ͷ༷ʹେ͖͘खΛೖΕΔඞཁ͕͋Δ w ܾ·ͬͯͳ͍ͱ͜Ζͨ͘͞Μ͋Δ
w ৽͍͠ςϯϓϨʔτΤϯδϯΈ͍ͨͳΒͳ͍ʁΈ͍ͨͳ࣭ w 51"$Ͱʮ·ͣ8(࡞Δͱ͔͜ΒͩͶ͐ʯΈ͍ͨͳ݁ʹͳͬͯͨ
"NPVOUཁૉ ୯ҐͱΛηοτʹ࣋ͯΔ৽͍͠)5.-ཁૉͷఏҊ w ୯ҐΛͱηοτͰએݴ͢Δ͜ͱͰҎԼͷΑ͏ͳ͜ͱ͕؆୯ʹ w ୯Ґม w ϩʔΧϥΠζ w ͢ͰʹUJNFཁૉEBUFཁૉ͋Δ͕
w ୯Ґ͕ݶఆతͰ͋Γɺͬͱ֦ுੑͷߴ͍ͷʹ͍ͨ͠
"NPVOUཁૉ VOJUWBMVFͱ͍ͬͨଐੑΛ࣋ͭ w VOJUଐੑ4*୯Ґܥʹ͋ΔΑ͏ͳཧ୯Ґ w WBMVFଐੑλά͡Όͳ͘WBMVFͱͯ͠ॻ͚Δ <amount value=42.2 unit=km>42,2</amount>
&$."4DSJQUͷ"NPVOUͷఏҊ "NPVOUͱ͍͏&$."4DSJQUͷ4UBHFͷఏҊ͕͋Δ w ݩʑ3FQSFTFOUJOH.FBTVSFTͱݺ͍ͯͨఏҊ w ॳ୯ҐมػೳͳͲαϙʔτ͢Δ༧ఆ͕༷͕ͩͬͨݮ͞ΕͯΔ w ݱঢ়Ͱ୯ҐͱΛηοτͰཧ͢Δσʔλܗࣜͱͯ͠ͷఏҊ +4 ↔︎
)5.-Ͱࠓޙ࿈ܞ͕ͱΒΕ͍͔ͯ͘ let a = new Amount("42.195", { unit: "km" });
"NPVOUͷఏҊ ݸਓతʹ&$."4DSJQUଆͷ༷Λڵຯ࣋ͬͯͬͯͨ *OUM͖ͳͷͰ w ͦͦ&4ͷ༷ఏҊͰ୯Ґͱ͍ͬͨ෦͕࠷ۙΞπΠ w ࣗͷڵຯͱͭͳ͕͖ͬͯͨͷͰݸਓతʹ໘ന͔ͬͨ ࠷ۙ&$."ͷ༷ࡦఆͷͳ͔ͷϓϩηεʹJO8(ͷϨϏϡʔ͕ೖΔ w
ඪ४Խஂମҧͬͯͭͳ͕͍ͬͯΔ࣮ײ
*NQSPWFNFOU
༷ఏҊ͢Δ͚ͩ͡Όͳ͍ *O8(ͷΔ͜ͱ༷ఏҊΛ͢Δ͚ͩͰͳ͍ w ଞͷ8(ʹΑΔఏҊͷϨϏϡʔ w ༷ࡦఆͷ్தͰϨϏϡʔ͕ೖΔ w ཧͯ͠ΔυΩϡϝϯτ͕݁ߏ͋Δ w దٓߋ৽ɾमਖ਼ͯ͠Δ
JO8(ͷ%PDVNFOU ಡΜͩ͜ͱ͋Δʁ🖐
ࣗͪΌΜͱ Βͳ͔ͬͨ🙇
JO8(ͷ͍࣋ͬͯΔ%PDVNFOU w IUUQTXXXXPSHCMPHJOUFSOBUJPOBMʹߦͬͯΈΑ͏
JO8(ͷ͍࣋ͬͯΔ%PDVNFOUΛ ҎԼͷΑ͏ͳ%PDVNFOU͕ฒΜͰΔ w -BOHVBHF&OBCMFNFOU w ݴޠʹΑΔ֤ػೳͷαϙʔτঢ়گ w %FWFMPQQFS4VQQPSU w ༷ͷࡦఆʹؔ͢ΔυΩϡϝϯτϒϥβ࣮͚ͷυΩϡϝϯτ
w &EVDBUJPO0VUSFBDI w ίϯςϯπ࡞ɾ։ൃऀ͚ͷίϯςϯπ
ΞϓϦ։ൃऀʹࢀߟʹͳΓͦ͏ͳͷ (FUUJOH4UBSUFEXJUI*OUFSOBUJPOBMJ[BUJPO w JOͱMOͷҧ͍ͳͲ͔Βελʔτͯ͠ߨ࠲ܗࣜͰֶΔهࣄ܈ "VUIPSJOH)5.-$44 w )5.-$44Λॻ্͘Ͱ߲͝ͱʹJO8(ͷ%PD-JOL͕·ͱ·ͬͯΔ w ͔͜͜ΒؾʹͳΔͷΛ୳͢ͷ͕ૣ͍ "SUJDMFMJTU
51"$Ͱಛʹ໘ന͔ͬͨٞ 51"$Ͱ%PDVNFOUͷߋ৽ͳͲ͕ੵۃతʹߦΘΕ͍ͯͨ ͦͷதͰಛʹ໘ന͔ͬͨٞɾ%PD w ʮจࣈԽ͚ʯͷఆٛͷ w 4USJOH4FBSDIJOHͷυΩϡϝϯτվળ
51"$Ͱ໘ന͔ͬͨٞNPKJCBLFͷఆٛ *O8(Ͱ*OUFSOBUJPOBMJ[BUJPO(MPTTBSZͱ͍͏༻ޠूΛཧͯ͠Δ ͦͷதʹຊޠ͔Βͦͷ··࠾༻͞ΕͨʮNPKJCBLFʯ͕͋Δ ٞ͞Εͯͨ͜ͱ w ϑΥϯτ͕ͳͯ͘ϨϯμʔͰ͖ͳ͍͜ͱͱNPKJCBLFҟͳΔͷͰʁ w ͦͦTQFDͰΘΕΔʁ w தࠃͰಉ͡Α͏ͳ֓೦͕͋Δʁ
51"$Ͱͬͨ໘ന%PD4USJOH4FBSDIJOH *O8(Ͱ4USJOH4FBSDIJOHͱ͍͏จࣈྻݕࡧػೳͷͨΊͷจॻ͕͋Δ w ͜ͷ࣌Ͱ͍͢͝ จࣈྻݕࡧ͚ͩͰҎԼͷΑ͏ͳ͜ͱΛؾʹ͢Δඞཁ͕͋Δ w શ֯֯ʁେจࣈখจࣈʁ w ࣈͱ͔ଞݴޠͷࣈจࣈώοτ͢Δจࣈͷೖͬͨه߸ͷѻ͍ ͜ͷ%PD5"1$தʹ͍͔ͭ͘ࢀߟจݙͷՃ6QEBUF͕ͳ͞Εͨ
·ͱΊͱ͔ײͱ͔ࢥ͍ͱ͔ 8$ʹ͓͚ΔࠃࡍԽͷͨΊͷӦΈଟذʹΘͨΔ w ఏҊ͞ΕΔ༷໘ന͍͚ͲɺͦΕҎ֎ͷ׆ಈ͋Δ͍ͩ͠͡ w ͔ͤͬ͘ॻ͍ͯΔ%PDVNFOUಡ·Εͯཉ͍͠ͳ ࣗগͣͭ͠ಡΜͰΔ ૾ΑΓͣͬͱগͳ͍ਓ͕ͳΜͱ͔ࢧ͍͑ͯΔঢ়ଶͩͬͨ w
֤ਓͷࣝྔͱࠃࡍԽͷࢥ͍ͰͳΜͱΓཱͬͯΔ Α͏ʹݟ͑ͨ w ຊޠͱ͍͏ׂͱಛघͳݴޠΛ͍ͬͯΔҎ্ɺશવਓ͝ͱ͡Όͳ͍ w ݴޠࣄऀ͕͍ΕΔͱ͍͏͜ͱେ͖͍
ऴΘΓ