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.8k
20220926_セキュリティチームの今_for_Drs._Prime_公開用.pdf
sota1235
0
170
再発防止策を考える技術 / #phpconsen
sota1235
10
4k
How to choose the best npm module for your team?
sota1235
9
630
Realtime Database for high traffic production application
sota1235
7
4.2k
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
Agentic AIが変革するAWSの開発・運用・セキュリティ ~Frontier Agentsを試してみた~ / Agentic AI transforms AWS development, operations, and security I tried Frontier Agents
yuj1osm
0
170
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
意外と知らない状態遷移テストの世界
nihonbuson
PRO
1
370
株式会社ビザスク_AI__Engineering_Summit_Tokyo_2025_登壇資料.pdf
eikohashiba
1
140
Strands Agents × インタリーブ思考 で変わるAIエージェント設計 / Strands Agents x Interleaved Thinking AI Agents
takanorig
6
2.4k
「駆動」って言葉、なんかカッコイイ_Mitz
comucal
PRO
0
130
[Data & AI Summit '25 Fall] AIでデータ活用を進化させる!Google Cloudで作るデータ活用の未来
kirimaru
0
4.1k
Knowledge Work の AI Backend
kworkdev
PRO
0
340
Connection-based OAuthから学ぶOAuth for AI Agents
flatt_security
0
500
Bedrock AgentCore Evaluationsで学ぶLLM as a judge入門
shichijoyuhi
2
300
Claude Codeを使った情報整理術
knishioka
15
11k
Next.js 16の新機能 Cache Components について
sutetotanuki
0
210
Featured
See All Featured
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
75
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
130
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
150
The Invisible Side of Design
smashingmag
302
51k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
25
We Are The Robots
honzajavorek
0
130
Become a Pro
speakerdeck
PRO
31
5.8k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
410
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1k
Applied NLP in the Age of Generative AI
inesmontani
PRO
3
2k
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
Ҏ্ʂ