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
Perl Meets \w+ あるいは開発を支えるPerl活用の実例集
Search
karupanerura
December 09, 2025
Programming
60
0
Share
Perl Meets \w+ あるいは開発を支えるPerl活用の実例集
YAPC::Fukuoka 非公式リジェクトコン 2025
https://smarthr.connpass.com/event/376033/
karupanerura
December 09, 2025
More Decks by karupanerura
See All by karupanerura
音を出したい
karupanerura
0
73
log
karupanerura
1
100
Use Perl as Better Shell Script
karupanerura
0
890
GoでParserを書く
karupanerura
4
1k
マイ隙間家具OSSたちのご紹介
karupanerura
2
290
Mustache Template 話 2024
karupanerura
0
64
1つの言語を原点に色々な言語を学ぶということ
karupanerura
4
3.4k
Javaの実装をPerlでテストする
karupanerura
0
1.4k
Go Generics Overview
karupanerura
0
1.4k
Other Decks in Programming
See All in Programming
Back to the roots of date
jinroq
0
110
10年分の技術的負債、完済へ ― Claude Code主導のAI駆動開発でスポーツブルを丸ごとリプレイスした話
takuya_houshima
0
2.6k
煩雑なSkills管理をSoC(関心の分離)により解決する――関心を分離し、プロンプトを部品として育てるためのOSSを作った話 / Solving Complex Skills Management Through SoC (Separation of Concerns)
nrslib
4
950
mruby on C#: From VM Implementation to Game Scripting (RubyKaigi 2026)
hadashia
2
530
CDK Deployのための ”反響定位”
watany
4
780
SkillがSkillを生む:QA観点出しを自動化した
sontixyou
6
3.4k
アクセシビリティ試験の"その後"を仕組み化する
yuuumiravy
0
150
Vibe NLP for Applied NLP
inesmontani
PRO
0
440
PCOVから学ぶコードカバレッジ #phpcon_odawara
o0h
PRO
0
270
Lightning-Fast Method Calls with Ruby 4.1 ZJIT / RubyKaigi 2026
k0kubun
3
420
Making the RBS Parser Faster
soutaro
0
390
Cache-moi si tu peux : patterns et pièges du cache en production - Devoxx France 2026 - Conférence
slecache
0
240
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
200
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
320
Amusing Abliteration
ianozsvald
1
150
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Speed Design
sergeychernyshev
33
1.6k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.9k
AI: The stuff that nobody shows you
jnunemaker
PRO
6
570
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
160
Statistics for Hackers
jakevdp
799
230k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
450
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.3k
Transcript
Perl Meets \w+ ͋Δ͍։ൃΛࢧ͑ΔPerl׆༻ͷ࣮ྫू YAPC::Fukuoka ඇެࣜϦδΣΫτίϯ 2025 @karupanerura
None
None
YAPC::Hiroshima 2024!!!!!
Perl Meets \w+ ͋Δ͍։ൃΛࢧ͑ΔPerl׆༻ͷ࣮ྫू YAPC::Fukuoka ඇެࣜϦδΣΫτίϯ 2025 @karupanerura
@karupanerura • DeNA Co,. LTD. - Software Engineer • Perl
/ Go / Java / TypeScript / Terraform / AWS / Google Cloud / etc.. • Japan Perl Association - Chief Director • YAPC::Japan Organizer • YAPC::Kansai 2017 / Japan.pm 2021 / YAPC::Hakodate 2024 • YAPC::Tokyo 2026 <- NEW!
Web։ൃͷࠓੲ
※ݸਓͷײͰ͢
Ή͔͠ͷWeb։ൃ • ʢੲͱ͍ͬͯPerlී௨ʹΘΕ͍ͯͨࠒʣ • PerlҎ֎ͩͱRails͔Laravel͔Django͔ɺ͋Δ͍express͔తͳੈք • ੩తܕ͚ݴޠ͚ͩͲίʔυͷߏΛͯ͠ෳࡶੑͱઓ͏ • ن͕Ͱ͔͍ͱ͍ͬͯͦ͜·ͰͰͳ͍͜ͱଟ͍ •
σʔλϕʔε͕ϘτϧωοΫʹͳΓ͍͢ • PerlSQL࠷దԽ͕͍͢͠ํͷϞδϡʔϧ͕ಛʹྲྀߦͬͨ
͍·ͷWeb։ൃ • ੩తܕ͚ݴޠͰܕ҆શੑΛ୲อʹIDEͷαϙʔτΛಘͨߴͳ։ൃ • LSPͷීٴͰΑΓखܰʹIDE likeͳαϙʔτ͕ಘΒΕΔڥ͕ҰൠԽ • PlaywrightͳͲͰϒϥβؚΊͨE2EςετΛඋ • Public
Cloud͕ఏڙ͢ΔϥΠϒϥϦΛੵۃར༻ • ࢄσʔλϕʔεͷීٴͰσʔλϕʔεεέʔϥϒϧʢͳ͜ͱʣ
Perlͷ͍ॴͳ͘ͳͬͨʁ
Perlͷ͍ॴ·ͩ͋Δ
εΫϦϓτͷͨΊͷPerl • Perl͕ͦͷຊྖΛൃش͍ͯͨ͠ͱͱεΫϦϓτ • ଟ͘ͷWeb։ൃͷݱͰະͩʹଟͷεΫϦϓτΛඞཁͱ͢Δ • Perlଟ͘ͷڥͰ࠷ॳ͔ΒΠϯετʔϧ͞Ε͍ͯΔ • git͕ೖ͍ͬͯΔڥͰgit͕ґଘ͢ΔPerlೖ͍ͬͯΔ •
ͭ·ΓGithub ActionsͰͳΜηοτΞοϓ͠ͳͯ͘ಈ͘
ଞͷݴޠͱൺͯPerl͕͍͍ͷʁ • νʔϜʹΑΔʂʂʂʂʂʂʂʂʂ̍̍̍̍ʢͦΕͦ͏ʣ • Bash/Perl/Pyhton࠷ۙͲͷڥʹೖͬͯΔʢBash͕ଟ͍ʁʣ • BashΑΓPerlͷ΄͏͕ม੍ޚߏจͱ͖͍ͬͭ͢ʢͣʣ • Bashʹߏจ͕͍ۙͷͰͦ͏͍͏ҙຯͰͱ͖͍ͬͭ͢ʢͣʣ •
Better Shellͱͯ͠PerlΛ͏ͳΒɺͱ͍͏ͳ͠
※ݸਓͷײͰ͢
Better Shell Scriptͱͯ͠ PerlΛ͓͏
ͱ͍͑ͲΜͳ໘Ͱ͑Δʁ
࣮ફ͍ͯ͠ΔͷͰ͍͔ͭ͘ྫΛग़͢
࣮ྫूͷίʔφʔ
ΞΫηετʔΫϯऔಘ
ΞΫηετʔΫϯऔಘ • ύϥϝʔλΛ͚ͯcurlΛୟ͘ • ڥ͕͍͔ͭ͋͘ΔͷͰڥʹ͋ΘͤύϥϝʔλΛ͍͍ײ͡ʹઃఆ • OIDCͷclientIdΛΞϓϦέʔγϣϯͷઃఆ͔ΒҾͬுͬͯ͘Δ • ίʔϧόοΫURLͷΞΫηεΛड͚͚ͯΞΫηετʔΫϯΛు͘ •
ϩʔΧϧͷ҆શͳॴʹظݶʢ͍ʣ·ͰΩϟογϡ͢Δ
Πϝʔδ $ perl scripts/fetch_token.pl --env foo Login: https://auth.example/login (STDERR) aaaa.bbbbb.ccccccc
App EngineͷϚΠάϨʔγϣϯ
App EngineͷϚΠάϨʔγϣϯͱ • App EngineʹVersionͱ͍͏֓೦͕͋Δ • Cloud RunͰ͍͏ͱ͜ΖͷRevisionɺECSͰ͍͏ͱ͜ΖͷTaskDef(?) • ৽͘͠σϓϩΠͨ͠Versionʹରͯ͠τϥϑΟοΫΛͯΔੈք؍
• App Engine Admin APIͱ͍͏͕ͭ͋Δ • VersionؒͷϚΠάϨʔγϣϯΛ͢Δૢ࡞ΛAPI͔ΒͰ͖Δ
App EngineͷϚΠάϨʔγϣϯεΫϦϓτ • ෛՙ͕ߴ͍͍͖ͭͳΓϚΠάϨʔγϣϯ͢ΔͱSpin Up͕٧·Δ • 0.1%͚ͩτϥϑΟοΫΛͯͯIdle InstanceΛԹΊ͔ͯΒҠ͢ • Idle
Instance͕ेʹ૿͑Δ·Ͱͭ • Idle InstanceͷΛऔಘͯ͠ϙʔϦϯά • શ෦ͷτϥϑΟοΫΛ৽͍͠όʔδϣϯʹͯΔ • ͜ΕΛcurlͱPerlΛΈ߹ΘͤͯΔ
Πϝʔδ $ perl scripts/migrate.pl --env foo --version v24 Set min-idle-instances
... DONE Migrate 0.1% v23 -> v24 ... DONE Waiting for warmup ....... DONE Migrate 100% v23 -> v24 ... DONE Complete!
k8sͷϚχϑΣετੜ
k8sͷϚχϑΣετੜ • k8sͷpodΛൃࣹͱͯ͠ෛՙࢼݧΛ͍ͯͨ͠ • ෛՙࢼݧͷ݅ʹΈ߹ΘͤͷόϦΤʔγϣϯ͕͋ͬͨ • શ෦ผͷϑΝΠϧʹ͢Δͱมߋ͕ͭΒ͍͍ͬͨ͠Μࡶʹ༻ҙ͍ͨ͠ • PerlͰจࣈྻ࿈݁Ͱੜ •
Here Doc͕͑ΔͷͰ͋Μ·ΓࠈͬΆ͞ͳ͍
Πϝʔδ $ perl scripts/gen_loadtest_k8s_manifest.pl --env foo --scenario hoge
APIϨϕϧͰͷϨεϙϯεࠩ֬ೝ ʢผόʔδϣϯʹର͢Δʣ
APIϨϕϧͰͷϨεϙϯεࠩ֬ೝ • App EngineVersionΛ࡞ͬͯͦ͜ͷτϥϑΟοΫΛͯΔελΠϧ • τϥϑΟοΫΛͯΔલͷVersionʹରͯ͠ΞΫηε͕Մೳ(!) • τϥϑΟοΫΛͯΔ·͑ʹAPIΛୟ͍ͯϨεϙϯεJSONΛอଘ • APIcurlͰୟ͘
• diff -ur before after Έ͍ͨͳײ͡Ͱ֬ೝ
Πϝʔδ $ perl scripts/regression.pl --env prod --version v23 --name before
GET /api/foo -> 200 OK ... DONE! $ perl scripts/regression.pl --env prod --version v24 --name after GET /api/foo -> 200 OK ... DONE! $ diff -ur before after
োରԠௐࠪ
োରԠௐࠪ • ͍ࣺͯͷεΫϦϓτ • Өڹ݅Λௐࠪͨ͠Γ • ϩά͕ଟ͍ͷͰෳͷϓϩηεʹforkͯ͠ूܭͨ͠Γ • ͍͍ͨͯBigQueryͱ͔ͰͬͨΒ͕͑͑ •
ͦ͏͍͔ͳ͍͜ͱ͋Γɻɻ
·ͱΊ
·ͱΊ • Web։ൃͰPerlͷग़൪೦ͳ͕Βݮ͍ͬͯΔ • ͰɺBetter Shellͱͯ͠ͷPerlࣗ৴Λ͓࣋ͬͯ͢͢ΊͰ͖Δ • Bashͱͷଓੑͷྑ͍άϧʔݴޠͱͯ͠ͷPerlͷྑ͕͋͞Δ • ࣮Ͱ͍ΖΜͳ໘Ͱ׆͖Δ
• ͍͖ͬͯ·͠ΐ͏