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
夢を詰め込む話@PHP BLT#5
Search
Sota Sugiura
July 20, 2016
Technology
2
2.4k
夢を詰め込む話@PHP BLT#5
PHPP BLT#5で発表しました。
Sota Sugiura
July 20, 2016
Tweet
Share
More Decks by Sota Sugiura
See All by Sota Sugiura
内製したSlack Appで頑張るIncident Response@Waroom Meetup #1 / Incident Response with Slack App in 10X
sota1235
0
1.4k
20220926_セキュリティチームの今_for_Drs._Prime_公開用.pdf
sota1235
0
98
再発防止策を考える技術 / #phpconsen
sota1235
10
3.8k
How to choose the best npm module for your team?
sota1235
9
570
Realtime Database for high traffic production application
sota1235
7
3.9k
Road to migrate JP Web as a microservice
sota1235
4
1.6k
インターフェース再入門 / Think Interface again
sota1235
6
10k
再発防止策を考える技術 #phpconfuk_rej
sota1235
1
1.2k
Update around Firebase #io18
sota1235
3
4.3k
Other Decks in Technology
See All in Technology
設計を積み重ねてシステムを刷新する
sansantech
PRO
0
160
EMConf JP 2025 懇親会LT / EMConf JP 2025 social gathering
sugamasao
2
190
OPENLOGI Company Profile
hr01
0
60k
2/18 Making Security Scale: メルカリが考えるセキュリティ戦略 - Coincheck x LayerX x Mercari
jsonf
0
170
PHPカンファレンス名古屋-テックリードの経験から学んだ設計の教訓
hayatokudou
2
540
AIエージェント時代のエンジニアになろう #jawsug #jawsdays2025 / 20250301 Agentic AI Engineering
yoshidashingo
8
3.5k
実は強い 非ViTな画像認識モデル
tattaka
2
1.2k
4th place solution Eedi - Mining Misconceptions in Mathematics
rist
0
140
IAMのマニアックな話2025
nrinetcom
PRO
1
130
アジャイルな開発チームでテスト戦略の話は誰がする? / Who Talks About Test Strategy?
ak1210
1
490
組織におけるCCoEの役割とAWS活用事例
nrinetcom
PRO
4
120
"TEAM"を導入したら最高のエンジニア"Team"を実現できた / Deploying "TEAM" and Building the Best Engineering "Team"
yuj1osm
1
120
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.5k
Docker and Python
trallard
44
3.3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.7k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Why Our Code Smells
bkeepers
PRO
336
57k
Optimising Largest Contentful Paint
csswizardry
34
3.1k
Done Done
chrislema
182
16k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
46
2.3k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
Faster Mobile Websites
deanohume
306
31k
The Invisible Side of Design
smashingmag
299
50k
Transcript
ເΛ٧ΊࠐΉ !TPUB 1)1#-5!(.0
ࣗݾհ w ਿӜᰜଠ ͖ΓΜͱݺΜͰ͍ͩ͘͞ w !TPUB w ࣾձ1)1
Έͳ͞Μ
ΞʔΧΠϒͯ͠·͔͢ʁ
ࡢࠓͷ8FCΞϓϦέʔγϣϯ w ʮDPNQPTFSJOTUBMM͓ئ͍͠·͢ʯ w ʮ͋͋ɺઃఆϑΝΠϧΛผ్Ճͯ͠ʯ w ʮHJUDMPOFͯ͠ΞϨͯ͠ίϨͯ͠Ϗϧυͯ͠ʯ
ࡢࠓͷ8FCΞϓϦέʔγϣϯ w ʮDPNQPTFSJOTUBMM͓ئ͍͠·͢ʯ w ʮ͋͋ɺઃఆϑΝΠϧΛผ్Ճͯ͠ʯ w ʮHJUDMPOFͯ͠ΞϨͯ͠ίϨͯ͠Ϗϧυͯ͠ʯ ΊΜͲ͍͘͞
࣌ϙʔλϏϦςΟ w Ϗϧυ͍ͨ͠Μ͡ΌͶ͐Α w ŰƄŕͱམͱͯ͠ŰƄŕͬͱ͍ͯ͐ΜͩΑ w ංେ͢Δ3&"%.&͓Βݏͩ͊ʙ
ͦ͏͍͑ ŰƄŕͱམͱͯ͠ŰƄŕͱ͑Δ1)1FSͷຯํ͋ͬͨΑͶ
DPNQPTFSQIBS
DPNQPTFSQIBS w 1)1ͷύοέʔδཧπʔϧ w XHFU͢Ε͙͢ʹ͑Δ
Ͳ͏ͯ͠ŰƄŕͬͱ͑Δͷʁ
DPNQPTFSQIBS
DPNQPTFSQIBS ո͍͠
QIBS GSPNQIQOFU QIBS֦ுϞδϡʔϧɺ1)1ΞϓϦέʔγϣϯશମΛͻͱͭͷQIBS 1)1"SDIJWF ϑΝΠ ϧʹ·ͱΊͯ͠·͍ɺΠϯετʔϧΛ༰қʹ͢ΔͨΊͷͷͰ͢ɻͦΕ͚ͩͰͳ͘ɺQIBS ֦ுϞδϡʔϧͰϑΝΠϧϑΥʔϚοτΛநԽ͢Δػೳఏڙ͓ͯ͠ΓɺUBSܗࣜ[JQܗࣜ ͷϑΝΠϧΛ1IBS%BUBΫϥεͰѻ͏͜ͱ͕Ͱ͖·͢ɻͪΐ͏Ͳ1%0͕͞·͟·ͳσʔλϕʔε ͷ౷ҰΠϯλʔϑΣΠεΛ༻ҙ͍ͯ͠Δͷͱಉ͡Α͏ͳͷͰ͢ɻ1%0ͰҟͳΔσʔλϕʔε ؒͷมͰ͖·ͤΜ͕ɺQIBSͰUBSɺ[JQɺQIBSϑΝΠϧϑΥʔϚοτؒͷม͕ίʔυ
ߦ͚ͩͰͰ͖ͯ͠·͍·͢ɻྫͱͯ͠1IBSDPOWFSU5P&YFDVUBCMF Λࢀর͍ͩ͘͞ɻ 1IBSͬͯԿ 1IBSΞʔΧΠϒɺෳͷϑΝΠϧΛͻͱͭʹ·ͱΊΔͨΊͷศརͳΈͰ͢ɻ 1IBSΞʔΧΠϒΛ༻͢Εɺ1)1ͷΞϓϦέʔγϣϯΛͻͱͭͷϑΝΠϧͱͯ͠Ͱ͖ΔΑ ͏ʹͳΓ·͢ɻ·ͨɺͦΕΛσΟεΫ্ʹల։͠ͳͯͦ͘ͷ··࣮ߦͰ͖ΔͷͰ͢ɻ͞Βʹɺଞ ͷϑΝΠϧͱಉ༷ʹ1)1͔ΒQIBSΞʔΧΠϒΛ࣮ߦ͢Δ͜ͱ͕Ͱ͖·͢ɻίϚϯυϥΠϯͱΣ ϒαʔόʔܦ༝ͷͲͪΒͰ࣮ߦՄೳͰ͢ɻQIBSɺ͍Θ1)1ΞϓϦέʔγϣϯʹ͓͚Δ UIVNCESJWFͷΑ͏ͳͷͰ͢ɻ 1IBS͜ͷػೳΛ࣮͢ΔͨΊʹετϦʔϜϥούʔΛ༻͍ͯ͠·͢ɻ௨ৗɺ1)1εΫϦ ϓτ͔Β֎෦ͷϑΝΠϧΛ༻͢ΔʹJODMVEFΛ༻͍·͢ɻ IUUQQIQOFUNBOVBMKBJOUSPQIBSQIQΑΓग़య
ߦͰ w ΞϓϦέʔγϣϯΛͭʹΞʔΧΠϒͰ͖Δ w 1)1ͰUBS [JQͱಉ͡Α͏ʹѻ͑Δ w ղౚ͠ͳͯͦ͘ͷ··࣮ߦՄೳ
ෳϑΝΠϧΛͻͱ·ͱΊʹ͢Δ ͍͢͝ϠπΒ͍͠
ͲΕ͘Β͍͍͢͝ͷʁ
ݕূͯ͠Έͨ w DPNQPTFSʹͲΕ͘Β͍ͷເ͕٧·ͬͯΔͷ͔ w $PNQPTFSa$PNQJMFSͰDPNQPTFSQIBSΛ ࡞ͬͯΔͬΆ͍ w ϑΝΠϧΛ͑ΔΧϯλʔࠐΜͰίϯύΠ ϧͯ͠Έͨ
ࡶʹݕূ <?php class Compiler { /* লུ */ private $counter
= 0; public function compile($pharFile = 'composer.phar') { /* লུ */ echo $this->counter; } private function addFile($phar, $file, $strip = true) { $this->counter++; /* লུ */ }
࣮ߦ݁Ռ ※ 実際の数はこれより多いはず ※ 非常に雑な検証です。多いことが伝わればおk
Ҏ্ͷເ͕٧·ͬͯΔ w ຊདྷͳΒϏϧυ͠ͳ͍ͱಈ͔ͳ͍ w 1)"3ܗࣜͰ͢Δ͜ͱͰ࠷ڧͷϙʔλϏϦ ςΟΛखʹͨ͠ w ΞʔΧΠϒJTເ
ࢲΞʔΧΠϒ͍ͨ͠ ứʆ
ΞʔΧΠϒͯ͠ΈΑ͏ w ϑΝΠϧΛѹॖͯ͠ΈΔ w QIQίϚϯυͰ࣮ߦͰ͖ΔΑ͏ʹ͢Δ
ѹॖ͢ΔͭΒ <?php // app.php require __DIR__ . '/calculate.php'; echo add(1,
3); <?php // calculate.php function add($a, $b) { return $a + $b; }
QIBS࡞ίʔυ <?php // pharϑΝΠϧ࡞ $phar = new Phar('app.phar'); // ΞʔΧΠϒʹϑΥϧμՃ
$phar->buildFromDirectory(__DIR__); // ىಈ࣌ʹ࣮ߦ͞ΕΔελϒΛઃఆ $phar->setStub(createStub()); function createStub() { return <<<'EOD' <?php require 'phar://app.phar/app.php'; __HALT_COMPILER(); EOD; }
Ͱ͖ͨʂ
ເΛΞʔΧΠϒͰ͖ͨ w ൺֱతΧϯλϯʹѹॖͰ͖Δ w 1IBSXFC1IBSΛ༻͢Ε)551ϦΫΤετ Α͠ͳʹͬͯ͘ΕΔ w WFOEPSԼΛΑ͠ͳʹݻΊΔϥΠϒϥϦͳΜ ͔ଘࡏ͢ΔΑ
·ͱΊ w 1IBSෳϑΝΠϧΛͬ͘͞ͱݻΊΔͭ w ϙʔλϏϦςΟ໘Ͱݴ͏ͱ࠷ߴͰ w 8&#'8ͱ͔ΛΞʔΧΠϒཧ্Մೳ w ࣍·Ͱͷ॓ʹ͓͖ͯ͠·͢ʜcТɾA
Ҏ্ʂ