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
53
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
89
Use Perl as Better Shell Script
karupanerura
0
860
GoでParserを書く
karupanerura
4
1k
マイ隙間家具OSSたちのご紹介
karupanerura
2
280
Mustache Template 話 2024
karupanerura
0
53
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
今から始めるClaude Code超入門
448jp
8
9.1k
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
5
800
登壇資料を作る時に意識していること #登壇資料_findy
konifar
4
1.7k
AI時代の認知負荷との向き合い方
optfit
0
170
ノイジーネイバー問題を解決する 公平なキューイング
occhi
0
110
AI巻き込み型コードレビューのススメ
nealle
2
1.5k
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
480
ぼくの開発環境2026
yuzneri
0
250
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
230
2026年 エンジニアリング自己学習法
yumechi
0
140
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
NetBSD+Raspberry Piで 本物のPSGを鳴らすデモを OSC駆動の7日間で作った話 / OSC2026Osaka
tsutsui
1
100
Featured
See All Featured
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
140
Joys of Absence: A Defence of Solitary Play
codingconduct
1
290
The SEO Collaboration Effect
kristinabergwall1
0
360
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
110
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
68
The untapped power of vector embeddings
frankvandijk
1
1.6k
AI: The stuff that nobody shows you
jnunemaker
PRO
2
280
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.6k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
72
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ͷྑ͕͋͞Δ • ࣮Ͱ͍ΖΜͳ໘Ͱ׆͖Δ
• ͍͖ͬͯ·͠ΐ͏