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
0
45
Perl Meets \w+ あるいは開発を支えるPerl活用の実例集
YAPC::Fukuoka 非公式リジェクトコン 2025
https://smarthr.connpass.com/event/376033/
karupanerura
December 09, 2025
Tweet
Share
More Decks by karupanerura
See All by karupanerura
log
karupanerura
1
88
Use Perl as Better Shell Script
karupanerura
0
840
GoでParserを書く
karupanerura
4
1k
マイ隙間家具OSSたちのご紹介
karupanerura
2
270
Mustache Template 話 2024
karupanerura
0
50
1つの言語を原点に色々な言語を学ぶということ
karupanerura
4
3.2k
Javaの実装をPerlでテストする
karupanerura
0
1.3k
Go Generics Overview
karupanerura
0
1.4k
Japan.pm 2021 開催まで至る道
karupanerura
0
2.2k
Other Decks in Programming
See All in Programming
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
340
PC-6001でPSG曲を鳴らすまでを全部NetBSD上の Makefile に押し込んでみた / osc2025hiroshima
tsutsui
0
210
TestingOsaka6_Ozono
o3
0
280
Fragmented Architectures
denyspoltorak
0
120
高速開発のためのコード整理術
sutetotanuki
1
250
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
370
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
3.4k
Vibe codingでおすすめの言語と開発手法
uyuki234
0
180
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
110
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
1
230
ELYZA_Findy AI Engineering Summit登壇資料_AIコーディング時代に「ちゃんと」やること_toB LLMプロダクト開発舞台裏_20251216
elyza
2
1.2k
Grafana:建立系統全知視角的捷徑
blueswen
0
300
Featured
See All Featured
How GitHub (no longer) Works
holman
316
140k
We Have a Design System, Now What?
morganepeng
54
8k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Marketing to machines
jonoalderson
1
4.5k
エンジニアに許された特別な時間の終わり
watany
106
230k
A Tale of Four Properties
chriscoyier
162
24k
Statistics for Hackers
jakevdp
799
230k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
260
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
51
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
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ͷྑ͕͋͞Δ • ࣮Ͱ͍ΖΜͳ໘Ͱ׆͖Δ
• ͍͖ͬͯ·͠ΐ͏