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
はてなブログ最近の開発テクニックと最新の開発風景のご紹介
Search
hitode909
July 01, 2017
Technology
2
9.2k
はてなブログ最近の開発テクニックと最新の開発風景のご紹介
hitode909
July 01, 2017
Tweet
Share
More Decks by hitode909
See All by hitode909
cpanfileの更新を 自動化したい
hitode909
0
2.4k
how to buy clothes
hitode909
1
21k
Perlの上にも三年 〜 ずっとイケてるサービスを作り続ける技術 〜
hitode909
14
43k
Perlの静的解析入門とPerlリファクタリングツールApp::PRTのご紹介
hitode909
10
12k
高速にドッグフードを食べる方法
hitode909
19
47k
Emacsで1ファイルにしか出現していないシンボルをハイライトするやつ
hitode909
2
1.2k
画面をチカチカさせるノウハウ
hitode909
0
300
一行音楽自動生成するやつ
hitode909
0
240
今日の重ね着
hitode909
0
230
Other Decks in Technology
See All in Technology
Azure AI servicesと歯のおはなし/AzureTravelers_Fukuoka2024_baba
nina01
1
110
Unlearn Modularity
lemiorhan
6
280
20241017_俺たちは雰囲気で scope をやっているけどもうちょっとなんとかならんのか?
tokai235
0
280
本番のトラフィック量でHudiを検証して見えてきた課題
joker1007
2
250
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
5
48k
RAG: from dumb implementation to serious results
glaforge
0
620
From naive to advanced RAG: the complete guide
glaforge
0
620
Application Signalsで始めるSLO ユーザー満足度を数値化する第一歩
niftycorp
PRO
2
140
RSGT Walk Through
kawaguti
PRO
2
380
運営11年目タイトルを守る最強の盾の有効性と活用法
mixi_engineers
PRO
2
120
Applied NLP with LLMs: Beyond Black-Box Monoliths
inesmontani
PRO
0
180
Deep dive into Nuxt Server Components
wattanx
1
610
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
425
64k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Pencils Down: Stop Designing & Start Developing
hursman
119
11k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
43
6.5k
Imperfection Machines: The Place of Print at Facebook
scottboms
264
13k
Designing on Purpose - Digital PM Summit 2013
jponch
114
6.9k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
355
29k
It's Worth the Effort
3n
183
27k
Code Review Best Practice
trishagee
63
17k
The Cost Of JavaScript in 2023
addyosmani
43
5.9k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Transcript
ͯͳϒϩά࠷ۙͷ ։ൃςΫχοΫͱ࠷ ৽ͷ։ൃ෩ܠͷ͝ հ
IJUPEF ژ͔Βདྷ·ͨ͠ ͯͳϒϩάΛ։ൃ͍ͯ͠Δ
ͯͳϒϩά ʙ ࠓ
҆ఆͯ͠։ൃΛ ଓ͚ΔͨΊͷऔΓΈ ͦͷͱ͖ʹߟ͑ͨ͜ͱίπ
ؒͷาΈ
ʙ 03.Θͳ͍ ബ͍ϑϨʔϜϫʔΫ
42-खॻ͖ .PEFMख࡞Γ 42-$POUSPMMFS͔Βൃߦ
ʙ 42-ίϐϖ 4FSWJDFΫϥε͔Β42-Λൃߦ
υϝΠϯۦಈઃܭ͕ྲྀߦΔ ϢϏΩλεݴޠΦϒδΣΫτΤϯςΟςΟ
:"1$"4*" 1FSMͷ্ʹࡾ ͣͬͱΠέͯΔαʔϏεΛ ࡞Γଓ͚Δٕज़
None
ઃܭϞσϦϯάͷؔ৺ͷߴ·Γ ಡॻձΛͬͨΓ
Ұํͦͷࠒ
ϑϩϯτΤϯυ ڊେͳϑΝΠϧˠ#SPXTFSJGZͰׂ K2VFSZˠ3FBDU
None
αʔόαΠυͷ1FSM ϑϩϯτΤϯυͷ+4 ͜ΕΒ͕Α͚Ε࠷ߴ
αʔόαΠυͷ1FSM ϑϩϯτΤϯυͷ+4 ͜ΕΒ͕Α͚Ε࠷ߴ͔ ͱ͍͏ͱͦ͏Ͱͳ͍
Ұํͦͷࠒ
)5.-ͷ৴ ૉͳΒ͕͠ଓ͍͍ͯͨ
ϒϩάαʔϏεϒϩάΛ৴͢ΔαʔϏε σβΠϯΧελϚΠζ දࣔ༰ͷΓସ͑Φϓγϣϯ ͳ͔ͳ͔ෳࡶͳΘΓʹύϥμΠϜ͕ݹ͍
7JFXΛ͖Ε͍ʹ อͭͷ͕͍͠
9TMBUFͷ55FSTFΛ͍ͬͯΔ ݴޠػೳ͕ૉ ڽͬͨ͜ͱͤͣී௨ʹ͍ͬͯΔ͚ͩ ؒύϥμΠϜͷਐԽ͕ͱ͘ʹͳ͍
ૉͳ7JFXͷੈք؍ 7JFXଆͰมΛએݴͤͣ $POUSPMMFS͔ΒͤݺΔ ςϯϓϨʔτׂͷࢦ͕ͳ͍ )5.-λάͰͳ͘จࣈྻΛѻ͍ͬͯΔ
7JFXΛͳΜͱ͔͢Δ 7JFX.PEFMԽ 3FBDUԽ ੩తղੳ͕ͯ͠ΜΔ
ෳࡶͳϩδοΫΛ 7JFX.PEFMʹҠ͢
ϩδοΫΛॻ͘ͱͳ͔ͳ͔େม
None
ϖʔδJEΛ༻͍ͯ બதͷλϒΛϋΠϥΠτ
<*'QBHF@JEbVTFSCMPHDPOpH ccQBHF@JEbVTFSCMPHDPOpHEFUBJM ccQBHF@JEbVTFSCMPHDPOpHQFSNJTTJPO > TFMFDUFE <&/%> ૉʹॻ͘ͱ
දࣔ༻ͷཧը໘αΠυόʔΛ ͋ΒΘ͢ΫϥεΛ࡞Δ
<*'TJEFCBSTFMFDUFE@UBC@JT CMPHDPOpH > TFMFDUFE <&/%>
)BUFOB&QJD7JFX"EBQUFS"ENJO4JEFCBS λϒ໊Λ͢ͱɼબத͔Ͳ͏͔ڭ͑ͯ͘ΕΔ ී௨ͷ1FSMͷΫϥεͳͷͰςετՄೳ
͍͜͠ͱΛ͢Δͱ͖3FBDUͰ ॻ͖͢
چདྷɿ55ˠK2VFSZ ࠷ۙɿ࠷ॳ͔Β3FBDU
ཧը໘ Ϋϩʔϧ͞ΕΔඞཁͳ͍ ಈతͳཁૉ͕ଟ͍
ಈతͳͱ͜Ζ·ͣ3FBDUͰॻ͖ ͨ͠Γ͍ͯ͠Δ
QSPQ5ZQFTͰ σʔλߏΛνΣοΫ FTMJOUͰղੳ ϨϯμϦϯάͷςετ
จࣈྻͰͳ͘λά୯Ґ ࣗવͱߏԽ͞ΕΔ
੩తղੳ͕ͯ͠ΜΔ
1$εϚʔτϑΥϯ".1
ࣅ͍ͯΔ͕ͪΐͬͱ͕ͪ͏ ίϐϖͯ͠ฤू͕ͪ͠
੩తղੳͯ͠ཧ͢Δ
YSU YTMBUF SFGBDUPSJOH UPPM
None
None
XSJUUFOJO3VCZ
XSJUUFOJO3VCZ 94MBUFʹґଘ͠ͳ͍ͨΊ1FSMͱ ผݴޠͰ࣮
55ͷจ๏Λύʔε ύʔεͨ͠ใΛදࣔ ϦϑΝΫλϦϯά
ύʔε <ʙ> จࣈͣͭݟ͍ͯ͘
ϒϩοΫͷݕग़ 55 <*'>ʜ<&/%>
ϒϩοΫͷݕग़ )5.- EJWʜEJW
55ͱ)5.-ಉ࣌ʹύʔε
ػೳ ωετͷදࣔ ॏෳ͢ΔϒϩοΫͷݕग़ ผϑΝΠϧʹΓग़͠
ωετͷදࣔ
YSUEVNQUFNQMBUFTTBNQMFIUNM %VNQJOHUFNQMBUFTTBNQMFIUNM IUNM CPEZ <'03JUFN*/JUFNT> <*'JUFNUJUMF> I<UJUMF>I <&/%> <&/%> CPEZ
IUNM
ωετͷେ͖͍ͱ͜Ζ͔Βཧ ࠷େͰωετͷͱ͜Ζ͋ͬͨ
ࢦఆͨ͠ϒϩοΫͷΓग़͠
UFNQBMUFTTBNQMFIUNM IUNM CPEZ <'03JUFN*/JUFNT> <*'JUFNUJUMF> I<UJUMF>I <&/%> <&/%> CPEZ IUNM
YSUFYUSBDUUFNQMBUFTTBNQMFIUNM<'03JUFN*/JUFNT>UFNQMBUFT @JUFNTUU
UFNQBMUFTTBNQMFIUNM IUNM CPEZ <*/$-6%&@JUFNTUU> CPEZ IUNM UFNQMBUFT@JUFNTUU <'03JUFN*/JUFNT> <*'JUFNUJUMF> I<UJUMF>I
<&/%> <&/%>
ࢦఆ͞ΕͨϒϩοΫΛൈ͖ग़͢ ϑΝΠϧʹॻ͖ग़͠ */$-6%&จΛ༻ҙ ΠϯσϯτΛௐ
ͳΔ͘খ͚ʹ͍ͯ͘͠࡞ઓ ҙຯͷ·ͱ·Γ͝ͱʹׂ ࠷খͰϑΝΠϧλά
@XSBQQFSDBOPOJDBMUU <*'DBOPOJDBM> MJOLSFMDBOPOJDBMISFG<DBOPOJDBM> <&/%>
ཧ͍ͯ͘͠ͱݟ͑Δͷ ෆཁͳϑϥά ॏෳ
੩తղੳ͠·͠ΐ͏
දݱྗͷऑ͍ͱ͜ΖͰ ͍͜͠ͱΛ͠ͳ͍ 1FSMʹدͤͨΓ +4ʹدͤͨΓ
IUUQTXXXBNB[PODPKQ&"$&"$&#&#$&#%&&&"&"&"&#&&"$&"&0CKFDU0SJFOUFE4FMFDUJPO&"'&""&#&##&&#$&&"&"#EQ
IUUQTXXXBNB[PODPKQ&"$&"$&#&#$&#%&&&"&"&"&#&&"$&"&0CKFDU0SJFOUFE4FMFDUJPO&"'&""&#&##&&#$&&"&"#EQ ϨΨγʔίʔυվળΨΠυͰͳ͍ ͣͭ͢͜͠վળ͔ΒϑϧεΫϥον·Ͱ 7JFX.PEFMͷ
ΞϓϦέʔγϣϯʹ৽͍͠άοζΛ ಋೖ͢Δͱ͖ͷίπ ࿈ଓతʹҠߦͰ͖Δ Ұൠతͳ֓೦Ͱ͋Δ ࣦഊͨ͠ΒݩʹͤΔ
࿈ଓతʹҠߦͰ͖Δ ن͕େ͖͍ͱҰؾʹॻ͖͑Δͷࠔ ࠔͬͯΔͱ͜Ζ͔ΒඞཁʹԠ͍ͯͬͯ͘͡
Ұൠతͳ֓೦Ͱ͋Δ ಠࣗͷ֓೦ΑΓɼطଘͷ֓೦ͷ΄͏͕ शಘ͍͢͠ ຊΛಡΊ͔Δͱ͔
ࣦഊͨ͠ΒݩʹͤΔ ͬͯΈ͚ͨͲ͋·ΓΑ͘ͳ͔ͬͨΒ ఫୀͰ͖Δͱͷͧ·͍͠ ӡ༻தʹঢ়گ͕มԽͯࣗ͠વͱফ͑Δ߹
7JFXͩΜͩΜ ྑ͘ͳ͍ͬͯΔ ͓ΘΓ
αʔόαΠυͷ1FSM ϑϩϯτΤϯυͷ+4 )5.-ͷΈཱͯ ͜ΕΒ͕Α͚Ε࠷ߴ
αʔόαΠυͷ1FSM ϑϩϯτΤϯυͷ+4 )5.-ͷΈཱͯ ͜ΕΒ͕Α͚Ε࠷ߴ͔ ͱ͍͏ͱͦ͏Ͱͳ͍
ϓϩμΫγϣϯͷίʔυҎ֎ ίʔυΛॻ͘ڥ ॻ͍ͨίʔυΛϦϦʔε͢Δ
खݩͷ։ൃڥͷ σβΠφʔͱͷ࿈ܞ
ͯͳͷσβΠφʔ σβΠϯ ϚʔΫΞοϓ )5.- 9TMBUF 3FBDU 6OEFSTDPSF5FNQMBUF
Ϟμϯͳπʔϧ͕ͳ͍ͱ ։ൃେม σβΠφʔͷΤσΟλ"UPN 4VCMJNF5FYU͔Β"UPNʹ౷Ұ
ηοτΞοϓΛख͏ 3FBDUܥͷϓϥάΠϯೖΕΔ FTMJOUೖΕΔ Πϯσϯτͷઃఆ FEJUPSDPOpH
Πϯσϯτ +4 ͱ +49 ࠞࡏ͠ ͍ͯͨͷΛʹଗ͑ͨ
Πϯσϯτˠ FTMJOUpY ίϝϯτਖ਼نදݱͰ͞ʹ
`git grep --name-only -P '^ +//' -- src/js/ `.split(/\n/).each{|path| source=open(path).read;
open(path, 'w'){|f| f.write source.gsub(/^( +)\/\//){|space| ' '*(space.length/2-1) +'//'} } }
λϒԡͨ͠ΒΠϯσϯτଗ͏Α͏ʹ ΩʔόΠϯυͷઃఆ
JGϧʔϓ50%0Ͱॻ͍ͯ Β͏ ΤϯδχΞ͕͋ͱ͔Βಈ͔͢ ͍͠ͱ͜ΖϖΞϚʔΫΞοϓ
MJOUͱ͔Πϯσϯτͱ͔ ΤσΟλͷࢧԉΛօ͕ड͚ΒΕΔ
։ൃڥΛ࡞Δίπ ΤσΟλͷΧελϚΠζ झຯͰͳ͘ࣄ
։ൃڥ खݩͰ1FSM .Z42- NFNDBIDFE &MBTUJDTFBSDI ͳͲಈ͔͍ͯ͠Δ
TDSJQUTFUVQ 1FSMΠϯετʔϧ %#εΩʔϚͷηοτΞοϓ OPEFͷηοτΞοϓ 1ZUIPOηοτΞοϓ &MBTUJDTFBSDIͷΠϯσοΫε࡞Δ
Α͋͘Δձ
ʮखݩͰΤϥʔ͕ग़·ͨ͠ʯ ʮΤϥʔϩάΛష͍ͬͯͩ͘͞ʯ ʮషΓ·ͨ͠ʯ ʮ͏গ্͠ష͍ͬͯͩ͘͞ʯ
σβΠφʹͱͬͯɼͲ͜·Ͱ͕Τ ϥʔ͔͔Βͳ͍ ΤϯδχΞʹͱͬͯɼσβΠφͷ खݩͷঢ়گΛѲ͢Δͷ͕͍͠
ͲͷϒϥϯνͰ ԿΛͨ͠Β Ͳ͏ͳͬͨͷ͔ ηοτΞοϓे͔ ฉ͘͜ͱ͍Ζ͍Ζ͋Δ
ԣʹ͍Εը໘ݟʹߦ͚Δ ϦϞʔτͩͱखؒ
ࣗಈͰखݩͷΤϥʔΛ4MBDLʹྲྀ͢ 1MBDL.JEEMFXBSF
1MBDL.JEEMFXBSF1PTU&SSPS5P4MBDL ୭͕ Ͳͷϒϥϯνͷ Ͳͷ63-Ͱ ͲΜͳΤϥʔʹૺ۰͔ͨ͠
ݺΕΔલʹαϙʔτͰ͖ͯศར
։ൃڥΛ࡞Δίπ ؾܰʹฉ͍ͯΒ͏ յΕͨͱ͖ʹ͙͢͢
։ൃڥͷ ͓ΘΓ
ϨϏϡʔͷ
ίʔυϨϏϡʔ ຖϨϏϡʔλΠϜ ͳΔ݅͘ʹͳΔ·ͰݟΔ
࣌ؒʹͳΔͱ͓Βͤ
ঢ়ଶ͕มΘΔͱ4MBDLʹྲྀ͢ ϨϏϡʔͯ͠ΔਓΛՄࢹԽ
ϥϕϧͰঢ়ଶΛཧ
ྃͨ͠ͱ͖ʹྑ͍ͷ͔ѱ ͍ͷ͔͔Βͳ͍
ϨϏϡʔྃΛͭʹׂ
σβΠϯϨϏϡʔϥϕϧͰ
ϥϕϧͭར༻͍ͯ͠Δ
ݟΒΕͣ์ஔ͞Ε͍ͯΔ1VMM3FRVFTUʹؾ ͖͍ͨ
IUUQTUXJUUFSDPNTJEF@UBOBTUBUVT
ݹ͍1VMM3FRVFTUʹؾ͖͍ͨ ؒಈ͖͕ͳ͚ΕࣗಈͰϥϕϧΛ༩
ϥϕϧͭར༻͍ͯ͠Δ
࠷ۙඪ४ͷػೳͰϨϏϡ ʔͰ͖ΔͷͰซ༻͍ͯ͠Δ IUUQTIFMQHJUIVCDPNBSUJDMFTBCPVUQVMMSFRVFTUSFWJFXT
ϨϏϡʔͷϑϩʔΛ͑Δίπ ϨϏϡʔͯ͠Β͑ͳ͍ͱ։ൃ͕ࢭ·ΔͷͰ ීஈݟ͑Δͱ͜ΖͰΔ
ϨϏϡʔΛਐΊΔίπ ײʹૌ͑ΔͷͰͳ͘ࣄ࣮ΛՄࢹԽ͢Δ ϨϏϡʔґཔͷ݅ɼϨϏϡʔͷਐɼݹ͞
ϨϏϡʔͷϑϩʔΛ͑Δίπ σβΠφʔ͚ͷࢧԉΤϯδχΞ༻ ͱಉ༷ʹ༻ҙ͢Δ
ϦϦʔεͷ
TUBHJOHʹϚʔδ͍ͯ͘͠ ϦϦʔε͕ͪஷ·͖ͬͯͨΒϦϦʔε ճʙճ͘Β͍
CPU͕ϦϦʔεΛଅͯ͘͠ΕΔ
None
Ϛʔδ݅ ίʔυͷߦ ࠷େߦ1VMM3FRVFTUͷ୲ऀ ͕ϦϦʔε୲
ϦϦʔε͍͚ͨ͠Ͳػೳ
CPU͕ಠΓݴΛߘ͢Δ
னٳΈආ͚Δ ༦ํආ͚Δ ༵ۚආ͚Δ ॕલආ͚Δ
৬ਓͷஅΛࣗಈԽ
None
ϦϦʔε༰ʹԠͯ͡ ಈతʹϦϦʔεखॱΛม͑Δ
;ͩΜͷखॱ
BMUFSUBCMF͋Δͱ͖
- [ ] `master`ʹϚʔδ <%- if changed_files.any?{|f| f.match(%r{^db/}) } -%>
- [ ] alter table (db/* ͕มߋ͞Ε͍ͯ·ͨ͠) <%- end -%> ϦϦʔεखॱΛ ςϯϓϨʔτΤϯδϯͰੜ
ͨ·ʹΔखॱΛࣗಈݕ BMUFSUBCMF OHJOYͷઃఆϦϩʔυ DSPOͷߋ৽
ϦϦʔεϑϩʔΛ࡞Δίπ ຖΔͷͳͷͰࣗಈԽ ਓ͕ݟΔલʹCPUʹࣄͤ͞Δ
ϦϦʔεͷ ͓ΘΓ
·ͱΊ ࠓͷԿͷͩͬͨͷ͔
৮Δରͱͦͷ࡞ઓ ϓϩμΫγϣϯίʔυஸೡʹ ։ൃڥͲΜͲΜΔ
ΞϓϦέʔγϣϯͷઃܭ৻ॏʹ ण໋͕͍ ৮Ε߹͏͍࣌ؒ ͦͷઃܭΛҰத৮Γ͍͔ͨ
ఫୀ͢͠͞ ബ͍ϑϨʔϜϫʔΫΛେʹ͍ͯ͠Δ ॏްͳάοζʹґଘͤͣ͋ͱ͔Β ·ͨม͑Δલఏ ಋೖٕ͕ͨ͠ݹͼͨͱ͖ఫୀͰ͖Δ͔
ਓʹΛ͚Δ νʔϜϝϯόશһ͕։ൃ͍͢͠ڥΛ ࡞ΔͷΤϯδχΞͷࣄ ಉ྅͕खͰΠϯσϯτͯͨ͠Βνϟϯε
։ൃΛαϙʔτ͢ΔͨΊͷίʔυ ؾܰʹม͍͑ͯ͘ ϓϩμΫγϣϯίʔυΑΓण໋͕͍ յΕͨΒࣺͯͯ࡞Γ͢
·ͱΊ ҆ఆͯ͠αʔϏε։ൃΛଓ͚ΔͨΊ ͷίʔυͷઃܭํ ։ൃڥ։ൃϑϩʔ ։ൃϝϯόͷαϙʔτ
એγʔϧͬͯ·͢
એγʔϧͬͯ·͢