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
2
3.9k
ドキュメントルート配下に全ての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
16
9.3k
BASE大規模リアーキテクチャリング / base_rearchitecturing
nazonohito51
18
13k
既存サービスに後からR/W Splittingライブラリを入れる時に考えたこと / r-w-splitting
nazonohito51
1
30k
社内勉強会でOOPとCleanArchitectureとDDDを勉強し始めたというお話
nazonohito51
7
5.3k
CakePHP2でもPhpStormがコード補完してくれるようにした話 / cakephp2-ide-helper
nazonohito51
1
2.5k
PHPStanでCustomRuleを作る / Make PHPStan CustomRule
nazonohito51
6
4.1k
単方向依存を実現する静的解析ライブラリのご紹介 / Analyze PHP Dependencies
nazonohito51
3
5.9k
「SOLIDの原則って何ですか?」って質問に答えたかった / What's SOLID principle
nazonohito51
6
2.1k
アジャイル開発でのソフトウェア設計
nazonohito51
0
870
Other Decks in Programming
See All in Programming
階層構造を表現するデータ構造とリファクタリング 〜1年で10倍成長したプロダクトの変化と課題〜
yuhisatoxxx
3
930
Domain-centric? Why Hexagonal, Onion, and Clean Architecture Are Answers to the Wrong Question
olivergierke
1
470
プログラミングどうやる? ~テスト駆動開発から学ぶ達人の型~
a_okui
0
190
Six and a half ridiculous things to do with Quarkus
hollycummins
0
120
Web Components で実現する Hotwire とフロントエンドフレームワークの橋渡し / Bridging with Web Components
da1chi
3
1.9k
uniqueパッケージの内部実装を支えるweak pointerの話
magavel
0
930
Advance Your Career with Open Source
ivargrimstad
0
370
CSC305 Lecture 03
javiergs
PRO
0
240
CSC509 Lecture 01
javiergs
PRO
1
430
Cloudflare AgentsとAI SDKでAIエージェントを作ってみた
briete
0
130
Goで実践するドメイン駆動開発 AIと歩み始めた新規プロダクト開発の現在地
imkaoru
4
730
Catch Up: Go Style Guide Update
andpad
0
200
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6.1k
Docker and Python
trallard
46
3.6k
GitHub's CSS Performance
jonrohan
1032
460k
The Pragmatic Product Professional
lauravandoore
36
6.9k
Being A Developer After 40
akosma
91
590k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Done Done
chrislema
185
16k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
Why Our Code Smells
bkeepers
PRO
339
57k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
How to Ace a Technical Interview
jacobian
280
24k
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 طଘͷϑΝΠϧ܈ΛϒϥοΫϘοΫεͱଊ͑ͯɺमਖ਼લޙ ͷೖྗΛҡ࣋͢Δ ·ͱΊ