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
tamshow
July 20, 2017
Programming
2
680
Craft CMSの良いとこと
webっちゃ! Vol.18の発表で使用したスライドです。
tamshow
July 20, 2017
Tweet
Share
More Decks by tamshow
See All by tamshow
HTMLコーディングから考える エントリーフォームの最適化
tamurashogo
3
280
Other Decks in Programming
See All in Programming
コードに語らせよう――自己ドキュメント化が内包する楽しさについて / Let the Code Speak
nrslib
5
1.1k
Parallel::Pipesの紹介
skaji
2
870
TypeScript だけを書いて Tauri でデスクトップアプリを作ろう / Tauri with only TypeScript
tris5572
2
540
型安全なDrag and Dropの設計を考える
yudppp
5
660
クラシルリワードにおける iOSアプリ開発の取り組み
funzin
1
810
Cloudflare Realtime と Workers でつくるサーバーレス WebRTC
nekoya3
0
240
Building an Application with TDD, DDD and Hexagonal Architecture - Isn't it a bit too much?
mufrid
0
370
FastMCPでMCPサーバー/クライアントを構築してみる
ttnyt8701
2
100
TypeScript を活かしてデザインシステム MCP を作る / #tskaigi_after_night
izumin5210
4
480
【TSkaigi 2025】これは型破り?型安全? 真実はいつもひとつ!(じゃないかもしれない)TypeScript クイズ〜〜〜〜!!!!!
kimitashoichi
1
300
TypeScript LSP の今までとこれから
quramy
0
110
コンポーネントライブラリで実現する、アクセシビリティの正しい実装パターン
schktjm
1
670
Featured
See All Featured
Code Review Best Practice
trishagee
68
18k
Being A Developer After 40
akosma
91
590k
Music & Morning Musume
bryan
47
6.6k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Speed Design
sergeychernyshev
30
970
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
14
1.5k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
850
Rails Girls Zürich Keynote
gr2m
94
13k
RailsConf 2023
tenderlove
30
1.1k
Practical Orchestrator
shlominoach
188
11k
A Tale of Four Properties
chriscoyier
159
23k
Why Our Code Smells
bkeepers
PRO
336
57k
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 ʔ ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ