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
楽楽明細でやってるChatOps/Development with ChatOps
Search
A1
September 18, 2018
0
1.1k
楽楽明細でやってるChatOps/Development with ChatOps
[Rakus Meetup Tokyo #1] 発表資料
https://rakus.connpass.com/event/97795/
A1
September 18, 2018
Tweet
Share
More Decks by A1
See All by A1
Kotlin2でdataクラスの copyメソッドを禁止する/Data class copy function to have the same visibility as constructor
eichisanden
1
250
短納期でローンチした新サービスをJavaで開発した話/launched new service using Java
eichisanden
6
3.8k
トラブルゼロで乗り切ったTypeScript移行/trouble-free TypeScript migration
eichisanden
3
3.2k
スクラム開発チームをLessでスケールさせた話/Scaling Scrum team with Less
eichisanden
0
5.4k
息の長いサービスのフロントエンドを少し改善する営み/frontend-improvement
eichisanden
3
2.6k
実はGitLabで使えるmermaid.js/gitlab-mermaid.js
eichisanden
1
550
既存 Web アプリケーションへの React.js 適用/react for web application
eichisanden
0
1.6k
jshell概要
eichisanden
0
85
楽楽明細の開発を支える技術
eichisanden
0
590
Featured
See All Featured
Adopting Sorbet at Scale
ufuk
73
9.1k
The World Runs on Bad Software
bkeepers
PRO
65
11k
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Become a Pro
speakerdeck
PRO
26
5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
17
2.3k
Site-Speed That Sticks
csswizardry
2
190
Making Projects Easy
brettharned
116
5.9k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2k
Transcript
ָָ໌ࡉͰͬͯΔ $IBU0QT 3BLVT.FFUVQ5PLZP &JJDIJ.JUB
&JJDIJ.JUB !FJDIJTBOEFO.FNCFSTJODF ɹɹɹɹɹɹɹ୲ εϖγϟϦετ৬ ΧΠθϯ͓͡͞Μ+FOLJOTͷ൪ਓϙέϞϯ͓͡͞Μ
গਓͰ։ൃ͔Βӡ༻·Ͱ͜ͳ͢ ͨΊʹɺ͍͔ʹϧʔνϯϫʔΫ ʹ͔͚Δ࣌ؒΛݮΒ͠ɺίʔυΛ ॻ࣌ؒ͘Λ࡞Δ͔͕ॏཁ
ͦͷͨΊʹָָ໌ࡉνʔϜͰऔΓ ΜͰ͖ͨΧΠθϯͷͻͱͭɺ $IBU0QTʹ͍͓ͭͯ͠͠·͢
πʔϧඋظ w ࣗͨͪͷ։ൃɾӡ༻ָ͕ʹͳΔεΫϦϓτΛ࡞ w ϏϧυσϓϩΠʢݕূڥʣΛ+FOLJOTʹඋͨ͠Γ
ָʹͳΓ·͕ͨ͠ɺ৽ͨͳ՝͕ʜ w +FOLJOTΛ͍͍ͪͪ։͘ͷ໘͍͘͞ w ͏͚ͩͷਓͷ+FOLJOTͷΞΧϯτΛ࡞Δͷ໘͍͘͞ w ͦͦΤϯδχΞʹ͔͑͠ͳ͍ʜ
ͦ͜Ͱ$IBU0QT
$IBU0QTͱ w l$IBUzʢνϟοτʣͱz0QTzʢӡ༻ʣͱ͍͏ͭͷϫʔ υΛֻ͚߹Θͤͨޠ w νϟοτͱ৭ΜͳαʔϏεɾϓϩάϥϜΛͭͳָ͛ͯ͠ ͍ͨʂ
8FVTF.BUUFSNPTU
҆৺͍ͯͩ͘͠͞ .BUUFSNPTUɺΦʔϓϯιʔεͷ4MBDLޓͷνϟοτ ˠࠓ͢༰ɺͦͷ··4MBDLͰੜ͔ͤ·͢
.BUUFSNPTU֎෦࿈ܞ̏छͷਆث 4MBDLͷz"QQzʹ֘͢Δͷͳ͍ͷͰɺ̏छྨͷ౷߹ػೳΛۦͯ͠%FW0QTΛ࣮ݱ͢Δ
ਆث͖ΣϒϑοΫ ɾνϟοτʹϝοηʔδΛૹΔͨΊͷઃఆ
ਆث͖ΣϒϑοΫ ɾ࡞͢ΔͱIPPLTUPLFOͷΑ͏ͳ63-͕ৼΒΕΔ
ਆثɿεϥογϡίϚϯυ w νϟοτ͔Β֎෦ʹ࿈ܞ͢ΔίϚϯυΛ࡞ΕΔ
࿈ܞઌͷ63-ɻ࣮ߦ͢Δͱ͜ͷ63-ʹݺͼݩ ͷνϟϯωϧίϚϯυͷҾͳͲͷใ͕ +40/Ͱ͞ΕΔ ਆثɿεϥογϡίϚϯυ ίϚϯυ໊͜ͷྫXCͰ࣮ߦͰ͖Δ (&5Ͱ1045Ͱ͓͖ͳํͰ
ਆثɿ֎͖ΣϒϑοΫ Ԡ͢ΔϫʔυΛࢦఆ τʔΫϯ͕ൃߦ͞ΕΔͷͰ߇͓͑ͯ͘ ࿈ܞઌͷ63-Λࢦఆ w νϟοτͰͬͨϫʔυΛरͬͯ֎෦ʹ࿈ܞ͢Δ
w ͨͩ͠ɺ֎͖ΣϒϑοΫύϒϦο ΫνϟϯωϧͰ͔͑͠ͳ੍͍͕͋Γ ฐࣾͷ֤αʔϏεͷνϟϯωϧϓϥΠ ϕʔτͳͷͰ͑ͳ͍͜ͱ͕໌
̎छͷਆثΛͬͯઃఆ͍ͯ͘͠
εϥογϡίϚϯυͰ+FOLJOTΛݺΜͰΈͨʢࣦഊʣ w εϥογϡίϚϯυͷଓઌʹ+FOLJOTͷ63-Λࢦఆ w ਖ਼ৗ࣮ߦ࣌ɺ+FOLJOT͕zDSFBUFEzΛฦ͖ͯ͠ ·͕͢ɺ.BUUFSNPTU͕Τϥʔͱͯ͠ѻͬͯͯ͠͠· ͍ࣦഊʢ̌൪ਖ਼ৗऴྃͩΖ͕ʂʣ
εϥογϡίϚϯυΛதܧ͢Δ w ͦ͜ͰɺεϥογϡίϚϯυΛҰ୴ड͚͚ͭͯɺ +FOLJOTʹ͢ΈΛ࡞Δ͜ͱʹ Ͱɺ͜ͷͨΊʹ͔Β"1*αʔόʔཱͯΔͷ໘ष͍
ͦ͜Ͱ)VCPU
)VCPU w (JU)VC͕ެ։͍ͯ͠ΔCPUπʔϧ w ͓ͦΒ͘Ұ൪ϝδϟʔͰɺΞμϓλʔεΫϦϓτ͕๛ w વɺ.BUUFSNPTU4MBDLͷΞμϓλʔ͋Δ w $P⒎FFεΫϦϓτͷΠϝʔδ͕ڧ͍͕ɺී௨ʹKTͰॻ͚ Δ
w ଂ͍ͯ͠Δ&YQSFTTΛ͏·͑͘"1*αʔόʔΛผ ్ཱͯΔඞཁ͕ͳ͍ʢ͜Ε͕ܾΊखʣ
)VCPU w τϨϯυʹහײͳʹ͝Ζྲྀߦͬͨͱࢥ͏͕ɺͦͷޙࠜڧ͘ਓؾΛҡ͍࣋ͯ͠ Δҹ w ޙൃௐ͕ͨɺγϯϓϧͩ͠ɺ͜ΕҰ൪ྑ͔ͬͨ
·͕ͨ w )VCPUͷ.BUUFSNPTUΞμϓλ͕ɺ֎͖Σϒ ϑοΫΛ͏લఏʹͳ͍ͬͯΔʢવͰ͕͢ʣ
ͦ͜Ͱ w εϥογϡίϚϯυΛड͚͚ɺͦΕΛ֎͚Σϒ ϑοΫͰड͚औ͔ͬͨͷΑ͏ʹ)VCPUʹϝοηʔδΛ ྲྀ͢)VCPUͷϓϥάΠϯΛࣗ࡞͠·ͨ͠
IUUQTXXXOQNKTDPNQBDLBHFIVCPUTMBTIDPNNBOE
γεςϜߏ ͜͜ͷ෦ࣗ࡞ͷ044ͰOQNʹެ։ࡁΈ ී௨ͷ)VCPUεΫϦϓτͰॻ͚Δ͠ɺ 044ͷεΫϦϓτ͑Δ SFTQPOTFNFTTBHF +PCݺͼग़͠
044ͷ)VCPUεΫϦϓτ͕͑Δͼ IUUQTHJUIVCDPNIVCPUTDSJQUTIVCPUQVHNF
)VCPUεΫϦϓτͷྫ module.exports = (robot) => { robot.respond(/ping/i, (res) => {
rebot.reply(‘pong’); } robot.respond(/σϓϩΠΑΖ͘͠/i, (res) => { // JenkisΛݺͼग़͠ } }
׆༻ࣄྫ
ݕূڥͷ࡞ w XCTDIFNBDSFBUFαʔόʔڥ໊ʜͷΑ͏ʹνϟοτ͢Δͱ ݕূڥΛ࡞ΕΔίϚϯυΛ࡞ͨ͠ʢཪͰ+FOLJOTʹ࿈ܞͯ͠%#ε ΩʔϚΛ࡞ͬͨΓɺσΟϨΫτϦߏΛ࡞ͬͨΓ͍ͯ͠Δʣ w আXCEFMFUFαʔόʔڥ w ୭ͰՃɾআ͕ՄೳʹʢҎલ݁ߏґཔ͞Ε͍ͯͨʣ
"1*Λνϟοτ͔Βୟ͚ΔΑ͏ʹ w ָָ໌ࡉͰ༻ҙ͍ͯ͠Δ"1*Λνϟοτ͔Βୟ͚Δ Α͏ʹͨ͠ɻ w ඇΤϯδχΞͷΘΓʹDVSMΛୟ͍ͯ͋͛Δ࡞ۀ͕ ͳ͘ͳͬͨ
੩తղੳ w ੩తղੳͷ݁ՌΛνϟοτʹ௨͢ΔΑ͏ʹͨ͠ɻ w ΈΜͳݟ͍ͯΔͷͰɺ์ஔ͞Εؾຯͳ੩తղੳΛӡ ༻Ͱ͖ΔΑ͏ʹͳͬͨ
ϦϦʔεதͷόʔδϣϯΛνΣοΫ w Կे͋ΔαʔόʔΛεΫϨΠϐϯά࣮ͯ͠ࡍʹ σϓϩΠ͞Ε͍ͯΔΞϓϦͷόʔδϣϯΛௐΔπʔ ϧΛνϟοτ͔Β࣮ߦͰ͖ΔΑ͏ʹɻ w ສ͕ҰͷϦϦʔε࿙ΕΛ͍͛ͯΔ w ݩʑ͋ͬͨQZUIPOεΫϦϓτΛνϟοτ͔Βݺͼ ग़ͤΔΑ͏ʹ͚ͨͩ͠ʢεΫϦϓτͷग़ྗΛͦͷ·
·νϟοτʹग़ྗ͚ͨͩ͠ɺ΄΅࿑ྗθϩͰ࣮ݱʣ
ϦϦʔεϞδϡʔϧͷϏϧυ w νϟοτͰΔ͜ͱͰɺݸਓ͕ͬͯΔ͜ͱ͕Մ ࢹԽɾڞ༗͞ΕΔͷྑ͔ͬͨ w Θ͟Θ͟+FOLJOTʹϩάΠϯͤͣͱՌΛ νϟοτ͔ΒμϯϩʔυͰ͖Δ
͕ى͖ͨΒଈରԠ w Կ͔͋ͬͯɺνϟοτΛݟ͍ͯΔΤϯδχ Ξ͕ଈରԠͯ͘͠ΕΔ҆৺ײ
৭Μͳ௨Λνϟοτʹू w ϝʔϧΛසൟʹ։͘ͷਏ͍ͷͰɺࠓ··Ͱϝʔ ϧͰͷ௨Λνϟοτʹूʢνϟοτͷྲྀྔ͕ ૿͖͑ͯͨΒผͷ՝͕ग़ͦ͏͕ͩݱঢ়շదʣ
͍͞͝ʹ w طଘͷπʔϧΛνϟοτͭͳָ͛ͯΛ͠Α͏ w αʔϏε֎ͷίʔσΟϯάָ͍͠ w ָΛ͢ΔͨΊͷۤ࿑Λ͠Α͏ w $IBUͰ५ͳίϛϡχέʔγϣϯΛ
͋Γ͕ͱ͏͍͟͝·ͨ͠