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.7k
20220926_セキュリティチームの今_for_Drs._Prime_公開用.pdf
sota1235
0
150
再発防止策を考える技術 / #phpconsen
sota1235
10
3.9k
How to choose the best npm module for your team?
sota1235
9
610
Realtime Database for high traffic production application
sota1235
7
4.1k
Road to migrate JP Web as a microservice
sota1235
4
1.7k
インターフェース再入門 / Think Interface again
sota1235
6
11k
再発防止策を考える技術 #phpconfuk_rej
sota1235
1
1.3k
Update around Firebase #io18
sota1235
3
4.4k
Other Decks in Technology
See All in Technology
Observability — Extending Into Incident Response
nari_ex
2
750
最近読んで良かった本 / Yokohama North Meetup #10
mktakuya
0
400
CloudComposerによる大規模ETL 「制御と実行の分離」の実践
leveragestech
0
160
パフォーマンスチューニングのために普段からできること/Performance Tuning: Daily Practices
fujiwara3
2
200
触れるけど壊れないWordPressの作り方
masakawai
0
650
GCASアップデート(202508-202510)
techniczna
0
260
AIエージェントによる業務効率化への飽くなき挑戦-AWS上の実開発事例から学んだ効果、現実そしてギャップ-
nasuvitz
5
1.6k
SREのキャリアから経営に近づく - Enterprise Risk Managementを基に -
shonansurvivors
1
720
AI時代に必要なデータプラットフォームの要件とは by @Kazaneya_PR / 20251107
kazaneya
PRO
2
260
ざっくり学ぶ 『エンジニアリングリーダー 技術組織を育てるリーダーシップと セルフマネジメント』 / 50 minute Engineering Leader
iwashi86
9
4.3k
可観測性は開発環境から、開発環境にもオブザーバビリティ導入のススメ
layerx
PRO
4
2.6k
LLM APIを2年間本番運用して苦労した話
ivry_presentationmaterials
9
5.6k
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
46
7.7k
Optimizing for Happiness
mojombo
379
70k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
jQuery: Nuts, Bolts and Bling
dougneiner
65
7.9k
Why Our Code Smells
bkeepers
PRO
340
57k
Six Lessons from altMBA
skipperchong
29
4k
Building Adaptive Systems
keathley
44
2.8k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6k
BBQ
matthewcrist
89
9.9k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.8k
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
Ҏ্ʂ