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
WordPressローカル開発環境をつくろう — WP-CLI + Composer —
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Takashi Kitajima
March 06, 2017
Programming
3.4k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
WordPressローカル開発環境をつくろう — WP-CLI + Composer —
Takashi Kitajima
March 06, 2017
More Decks by Takashi Kitajima
See All by Takashi Kitajima
「ブロックテーマでは再現できない」は本当か?
inc2734
0
1.4k
Snow Monkey&unitone から見た WordPress エディターの変遷
inc2734
0
190
Snow Monkey CM
inc2734
0
110
メンテナンス性を考慮した CSS 設計
inc2734
0
390
Snow Monkey とは
inc2734
0
1.3k
WordPress_テーマのつくりかた.pdf
inc2734
4
600
受託開発者だった僕が WordPress の有料テーマ開発者になって学んだこと
inc2734
1
1.1k
Snow Monkey(WordPress) による web コンテンツ制作の新しいカタチ【ビジネスパーソン向け】
inc2734
0
130
Snow Monkey とコミュニティ
inc2734
0
700
Other Decks in Programming
See All in Programming
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
270
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
260
Why Laravel apps break—Mastering the fundamentals to keep them maintainable
kentaroutakeda
1
350
エージェンティックRAGにAWSで入門しよう!
har1101
8
1.4k
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
120
技術記事、 専門家としてのプログラマ、 言語化
mizchi
4
2.3k
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.2k
RTSPクライアントを自作してみた話
simotin13
0
570
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
220
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
13
3.6k
3Dシーンの圧縮
fadis
1
730
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
190
Featured
See All Featured
Balancing Empowerment & Direction
lara
6
1.2k
The Language of Interfaces
destraynor
162
27k
Navigating Team Friction
lara
192
16k
Accessibility Awareness
sabderemane
1
140
Docker and Python
trallard
47
3.9k
エンジニアに許された特別な時間の終わり
watany
107
250k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
390
Ethics towards AI in product and experience design
skipperchong
2
310
The Invisible Side of Design
smashingmag
302
52k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
340
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
390
Transcript
8PSE1SFTTϩʔΧϧ։ൃڥΛͭ͘Ζ͏ 81$-* $PNQPTFS ͪͺͳɻ
ΩλδϚλΧγ !JOD ϑϦʔϥϯε ʙ 8FCσβΠφʔϓϩάϥϚʔ 8PSE1SFTTϓϥάΠϯ
.881'PSNɺ4NBSU$VTUPN'JFMETʜ 8PSE1SFTTςʔϚ )BCBLJSJɺ.JNJ[VLVʜ 4BTT4UZMVT$44ϑϨʔϜϫʔΫ #BTJT
8PSE1SFTTίϛϡχςΟͱͷؔΘΓ 8PSE#FODI࡚ϞσϨʔλʔ 8PSE$BNQ5PLZP-5 8PSE$BNQ,BOTBJ࣮ߦҕһϋϯζΦϯ 8PSE$BNQ,BOTBJ࣮ߦҕһεϐʔΧʔ
8PSE$BNQ5PLZPεϐʔΧʔ FUD
ϩʔΧϧ։ൃڥ͕ͳ͍ͱʜ w ϩʔΧϧ։ൃڥʜαʔόʔ্Ͱͳࣗ͘ͷϚγϯͷ தʹ͋Δ։ൃ༻ͷڥͷ͜ͱ w ຖճຖճ͍͍ͪͪ'51ͰϑΝΠϧΛαʔόʔʹ্͛ͨΓ %#ͷΤΫεϙʔτΠϯϙʔτΛͯ֬͠ೝ͢Δͷ࣌ؒ ͷແବ w αʔόʔͷϑΝΠϧΛૢ࡞͢Δʹͯ͠ෳਓͰಉ
࣌ʹ৮ΔͱઌฦΓͷةݥੑ͕ʜ
ͳͥϩʔΧϧ։ൃڥΛ͏ͷ͔ w ϩʔΧϧʹ։ൃڥ͕͋Ε͙͢ʹಈ࡞֬ೝͰ͖Δ w ݱʹ(JU͕͋ΔͷͰෳਓͰ࡞ۀͨ͠ͷΛϚʔδ ͯ͠αʔόʔ্ʹө͢Δͷ؆୯
None
.".19".11 w 8FC੍࡞ʹ͓͚ΔҰൠతͳϩʔΧϧ։ൃڥͱ͍͑ .".19".11 w 8PSE1SFTTΛμϯϩʔυͯ͠ɺσʔλϕʔε༻ҙͯ͠ ͱ͔ɺ্ཱͪ͛Δ·Ͱ͕ΊΜͲ͍͘͞ w 8PSE1SFTTͰͷ։ൃʹಛԽͨ͠ઐ༻ͷϩʔΧϧ։ൃڥ ͕͍Ζ͍Ζ͋Δ
8PSE1SFTTͷϩʔΧϧ։ൃڥ
None
7$$8ɹIUUQWDDXDD w 7BHSBOUΛͬͨ8PSE1SFTTͷϩʔΧϧڥ w ʮ7$$8ͷΰʔϧɺ୯ʹ։ൃڥΛखͬऔΓૣ͘༻ҙͰ ͖ΔΑ͏ʹ͢Δͱ͍͏͜ͱ͚ͩͰͳ͘ɺ8PSE1SFTT͕ಈ࡞ ͢ΔڥͦͷͷΛɺϫʔΫϑϩʔؚΊͯڞ༗͢Δ͜ͱʯ w ศརͳ։ൃऀ͚πʔϧ 81$-*ɺ.BJM$BUDIFSɺ8PSENPWFʜ
w ڥ࡞Δͷʹʙ͘Β͍͔͔Δ
None
8PDLFSɹIUUQTXDLSHJUIVCJP w %PDLFSΛͬͨ8PSE1SFTTͷϩʔΧϧڥ w ʮ*55",&4+6454&$0/%450$3&"5&"/&80/&ʯ w ؆୯ͳίϚϯυͰΆΜΆΜ8PSE1SFTTڥΛ࡞ͬͨΓফ͠ ͨΓͰ͖Δ
None
-PDBMCZ'MZXIFFMɹIUUQTMPDBMHFUqZXIFFMDPN w 8PSE1SFTTಛԽܕͷ.".19".11తڥ w αΠτ͝ͱʹ1)1ɺ.Z42-ͷόʔδϣϯɺ 8FCαʔόʔ "QBUDIPS/HJOY ΛબՄೳ w ศརͳ։ൃऀ͚πʔϧ
81$-*ɺ.BJM$BUDIFSʜ w .BD൛ͱ8JOEPXT൛ʢ#FUBʣ
<൪֎ฤ>ϏϧτΠϯαʔόʔ w Ϛγϯͷ1)1ͱ.Z42-ΛͬͯϩʔΧϧڥΛ্ཱͪ͛Δ w ͜Εผʹ8PSE1SFTTಛԽͰԿͰͳ͍Ͱ͕͢͜Ε Λ͍ͬͯ·͢ʜ w .BD#PPL"JSͷ༰ྔ͕ݶքʹ͍͖ۙͮͯͨͷͰ7$$8Λਐ ΊͯϏϧτΠϯαʔόʔͰϩʔΧϧڥΛ࡞ΔΑ͏ʹͨ͠
IUUQTJODPSHCMPH w Ϛγϯ্ͷ.Z42-Λ֤ڥͰڞ༗͢ΔͷͰτϥϒϧͱશαΠ τ͕ࢮ͵
8PSE1SFTTΛ(JUཧ ͢Δͱ͖ͷ
Ͳ͜Λཧ͢Δͷ w υΩϡϝϯτϧʔτ·Δ͝ͱ ˠ8PSE1SFTTίΞɺϓϥάΠϯɺςʔϚશ෦ w XQDPOUFOU·Δ͝ͱ ˠϓϥάΠϯɺςʔϚશ෦ w ࣗ࡞ςʔϚͷΈ
υΩϡϝϯτϧʔτ·Δ͝ͱ w ϝϦοτ w ಉ͡ڥΛ؆୯ʹ࠶ݱͰ͖Δ w σϝϦοτ w ίΞϓϥάΠϯͳͲɺࣗͷॻ͍͍ͯͳ͍ίʔυ ཧରʹͳͬͯ͠·͏
ˠ8PSE1SFTTࣗಈΞοϓσʔτ͕͋ΔͷͰόʔδϣϯཧ͕ ɹࡶʹͳΔ
XQDPOUFOU·Δ͝ͱ w ϝϦοτ w 8PSE1SFTTίΞཧର֎ʹͳΔ w σϝϦοτ w ίΞϓϥάΠϯͳͲɺࣗͷॻ͍͍ͯͳ͍ίʔυ ཧରʹͳͬͯ͠·͏
ˠ8PSE1SFTTࣗಈΞοϓσʔτ͕͋ΔͷͰόʔδϣϯཧ͕ ɹࡶʹͳΔ
ࣗ࡞ςʔϚͷΈ w ϝϦοτ w ࣗͷॻ͍ͨίʔυ͚ͩΛཧରʹͰ͖Δ w σϝϦοτ w ͲͷϓϥάΠϯΛΠϯετʔϧ͢Δ͖͔ɺͦΕΒͷ όʔδϣϯͲΕΛ͍ͬͯΔͷ͔ΛࣗͰѲͯ͠
खಈཧ͠ͳ͚ΕͳΒͳ͍
ͭ·ΓͲΕΊΜͲ͍͘͞
w 8PSE1SFTTαΠτίΞ ϓϥάΠϯ ςʔϚ w ·Δ͝ͱ(JUϦϙδτϦͰཧ ˠطʹཧ͞Ε͍ͯΔίΞϓϥάΠϯͷίʔυ·Ͱ ɹೋॏཧͯ͠͠·͏͜ͱʹͳΔ w
ຊࣗͷॻ͍ͨίʔυ͚ͩཧ͍ͨ͠ ˠίΞϓϥάΠϯόʔδϣϯͰಈ࡞͕มΘΔͷͰ ɹཧ͠ͳ͍Θ͚ʹ͍͔ͳ͍
$PNQPTFS ͦ͜Ͱ
None
$PNQPTFSɹIUUQTHFUDPNQPTFSPSH w 1)1ͷґଘੑཧπʔϧ w ʮશͯͷϓϩδΣΫτύοέʔδͰ͋Δʯ w DPNQPTFSKTPOʹґଘੑΛهड़ ˠίϐϖͯ͠ଞͷϢʔβʔ͕Ϗϧυͯ͠ಉ͡ڥ͕࠶ݱʂ ˠͭ·Γ͜ͷઃఆϑΝΠϧʹॻ͔Εͨʮґଘੑใʯ͑͋͞Ε ɹͦΕΒͷύοέʔδͷʮίʔυʯཧ͢Δඞཁ͕ͳ͍
w ֎෦ύοέʔδશͯ$PNQPTFSͰཧ ˠʮࣗͷॻ͍ͨίʔυʯ͚ͩΛ(JUཧͰ͖Δʂ
None
1BDLBHJTUɹIUUQTQBDLBHJTUPSH w $PNQPTFSͷύοέʔδϦϙδτϦ w $PNQPTFSͰύοέʔδΛΠϯετʔϧ͢Δͱ͖ جຊతʹ1BDLBHJTU͔ΒΠϯετʔϧ͞ΕΔ w ࣗͰ࡞ͬͨύοέʔδ؆୯ʹެ։Ͱ͖Δʂ
جຊతͳDPNQPTFSίϚϯυ # ύοέʔδΛΠϯετʔϧ (ྫ: Symfony Yaml Component) $ composer require
symfony/yaml # ։ൃڥͰ͚ͩ͏ύοέʔδΛΠϯετʔϧ (ྫ: phpunit) $ composer require --dev phpunit/phpunit # composer.jsonɺcomposer.lock ʹهड़͞ΕͨύοέʔδΛΠϯετʔϧ $ composer install # ύοέʔδΛશ෦ߋ৽ $ composer update # ಛఆͷύοέʔδ͚ͩΛߋ৽ (ྫ: phpunit) $ composer update phpunit/phpunit
͍͍ͨ8PSE1SFTTͷϓϥάΠϯςʔϚ͕ 1BDLBHJTUͰެ։͞Ε͍ͯͳ͔ͬͨΒͲ͏͢Μͷʜ
8PSE1SFTT1BDLBHJTU
None
8PSE1SFTT1BDLBHJTUɹIUUQTXQBDLBHJTUPSH w XPSEQSFTTPSH ެࣜϦϙδτϦ Ͱެ։͞Ε͍ͯΔ ϓϥάΠϯςʔϚ͕$PNQPTFSϦϙδτϦͯ͠ ެ։͞Ε͍ͯΔϛϥʔαΠτ w ͭ·ΓɺXPSEQSFTTPSHʹެ։͞Ε͍ͯΔϓϥάΠϯ ςʔϚશͯ$PNQPTFSͰཧͰ͖Δʂ
Ͱ͜ͷล͏ͨΊʹઃఆ͢Δͷ ͦ͘ΊΜͲͦ͘͞͏ʜ
$PNQPTFS8PSE1SFTT%FWFMPQNFOU,JU ͦ͜Ͱʂ
$PNQPTFS8PSE1SFTT%FWFMPQNFOU,JU IUUQTHJUIVCDPNUPSPVOJUDPNQPTFSXQEFWLJU w $PNQPTFSͰ8PSE1SFTTίΞɺϓϥάΠϯɺςʔϚΛ ཧͰ͖Δ8PSE1SFTTͷϩʔΧϧ։ൃڥ w 8PSE1SFTTϏϧτΠϯαʔόʔͱͯ͠ىಈͤ͞Δ͜ ͱ͕Ͱ͖Δ
$PNQPTFS8PSE1SFTT%FWFMPQNFOU,JU Ͱ։ൃڥΛͭ͘Ζ͏
w .BDͳΒϚγϯ্Ͱಈ͔͢ͷ؆୯ɻ Ͱ8JOEPXTʜ w ͱ͍͏͜ͱͰࠓճݪ͞Μʹ࡞͍ͬͯͨ%PDLFSΠ ϝʔδ্Ͱಈ͔͠·͢
ϋϯζΦϯ # ϏϧυΠϯαʔόʔΛىಈˍϒϥβͰ֬ೝ $ composer server # ϏϧυΠϯαʔόʔͷఀࢭ control +
c # ςετσʔλΛΠϯϙʔτ͠Α͏ $ composer import-theme-unit-test
$PNQPTFS8PSE1SFTT%FWFMPQNFOU,JU ΛͬͨςʔϚϓϥάΠϯͷՃํ๏
ϓϥάΠϯͷՃ $ composer require wpackagist-plugin/<Πϯετʔϧ͢ΔϓϥάΠϯͷεϥοά> # MW WP Form
ΛΠϯετʔϧ͢Δྫ $ composer require wpackagist-plugin/mw-wp-form # Smart Custom Fields ΛΠϯετʔϧ͢Δྫ $ composer require wpackagist-plugin/smart-custom-fields
ςʔϚͷՃ $ composer require wpackagist-theme/<Πϯετʔϧ͢ΔςʔϚͷεϥοά> # Lightning ΛΠϯετʔϧ͢Δྫ $ composer
require wpackagist-theme/lightning # Habakiri ΛΠϯετʔϧ͢Δྫ $ composer require wpackagist-theme/habakiri
$PNQPTFSͰ8PSE1SFTTίΞɾ ϓϥάΠϯɾςʔϚΛߋ৽͢Δ
;ͭ͏ʹDPNQPTFSίϚϯυͰ0, # શ෦ߋ৽ $ composer update # ಛఆͷϓϥάΠϯ͚ͩߋ৽ $ composer
update wpackagist-plugin/mw-wp-form # ಛఆͷςʔϚ͚ͩߋ৽ $ composer update wpackagist-theme/habakiri
͜͜·ͰΔͳΒɺ ཧը໘Ͱͷૢ࡞ͳΔ͘ ίϚϯυͰΓ͍ͨ
None
81$-*ɹIUUQXQDMJPSH w 8PSE1SFTTΛίϚϯυͰૢ࡞Ͱ͖Δπʔϧ w ཧը໘͔ΒͰ͖Δ͜ͱجຊతʹԿͰͰ͖Δ w Α͘͏ૢ࡞ઃఆͳͲΛγΣϧεΫϦϓτͱͯ͠·ͱ Ί͓͚ͯࣗಈԽͰ͖ΔͷͰศར w $PNQPTFS8PSE1SFTT%FW,JUΛ͑ࣗಈతʹΠϯε
τʔϧ͞ΕΔ
Α͘͏81$-*ίϚϯυ # ΠϯετʔϧࡁΈͷςʔϚΛ༗ޮԽ $ wp theme activate twentyseventeen # σʔλϕʔεจࣈྻͷஔ
(γϦΞϥΠζରԠ) $ wp search-replace http://127.0.0.1:8080 http://example.com # σʔλϕʔεͷΠϯϙʔτɾΤΫεϙʔτ $ wp db import/export
ϋϯζΦϯɹ؆୯ͳϓϥάΠϯΛͭͬͯ͘ΈΑ͏ # ϓϥάΠϯͷܗΛੜɾ༗ޮԽ # ϢχοτςετɺίʔσΟϯάن४ڌςετɺEditorConfig ੜ͞ΕΔ ! $ wp scaffold
plugin sample-plugin —activate http://localhost:9000/wp-admin # γϣʔτίʔυ [phper] ΛՃ͢ΔϓϥάΠϯΛͭͬͯ͘ΈΑ͏ https://gist.github.com/inc2734/158b59217bee19a2db9b1ba3692a8a6d
ϋϯζΦϯɹ؆୯ͳϓϥάΠϯΛͭͬͯ͘ΈΑ͏ # ϢχοτςετΛ͔͍ͯΈΑ͏ https://gist.github.com/inc2734/6c0920516d9fb909e9b8d1e89c8bff77 # ϢχοτςετΛ࣮ߦͯ͠ΈΑ͏ # PHPUnit ͷΠϯετʔϧ $
composer require --dev phpunit/phpunit # PHPUnit ΛΒͤΔҰ࣌ςετڥͷੜ $ bash ./bin/install-wp-tests.sh wordpress_test root 'hogehoge' localhost latest # PHPUnit ࣮ߦ $ /path/to/wp-content/mu-plugins/vendor/phpunit/phpunit/phpunit
։ൃڥ͚ͭͬͨ͘Ͳ σϓϩΠͲ͏͢Δͷ
w $PNQPTFS8PSE1SFTT%FW,JUͰσΟϨΫτϦԼʹ 8PSE1SFTTͷϑΝΠϧ͕ల։͞ΕΔͨΊɺجຊతʹ ·Δ͝ͱαʔόʔ্ʹΞοϓ͢Ε0, ͨͩ͠XQDPOpHQIQαʔόʔͱϩʔΧϧͰ༰͕ҟͳΔͷͰҙ w Ͱ'51Ͱຖճߋ৽ͨ͠ϑΝΠϧநग़ͯ͠Ξοϓϩʔυ ͢ΔͷΊΜͲ͍͘͞ʜ w
σʔλϕʔεʜQIQ.Z"ENJOʜΊΜͲ͍͘͞ʜ
8PSENPWFɹIUUQTHJUIVCDPNXFMBJLBXPSENPWF w 8PSE1SFTTͷσϓϩΠπʔϧ w ίϚϯυҰൃͰ·ΔͬͱΞοϓϩʔυɺμϯϩʔυ͕ Մೳ w σʔλϕʔεͷ63-ஔࣗಈ w $PNQPTFS8PSE1SFTT%FW,JUͰɺઃఆϑΝΠϧͷ
ܗΛ༻ҙͯ͘͠ΕΔͷͰͦΕΛ͑݁ߏ؆୯ w ৄ͘͠IUUQXXXTMJEFTIBSFOFUJODXQEGFT
ͰॾʑͷࣄͰ݁ߏΑ͘ಈ͔ͳ͘ͳΓ·͢ʜ
#BTI81%FQMPZ ͦ͜Ͱʂ
#BTI81%FQMPZɹIUUQTHJUIVCDPNJODCBTIXQEFQMPZ w ͭ͘Γ·ͨ͠ w γΣϧεΫϦϓτͳͷͰΘΓͱ؆୯ʹಈ͘ ͣ ཁ81$-* w ৄ͘͠
IUUQTHJUIVCDPNJODCBTIXQEFQMPZ