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
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.5k
Snow Monkey&unitone から見た WordPress エディターの変遷
inc2734
0
210
Snow Monkey CM
inc2734
0
120
メンテナンス性を考慮した CSS 設計
inc2734
0
400
Snow Monkey とは
inc2734
0
1.4k
WordPress_テーマのつくりかた.pdf
inc2734
4
610
受託開発者だった僕が WordPress の有料テーマ開発者になって学んだこと
inc2734
1
1.1k
Snow Monkey(WordPress) による web コンテンツ制作の新しいカタチ【ビジネスパーソン向け】
inc2734
0
130
Snow Monkey とコミュニティ
inc2734
0
720
Other Decks in Programming
See All in Programming
Can LLMs Replicate 4 Years of Compose Migration? Exploring the boundaries of automation with 279 XML files from a real product
makun
0
130
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
110
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.9k
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.5k
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
2
1.5k
【DroidKaigi 2026】「アクセシビリティを利用するとき、 アクセシビリティもまたこちらを利用している」 〜マルウェアによる攻撃と防衛について〜
halunoyo
0
380
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
470
AIの中の人になってみる
htkym
0
160
業務時間外もAIに働いてもらう話
colorful12
3
10k
私のClaude Code活用法 (個人開発編) - PHPerKaigi mini #4(2026/08/24)
panda_program
1
210
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.5k
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
2
110
Featured
See All Featured
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
260
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Designing for Timeless Needs
cassininazir
1
470
Building AI with AI
inesmontani
PRO
1
1.2k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.6k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
エンジニアに許された特別な時間の終わり
watany
108
250k
New Earth Scene 8
popppiees
3
2.5k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
520
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
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