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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
karupanerura
December 09, 2025
Programming
69
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
87
log
karupanerura
1
110
Use Perl as Better Shell Script
karupanerura
0
910
GoでParserを書く
karupanerura
4
1.1k
マイ隙間家具OSSたちのご紹介
karupanerura
2
290
Mustache Template 話 2024
karupanerura
0
67
1つの言語を原点に色々な言語を学ぶということ
karupanerura
4
3.5k
Javaの実装をPerlでテストする
karupanerura
0
1.4k
Go Generics Overview
karupanerura
0
1.4k
Other Decks in Programming
See All in Programming
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
120
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
250
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
130
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
3.5k
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
650
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
120
LLM Plugin for Node-REDの利用方法と開発について
404background
0
170
AI時代のUIはどこへ行く?その2!
yusukebe
19
7k
CSC307 Lecture 17
javiergs
PRO
0
320
CLIであることを活かしたGitHub Copilot CLI活用術 / GitHub Copilot CLI Pro Tips & Tricks
nao_mk2
1
1.2k
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
320
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
520
Featured
See All Featured
The Curse of the Amulet
leimatthew05
1
13k
The SEO Collaboration Effect
kristinabergwall1
1
480
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
320
Building Applications with DynamoDB
mza
96
7.1k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
220
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
480
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Site-Speed That Sticks
csswizardry
13
1.2k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Why Our Code Smells
bkeepers
PRO
340
58k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
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ͷྑ͕͋͞Δ • ࣮Ͱ͍ΖΜͳ໘Ͱ׆͖Δ
• ͍͖ͬͯ·͠ΐ͏