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.6k
はてなブログ最近の開発テクニックと最新の開発風景のご紹介
hitode909
July 01, 2017
Tweet
Share
More Decks by hitode909
See All by hitode909
cpanfileの更新を 自動化したい
hitode909
0
2.6k
how to buy clothes
hitode909
1
21k
Perlの上にも三年 〜 ずっとイケてるサービスを作り続ける技術 〜
hitode909
14
44k
Perlの静的解析入門とPerlリファクタリングツールApp::PRTのご紹介
hitode909
10
12k
高速にドッグフードを食べる方法
hitode909
19
48k
Emacsで1ファイルにしか出現していないシンボルをハイライトするやつ
hitode909
2
1.3k
画面をチカチカさせるノウハウ
hitode909
0
340
一行音楽自動生成するやつ
hitode909
0
270
今日の重ね着
hitode909
0
270
Other Decks in Technology
See All in Technology
Dylib Hijacking on macOS: Dead or Alive?
patrickwardle
0
450
Claude Code Subagents 再入門 ~cc-sddの実装で学んだこと~
gotalab555
10
17k
QA業務を変える(!?)AIを併用した不具合分析の実践
ma2ri
0
110
データ戦略部門 紹介資料
sansan33
PRO
1
3.8k
コンパウンド組織のCRE #cre_meetup
layerx
PRO
1
230
CNCFの視点で捉えるPlatform Engineering - 最新動向と展望 / Platform Engineering from the CNCF Perspective
hhiroshell
0
130
AI AgentをLangflowでサクッと作って、1日働かせてみた!
yano13
1
130
AI-Readyを目指した非構造化データのメダリオンアーキテクチャ
r_miura
1
280
Okta Identity Governanceで実現する最小権限の原則 / Implementing the Principle of Least Privilege with Okta Identity Governance
tatsumin39
0
160
サイバーエージェント流クラウドコスト削減施策「みんなで金塊堀太郎」
kurochan
4
2.2k
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
310
OSSで50の競合と戦うためにやったこと
yamadashy
3
950
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
253
22k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
Faster Mobile Websites
deanohume
310
31k
Building Adaptive Systems
keathley
44
2.8k
Fireside Chat
paigeccino
40
3.7k
Bash Introduction
62gerente
615
210k
The Straight Up "How To Draw Better" Workshop
denniskardys
238
140k
Producing Creativity
orderedlist
PRO
347
40k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.1k
Making Projects Easy
brettharned
120
6.4k
Building an army of robots
kneath
305
46k
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ʹࣄͤ͞Δ
ϦϦʔεͷ ͓ΘΓ
·ͱΊ ࠓͷԿͷͩͬͨͷ͔
৮Δରͱͦͷ࡞ઓ ϓϩμΫγϣϯίʔυஸೡʹ ։ൃڥͲΜͲΜΔ
ΞϓϦέʔγϣϯͷઃܭ৻ॏʹ ण໋͕͍ ৮Ε߹͏͍࣌ؒ ͦͷઃܭΛҰத৮Γ͍͔ͨ
ఫୀ͢͠͞ ബ͍ϑϨʔϜϫʔΫΛେʹ͍ͯ͠Δ ॏްͳάοζʹґଘͤͣ͋ͱ͔Β ·ͨม͑Δલఏ ಋೖٕ͕ͨ͠ݹͼͨͱ͖ఫୀͰ͖Δ͔
ਓʹΛ͚Δ νʔϜϝϯόશһ͕։ൃ͍͢͠ڥΛ ࡞ΔͷΤϯδχΞͷࣄ ಉ྅͕खͰΠϯσϯτͯͨ͠Βνϟϯε
։ൃΛαϙʔτ͢ΔͨΊͷίʔυ ؾܰʹม͍͑ͯ͘ ϓϩμΫγϣϯίʔυΑΓण໋͕͍ յΕͨΒࣺͯͯ࡞Γ͢
·ͱΊ ҆ఆͯ͠αʔϏε։ൃΛଓ͚ΔͨΊ ͷίʔυͷઃܭํ ։ൃڥ։ൃϑϩʔ ։ൃϝϯόͷαϙʔτ
એγʔϧͬͯ·͢
એγʔϧͬͯ·͢