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ファイルが置かれていた環境をindex.phpだけにした話 / document root
Search
Satoshi Kawashima
December 15, 2018
Programming
1
3.4k
ドキュメントルート配下に全てのPHPファイルが置かれていた環境をindex.phpだけにした話 / document root
PHPカンファレンス2018登壇資料
フレームワークの使われていないピュアPHPサービスで、ドキュメントルート配下に全てのファイルが置かれていたサービスを安全にするために大規模な修正を行ったお話です
Satoshi Kawashima
December 15, 2018
Tweet
Share
More Decks by Satoshi Kawashima
See All by Satoshi Kawashima
モジュラモノリスにおけるトランザクション設計の考え方 / transaction design on modular monolith
nazonohito51
17
7.8k
BASE大規模リアーキテクチャリング / base_rearchitecturing
nazonohito51
17
11k
既存サービスに後からR/W Splittingライブラリを入れる時に考えたこと / r-w-splitting
nazonohito51
1
26k
社内勉強会でOOPとCleanArchitectureとDDDを勉強し始めたというお話
nazonohito51
7
4.8k
CakePHP2でもPhpStormがコード補完してくれるようにした話 / cakephp2-ide-helper
nazonohito51
1
2k
PHPStanでCustomRuleを作る / Make PHPStan CustomRule
nazonohito51
5
3.2k
単方向依存を実現する静的解析ライブラリのご紹介 / Analyze PHP Dependencies
nazonohito51
2
5.1k
「SOLIDの原則って何ですか?」って質問に答えたかった / What's SOLID principle
nazonohito51
3
1.6k
アジャイル開発でのソフトウェア設計
nazonohito51
0
750
Other Decks in Programming
See All in Programming
PostmanでAPIの動作確認が楽になった話
h455h1
0
160
TYPO3 v13 – The road to LTS: What's new and new APIs
luisasofie_xoxo
0
190
Milestoner
bkuhlmann
1
410
SwiftUIで使いやすいToastの作り方 / How to build a Toast system which is easy to use in SwiftUI
lovee
3
130
Semantic search with Django and pgvector
pauloxnet
0
240
GraphQLサーバの構成要素を整理する #ハッカー鮨 #tsukijigraphql / graphql server technology selection
izumin5210
4
820
MicrosoftのPlatform Engineeringガイドを読んで実際になにかやってみた
ymd65536
1
270
Ruby GitHub Packages
bkuhlmann
0
630
try! Swift Tokyo 2024 参加報告 / try! Swift Tokyo 2024 Report
hironytic
0
200
今、知っておきたい! 生成AIエージェントの世界
elith
3
350
ゆるい個人開発のススメ
kuroppe1819
10
980
データアナリストが行うDatabricksを活用したETLの自動化事例
shinoa
0
260
Featured
See All Featured
Design by the Numbers
sachag
274
18k
Creatively Recalculating Your Daily Design Routine
revolveconf
209
11k
Practical Orchestrator
shlominoach
181
9.7k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
186
16k
RailsConf 2023
tenderlove
2
540
Fashionably flexible responsive web design (full day workshop)
malarkey
398
65k
Building a Modern Day E-commerce SEO Strategy
aleyda
16
6.4k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
220
21k
KATA
mclloyd
14
12k
Producing Creativity
orderedlist
PRO
336
39k
5 minutes of I Can Smell Your CMS
philhawksworth
199
19k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
13
1.5k
Transcript
ౡܛ(.01FQBCP *OD 1)1ΧϯϑΝϨϯε υΩϡϝϯτϧʔτԼʹ શͯͷ1)1ϑΝΠϧ͕ ஔ͔Ε͍ͯͨڥΛ JOEFYQIQ͚ͩʹͨ͠
ΞϓϦέʔγϣϯΤϯδχΞ ౡܛ!OB[POPIJUP 4)ࣄۀ෦+6(&.νʔϜ
D ຊ͓͢͠Δ͜ͱ ຊ࣋ͪؼ͍ͬͯͨͩ͘͜ͱ ྺ࢙͋ΔPHPαʔϏεͰ҆શͳαʔϏεΛఏڙ͢Δˍ҆৺ͯ͠։ൃ͢ΔͨΊʹ େنͳमਖ਼Λ͖͓ͯͨ͠Λ͠·͢ ൃදͷ࠷ޙʹɺϐϡΞPHPͷެ։ϑΝΠϧΛ index.php͚ͩʹ͢Δํ๏ΛͳΔ͘ҰൠԽ͓ͯ͠ಧ͚͍ͨ͠·͢
ࣄͷൃ ୲͍ͯ͠ΔαʔϏεͷ՝ ՝ͷղܾ ՝1. ެ։ϑΝΠϧΛಛఆ͢Δ ՝2. ϑΝΠϧΛҠಈ͢Δ ·ͱΊ
w ݄Χϥʔϛʔγϣοϓෆਖ਼ΞΫηεൃੜ w IUUQTQFQBCPDPNOFXTJOGPSNBUJPO ηΩϡϦςΟΠϯγσϯτ
શαʔϏεͷ ηΩϡϦςΟݟ͠
w ൿಗϑΝΠϧͷ8&#ΞΫηεՄೳʹͳ͍ͬͯͳ͍͔Λܧଓ తʹࢹͰ͖ΔΈΛ༻ҙ͢Δ w QNS QZBNBNVMUJSFRVFTU ͰνΣοΫ w IUUQTHJUIVCDPNQZBNBQNS ৽ͨͳηΩϡϦςΟن४ʢͷҰ෦ʣ
w ൿಗϑΝΠϧͷΞΫηεېࢭIUBDDFTTʹΑΔϒϥο ΫϦετཧʹΑ࣮ͬͯݱͨ͠ w ࠓޙͷ։ൃͰɺ৽͍͠ϑΝΠϧΛՃ͢Δ࣌ʹΕͣʹ ϒϥοΫϦετΛߋ৽͢Δඞཁ͕͋Δ ൿಗϑΝΠϧݟ͑ͳ͘ͳ͕ͬͨ
w Ϣʔβ༷ʹ҆શͳαʔϏεΛఏڙͰ͖ͳ͍ w ։ൃऀ͕҆৺ͯ͠։ൃͰ͖ͳ͍ ՝ײ
ඪ WEBެ։ྖҬʹ ެ։͖͢ϑΝΠϧͷΈ͕ ஔ͔Ε͍ͯΔମ੍Λ͑Δ
ࣄͷൃ ୲͍ͯ͠ΔαʔϏεͷ՝ ՝ͷղܾ ՝1. ެ։ϑΝΠϧΛಛఆ͢Δ ՝2. ϑΝΠϧΛҠಈ͢Δ ·ͱΊ
+6(&.
+6(&. αʔϏε։࢝ɿ20042݄ ܧଓɿ14
+6(&.ͱ͍͏1)1αʔϏε w ΄΅ϐϡΞ1)1 w ͍͍͕ͩͨϦϙδτϦϧʔτ ʹυΩϡϝϯτϧʔτ
ʹશެ։
Γ͍ͨ͜ͱʢୈҰஈ֊ʣ repos root dot files repos root public app fuga.jpg
dot files hoge.php assets piyo.php app fuga.jpg hoge.php assets piyo.php QVCMJDσΟϨΫτϦΛ࡞Γ υοτϑΝΠϧҎ֎ͷ શϑΝΠϧΛҠಈ υΩϡϝϯτϧʔτΛมߋ ʢެ։ඇެ։ͷ֓೦͕ੜ·ΕΔʣ
Γ͍ͨ͜ͱʢୈೋஈ֊ʣ repos root public app fuga.jpg dot files hoge.php assets
piyo.php repos root public app fuga.jpg dot files hoge.php assets piyo.php ඇެ։ϑΝΠϧΛ QVCMJDͷ֎Ҡಈ
w ୈҰஈ֊͙͢ୡͰ͖Δ w Ұ෦ઈରύεʹґଘͨ͠ίʔυΛमਖ਼ͯ͠ΔʢQVCMJD ΛՃ͢Δʣඞཁ͋Δ w ୈೋஈ֊Λୡ͢Δʹ՝͕̎ͭ͋Δ ୈೋஈ֊ୡͷนް͍
՝̍ ެ։ඇެ։ϑΝΠϧͬͯͲΕʁ
w ͍ྺ࢙ͷதͰΤϯτϦϙΠϯτͱͳΔQIQϑΝΠϧ͕Ͳ Εͳͷ͔͔Βͳ͘ͳ͍ͬͯΔ w ͍͍ͩͨܦݧ্Ѳ͍ͯ͠Δ͕ɺཏͰ͖͍ͯΔ͔ͱ ΘΕΔͱඍົ w ͦͦϦϙδτϦ͕ଟ͍͔Β͖֮͑Εͳ͍ w ʢͷ߹ʣ̍ΤϯδχΞɿ̒̍ϦϙδτϦ
ެ։ϑΝΠϧͬͯͲΕʁ
՝̎ ϑΝΠϧͷҐஔ͕ಈ͔ͤͳ͍
w େྔͷSFRVJSF@PODFͳͲʹΑͬͯQIQϑΝΠϧؒͷ૬ରత ͳҐஔ͕ؔݻఆԽ͞Ε͍ͯΔ w ϦϙδτϦ͚ͩͰSFRVJSF@PODFʙݸ͘ Β͍͋ͬͨΓ͢Δ͕ɺػցతͳमਖ਼͍͠ʢཧ༝ޙड़ ϑΝΠϧͷҐஔ͕ಈ͔ͤͳ͍
େม
ࣄͷൃ ୲͍ͯ͠ΔαʔϏεͷ՝ ՝ͷղܾ ՝1. ެ։ϑΝΠϧΛಛఆ͢Δ ՝2. ϑΝΠϧΛҠಈ͢Δ ·ͱΊ
w Կઍݸ͋ΔQIQϑΝΠϧͷத͔Βެ։͖͢ͷΛಛఆ ͢Δ w ΞΫηεϩάΛͻͨ͢ΒಡΊ͔ΔͬͪΌ͔Δ͕ɺO ϦϙδτϦͷΛશ෦ಡΉͷେม w NPE@SFXSJUFతʹΞΫηε63*ͱݺͼग़͢ϑΝΠϧΛมߋ ͞ΕΔٕज़͕ΘΕ͍ͯΔͱා͍ w
NPE@SFXSJUFࣗମӨڹΛ༩͑ͳ͍͕ɺଞʹͲΜͳݹͷ ٕज़͕ΘΕ͍ͯΔͷ͔ෆ໌ͳͨΊෆ҆ ެ։ϑΝΠϧͷಛఆ
w ͲͷQIQϑΝΠϧ͔ΒॲཧΛ։࢝ͨ͠ͷ͔ʢϝΠϯϑΝΠ ϧʣ͕ೖ͍ͬͯΔ w ΫʔϩϯͳͲͷ$-*࣮ߦͷ߹ͰೖͬͯΔ @4&37&3<b4$3*15@/".&`>
Ұఆظؒϩάग़ྗ͠ଓ͚ͯɺ ࣗಈͰެ։ϑΝΠϧΛಛఆ͢Δ ʘਓؒؤுΒͳ͍ʗ Oϲ݄ϩάΛग़͠ଓ͚Δ
w ̍ʙ̒ϲ݄ͰશϦϙδτϦͷެ։ϑΝΠϧΛಛఆྃ ϩΪϯά݁Ռ
ࣄͷൃ ୲͍ͯ͠ΔαʔϏεͷ՝ ՝ͷղܾ ՝1. ެ։ϑΝΠϧΛಛఆ͢Δ ՝2. ϑΝΠϧΛҠಈ͢Δ ·ͱΊ
ϑΝΠϧͷ େҠಈ
require_once ϑΝΠϧͷҐஔؔΛݻఆ͢Δ
w ଞͷϑΝΠϧΛQIQϑΝΠϧͱͯ͠ಡΈࠐΜͰධՁ͢Δݴ ޠͷ੍ޚߏ w JODMVEFJODMVEF@PODFSFRVJSFSFRVJSF@PODF͕͋Δ w ͍͍ͩͨSFRVJSF@PODF͕ΘΕΔ w ίʔυΛෳϑΝΠϧʹׂ͢ΔͨΊͷखஈ SFRVJSF@PODFͱʁ
/app/hoge.php /app/models/fuga.php ಡΈࠐΜͰධՁʢ࣮ߦʣ͢Δ
w SFRVJSFSFRVJSF@PODFಡΈࠐΈࣦഊ࣌ʹ'BUBM&SSPS w ͱʹ͔͕͘ଟ͍ w ಈతͳཁૉʢΧϨϯτσΟϨΫτϦɺJODMVEF@QBUIɺϝΠ ϯϑΝΠϧʣʹґଘ͍ͯ͠Δ w ੩తղੳπʔϧʢ*%&ͳͲʣͷαϙʔτड͚ΒΕͳ͍ ࣮मਖ਼ίετ͕ߴ͍
w ͦͷ࣌ʑͷਓͷΈͷॻ͖ํͰॻ͔Ε͍ͯͨ ແடংͳॻ͔Εํ
w ͦͷ࣌ʑͷਓͷΈͷॻ͖ํͰॻ͔Ε͍ͯͨ ແடংͳॻ͔Εํ D ػցతͳमਖ਼͕ͮ͠Β͍
IUUQTQBDLBHJTUPSHQBDLBHFTOB[POPIJUPSFRVJSFQBUIpYFS ղܾ͢ΔͨΊͷ ϥΠϒϥϦΛ࡞ͬͨ
w SFRVJSF@PODFεςʔτϝϯτʹடংΛͨΒ͢ w શͯઈରύεԽ͢Δ w ಈతͳཁૉʹґଘͤͣɺ੩తղੳπʔϧʢ*%&ʣͷαϙʔ τ͕ಘΒΕΔ w ύεղܾͷϕʔεύεΛϦϙδτϦϧʔτʹ౷Ұ͢Δ w
ॻ͖ͬΓΛۉ࣭ʹ͢Δ SFRVJSFQBUIpYFS
શͯͷ1)1ϑΝΠϧ͔Βࣈ۟ղੳͰSFRVJSFεςʔτϝϯ τΛั·͑Δ ϑΝΠϧύε෦ΛFWBMͰจࣈྻʹม͢Δ ಡΈࠐΈઌϑΝΠϧΛҰҙʹಛఆ͢Δ w࣮ߦ࣌ʹ͔֬͠ఆͰ͖ͳ͍߹ͰͳΔ͘ਪଌͯ͠ ಛఆ͢Δ
৽͍͠ॻ͖ํʹରͷεςʔτϝϯτΛमਖ਼͢Δ ݪཧ ৄࡉҎԼͷεϥΠυΛ͝ࢀর͍ͩ͘͞ IUUQTTQFBLFSEFDLDPNOB[POPIJUPSFHBTJQIQEFSFRVJSFPODFUPLBJV[IPVJXPUVJ[IJEFLJSVLBNPTJSFOBJ
εςʔτϝϯτΛั·͑Δ
εςʔτϝϯτΛั·͑Δ 5@3&26*3&@0/$& 5@$0/45"/5 @&/$"14&%@453*/( 5@3&26*3&@0/$& 5@3&26*3&@0/$& 5@3&26*3&@0/$& 5@$0/45"/5 @&/$"14&%@453*/( 5@7"3*"#-&
5@$0/45"/5 @&/$"14&%@453*/( 5@$0/45"/5 @&/$"14&%@453*/( 5@$0..&/5 5@453*/( 5@$0..&/5 5@453*/(
ϑΝΠϧύεจࣈྻͷղܾ require_once (dirname(dirname(__FILE__)). COMMON_DIR.“{$util}/path/to/file.php”);
ϑΝΠϧύεจࣈྻͷղܾ define(“KNOWN_CONSTANT”, __DIR__ . “/known”); define(“COMMON_DIR”, ”/common”); $util = “/utility”;
require_once (dirname(dirname(__FILE__)). COMMON_DIR.“{$util}/path/to/file.php”);
ϑΝΠϧύεจࣈྻͷղܾ $path = eval(‘ define(“KNOWN_CONSTANT”, __DIR__ . “/known”); define(“COMMON_DIR”, ”/common”);
$util = “/utility”; return (dirname(dirname(__FILE__)).COMMON_DIR. “{$util}/path/to/file.php”); ‘); QBUIUPBQQSPPUDPNNPOVUJMJUZQBUIUPpMFQIQ ˣ
ಡΈࠐΈઌϑΝΠϧͷಛఆ छྨ ྫ ରԠํ๏ ઈରύε BQQSPPUQBUIUPpMFQIQ मਖ਼͢Δ ૬ରύε QBUIUPpMFQIQ ಡΈࠐΈઌϑΝΠϧΛ
ಛఆ͔ͯ͠Βमਖ਼ JODMVEF@QBUIϕʔε QBUIUPpMFQIQ ಡΈࠐΈઌϑΝΠϧΛ ಛఆ͔ͯ͠Βमਖ਼ ύεղܾͰ͖ͳ͔ͬ ͨ 6/,/08/@$0/45"/5bQBUIUP pMFQIQ` ·ͨύεղܾதʹΤϥʔ मਖ਼͠ͳ͍ ಡΈࠐΈઌϑΝΠϧ͕͔Βͳ͍ͷɺ ύλʔϯϚονϯάͰϦϙδτϦʹϚον͢ΔϑΝΠϧ͕ͳ͍͔୳͠ɺ ͔ͭ͠ແ͚ΕͦΕͩͱਪଌ͢Δ
मਖ਼݁Ռ ઈରύε ૬ରύε JODMVEF@QBUIϕʔε ෆ໌ʢղܾͰ͖ͳ͍ఆมɺؔͷґଘʣ
77%ͷεςʔτϝϯτΛमਖ਼͠ɺۉ࣭ͳঢ়ଶʹͰ͖ͨ
मਖ਼݁Ռ
ઈରύε ૬ରύε JODMVEF@QBUIϕʔε ෆ໌ʢղܾͰ͖ͳ͍ఆมɺؔͷґଘʣ ϦϙδτϦ" ʢSFRVJSFεςʔτϝϯτݸʣ ϦϙδτϦ% ʢSFRVJSFεςʔτϝϯτݸʣ ϦϙδτϦ$ ʢSFRVJSFεςʔτϝϯτݸʣ ϦϙδτϦ# ʢSFRVJSFεςʔτϝϯτݸʣ
ඇެ։ϑΝΠϧͷҠಈ repos root public app fuga.jpg dot files hoge.php assets
piyo.php repos root public app fuga.jpg dot files hoge.php assets piyo.php ඇެ։ϑΝΠϧΛ QVCMJDͷ֎Ҡಈ ʢୈೋஈ֊ୡʣ
͋Εʁ Τϥʔग़ͯΔ
w pMF@FYJTUT ͳͲͰΤϥʔ͕ൃੜͩ͢͠ w ΧϨϯτσΟϨΫτϦ͔Βͷ૬ରύεͷมԽ͕ݪҼ ͜ΕͰऴΘΒͳ͍ɾɾɾ ΧϨϯτσΟϨΫτϦ͔Βͷ૬ରύεͰղܾ͍ͯ͠Δ
͜Μͳͩͬͨ repos root public app fuga.jpg dot files hoge.php assets
piyo.php repos root public app fuga.jpg dot files hoge.php assets piyo.php QVCMJDQJZPQIQ͕ϝΠϯϑΝΠϧͰɺΧϨϯτσΟϨΫτϦ͕QVCMJDͷ߹ ΧϨϯτσΟϨΫτϦ͔Βͷ ૬ରύε͕มΘ͍ͬͯΔͷͰݟ͔ͭΒͳ͍
ఢSFRVJSF@PODF ͚ͩͰͳ͔ͬͨɾɾɾ
w ૬ରύεΛड͚औΕΔΑ͏ͳౕΒશͯ w શ෦ڍ͖͛Εͳ͍͘Β͍ଟ͍ʢͲ͏ͬͯHSFQ͢Ε͍͍ ͷ͔͔Βͳ͍ʣ ΧϨϯτσΟϨΫτϦʹґଘ͢ΔౕΒ
w શͯઈରύεʹमਖ਼ͨ͋͘͠Δ͕ɺͲΕ͚ͩͷΈࠐΈ ؔΈࠐΈΫϥεͰΘΕ͍ͯΔͷ͔ಛఆ͖͠Εͳ͍ɺ HSFQͰ͖ͳ͍ ղফ͢Δͷࠔ /PJEFB
मਖ਼લޙͰ ΧϨϯτσΟϨΫτϦΛม͑ͳ͍ ํ
ΧϨϯτσΟϨΫτϦΛม͑ͳ͍ repos root app dot files hoge.php piyo.php ࠓճͷ࡞ۀΛ࢝ΊΔલ·Ͱɺ ྫ͑QJZPQIQ͔Βॲཧ͕։͍࢝ͯͨ͠߹ɺ
͕ΧϨϯτσΟϨΫτϦͰɺͦͷঢ়ଶͰਖ਼͘͠ॲཧ͕ճ͍ͬͯͨɻ ͦͷঢ়ଶ͢ɻ
ΧϨϯτσΟϨΫτϦΛม͑ͳ͍ repos root public app dot files hoge.php piyo.php repos
root public app dot files hoge.php piyo.php ϝΠϯϑΝΠϧΛݩʑͷҐஔʹͯ͠͠·͏
ΧϨϯτσΟϨΫτϦΛม͑ͳ͍ repos root public app dot files hoge.php piyo.php repos
root public app dot files hoge.php piyo.php piyo.php ϝΠϯϑΝΠϧॲཧΛதܧ͢ΔͨΊ͚ͩʹଘࡏ͢Δɺಉ໊ͷެ։ϑΝΠϧ
ࣄͷൃ ୲͍ͯ͠ΔαʔϏεͷ՝ ՝ͷղܾ ՝1. ެ։ϑΝΠϧΛಛఆ͢Δ ՝2. ϑΝΠϧΛҠಈ͢Δ ·ͱΊ ΞϓϦέʔγϣϯϧʔςΟϯά͢Δ
w ݱͷϑϨʔϜϫʔΫͬΆ͘ެ։ϑΝΠϧJOEFYQIQͷ Έʹ͢Δ ͏ͪΐͬͱ͚ͩଓ͘Μ͡ΌΑ
Γ͍ͨ͜ͱ repos root public app hoge.php piyo.php fuga.php (&5BQQIPHFQIQ 1045BQQGVHBQIQ
(&5QJZPQIQ
Γ͍ͨ͜ͱ (&5BQQIPHFQIQ 1045BQQGVHBQIQ (&5QJZPQIQ index.php repos root public app hoge.php
piyo.php fuga.php શͯͷϦΫΤετΛ JOEFYQIQͰҰड͚Δ
Γ͍ͨ͜ͱ repos root (&5BQQIPHFQIQ 1045BQQGVHBQIQ (&5QJZPQIQ index.php JOEFYQIQҎ֎ͷެ։ϑΝΠϧΛআ ʢJOEFYQIQ͕ϧʔςΟϯά͢Δʣ public
w ઃܭΛγϯϓϧʹͰ͖Δ w ΞϓϦέʔγϣϯͷϒʔτετϥοϓॲཧΛҰݩԽ w BSUJDMFTDPNNFOUTΈ͍ͨͳɺϑΝΠϧγεςϜͱ Ұக͠ͳ͍Α͏ͳϦΫΤετͰϧʔςΟϯάͰ͖ΔΑ͏ ʹͳΔ w NPE@SFXSJUFͷϧʔϧΛٵऩͰ͖Δ
w ϐϡΞ1)1ϦϙδτϦΛϑϨʔϜϫʔΫԽ͢Δ༨͕ੜ· ΕΔ ԿނΔͷ͔ʁ
w ϐϡΞ1)1ʹ͓͚ΔϦΫΤετͱϩδοΫͷϚονϯά 8FCαʔό͕͍ͬͯͨ w ϦΫΤετͷ63*͔Β࣮ߦ͢ΔϑΝΠϧΛܾఆ͍ͯͨ͠ w ݴ͍͑ΕɺΞϓϦέʔγϣϯϧʔςΟϯάԽͱ8FC αʔόͷϧʔςΟϯάϧʔϧΛΞϓϦέʔγϣϯ্Ͱ࠶ݱ ͢Δ͜ͱ ͜Ε·ͰͷϧʔςΟϯά
w جຊతʹϦΫΤετ63*௨ΓͷϑΝΠϧϧʔςΟϯά ͢Δ͚ͩ w 8FCαʔόͷϚονϯάϧʔϧͪΐͬͱ͚ͩಛघͳϧʔ ϧ͕͋Δ w Ϛονϯάઌ͕σΟϨΫτϦͳΒɺ҉తʹͦͷσΟϨΫ τϦͷJOEFYQIQΛ୳ͯ͠ݺͼग़͢ w
ҎԼͷΑ͏ͳΜͯ͜ͳϦΫΤετͰ"QBDIF܅͕ؤ ுͬͯϚονϯάͯ͘͠Ε͍ͯͨͷͰ࠶ݱ͢Δඞཁ͕͋Δ ͪΐͬͱ͚ͩ໘ष͍ (&5IUUQFYBNQMFDPNBQQ IPHFGVHB
w 8FCαʔόͷϚονϯάϧʔϧͷ࠶ݱํ๏͙͢ʹ͔ Βͳ͍ͷͰɺຊ൪ڥͰ͔֬Ίͳ͕Βগ͚ͣͭۙͮ͠Δ w ΧφϦΞϦϦʔεతʹຊ൪ڥͷཪͰࣗͰ࡞ͬͨGBTU SPVUFʹΑΔϧʔςΟϯά݁ՌΛ֬ೝ͢Δ w "QBDIFͷϧʔςΟϯά݁ՌͱGBTUSPVUFͷϧʔςΟϯά ݁ՌΛൺֱ͠ଓ͚ɺEJ⒎͕͋ͬͨΒͦͷࢫͷϩάΛग़ྗ͠ ͯɺͦͷ͢
࠶ݱ͢Δ
OJLJDGBTUSPVUFͰ࡞ 50%0
w ͠ɺແࣄʹJOEFYQIQ͚ͩʹมߋͰ͖ͨ ϲ݄ޙ͘Β͍
ࣄͷൃ ୲͍ͯ͠ΔαʔϏεͷ՝ ՝ͷղܾ ՝1. ެ։ϑΝΠϧΛಛఆ͢Δ ՝2. ϑΝΠϧΛҠಈ͢Δ ·ͱΊ
࡞ۀ։࢝લͱݱࡏͷEJ⒎ repos root app hoge.php piyo.php public assets index.php fuga.jpg
݁ہશͯͷ1)1ϑΝΠϧ ಉ͡Ґஔʹͬͨ EJ⒎QVCMJDԼ͚ͩ ΞϓϦέʔγϣϯϧʔςΟϯά͢Δ ΧϨϯτσΟϨΫτϦͷௐ͢Δ ϝΠϯϑΝΠϧެ։͠ͳ͍··
w 1)1ϑΝΠϧΛҠಈͤ͞Δඞཁͳ͍ w QVCMJDΛ࡞ͬͯɺͦ͜ʹΞϓϦέʔγϣϯϧʔςΟϯά ͢ΔJOEFYQIQΛஔ͚ͩ͘ w ຊ൪ڥͰੜ͞Εͯɺ͔ͭ8&#ެ։͞ΕΔ͖ϑΝΠϧ ͕͋ΔͳΒɺੜઌQVCMJDҠಈͤ͞Δඞཁ͋Δ ࣮؆୯ͩͬͨ
ʹ ಉ͡ೖྗΛ༩͑Εɺ ಉ͡ग़ྗΛฦͯ͘͠ΕΔͱظग़དྷΔ ࠷ॳ͔Β͜͏ߟ͑Εྑ͔ͬͨ طଘͷPHPϑΝΠϧ܈ʢσΟϨΫτϦߏؚΉʣ ΛϒϥοΫϘοΫεͱଊ͑Δ
࠷ॳ͔Β͜͏ߟ͑Εྑ͔ͬͨ (&5BQQIPHFQIQ (&5QJZPQIQ /app/hoge.php /piyo.php ϝΠϯϑΝΠϧBQQIPHFQIQ ΧϨϯτσΟϨΫτϦBQQ )551ϦΫΤετʢೖྗʣ ͔ΒϝΠϯϑΝΠϧ͕ܾఆ͢Δ ϝΠϯϑΝΠϧ͕ܾఆ͢Δͱ
ੜతʹܾఆ͢Δάϩʔόϧใ
࠷ॳ͔Β͜͏ߟ͑Εྑ͔ͬͨ (&5BQQIPHFQIQ (&5QJZPQIQ /app/hoge.php /piyo.php ϝΠϯϑΝΠϧBQQIPHFQIQ ΧϨϯτσΟϨΫτϦBQQ άϩʔόϧใʹґଘ͢Δ طଘͷϩδοΫ ͜͜ΒΜΛमਖ਼લޙͰ
ҡ࣋͢Εྑͦ͞͏
࠷ॳ͔Β͜͏ߟ͑Εྑ͔ͬͨ (&5BQQIPHFQIQ (&5QJZPQIQ /app/hoge.php /piyo.php ϝΠϯϑΝΠϧBQQIPHFQIQ ΧϨϯτσΟϨΫτϦBQQ ͔͋ͨϧʔςΟϯάઌͷϑΝΠϧ͔Β ॲཧ͕։͔࢝ͨ͠ͷΑ͏ʹௐ͢Δ /public/index.php
ϝΠϯϑΝΠϧΛಛఆ͢Δ ΞϓϦέʔγϣϯϧʔςΟϯάϧʔϧΛ࡞Δ QVCMJDΛ࡞ΓɺJOEFYQIQΛஔ υΩϡϝϯτϧʔτΛQVCMJDͣΒ͢ ࠷ڑͰߦ͘ͳΒ
w ͜Ε͜ΕͰผͷՁ͕͋ΔͷͰແҙຯͰͳ͔ͬͨ w ϑΝΠϧͷҠಈ͕͘͢͠ͳͬͨ w JODMVEF@QBUI͕ࣺͯΒΕͨ w ੩తղੳͰ͖Δʢ*%&ͷαϙʔτ͕ड͚ΒΕΔʣ w ίʔυΛಡΉࡍͷ҉͕ͳ͘ͳΓɺ࣮ߦύεͷ͕
୭Ͱग़དྷΔΑ͏ʹͳͬͨ SFRVJSF@PODFͷमਖ਼ແҙຯʁ
w JOEFYQIQ͚ͩʹ͢ΔͷͦΜͳʹ͘͠ͳ͍ w ެ։ϑΝΠϧͷಛఆࣗಈͰग़དྷΔ w ΞϓϦέʔγϣϯϧʔςΟϯάগͣͭ͠࡞Ε͍͍ w طଘͷϑΝΠϧ܈ΛϒϥοΫϘοΫεͱଊ͑ͯɺमਖ਼લޙ ͷೖྗΛҡ࣋͢Δ ·ͱΊ