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.5k
Snow Monkey&unitone から見た WordPress エディターの変遷
inc2734
0
200
Snow Monkey CM
inc2734
0
120
メンテナンス性を考慮した 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
710
Other Decks in Programming
See All in Programming
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
730
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
220
yield再入門 #phpcon
o0h
PRO
0
310
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
2.5k
Performance Engineering for Everyone
elenatanasoiu
0
270
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
9k
1B+ /day規模のログを管理する技術
broadleaf
0
140
Prismを使った型安全な暗号化_関数型まつり2026
_fhhmm
0
130
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.4k
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
260
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
480
OS アップデート対応の取り組み方がもっと共有されてほしい
andpad
0
110
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
[SF Ruby Conf 2025] Rails X
palkan
2
1.2k
Designing Experiences People Love
moore
143
24k
Designing for Performance
lara
611
70k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Making Projects Easy
brettharned
120
6.7k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
610
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
750
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
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