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だけにした話...
Search
Satoshi Kawashima
December 15, 2018
Programming
1
3.7k
ドキュメントルート配下に全ての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
8.6k
BASE大規模リアーキテクチャリング / base_rearchitecturing
nazonohito51
17
12k
既存サービスに後からR/W Splittingライブラリを入れる時に考えたこと / r-w-splitting
nazonohito51
1
28k
社内勉強会でOOPとCleanArchitectureとDDDを勉強し始めたというお話
nazonohito51
7
5.1k
CakePHP2でもPhpStormがコード補完してくれるようにした話 / cakephp2-ide-helper
nazonohito51
1
2.2k
PHPStanでCustomRuleを作る / Make PHPStan CustomRule
nazonohito51
5
3.8k
単方向依存を実現する静的解析ライブラリのご紹介 / Analyze PHP Dependencies
nazonohito51
2
5.5k
「SOLIDの原則って何ですか?」って質問に答えたかった / What's SOLID principle
nazonohito51
4
1.8k
アジャイル開発でのソフトウェア設計
nazonohito51
0
810
Other Decks in Programming
See All in Programming
開発者とQAの越境で自動テストが増える開発プロセスを実現する
92thunder
1
200
責務を分離するための例外設計 - PHPカンファレンス 2024
kajitack
8
1.9k
これでLambdaが不要に?!Step FunctionsのJSONata対応について
iwatatomoya
2
3.8k
Semantic Kernelのネイティブプラグインで知識拡張をしてみる
tomokusaba
0
180
DevFest - Serverless 101 with Google Cloud Functions
tunmise
0
130
【re:Growth 2024】 Aurora DSQL をちゃんと話します!
maroon1st
0
810
return文におけるstd::moveについて
onihusube
1
1.3k
MCP with Cloudflare Workers
yusukebe
2
230
선언형 UI에서의 상태관리
l2hyunwoo
0
190
「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.
mkmk884
3
760
AppRouterを用いた大規模サービス開発におけるディレクトリ構成の変遷と問題点
eiganken
1
160
KubeCon + CloudNativeCon NA 2024 Overviewat Kubernetes Meetup Tokyo #68 / amsy810_k8sjp68
masayaaoyama
0
260
Featured
See All Featured
Code Review Best Practice
trishagee
65
17k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
Facilitating Awesome Meetings
lara
50
6.1k
KATA
mclloyd
29
14k
Producing Creativity
orderedlist
PRO
342
39k
A Philosophy of Restraint
colly
203
16k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
Practical Orchestrator
shlominoach
186
10k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
Thoughts on Productivity
jonyablonski
68
4.4k
Bash Introduction
62gerente
609
210k
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 طଘͷϑΝΠϧ܈ΛϒϥοΫϘοΫεͱଊ͑ͯɺमਖ਼લޙ ͷೖྗΛҡ࣋͢Δ ·ͱΊ