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と「今」を組み合わせ、開発を継続し続ける方法
Search
Kazuhiko Yamashita
July 01, 2017
Programming
1
2.4k
レガシーPerlと「今」を組み合わせ、開発を継続し続ける方法
YAPC::Fukuoka 2017 HAKATAでロリポップのコアAPIについて話しました。
Kazuhiko Yamashita
July 01, 2017
Tweet
Share
More Decks by Kazuhiko Yamashita
See All by Kazuhiko Yamashita
新しい職場の CI が 20 分かかっていたらあなたならどうする?
pyama86
1
1.3k
事業を差別化する技術を生み出す技術
pyama86
4
1.7k
Re:Define 可用性を支える モニタリング、パフォーマンス最適化、そしてセキュリティ
pyama86
9
8.3k
AI時代におけるSRE、 あるいはエンジニアの生存戦略
pyama86
6
1.7k
Tuning GraphQL on Rails
pyama86
2
2k
ttlcacheのここがスゴい
pyama86
1
160
クラウドサービスの 利用コストを削減する技術 - 円安の真南風を感じて -
pyama86
3
620
実践ARMアーキテクチャ移行
pyama86
2
2.5k
リモートワーク時代の守護神 PHP開発者のためのセキュリティ強化術
pyama86
3
1.3k
Other Decks in Programming
See All in Programming
ペアプロ × 生成AI 現場での実践と課題について / generative-ai-in-pair-programming
codmoninc
2
18k
チームのテスト力を総合的に鍛えて品質、スピード、レジリエンスを共立させる/Testing approach that improves quality, speed, and resilience
goyoki
5
890
Python型ヒント完全ガイド 初心者でも分かる、現代的で実践的な使い方
mickey_kubo
1
120
なぜ「共通化」を考え、失敗を繰り返すのか
rinchoku
1
650
MDN Web Docs に日本語翻訳でコントリビュートしたくなる
ohmori_yusuke
1
120
AIエージェントはこう育てる - GitHub Copilot Agentとチームの共進化サイクル
koboriakira
0
590
“いい感じ“な定量評価を求めて - Four Keysとアウトカムの間の探求 -
nealle
1
10k
20250628_非エンジニアがバイブコーディングしてみた
ponponmikankan
0
690
プロダクト志向なエンジニアがもう一歩先の価値を目指すために意識したこと
nealle
0
130
ソフトウェア品質を数字で捉える技術。事業成長を支えるシステム品質の マネジメント
takuya542
1
13k
Systèmes distribués, pour le meilleur et pour le pire - BreizhCamp 2025 - Conférence
slecache
0
120
すべてのコンテキストを、 ユーザー価値に変える
applism118
3
1.3k
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Embracing the Ebb and Flow
colly
86
4.7k
Agile that works and the tools we love
rasmusluckow
329
21k
Raft: Consensus for Rubyists
vanstee
140
7k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
BBQ
matthewcrist
89
9.7k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
A better future with KSS
kneath
238
17k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.9k
Transcript
ʙ1FSMόϦόϦॻ͚Δͬͯਧ͍ͯϖύϘʹೖࣾ͠·ͨ͠ʙ ࢁԼ(.01FQBCP *OD :"1$'VLVPLB)","5" ϨΨγʔ1FSMͱʮࠓʯΛΈ߹ Θͤɺ։ൃΛܧଓ͠ଓ͚Δํ๏
IUUQTUFOTOBQPODPN νʔϑςΫχΧϧϦʔυ ࢁԼ!QZBNB ϗεςΟϯάࣄۀ෦
IUUQTUOTKQ
None
࠷ॳʹ͓͑͠·͢ɺ όʔδϣϯΞοϓ͠ͳ͍ଆͷ ਓؒͰ͢
ϩϦϙοϓͷ؆қγεςϜߏਤ 1FSM ϩϦϙοϓͷίΞ"1*1FSM .Z42-4FSWFS 'SPOU"1* 3BJMT ;FOE ਃ͠ࠐΈαΠτ ίΞ"1*
ϑϩϯτ"1* ϗεςΟϯάαʔό܈ .BJM4FSWFS 8FC4FSWFS ܖใαʔόใΛ ίϯτϩʔϧ αʔόϓϩϏδϣχϯάͷ ࣮ߦࢦࣔ
None
wඇৗʹγϯϓϧͳ"1*Ͱ͋ΔͨΊɺੵۃతͳόʔδϣϯΞοϓͷಈػ ͕ͳ͔ͬͨ w෦"1*ͳͷͰɺϑϩϯτܥαʔόͱൺΔͱɺόʔδϣϯΞοϓͷ ༏ઌ͕Լ͕ͬͯ͠·͏ w$1"/ͱͷဃ͕େ͖͘ͳΓɺͲΜͲΜόʔδϣϯΞοϓ͕ࠔʹ ͳ͍͖ͬͯɺಈ͖͕औΕͳ͍ ϖύϘݻ༗ͷࣄ ͳͥ1FSM
wόʔδϣϯΞοϓίετΛ͏ʹͯ͠ɺ1FSMͷॻ͖खΛूΊΔ͜ͱ ͕ͦΕͳΓʹࠔͰ͋Δ w৽ن։ൃҊ݅Ͱ1FSM͕બࢶʹೖΓͮΒ͍͜ͱ͔Βࢢʹগͳ͍ wࣾʹ͓͍ͯϝϯςφ͕ඇৗʹݶΒΕ͖ͯͭͭ͋Γɺݹࢀϝϯόʔ ͔ଞݴޠͰͦΕͳΓʹ࿅͕͋ΔΤϯδχΞ 1FSMͷࣄ ͳͥ1FSM
ϩϦϙοϓʂ·ͩ·ͩաఔ αʔϏε͕ਐԽ͢ΔͳΒɺ "1*ܧଓత։ൃ͕ඞཁ
ܧଓత։ൃΛߦ͏ͨΊʹΓӽ͑ͨͷ wڞ༻αʔόΛར༻ͨ͠։ൃڥ wϝϯςφϯε͞Ε͍ͯͳ͍Ϣχοτςετ wΦϖϨʔγϣϯͷΦʔτϝʔγϣϯԽ
ڞ༻αʔόΛར༻ͨ͠։ൃڥ
ڞ༻αʔόΛར༻ͨ͠։ൃڥ %FW"1* .Z42-4FSWFS .BJM4FSWFS 8FC4FSWFS ैདྷ ։ൃڥΛίϯςφԽ͠ɺ ڞ༻ʹΑΔϦιʔεڝ߹Λແ͘͢ $POUBJOFS ݱࡏ
%FW"1* .Z42- 4FSWFS .PDL.BJM .PDL8FC
ڞ༻αʔόΛར༻ͨ͠։ൃڥ 1FSMͷڥ͔ΒUBSH[Ͱ ϞδϡʔϧΛશͯநग़͠ίϯςφԽ $ tar zcvf site_perl.tar.gz /usr/lib64/perl5/site_perl/5.8.8 # in
docker # tar zxvf site_perl.tar.gz # docker commit xxxxx private.pepabo.com/coreapi:latest
ϝϯςφϯε͞Ε͍ͯͳ͍ Ϣχοτςετ
ϝϯςφϯε͞Ε͍ͯͳ͍Ϣχοτςετ ଞͷίϯϙʔωϯτͱີ݁߹ͳͷͰ ςετ͕ॻ͖ͮΒ͍ɺࣦഊ͍͢͠ %FW"1* 8FC4FSWFS XFCFYBNQMFKQ ਃ͠ࠐΈ 8FCαʔόʹFYBNQMFKQͷ σΟϨΫτϦΛ࡞ 8FCαʔόͷਃࠐΈςετ
FYBNQMFKQͷਃࠐใ͕%#ʹ͋Δͳ͍ 8FC4FSWFSͱଓ͞Ε͍ͯΔ͍ͳ͍ 8FC4FSWFSͷσΟϨΫτϦ͋Δͳ͍
ϝϯςφϯε͞Ε͍ͯͳ͍Ϣχοτςετ .PDLԽ %#ͷঢ়ଶΛ࣋ͨͳ͍
ϝϯςφϯε͞Ε͍ͯͳ͍Ϣχοτςετ 5FTU.PDL(VBSEΛར༻͠ɺ ֎෦ίϯϙʔωϯτશͯ.PDLԽ my $mock = mock_guard(‘Hosting::Server::API::Ext', +{ run =>
sub { my($self, $params) = @_; switch ($params->{'parameters'}) { case /—domain=example.com/ { return { key => $dummy_key, }; } } }, });
ϝϯςφϯε͞Ε͍ͯͳ͍Ϣχοτςετ 5FTUNZTRMEΛར༻͠ɺ ςετσʔλͷিಥΛճආ͢Δ sub new { my %self; my $class
= shift; $self->{mysqld} = Test::mysqld->new(my_cnf => {'port' => '3306'}, copy_data_from => 't/data/mysql'); $self->{dbh} = DBI->connect($self->{mysqld}->dsn, '', '') or die 'cannot connect to db'; return bless $self, $class; } UEBUBNZTRM .Z42- UFTUDBTF" UFTUDBTF# .Z42- ϕʔεσʔλΛݩʹ ৽نΠϯελϯεىಈ ςετέʔε͝ͱʹ༻͢Δ %#͕ҟͳΔͨΊ ΫϦʔχϯά͕ෆཁ
ϝϯςφϯε͞Ε͍ͯͳ͍Ϣχοτςετ 5FTU%#MPBE@pYUVSFΛར༻͠ɺ ςετϨίʔυͷ४උΛ༰қʹͨ͠ UEBUBNZTRM .Z42- UFTUDBTF" UFTUDBTF# .Z42- ϕʔεσʔλΛݩʹ ৽نΠϯελϯεىಈ
DBTF@BZNM EPNBJOFYBNQMFDPN VTFSVTFS@ QBUIIPNFVTFS@ ʜ
ϝϯςφϯε͞Ε͍ͯͳ͍Ϣχοτςετ %SPOFJPͰࣗಈςετ࣮ߦ IUUQTXXXTMJEFTIBSFOFUVE[VSBESPOFJP PQFOTUBDL %PDLFS4XBSN 7. ESPOFJP 7. 7. 7.
7. 7. 7.
ΦϖϨʔγϣϯͷ ΦʔτϝʔγϣϯԽ
ΦϖϨʔγϣϯͷΦʔτϝʔγϣϯԽ MJHIUIUUQEͷ੍͕͋Γɺ खಈͰσϓϩΠ͢Δӡ༻ σϓϩΠαʔόʹϩάΠϯ͠ɺHJUDMPOF EFQMPZTIΛ࣮ߦ͢Δ ରతϓϩϯϓτʹΑΓHJUQVMMͳͲΛ࣮ߦ STZODͰσϓϩΠઌʹ ػܥαʔόͷGBTUDHJɺMJHIUUQEΛ࠶ىಈ खಈͰಈ࡞֬ೝ ݱ༻ܥαʔόͷGBTUDHJɺMJHIUUQEΛ࠶ىಈ
σϓϩΠखॱ खॱ͕ଟ͘ɺ͕͔͔࣌ؒΔɺଋറ͞ΕΔ ಈ࡞֬ೝ͕ਓʹґଘ͍ͯ͠Δ ࠶ىಈ࿙ΕͳͲΛ͙͜ͱ͕ग़དྷͳ͍ ՝
$BQJTUSBOP
ΦϖϨʔγϣϯͷΦʔτϝʔγϣϯԽ $BQJTUSBOPΛར༻͠ɺ σϓϩΠ͔Βಈ࡞֬ೝ·ͰΛࣗಈԽ CVOEMFFYFD TUBHJOHEFQMPZ KFOLJOKPC TMBDLOPUJGZ CVOEMFFYFD QSPEVDUJPOEFQMPZ εςʔδϯάσϓϩΠޙɺ
MJHIUUQEGBTUDHJͷ࠶ىಈ ࣗಈͰΠϯςάϨʔγϣϯςετΛ ࣮ߦ ςετͷ݁ՌΛ4MBDL௨ ਖ਼ৗͰ͋Εຊ൪ڥ σϓϩΠ
ΦϖϨʔγϣϯͷΦʔτϝʔγϣϯԽ ͋ΒΏΔΦϖϨʔγϣϯΛ 3BLFͰ࣮ݱ ɾSBLFEFQMPZσϓϩΠͷҰ࿈ͷྲྀΕΛ࣮ߦ ɾSBLFEPDLFS։ൃڥͷEPDLFSΛىಈ ɾSBLFEC%#εΩʔϚͷߋ৽
͜Ε͘Β͍Δͱɺ ʮ͜ΕͳΜ͔։ൃग़དྷΔΜ͡ΌͶʁʯ ײ͕ৢ͞ΕΔ
ʑ։ൃӡ༻͢Δٕज़ΑΓྑ͍ͷΛબͼ͍ͨ ։ൃ͕ग़དྷΔঢ়ଶʹͳͬͨͱͯ͠ ָ؍తͳঢ়گͰͳ͍ w1FSMΛ͍ଓ͚Δ߹ɺ࠷৽ͷઃܭɺϞδϡʔϧΛར༻͢Δػձ ͳ͍ wϝϯςφ͕ݮΔͱ͍͏͜ͱɺকདྷతʹةػతঢ়گΛট͘Մೳੑ͕ ͋Δ
/FYU4UFQ (PMBOH
8IZ 3VTUͱൺͯใྔ͕ଟ͍͜ͱɺ ग़དྷΔ͜ͱͷࠩҟ͕গͳ͍ wੈքతʹීٴͨ͠എܠ͕͋Γɺຊޠͷใ๛Ͱ͋Δ wՄൖੑ͕ඇৗʹߴ͍ͨΊɺӡ༻4IFMMͷஔ͖͑ʹద͍ͯ͠Δ wϗεςΟϯάαʔό͕ࡐͳͷͰɺςετͷͳ͍πʔϧ͍ͨ͘ ͳ͍ wงғؾͰ͍͍ͩͨ ߴʹಈ͘
ϑϨʔϜϫʔΫͷબ طଘͷॲཧ͕ඇৗʹγϯϓϧͰ͋ΔͨΊ &DIPΛબͨ͠ wখ͞ͳϓϩδΣΫτͰ3FWFMͱ&DIPΛൺֱ։ൃͨ͠ w3FWFMόονॲཧͳͲαϙʔτ͓ͯ͠Γɺ3BJMTͬΆ͋ͬͨ͞ ͕ɺ֮͑Δ͜ͱଟ͍ w&DIP࣮͕ബ͘ɺϛυϧΣΞ͕ॻ͖͍͢ɺ͋ΔఔεΫϦϓ ςΟϯά͕ඞཁͳ͜ͱͰϝϯόʔͷ(PMBOHͷशಘʹͪΐ͏Ͳྑ͍ ϘϦϡʔϜʹࢥ͑ͨ
ࠔ͍ͬͯΔ͜ͱ (PMBOHͰ03.݁ߏͭΒ͍ w42-ΛͳΔ͘ॻ͖ͨ͘ͳ͔ͬͨͷͰɺHPSNΛબͨ͠ w"DUJWF3FDPSEͰҭͬͨͷͰɺϦϨʔγϣϯͷख͕ؒ݁ߏͭΒ͍ w3FMBUFE1SFMPBEͳͲϦϨʔγϣϯઌͷϨίʔυΛऔಘ͢Δํ๏͕ ෳ͋ͬͯɺ(PMBOHͬΆ͘ͳ͍ wϞσϧͷҾ͕੩తܕ͚ͳͨΊѻ͍ͮΒ͍͜ͱ͔Βɺ$POUSPMMFS͕ %#ʹؔ৺Λ࣮͕࣋ͭੈͷதʹଟ͍
CVU ͔͠͠
݁Ռͱͯ͠গͮͭ͠ΠϯϑϥνʔϜʹ (PMBOH͕͖ࠜॳΊɺ ςετΛॻ͘श׳͍͖ͭͯͨ
࠷ޙʹ wܧଓత։ൃ͕Մೳͳঢ়گ͕࡞ΕΔɺηΩϡϦςΟతͳ ཁ͕݅ͳ͚ΕແཧʹόʔδϣϯΛ্͛Δඞཁͳ͍ wࡢࠓͷݴޠͷݯྲྀ1FSMʹ͋Δͱײ͡Δ͘Β͍1FSMʹ Ϟδϡʔϧॆ࣮ͯ͠ΔͷͰࠓ෩ʹͳΕΔ w/FYU4UFQྲྀߦΓ͚ͩͰͳ͘ɺνʔϜϚονϯά ߟ͑ͨબΛ͠Α͏
܅ϖύϘͰಇ͔ͳ͍͔ʁ ࠷৽ͷ࠾༻ใΛνΣοΫˠ !QC@SFDSVJU