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.5k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
夢を詰め込む話@PHP BLT#5
PHPP BLT#5で発表しました。
Sota Sugiura
July 20, 2016
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
2k
20220926_セキュリティチームの今_for_Drs._Prime_公開用.pdf
sota1235
0
200
再発防止策を考える技術 / #phpconsen
sota1235
10
4.1k
How to choose the best npm module for your team?
sota1235
9
670
Realtime Database for high traffic production application
sota1235
7
4.3k
Road to migrate JP Web as a microservice
sota1235
4
1.8k
インターフェース再入門 / Think Interface again
sota1235
6
11k
再発防止策を考える技術 #phpconfuk_rej
sota1235
1
1.4k
Update around Firebase #io18
sota1235
3
4.5k
Other Decks in Technology
See All in Technology
5分でわかるDuckDB Quack
chanyou0311
4
300
From Prompt Engineering to Loop Engineering
shibuiwilliam
1
320
小さいから、全部わかる。— 常駐AI "xangi" のすすめ
sugupoko
0
230
ゼロをイチにする仕事が終わったあと
smasato
0
250
知見・人・API・DB・予算 ─ ナイナイ尽くしだった人事データ整備 with dbt、5年間の学び
ken6377
1
140
LiDAR SLAMの実装とセンサ融合 ~Lie群からContinuous-Time LIOまで~
naokiakai
1
870
AI時代のエンジニアキャリアについて今一度考える
sakamoto_582
1
760
なぜ人は自分のプロジェクトを 「なんちゃってアジャイル」と 自嘲するのか
kozotaira
0
240
AI Agentをシステムに組み込む前にゆるく向き合ってみる
hayama17
0
190
ループエンジニアリングでE2Eテストを実践
noriyukitakei
0
230
背中から、背中へ /paying forward to community
naitosatoshi
0
210
BPaaSで進むAIオペレーションの現在地 AI実装が効く領域とスケーラビリティの選定と実装
kentarofujii
0
250
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
528
40k
Prompt Engineering for Job Search
mfonobong
0
360
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Designing for humans not robots
tammielis
254
26k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
340
Mind Mapping
helmedeiros
PRO
1
270
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Rails Girls Zürich Keynote
gr2m
96
14k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
300
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
Ҏ্ʂ