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.4k
はてなブログ最近の開発テクニックと最新の開発風景のご紹介
hitode909
July 01, 2017
Tweet
Share
More Decks by hitode909
See All by hitode909
cpanfileの更新を 自動化したい
hitode909
0
2.5k
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.2k
画面をチカチカさせるノウハウ
hitode909
0
310
一行音楽自動生成するやつ
hitode909
0
240
今日の重ね着
hitode909
0
250
Other Decks in Technology
See All in Technology
(機械学習システムでも) SLO から始める信頼性構築 - ゆる SRE#9 2025/02/21
daigo0927
0
150
Amazon S3 Tablesと外部分析基盤連携について / Amazon S3 Tables and External Data Analytics Platform
nttcom
0
140
明日からできる!技術的負債の返済を加速するための実践ガイド~『ホットペッパービューティー』の事例をもとに~
recruitengineers
PRO
3
410
Moved to https://speakerdeck.com/toshihue/presales-engineer-career-bridging-tech-biz-ja
toshihue
2
750
データの品質が低いと何が困るのか
kzykmyzw
6
1.1k
CZII - CryoET Object Identification 参加振り返り・解法共有
tattaka
0
380
Data-centric AI入門第6章:Data-centric AIの実践例
x_ttyszk
1
410
Culture Deck
optfit
0
430
N=1から解き明かすAWS ソリューションアーキテクトの魅力
kiiwami
0
130
TAMとre:Capセキュリティ編 〜拡張脅威検出デモを添えて〜
fujiihda
2
250
管理者しか知らないOutlookの裏側のAIを覗く#AzureTravelers
hirotomotaguchi
2
440
Classmethod AI Talks(CATs) #17 司会進行スライド(2025.02.19) / classmethod-ai-talks-aka-cats_moderator-slides_vol17_2025-02-19
shinyaa31
0
120
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Why Our Code Smells
bkeepers
PRO
336
57k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Side Projects
sachag
452
42k
Fireside Chat
paigeccino
34
3.2k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Speed Design
sergeychernyshev
27
790
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
Product Roadmaps are Hard
iamctodd
PRO
50
11k
Adopting Sorbet at Scale
ufuk
74
9.2k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
The Invisible Side of Design
smashingmag
299
50k
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ʹࣄͤ͞Δ
ϦϦʔεͷ ͓ΘΓ
·ͱΊ ࠓͷԿͷͩͬͨͷ͔
৮Δରͱͦͷ࡞ઓ ϓϩμΫγϣϯίʔυஸೡʹ ։ൃڥͲΜͲΜΔ
ΞϓϦέʔγϣϯͷઃܭ৻ॏʹ ण໋͕͍ ৮Ε߹͏͍࣌ؒ ͦͷઃܭΛҰத৮Γ͍͔ͨ
ఫୀ͢͠͞ ബ͍ϑϨʔϜϫʔΫΛେʹ͍ͯ͠Δ ॏްͳάοζʹґଘͤͣ͋ͱ͔Β ·ͨม͑Δલఏ ಋೖٕ͕ͨ͠ݹͼͨͱ͖ఫୀͰ͖Δ͔
ਓʹΛ͚Δ νʔϜϝϯόશһ͕։ൃ͍͢͠ڥΛ ࡞ΔͷΤϯδχΞͷࣄ ಉ྅͕खͰΠϯσϯτͯͨ͠Βνϟϯε
։ൃΛαϙʔτ͢ΔͨΊͷίʔυ ؾܰʹม͍͑ͯ͘ ϓϩμΫγϣϯίʔυΑΓण໋͕͍ յΕͨΒࣺͯͯ࡞Γ͢
·ͱΊ ҆ఆͯ͠αʔϏε։ൃΛଓ͚ΔͨΊ ͷίʔυͷઃܭํ ։ൃڥ։ൃϑϩʔ ։ൃϝϯόͷαϙʔτ
એγʔϧͬͯ·͢
એγʔϧͬͯ·͢