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
Craft CMSの良いとこと
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
tamshow
July 20, 2017
Programming
2
690
Craft CMSの良いとこと
webっちゃ! Vol.18の発表で使用したスライドです。
tamshow
July 20, 2017
Tweet
Share
More Decks by tamshow
See All by tamshow
HTMLコーディングから考える エントリーフォームの最適化
tamurashogo
3
290
Other Decks in Programming
See All in Programming
CSC307 Lecture 09
javiergs
PRO
1
810
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
140
CSC307 Lecture 06
javiergs
PRO
0
680
Apache Iceberg V3 and migration to V3
tomtanaka
0
130
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
580
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
540
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
120
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
150
AIエージェント、”どう作るか”で差は出るか? / AI Agents: Does the "How" Make a Difference?
rkaga
4
2k
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
400
360° Signals in Angular: Signal Forms with SignalStore & Resources @ngLondon 01/2026
manfredsteyer
PRO
0
100
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
160
Featured
See All Featured
How to Ace a Technical Interview
jacobian
281
24k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Practical Orchestrator
shlominoach
191
11k
Building Applications with DynamoDB
mza
96
6.9k
How to make the Groovebox
asonas
2
1.9k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
52k
What does AI have to do with Human Rights?
axbom
PRO
0
2k
RailsConf 2023
tenderlove
30
1.3k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
3.9k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Transcript
גࣜձࣾϫΫάϛాଜষޗ $SBGU$.4ͷྑ͍ͱ͜ͱ
ాଜষޗ גࣜձࣾϫΫάϛ ϑϩϯτपΓͷίʔσΟϯάͳͲΛ୲
ຊͷ༰ $SBGU$.4ͱͲΜͳͷ͔ ެࣜϖʔδͷઆ໌ಈըΛݟͳ͕ΒσϞαΠτΛ৮ͬͯΈΑ͏ʂ IUUQTDSBGUDNTDPNGFBUVSFTNBUSJY ʢεϥΠυެࣜαΠτΛ༁͍ͯ͠·͕͢ɺࢀߟఔʹɺɺʣ
.BUSJY IUUQTDSBGUDNTDPNGFBUVSFTNBUSJY ߦྻ .BUSJY ϑΟʔϧυ ෳϑΟʔϧυΛϒϩοΫλΠϓ୯ҐͰՃͰ͖Δ
.BUSJY ೖΕ͕͑ࣗ༝ʹग़དྷΔ .BUSJYύϫϑϧͳϑΟʔϧυλΠϓͰॊೈͳίϯςϯπཧΛՄೳʹ͠ ·͢ɻ܁Γฦ͠ίϯςϯπϚϧνϓϧλΠϓΛҰॹͷ༰Ͱදࣔ͢Δͷ ʹ࠷దͰ͢ɻ ϒϩοΫͰ࡞͍ͬͯ͘ .BUSJYϑΟʔϧυϚϧνϒϩοΫͰ࡞ΒΕ͍ͯ·͢ɻ ϒϩοΫͭ·ͨෳͷΧελϜϑΟʔϧυͰ࡞ΒΕ͍ͯ·͢ɻ
.BUSJY ෳͷϒϩοΫλΠϓΛ࣋ͭ͜ͱ͕ग़དྷΔ ͭͷ.BUSJYϑΟʔϧυʹ ଟ͘ͷλΠϓͷϒϩοΫΛؚΊΔࣄ͕Ͱ͖·͢ɻ ੍࡞ऀ৽͍͠ίϯςϯπΛՃ͢Δ࣌ʹબͿ͜ͱ͕Ͱ͖·͢ɻ ॊೈੑ .BUSJYͷग़ྗͱͯॊೈͰ͢ɻ
.BUSJY Ͳ͜Ͱ༻Մೳ ༻ग़དྷΔՕॴΤϯτϦʔ͚ͩͰ͋Γ·ͤΜɻ $SBGUͷଞͷϑΟʔϧυλΠϓͱಉ༷ʹɺ ϢʔβʔɺΞηοτɺλάɺάϩʔόϧͰ༻͢Δ͜ͱ͕Ͱ͖·͢ɻ
-JWF1SFWJFX IUUQTDSBGUDNTDPNGFBUVSFTMJWFQSFWJFX ϥΠϒϓϨϏϡʔ ฤू༰ΛϦΞϧλΠϜʹ֬ೝՄೳ Լॻ͖ϖʔδͷϦϯΫڞ༗
-JWF1SFWJFX ࡞ۀதͷϓϨϏϡʔ ϥΠϒϓϨϏϡʔͰอଘલͷίϯςϯπͷදࣔΛ֬ೝͰ͖·͢ɻ Լॻ͖อଘͰϖʔδΛଞͷਓڞ༗͢Δ͜ͱͰ͖·͢ɻ
-PDBMJ[BUJPO IUUQTDSBGUDNTDPNGFBUVSFTMPDBMJ[BUJPO ϩʔΧϦθʔγϣϯ ඪ४ػೳͰ͢ͰʹଟݴޠԽ
ਖ਼͍͠ϩʔΧϦθʔγϣϯ $SBGU1SPΛ༻͢Δͱ63-ՕʑͷϑΟʔϧυͷ·ͰαΠτͷίϯς ϯπΛಛఆͷݴޠҬʹϩʔΧϥΠζ͢Δ͜ͱ͕Ͱ͖·͢ɻ -PDBMJ[BUJPO ͢ͰʹઃఆࡁΈ $SBGU1FSTPOBMͱ$SBGU$MJFOUϩέʔϧ୯ҐͰίϯςϯπΛ֨ೲͯ͠ ͍·͢ɻͰ͢ͷͰɺ൪ͷϩέʔϧʹରԠ͍ͤͨ͞߹͢Ͱʹઃఆ ͞Ε͍ͯ·͢ɻ
0OF$MJDL6QEBUJOH IUUQTDSBGUDNTDPNGFBUVSFTPOFDMJDLVQEBUJOH ϫϯΫϦοΫΞοϓσʔτ ·ΔͰຐ๏ͷΑ͏ͳΞοϓσʔτ
0OF$MJDL6QEBUJOH Ϙλϯ̍ͭͰΞοϓσʔτ ϘλϯͭͰΞοϓσʔτɺຐ๏ͷΑ͏ʹ؆୯Ͱ͢ɻ ࠷৽ͷػೳɺόάमਖ਼ɺηΩϡϦςΟڧԽͳͲϫϯΫϦοΫͰΫϥϑτΛߋ৽͠ ·͢ɻ
$VTUPN'JFMET IUUQTDSBGUDNTDPNGFBUVSFTDVTUPNpFMET ΧελϜϑΟʔϧυ ଟ༷ͳछྨͷϑΟʔϧυλΠϓ
ΧελϜϑΟʔϧυͰίϯςϯπΛఆٛ͢Δ $SBGU͔ΒίϯςϯπΛఆٛ͠·ͤΜɻ ੍࡞࣌ʹඞཁͳใΛදࣔ͢ΔͨΊͷΧελϜϑΟʔϧυΛઃఆ͢Δ͜ͱ ͰɺίϯςϯπΛఆٛ͠·͢ɻͦͯ͠$SBGUͷϑΟʔϧυλΠϓΛ४උ ͍ͯ͠·͢ɻ $VTUPN'JFMET ϑΟʔϧυΛҰݩཧ શͯͷΧελϜϑΟʔϧυҰݩཧ͞Ε͍ͯ·͢ɻ άϧʔϐϯάͨ͠Γཧ͢Δ͜ͱ͕Ͱ͖·͢ɻ ͦΕΒ࣮ࡍͷදࣔ͞ΕΔσʔλʹӨڹ͠·ͤΜɻ
ඞཁͳॴʹϑΟʔϧυΛׂΓͯΔ ͍͔ͭ͘ͷϑΟʔϧυΛ࡞͢ΔͱͦΕΒΛɺηΫγϣϯɺϢʔβʔɺ ΞηοτɺλάɺϚτϦοΫεϑΟʔϧυɺάϩʔόϧʹηοτ͢Δ͜ ͱ͕ग़དྷ·͢ɻ $VTUPN'JFMET
4FDUJPO5ZQFT IUUQTDSBGUDNTDPNGFBUVSFTTFDUJPOUZQFT ηΫγϣϯλΠϓ γϯάϧɺνϟϯωϧɺετϥΫνϟ ίϯςϯπʹ߹ΘͤͯదͳηΫγϣϯબՄೳ
దͳηΫγϣϯΛબ ͯ͢ͷίϯςϯπ͕ۉʹ࡞͞ΕΔͱݶΓ·ͤΜΑͶɻ $SBGUʹɺඞཁʹԠͯ͡ΤϯτϦʔΛཧͰ͖ΔछྨͷηΫγϣϯ͕ ༻ҙ͞Ε͍ͯ·͢ɻ 4FDUJPO5ZQFT
γϯάϧɺνϟϯωϧɺ͓ΑͼετϥΫνϟ γϯάϧҰճݶΓͷϖʔδΛ֨ೲ͠ɺνϟϯωϧ͍ΘΏΔΤϯτϦʔ Λ֨ೲ͠ɺετϥΫνϟ֊ߏΛ࣋ͭྨࣅͨ͠ΤϯτϦʔΛ֨ೲ͠ ·͢ɻඞཁʹԠͯ͡ɺγϯάϧɺνϟϯωϧɺετϥΫνϟΛ࡞Ͱ͖ ·͢ɻ 4FDUJPO5ZQFT
&OUSZ5ZQFT IUUQTDSBGUDNTDPNGFBUVSFTFOUSZUZQFT ΤϯτϦʔλΠϓ ͭͷηΫγϣϯͰෳͷίϯςϯπλΠϓΛ֨ೲ
ͭͷηΫγϣϯͰෳͷίϯςϯπλΠϓΛཧ νϟϯωϧͱετϥΫνϟෳͷλΠϓͷίϯςϯπΛ֨ೲͰ͖ɺΤ ϯτϦʔλΠϓͰఆٛͰ͖·͢ɻ ֤ΤϯτϦλΠϓɺಠࣗͷΧελϜϑΟʔϧυηοτΛऔಘ͠·͢ɻ &OUSZ5ZQFT
"TTFUT IUUQTDSBGUDNTDPNGFBUVSFTBTTFUT Ξηοτ ݟ͍͢Ξηοτཧ ΫϥυʹอଘՄೳɺҙͷαΠζมߋՄೳ
BTTFUTΛىಈ $SBGUʹɺ࠷খݶͷߏͷBTTFUTཧ͕Έࠐ·Ε͍ͯ·͢ɻ αϒϑΥϧμΛ࡞͠ɺϑΥϧμϑΝΠϧΛҠಈͨ͠Γɺ໊લΛมߋ ͨ͠ΓɺϦεταϜωΠϧදࣔͰϑΝΠϧΛදࣔͰ͖·͢ɻ "TTFUT ΫϥυʹอଘՄೳ $SBGU1SPɺ"NB[PO4ɺ3BDLTQBDF$MPVE'JMFTɺ(PPHMF$MPVE 4UPSBHFʹଓͰ͖·͢ɻΫϥυͷΞηοτΛઃఆ͢ΔͱɺϩʔΧϧ ͱฒΜͰදࣔ͞ΕɺϩʔΧϧͱΫϥυͷιʔεؒͰϑΥϧμϑΝΠ ϧΛҠಈ͢Δ͜ͱ͕Ͱ͖·͢ɻ
ը૾ͷαΠζΛมߋՄೳ ಛఆͷαΠζͰը૾Λग़ྗ͢Δඞཁ͕͋Δ߹ɺύϥϝʔλΛઃఆ͢ Δͱ৽͍͠ͰαΠζͷը૾Λ࡞͢Δ͜ͱ͕Ͱ͖·͢ɻ ͯ͢ͷը૾ͰαΠζมߋՄೳͰɺมߋޙͷը૾ඞཁʹԠͯ͡࡞ ͞Ε·͢ɻ "TTFUT
6TFST IUUQTDSBGUDNTDPNGFBUVSFTVTFST Ϣʔβʔ ϢʔβάϧʔϓΞΫηεݖݶͷઃఆ͕Մೳ
ίϯςϯπϚωʔδϟΛཧ $SBGU1SPʹϑϧػೳͷϢʔβʔཧɺύϒϦοΫϢʔβʔͷొɺγ ϯϓϧͰڧྗͳݖݶγεςϜ͕͍͍ͯ·͢ɻ ෳͷϢʔβʔάϧʔϓΛ࡞ ඞཁͳ͚ͩͷϢʔβʔάϧʔϓΛ࡞͢Δ͜ͱ͕Ͱ͖·͢ɻ֤ͦͯ͠ Ϣʔβʔෳͷάϧʔϓʹଐ͢Δࣄ͕Ͱ͖·͢ɻ 6TFST
ϢʔβʔͱάϧʔϓʹݖݶΛ༩͑Δ ϢʔβʔʹݖݶΛׂΓͯΔ͜ͱͰαΠτ্Ͱ্ͷૢ࡞ΛઃఆՄೳͰ͢ɻ ·ͨϢʔβʔάϧʔϓʹݖݶΛׂΓͯΔ͜ͱͰ͖·͢ɻ άϧʔϓɺάϧʔϓʹଐ͢Δͯ͢ͷϢʔβʔʹݖݶΛ༩͑·͢ɻ 6TFST
$BUFHPSJFTBOE5BHT IUUQTDSBGUDNTDPNGFBUVSFTDBUFHPSJFTBOEUBHT ΧςΰϦʔζͱλάζ $SBGUDBUFHPSZͱUBHͰ؆୯ཧ
ͯ͢దͳॴʹ $SBGUDBUFHPSZͱUBHΛαϙʔτ͍ͯ͠·͢ͷͰࣄΛཧ͢Δͷ؆ ୯Ͱ͢ɻ ΧςΰϦʔͰྨΛཧ $SBGUͰҟͳΔྨΛཧ͢ΔΧςΰϦʔάϧʔϓΛઃఆ͠·͢ɻ $BUFHPSJFTϑΟʔϧυΛ༻ͯ͠ଞͷΤϨϝϯτʹΧςΰϦʔΛద༻ ͢Δ͜ͱ͕Ͱ͖·͢ɻ $BUFHPSJFTBOE5BHT
λά͖ϑΥʔΫιϊϛʔ $SBGUʹɺλά͖ϑΥʔΫιϊϛʔͷαϙʔτΈࠐ·Ε͍ͯ· ͢ɻෳͷλάάϧʔϓΛઃఆͰ͖ɺ֤άϧʔϓʹಠࣗͷλάηοτ ͕͋Γ·͢ɻλάϑΟʔϧυ͔Βଈ࠲ʹλάΛ࡞Ͱ͖·͢ɻ $BUFHPSJFTBOE5BHT
3FMBUJPOT IUUQTDSBGUDNTDPNGFBUVSFTSFMBUJPOT ϦϨʔγϣϯζ ڧྗͳؔ࿈͚
ڧྗͳؔ࿈͚ $SBGUʹڧྗͳؔ࿈͚ΤϯδϯͱͭͷϦϨʔγϣφϧϑΟʔϧυλ Πϓ͕͋Γ·͢ɻͦΕ͋ͳͨͷFOUSJFTɺBTTFUTɺDBUFHPSJFTɺVTFSTɺ UBHTΛ·ͱΊͯϦϯΫ͢Δࣄ͕Ͱ͖·͢ɻ 3FMBUJPOT Ұ؏ੑͷ͋Δؔ࿈͚ ؔ࿈͚Λ͢Δ߹FOUSJFTɺBTTFUTɺDBUFHPSJFTɺVTFSTɺUBHTͷ ͲΕͰ͋ͬͯίϯςϯπ੍࡞ऀͱςϯϓϨʔτσβΠφʔͲͪΒʹ Ұ؏ੑͷ͋Δૢ࡞Λ༩͑·͢ɻ͜ΕɺͳͥͳΒཪͰಉؔ͡࿈͚Τ ϯδϯΛ༻͢ΔͨΊͰ͢ɻ
͋ͳ͕ͨΉؔ࿈͚Λग़ྗ $SBGUͷ৽͍͠SFMBUFE5Pཁૉͷύϥϝʔλʔঢ়گʹΑͬͯγϯϓϧ ʹෳࡶʹͰ͖·͢ɻ 3FMBUJPOT
5FNQMBUJOH IUUQTDSBGUDNTDPNGFBUVSFTUFNQMBUJOH ςϯϓϨʔτ ςϯϓϨʔτࣗ༝
࣋ͪࠐΈͷ)5.- ࢲͨͪόοΫΤϯυΛఏڙ͍ͯ͠·͢ɻ ϑϩϯτΤϯυશʹ͋ͳͨͷࣗ༝ͳαΠτΛ࡞Ε·͢ɻ ΤϥʔΛใࠂ ͋ͳ͕ͨ࡞ͬͨςϯϓϨʔτʹؒҧ͍͕͋Δ߹ਖ਼֬ʹϔϧϓϝοηʔ δͱϋΠϥΠτ͞ΕͨςϯϓϨʔτίʔυΛදࣔ͠·͢ɻ 5FNQMBUJOH
5XJHʹΑͬͯڧԽ ςϯϓϨʔτ5XJHʹΑͬͯڧԽ͞Ε·͢ɻ 5XJH4ZNGPOZͷΫϦΤΠλʔͨͪʹΑͬͯ࡞ΒΕͨΤϨΨϯτͰ ύϫϑϧͳςϯϓϨʔτγεςϜͰ͢ɻ ίʔυΛυϥΠʹอͭͨΊʹཱͭૉΒ͍͠ํ๏Λఏڙͯ͘͠Ε·͢ɻ )5.-͚ͩͰͳ͍ σϑΥϧτͰIUNMΛݟ·͕͢ɺҙͷ֦ுࢠΛ༩͑ΔࣄͰ͖·͢ɻ ·ͨɺҙͷ.*.&UZQFΛ༩͑ϨεϙϯεΛฦ͢͜ͱͰ͖·͢ɻ 5FNQMBUJOH
3FTQPOTJWF$1 IUUQTDSBGUDNTDPNGFBUVSFTSFTQPOTJWFDQ Ϩεϙϯγϒͳίϯτϩʔϧύωϧ 1$Ͱ41ͰฤूՄೳ
֎ͰฤूՄೳ $SBGUϨεϙϯγϒͳίϯτϩʔϧύωϧͰ͢ͷͰ֎ͰฤूՄೳͰ͢ɻ 3FTQPOTJWF$1
%BTICPBSE IUUQTDSBGUDNTDPNGFBUVSFTEBTICPBSE μογϡϘʔυ Ϣʔβʔʹ߹ΘͤͯΧελϚΠζՄೳ
ࢥ͍௨ΓͷμογϡϘʔυ μογϡϘʔυϢʔβʔʹ߹ΘͤͯΧελϚΠζ͢Δ͜ͱ͕Ͱ͖·͢ɻ 344ϑΟʔυɺ2VJDL1PTUɺ࠷ۙͷߘɺΞοϓσʔτ͙ʹར༻Մ ೳͳXJEHFUTCPYࣗ༝ʹϓϥάΠϯΛՃͰ͖·͢ɻ %BTICPBSE
$SBGU$.41SJDJOH'"2 IUUQTDSBGUDNTDPNQSJDJOHGBR Ձ֨ʹؔ͢ΔΑ͋͘Δ࣭
ͲͷΑ͏ʹ$SBGU$MJFOU͘͠$SBGU1SPΛങ͏͜ͱ͕Ͱ ͖·͔͢ʁ ʮ$SBGU1FSTPOBMʯ·ͨʮ$SBGU$MJFOUʯΛಋೖͯ͠Ε$.4ͷத͔ ΒߪೖͰ͖·͢ɻίϯτϩʔϧύωϧͷதͷશͯͷϖʔδͷԼʹϦϯΫ ͋Γ·͢ɻ $SBGU$.41SJDJOH'"2
ߪೖ͢Δલʹ$SBGU$MJFOUPS1SPΛࢼ͢͜ͱͰ͖·͔͢ʁ ͍ɻ͋ͳ͕ͨඇެ։ͷυϝΠϯ໊͔Β$SBGU$.4Λ࣮ߦ͍ͯ͠Δ߹ ʮ$MJFOUBOE1SPFEJUJPOTʯΛແظݶʹςετ༻͢ΔΦϓγϣϯ͕͋ Γ·͢ɻ $SBGU$.41SJDJOH'"2
͍ɺ͑େৎͰ͢ɻ $SBGU$.41SJDJOH'"2 ޙ͔Β$MJFOUFEJUJPO͔Β1SPʹΞοϓάϨʔυग़དྷ·͔͢ʁ
͍ɺͰ͖·͢ɻ $SBGU$.41SJDJOH'"2 ϩʔΧϧ൛Ͱߪೖͨ͠ޙʹຊ൪ʹެ։Ͱ͖·͔͢ʁ
͍͍͑ɺΞοϓσʔτશͯແྉͰ͢ɻ $SBGU$.41SJDJOH'"2 $SBGU$.4͕ϝδϟʔΞοϓσʔτͨ͠߹ɺྉ͔͔ۚ Γ·͔͢ʁ
͋ͳ͕ͨ$SBGU$.4Λ༻͢Δ͜ͱΛΉͷʹ༧ࢉ͕Γͳ͍ͷͰ͋Ε ࿈བྷ͍ͯͩ͘͠͞ɻͳʹ͔ಇ͖͔͚ΔࣄͰ͖·͢ɻ $SBGU$.41SJDJOH'"2 ར༻ՄೳͳׂҾ͋Γ·͔͢ʁ
גࣜձࣾϫΫάϛ ాଜষޗ !UBNTIPX ʔ ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ