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
77
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
93
log
karupanerura
1
110
Use Perl as Better Shell Script
karupanerura
0
920
GoでParserを書く
karupanerura
4
1.1k
マイ隙間家具OSSたちのご紹介
karupanerura
2
300
Mustache Template 話 2024
karupanerura
0
68
1つの言語を原点に色々な言語を学ぶということ
karupanerura
4
3.6k
Javaの実装をPerlでテストする
karupanerura
0
1.4k
Go Generics Overview
karupanerura
0
1.4k
Other Decks in Programming
See All in Programming
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
220
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
320
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
140
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
450
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
14
6k
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
210
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
150
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
140
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
7.1k
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.5k
AIで効率化できた業務・日常
ochtum
0
160
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
160
Featured
See All Featured
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
400
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
160
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
400
Statistics for Hackers
jakevdp
799
230k
Into the Great Unknown - MozCon
thekraken
41
2.6k
It's Worth the Effort
3n
188
29k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
240
Documentation Writing (for coders)
carmenintech
77
5.4k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Discover your Explorer Soul
emna__ayadi
2
1.2k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
880
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
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ͷྑ͕͋͞Δ • ࣮Ͱ͍ΖΜͳ໘Ͱ׆͖Δ
• ͍͖ͬͯ·͠ΐ͏