Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
中規模チームを支える自動化とノウハウ共有の仕組み/CEDEC2017
Konboi
August 30, 2017
Technology
8
8.9k
中規模チームを支える自動化とノウハウ共有の仕組み/CEDEC2017
本セッションでは、約20〜30人規模で面白法人カヤックが運用しているスマホゲームタイトルの開発/運用の現場を支えている開発の仕組み化と自動化の取り組みについて具体的な例を上げながら紹介します。
Konboi
August 30, 2017
Tweet
Share
More Decks by Konboi
See All by Konboi
煩雑な運用を Goを使って楽にする / Go Conference 2019 Spring
konboi
4
3.4k
あなたってどんな方(型)?/ kamakura.go#4
konboi
1
370
golang tokyo #6 / ゲーム開発には欠かせない?! あれをシュッと見る
konboi
1
6.5k
git-schemlexとddl-makerを使ったDB migrationの紹介 / git-schemalex and ddl-maker migration #golangtokyo
konboi
1
8.9k
Redisの調査についてとrmlp
konboi
5
3.9k
カヤックの新卒研修 #師弟登壇2015
konboi
0
3.4k
開発環境をどっかんどっかん立てる
konboi
0
540
Other Decks in Technology
See All in Technology
立ち止まっても、寄り道しても / even if I stop, even if I take a detour
katoaz
0
970
組織に対してSREを適用するとどうなるか
kuniim
9
3.1k
Cloudflare Workersで動くOG画像生成器
aiji42
1
500
Kaggleシミュレーションコンペの動向
nagiss
0
280
2年で10→70人へ! スタートアップの 情報セキュリティ課題と施策
miekobayashi
1
680
ChatGPT for Hacking
anugrahsr
0
4.7k
OCIコンテナサービス関連の技術詳細 /oke-ocir-details
oracle4engineer
PRO
0
780
NGINXENG JP#2 - 1-NGINX-エンジニアリング勉強会-きょうの見どころ
hiropo20
0
120
インフラ技術基礎勉強会 開催概要
toru_kubota
0
180
DNS権威サーバのクラウドサービス向けに行われた攻撃および対策 / DNS Pseudo-Random Subdomain Attack and mitigations
kazeburo
5
1.3k
Raspberry Pi Camera 3 介紹
piepie_tw
PRO
0
170
CES_2023_FleetWise_demo.pdf
sparkgene
0
130
Featured
See All Featured
Faster Mobile Websites
deanohume
295
29k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
349
27k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
109
16k
A Modern Web Designer's Workflow
chriscoyier
689
180k
Support Driven Design
roundedbygravity
88
8.9k
Git: the NoSQL Database
bkeepers
PRO
419
60k
Building Flexible Design Systems
yeseniaperezcruz
314
35k
Visualization
eitanlees
128
12k
The Language of Interfaces
destraynor
149
21k
Code Review Best Practice
trishagee
50
11k
VelocityConf: Rendering Performance Case Studies
addyosmani
317
22k
Rebuilding a faster, lazier Slack
samanthasiow
69
7.6k
Transcript
தنνʔϜΛࢧ͑ΔࣗಈԽͱ ϊϋڞ༗ͷΈ ໘ന๏ਓΧϠοΫ ਧྒྷհ@CEDEC2017
Profile • ਧྒྷհ a.k.a ˏKonboi • ໘ന๏ਓΧϠοΫ • ιʔγϟϧήʔϜࣄۀ෦ॴଐ •
ٕज़෦ όοΫΤϯυΤϯδχΞ݉νʔϑ • ΩϯϚϯϚοεϧγϣοτͳͲΛ୲
தنνʔϜΛࢧ͑ΔࣗಈԽ ͱϊϋڞ༗ͷΈ
தنνʔϜΛࢧ͑ΔࣗಈԽ ͱϊϋڞ༗ͷΈ
ΧϠοΫͷ ։ൃମ੍ͷհ
• ΒͷߕࢠԂϙέοτ • γϦʔζྦྷܭ 600ສDL • ϓϨΠϠʔ̍ਓͷߴߍٿࣇ • ϓϨΠϠʔಉ࢜ͰνʔϜΛฤ •
ߕࢠԂग़/༏উΛࢦ͢ • ΩϯϚϯ MUSCLESHOT • DeNA͞Μͱͷڠۀ • ݪ࡞Λ࠶ݱͨ͠ετʔϦʔ • ࠷େ̐ਓͷϦΞϧλΠϜ ڠྗότϧ
اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦
اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦ ˞ήʔϜٕݚΠϯϑϥٕज़෦ॴଐ
ϓϩϞʔγϣϯاը෦ॴଐ Ͱ͕͢આ໌ͷͨΊ͚͍ͯ·͢
اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦
اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦ ɾϓϩσϡʔαʔ
ɾσΟϨΫλʔ ɾϓϥϯφʔ ɾϨϕϧσβΠφʔ ɾϓϩδΣΫτϚωʔδϟʔ
اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦
اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦ ɾ6*σβΠφʔ
ɾ%σβΠφʔ ɾάϥϑΟοΧʔ ɾΞχϝʔλʔ
اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦
اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦ ɾόοΫΤϯυΤϯδχΞ
ɾήʔϜϓϩάϥϚ ɾ6*ϓϩάϥϚ
اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦
اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦ ɾΞηοτύΠϓϥΠϯߏங
ɾڞ௨ϥΠϒϥϦͷ։ൃ ɾͦͷଞڞ༗ج൫ͷ։ൃӡ༻
اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦
اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦ ɾαʔόʔߏஙӡ༻
ɾΠϯϑϥʹؔ͢ΔΞυόΠβʔ ɾো࣌ͷରԠϔϧϓ
اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦
اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦ ɾࠂؔ࿈
ɾίϥϘاը
اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦ ˒
d!3 ˒ ༑ϚʔέςΟϯάͷղઆ
اը෦ ҙঊ෦ ٕज़෦ ήʔϜٕݚ Πϯϑϥ ϓϩϞʔγϣϯ اը෦ ҙঊ෦ ٕज़෦
اը෦ ҙঊ෦ ٕज़෦ dਓఔ dਓఔ dਓఔ
اը෦ ҙঊ෦ ٕज़෦ dਓఔ dਓఔ dਓఔ ͏ͪ#&d̒ਓ
اը෦ ҙঊ෦ ٕज़෦ dਓఔ dਓఔ dਓఔ ͏ͪ#&d̒ਓ ߹ܭdਓ
ΧϠοΫͷ։ൃମ੍ • ήʔϜΤϯδϯUnityΛ༻ • ։ൃڥؚΊόοΫΤϯυશͯAWS • GithubͷPrivateϦϙδτϦͰίʔυཧ • ΞηοτGithubͰཧ •
νϟοτπʔϧʹSlack
தنνʔϜΛࢧ͑ΔࣗಈԽ ͱϊϋڞ༗ͷΈ
தنνʔϜΛࢧ͑ΔࣗಈԽ ͱϊϋڞ༗ͷΈ
Ϛελʔσʔλͷ ӡ༻ϑϩʔࣗಈԽ
• Ϛελʔσʔλߋ৽ͷස͕ߴ͍ • ΫΤετɺΩϟϥΫλʔɺΨνϟɺ etc ... • Ϛελʔσʔλͷߋ৽αΠΫϧ͕ૣ͍ • ϢʔβʔఏڙͰ͖Δࢪࡦ͕૿͑Δ
• ϏδωεతΠϯύΫτ͕େ͖͍ Ϛελʔσʔλӡ༻ϑϩʔͷࣗಈԽ
Ϛελʔσʔλӡ༻ϑϩʔͷࣗಈԽ • ΧϠοΫͰϚελʔσʔλͷཧʹ Google Spreadsheets(ҎԼ GSS)Λ༻ • өͷେ·͔ͳྲྀΕͱͯ͠ • ϓϥϯφʔɺϨϕϧσβΠφʔ͕GSSʹೖྗ
• GSS͔ΒCSVܗࣜͰμϯϩʔυ • CSV͔ΒDBΠϯϙʔτ • ΫϥΠΞϯτ৴͕ඞཁͳͷมͯ͠
Why GSS ? • ϝϦοτ • ෳਓͰૢ࡞Մೳ • Πϯλʔωοτ͑͋͞ΕͲ͔͜ΒͰฤूՄೳ •
ฤूͷཤྺ͕Γɺ෮ݩՄೳ • JavaScriptͰϓϥάΠϯͷهड़͕Մೳ
Why GSS ? • σϝϦοτ • ࣜϓϥάΠϯΛ༻͢Δͱ͙͢ॏ͘ͳΔ • ωοτͷڥ͕ͳ͍ͱߋ৽͕өͰ͖ͳ͍
ࣗಈԽલͷGSSͷӡ༻ϑϩʔ • ̍ͭͷγʔτΛΈΜͳͰฤू • ࡞ۀ༰͕িಥ • ฒߦͰͷ࡞ۀ͕͘͠ • ࡞ۀεϐʔυ͕ग़ͳ͍ࣄ͕ʹ
*% /BNF "UUBDL )1
ϋϯϚʔ φΠϑ ࡞ۀ͕িಥ (ࣄྫ) དྷिग़͢ثΛ ೖྗ͠·͢
*% /BNF "UUBDL )1
ϋϯϚʔ φΠϑ ࡞ۀ͕িಥ (ࣄྫ) ࠶དྷिग़͢ثΛ ೖྗ͠·͢
*% /BNF "UUBDL )1
ϋϯϚʔ φΠϑ ࡞ۀ͕িಥ (ࣄྫ) ࠓೖྗதͳͷͰ গͬͯ͠Լ͍͞
*% /BNF "UUBDL )1
ϋϯϚʔ φΠϑ ދప ଜӍ ࡞ۀ͕িಥ (ࣄྫ) ։ൃڥͰ ֬ೝ͠Α͏ͬͱʂ
*% /BNF "UUBDL )1
ϋϯϚʔ φΠϑ ދప ଜӍ ࡞ۀ͕িಥ (ࣄྫ) ͍͢·ͤΜ
*% /BNF "UUBDL )1
ϋϯϚʔ φΠϑ ދప ଜӍ ࡞ۀ͕িಥ (ࣄྫ) ࣄલͷ͓Βͤͱ ύϥϝʔλ͕ҧ͏ͷͰ मਖ਼͠·͢
*% /BNF "UUBDL )1
ϋϯϚʔ φΠϑ ދప ଜӍ ࡞ۀ͕িಥ (ࣄྫ) 2"લͷσʔλൈ͍ͯ Լ͍͞
*% /BNF "UUBDL )1
ϋϯϚʔ φΠϑ ދప ଜӍ ࡞ۀ͕িಥ (ࣄྫ)
*% /BNF "UUBDL )1
ϋϯϚʔ φΠϑ ދప ଜӍ ࡞ۀ͕িಥ (ࣄྫ) ࡞ۀͰ͖Δͷ͍ͭʹ ͳΔΒʜ
͍
͍ • Ϛελʔσʔλೖྗऀͷෛՙ͕ߴ͍ • ฒߦͯ͠࡞ۀ͕Ͱ͖ͳ͍ͷͰ ࢪࡦ̍ͭɺ̍ͭͷઃఆʹ͕͔͔࣌ؒΔ • ͕͋ͬͨ࣌ͷϦΧόϦʔʹ͕͔͔࣌ؒΔ
ରࡦ • ։ൃ༻ͷGSSΛຊ൪༻͔Β·Δͬͱෳ • QAલͷσʔλෳγʔτʹೖྗ • QAྃޙʹຊ൪༻ͷγʔτʹೖྗࠩΛҠಈ • σϓϩΠ
·Δͬͱෳ *% /BNF "UUBDL )1
ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BN "UUB )1 ϋϯ φΠ *% /BN "UUB )1 ϋϯ φΠ *% /BN "UUB )1 ϋϯ φΠ *% /BN "UUB )1 ϋϯ φΠ *% /BNF "UUBD L )1 ϋϯϚ ʔ φΠϑ
·Δͬͱෳ *% /BNF "UUBDL )1
ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BN "UUB )1 ϋϯ φΠ *% /BN "UUB )1 ϋϯ φΠ *% /BN "UUB )1 ϋϯ φΠ *% /BN "UUB )1 ϋϯ φΠ *% /BNF "UUBD L )1 ϋϯϚ ʔ φΠϑ *% /BN "UUB )1 ϋϯ φΠ *% /BN "UUB )1 ϋϯ φΠ *% /BN "UUB )1 ϋϯ φΠ *% /BN "UUB )1 ϋϯ φΠ *% /BNF "UUBD L )1 ϋϯϚ ʔ φΠϑ
·Δͬͱෳ *% /BNF "UUBDL )1
ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BN "UUB )1 ϋϯ φΠ *% /BN "UUB )1 ϋϯ φΠ *% /BN "UUB )1 ϋϯ φΠ *% /BN "UUB )1 ϋϯ φΠ *% /BNF "UUBD )1 ϋϯϚ φΠϑ ދప ଜӍ *% /BN "UUB )1 ϋϯ φΠ *% /BN "UUB )1 ϋϯ φΠ *% /BN "UUB )1 ϋϯ φΠ *% /BN "UUB )1 ϋϯ φΠ *% /BNF "UUBD L )1 ϋϯϚ ʔ φΠϑ
·Δͬͱෳ *% /BNF "UUBDL )1
ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BN "UUB )1 ϋϯ φΠ *% /BN "UUB )1 ϋϯ φΠ *% /BN "UUB )1 ϋϯ φΠ *% /BN "UUB )1 ϋϯ φΠ *% /BNF "UUBD )1 ϋϯϚ φΠϑ ދప ଜӍ *% /BN "UUB )1 ϋϯ φΠ *% /BN "UUB )1 ϋϯ φΠ *% /BN "UUB )1 ϋϯ φΠ *% /BN "UUB )1 ϋϯ φΠ *% /BNF "UUBD )1 ϋϯϚ φΠϑ άϩʔ ϝϦέ
ղܾ
͠ͳ͔ͬͨ
• ຊ൪Խ͞Εͨσʔλ͕ະөͰ ڍಈ͕͓͔͘͠ͳΓΤϯδχΞ͕ௐࠪ͢Δ͜ͱ͕ଟൃ • ຊ൪Խ͞ΕͨσʔλΛฤूதͷγʔτ ө͢Δ࡞ۀҰۤ࿑ • मਖ਼͕Ϧόʔτͯ͠͠·͏ࣄҊ… • өʹϛε͕͋ͬͨ߹ͷϦΧόϦʔ͕େม
·Δͬͱෳ ݁Ռ
• Ϛελʔσʔλͷೖྗऀͷෛՙগ͠Լ͕ͬͨ • ෆ۩߹࣌ͷௐࠪ/ϦΧόϦʔ࡞ۀʹΑΓ όοΫΤϯυΤϯδχΞͷෛՙ૿ ·Δͬͱෳ ݁Ռ
Ͳ͏͔ͨ͠
GSSͷׂ
GSSׂ • ϕʔεͷGSS • σϓϩΠՄೳͳσʔλ͕ೖͬͨγʔτ • ։ൃ༻ͷGSS • ৽نՃ͍ͨ͠σʔλͷΈՃͨ͠γʔτ •
͜ΕΒͷ̎ͭͷγʔτΛ݁߹ͯ͠औΓࠐΉ
*% /BNF "UUBDL )1
ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ GSSׂ
*% /BNF "UUBDL )1
ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ GSSׂ
*% /BNF "UUBDL )1
ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ GSSׂ *% /BNF "UUBDL )1
*% /BNF "UUBDL )1
ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ދప ଜӍ *% /BNF "UUBDL )1 άϩʔϒ ϝϦέϯ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ GSSׂ
*% /BNF "UUBDL )1
ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ދప ଜӍ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ ދప ଜӍ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ GSSׂ
*% /BNF "UUBDL )1
ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 άϩʔϒ ϝϦέϯ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ άϩʔϒ ϝϦέϯ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ GSSׂ
*% /BNF "UUBDL )1
ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ GSSׂ
*% /BNF "UUBDL )1
ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ ދప ଜӍ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ *% /BNF "UUBDL )1 ϋϯϚʔ φΠϑ GSSׂ *% /BNF "UUBDL )1 ދప ଜӍ
GSSׂ ࣮ࡍͷӡ༻ • GSSׂऔΓࠐΈͷεΫϦϓτΛ༻ҙ • ※GSSࣗମʹ͜ͷ༷ͳػೳ͋Γ·ͤΜ • εΫϦϓτΛchat botܦ༝Ͱ࣮ߦͰ͖Δঢ়ଶʹ •
ϓϥϯφʔ/ϨϕϧσβΠφʔChatͰσʔλ ͷऔΓࠐΈΛߦ͏
GSSׂ ࣮ࡍͷӡ༻ #BTF ׂ
GSSׂ ࣮ࡍͷӡ༻ #BTF ׂ ฤू
GSSׂ ࣮ࡍͷӡ༻ #BTF ׂ CPUNFOUJPO
GSSׂ ࣮ࡍͷӡ༻ #BTF ׂ TDSJQUͷ࣮ߦ
GSSׂ ࣮ࡍͷӡ༻ #BTF ׂ ݁߹ͯ͠औΓࠐΈ
GSSׂ ࣮ࡍͷӡ༻ #BTF ׂ 13ͷ࡞
GSSׂ ࣮ࡍͷӡ༻
GSSׂ ࣮ࡍͷӡ༻
• Ϛελʔσʔλೖྗऀͷෛՙ͕ߴ͍ • ฒߦͯ͠࡞ۀ͕Ͱ͖ͳ͍ͷͰ ࢪࡦ̍ͭɺ̍ͭͷઃఆʹ͕͔͔࣌ؒΔ ˠ ඞཁͳγʔτΛࣗͰ࡞͢Δ͚ͩ ଞࣾͷ࡞ۀΛ΄ͱΜͲҙࣝͤͣʹ࡞ۀՄೳʹ • ͕͋ͬͨ࣌ͷϦΧόϦʔʹ͕͔͔࣌ؒΔ
ˠ ϕʔεͱͳΔγʔτΛमਖ਼͢Δ͚ͩͰOK GSSׂ ࣮ࡍͷӡ༻
• ෆ۩߹࣌ͷௐࠪ/ϦΧόϦʔ࡞ۀʹΑΓ όοΫΤϯυΤϯδχΞͷෛՙ૿ ˠ ΄ͱΜͲͷ߹Ճ͞ΕͨσʔλΛௐࠪ͢Εղܾ • chatopsͰ΄ͱΜͲΤϯδχΞͷखΛआΓͳͯ͘Մೳʹ • εϓϨουγʔτͷՃ •
σʔλͷऔΓࠐΈ • σʔλͷߋ৽ GSSׂ ࣮ࡍͷӡ༻
ͦΕଋͷؒ
৽ͨͳ՝
ෳͷ։ൃڥͷχʔζ • ฒߦͯ͠࡞ۀ͕Ͱ͖Δڥʹͳͬͨ͜ͱͰ σʔλͷߋ৽εϐʔυ͕UP • ֬ೝ༻ͷڥ͕ෳඞཁʹ
Ҏલͷ֬ೝڥ • dev01~devN ·Ͱ༻ҙ(~10) • ߋ৽/मਖ਼͍ͨ͠σʔλΛөͨ͠branchΛద༻ • ࢪࡦʹΑͬͯαʔόʔͷ࣌ؒΛมߋ͢ΔͨΊ ͬͯΔਓ͕͍ͳ͍͔֬ೝ͕ඞཁ
EFW EFW EFW EFW/ ʜ 8FC4FSWFS Ҏલͷ֬ೝڥ FYBNQMFHBNFDPN
EFW EFW EFW EFW/ ʜ 8FC4FSWFS Ҏલͷ֬ೝڥ FYBNQMFHBNFDPN HBDIB
EFW EFW EFW EFW/ ʜ 8FC4FSWFS Ҏલͷ֬ೝڥ EFWFYBNQMFHBNFDPN HBDIB
EFW EFW EFW EFW/ ʜ 8FC4FSWFS Ҏલͷ֬ೝڥ FYBNQMFHBNFDPN HBDIB pYXFBQPO
EFW EFW EFW EFW/ ʜ 8FC4FSWFS Ҏલͷ֬ೝڥ EFWFYBNQMFHBNFDPN pYXFBQPO HBDIB
Ҏલͷ֬ೝڥ A͞Μ: dev01͍ͬͯΔͻͱ͍·͔͢ʁ B͞Μ: ͍ A͞Μ: ͡Ό͋ɺdev03Ͳ͏Ͱ͔͢ʁ C͞Μ: ͬͯ·ʔ͢
Ҏલͷ֬ೝڥ • ։͍͍ͯΔڥΛ୳͢ͷ͕ຯʹखؒ • ࠷ॳ֬ೝස͕গͳ͔͕ͬͨ ঃʑʹ૿͍͑ͯͬͨ • ։ൃͰAPIͷͭͳ͗ࠐΈQAʹαʔόʔΛ ඞཁͱ͢ΔͨΊӨڹ͕େ͖͘ͳ͖ͬͯͨ
docker × mirage Λ༻ͨ͠։ൃڥͷߏங
What's docker ? • ίϯςφܕͱݴΘΕΔ ΞϓϦέʔγϣϯ࣮ߦڥ • ΠϝʔδͱݺΕΔΞϓϦέʔγϣϯͷܗ ͔ΒΞϓϦέʔγϣϯΛߴʹىಈՄೳ
˞dockerʹؔͯ͠ࠓճৄ͘͠৮Ε·ͤΜ
What's mirage ? • ήʔϜٕݚϝϯόʔ͕։ൃͨ͠ϛυϧΣΞ • subdomainͱbranch໊ΛηοτͰϦΫΤετ • ίϯςφΛىಈ͠ɺbranchใ͕ڥมͱͯ͠Δ •
ίϯςφʹ͞ΕͨbranchͰΞϓϦέʔγϣϯΛىಈ • ࢦఆͨ͠υϝΠϯ໊ͰϦΫΤετ͢Δͱ ରͷίϯςφProxy͢Δ
What's mirage ? 8FC4FSWFS
What's mirage ? 8FC4FSWFS
What's mirage ? 8FC4FSWFS NJSBHF
What's mirage ? 8FC4FSWFS NJSBHF
What's mirage ? 8FC4FSWFS NJSBHF υϝΠϯHBDIB ϒϥϯνHBDIB
What's mirage ? 8FC4FSWFS NJSBHF υϝΠϯHBDIB ϒϥϯνHBDIB
What's mirage ? 8FC4FSWFS NJSBHF υϝΠϯHBDIB ϒϥϯνHBDIB HBDIB
What's mirage ? 8FC4FSWFS NJSBHF υϝΠϯXFBQPO ϒϥϯνpYXFBQPO HBDIB
What's mirage ? 8FC4FSWFS NJSBHF υϝΠϯXFBQPO ϒϥϯνpYXFBQPO HBDIB
What's mirage ? 8FC4FSWFS NJSBHF υϝΠϯXFBQPO ϒϥϯνpYXFBQPO HBDIB pYXFBQPO
What's mirage ? 8FC4FSWFS NJSBHF HBDIB pYXFBQPO HBDIBFYBNQMFDPN
What's mirage ? 8FC4FSWFS NJSBHF HBDIB pYXFBQPO HBDIBFYBNQMFDPN
What's mirage ? 8FC4FSWFS NJSBHF HBDIB pYXFBQPO HBDIBFYBNQMFDPN
What's mirage ? 8FC4FSWFS NJSBHF HBDIB pYXFBQPO XFBQPOFYBNQMFDPN
What's mirage ? 8FC4FSWFS NJSBHF HBDIB pYXFBQPO XFBQPOFYBNQMFDPN
What's mirage ? 8FC4FSWFS NJSBHF HBDIB pYXFBQPO XFBQPOFYBNQMFDPN
What's mirage ? 8FC4FSWFS NJSBHF υϝΠϯHBDIB ϒϥϯνHBDIB HBDIB pYXFBQPO
What's mirage ? 8FC4FSWFS NJSBHF υϝΠϯHBDIB ϒϥϯνHBDIB HBDIB pYXFBQPO
What's mirage ? 8FC4FSWFS NJSBHF υϝΠϯHBDIB ϒϥϯνHBDIB HBDIB pYXFBQPO HBDIB
What's mirage ? 8FC4FSWFS NJSBHF HBDIB pYXFBQPO HBDIB HBDIBFYBNQMFDPN
docker × mirage • ֬ೝ༻ͷڥ͕ෳඞཁʹ ˠඞཁͳ࣌ʹɺඞཁͳ͚ͩڥ͕ىಈՄೳʹ ※ϚγϯϦιʔεͷ্ݶ͋Δ • ։͍͍ͯΔڥΛ୳͢ͷ͕ຯʹखؒ ˠ୭͕͍ͬͯΔ͔֬ೝ͢Δඞཁ͍Βͳ͍
ࣗͷඞཁͳڥΛඞཁͳཱ͚ͩͯΕΑ͍
docker × mirage • chat bot ʹ͢Δ͜ͱͰ ڥߏஙΤϯδχΞ͍Βͣ ※ Software
Design 20172݄߸ͷಛूͰ mirage͜ͷลͷΛॻ͍͍ͯ·͢[એ]
͜ΕͰશͯղܾʂ
͔ͱࢥ͍͖
·ͨɺ৽ͨͳ͕ • Ϛελʔσʔλͷߋ৽εϐʔυUP • ։ൃ/֬ೝڥ५ʹ • νʔϜνΣοΫQAͷ߲/ճ͕૿͑ νΣοΫ/QAͷίετ૿ʹ
ͱ͋ΔήʔϜӡ༻ͷҰ໘
ͱ͋ΔήʔϜӡ༻ͷҰ໘ • ෳͷΞΠςϜλΠϓ͕༩Ͱ͖ΔΑ͏ͳ Ϛελʔσʔλ͕͋Γ·ͨ͠ • item_type • item_id • item_amount
• item_typeͰ Ϛωʔɺਫথɺث ༷ʑͳͷ͕ઃఆͰ͖·͢
ͱ͋ΔήʔϜӡ༻ͷҰ໘ • item_type: 1 Ϛωʔ • item_type: 2 ਫথ •
item_type: 3 ث • ͱఆٛ͞Ε͍ͯ·͢
ͱ͋ΔήʔϜӡ༻ͷҰ໘ • ϚωʔΛ1000͋͛Δࢪࡦ͕ܾఆ • item_type: 1 • item_id: 0 •
item_amount: 1000 • ͱઃఆ
ͱ͋ΔήʔϜӡ༻ͷҰ໘ • ϚωʔΛ1000͋͛Δࢪࡦ͕ܾఆ • item_type: 1 • item_id: 0 •
item_amount: 1000 • ͱઃఆ͢Δͱ͜ΖΛ…
ͱ͋ΔήʔϜӡ༻ͷҰ໘ • ޡͬͯitem_typeΛ2(ਫথ)ͱࢦఆ • ͍͠ઃఆͰͳ͍ͷͰνʔϜνΣοΫ͚ͩͰ QAνΣοΫεΩοϓ • ͳ͘ΪϑτϘοΫεʹೖ͍ͬͯΔͷΛ֬ೝ • νʔϜνΣοΫແࣄ௨ա
• ͦͷ··ɺσϓϩΠ͞Ε·ͨ͠
ͱ͋ΔήʔϜӡ༻ͷҰ໘ • ࢪࡦ • ͳ͔ͥܝࣔ൘twitter͕૽͕͍͠ • ֬ೝͯ͠ΞϓϦΛىಈͯ͠ϝοηʔδΛ։෧͢Δͱ • ͳ͔ͥਫথ͕1000ݸ༩͞ΕΔ •
ճऩ͢Δͷ͔ɺͲ͏͢Δͷ͔… ϝϯςೖΕΔʁʁ
ා͍Ͱ͢Ͷ
ͱ͋ΔήʔϜӡ༻ͷҰ໘ • ͳʹ͕ѱ͍ʁ • ϚελʔσʔλΛೖΕͨਓʁ • νʔϜνΣοΫΛͪΌΜͱ͠ͳ͔ͬͨ͜ͱʁ • QAʹνΣοΫͯ͠ΒΘͳ͔ͬͨ͜ͱʁ
ͱ͋ΔήʔϜӡ༻ͷҰ໘ • ͕ऩଋͨ͠ޙͰͷ࠶ൃࢭMTGʹͯ • ͔࣍ΒؾΛ͚ͭ·͢ • νʔϜνΣοΫͷ֬ೝ߲Λపఈ͠·͢ • શͯQAνʔϜʹQAͯ͠Β͏
ؓٳ
ؓٳ • ࢪࡦ͕૿͑ΔͱQAͷίετ͕૿͑Δ • ਓ͕େྔʹ͍ΕQAͰ͖Δ • QAʹ͔͚ΒΕΔίετ༗ݶ • ͔͠͠ɺQA͠ͳ͍Θ͚ʹ͍͔ͳ͍
ϚελʔσʔλͷCI
ϚελʔσʔλͷCI • CI: Continuous Integration • ܧଓతΠϯςάϨʔγϣϯ • ཁϚελʔσʔλͷࣗಈςετ
CIͬͯιʔείʔυʹ Δͷ͡Όͳ͍ͷʁ
࣮ࡍͷςετέʔεͷҰྫ • ϦϨʔγϣϯઌͷϚελʔσʔλ͕͖ͪΜͱଘࡏ͢Δ͔ • Nޙ·ͰΨνϟͷࢪࡦ͕ઃఆ͞Ε͍ͯΔ͔ • ઃఆ͞ΕͨΨνϟͱରԠ͢ΔϚΠϖʔδόφʔ͕ઃఆ͞ Ε͍ͯΔ͔ • ༩ΞΠςϜʹਫথ͕ઃఆ͞Ε͍ͯΔ߹̑ݸҎ͔
• etc
• ϦϨʔγϣϯઌͷϚελʔσʔλ͕͖ͪΜͱଘࡏ͢Δ͔ • → ͳΜ͔ಈ͔ͳ͍ΜͰ͚͢ͲΛνΣοΫ • Nޙ·ͰΨνϟͷࢪࡦ͕ઃఆ͞Ε͍ͯΔ͔ • → ظٳՋதͷΨνϟ͕
ઃఆ͞Εͯͳ͍ͳ͔ͬͨώϠϦɾϋοτͷ࠶ൃࢭ ϚελʔσʔλͷCI
• ઃఆ͞ΕͨΨνϟͱରԠ͢ΔϚΠϖʔδόφʔ͕ ઃఆ͞Ε͍ͯΔ͔ • → Ψνϟ͚ͩ/όφʔ͚ͩ ઃఆ͞Ε͍ͯͨෆ۩߹ͷ ࠶ൃࢭࡦ • ༩ΞΠςϜʹਫথ͕ઃఆ͞Ε͍ͯΔ߹̑ݸҎ͔
• → QAͰൃ֮ͨ͠ItemTypeϛεͷ࠶ൃࢭࡦ ϚελʔσʔλͷCI
ϚελʔσʔλͷCI • ࣮ࡍͷςετίʔυ
ϚελʔσʔλͷCI • ؆୯ͳͷೖྗऀ͕GSS্νΣοΫΛߦ͍ͬͯΔ • ϨϕϧσβΠφʔɺϓϥϯφʔ͔ΒͷཁΛ্͛ ͯΒ͍ςετίʔυʹө • ࢪࡦʹΑͬͯྫ֎͕ൃੜ͢ΔͷͰಛఆͷέʔεͩ ͚εΩοϓͤ͞Δ
ϚελʔσʔλͷCI • ؾΛ͚ͭͯؒҧ͏࣌ؒҧ͏ • Εͨ͜ΖʹϛεΔ • ϚελʔσʔλىҼͷϛε͕͋ͬͨ߹Մೳͳ ݶΓςετέʔεΛՃ͠࠶ൃࢭʹΊ͍ͯΔ
ϚελʔσʔλͷCI • JenkinsͰઐ༻ͷδϣϒΛઃఆ • ϚελʔσʔλͷσϓϩΠΛ͢Δͱ͖ ඞͣCI͕௨ͬͨͷΛ֬ೝͯ͠σϓϩΠ
ϚελʔσʔλͷCI • JenkinsͰઐ༻ͷδϣϒΛઃఆ • ϚελʔσʔλͷσϓϩΠΛ͢Δͱ͖ ඞͣCI͕௨ͬͨͷΛ֬ೝͯ͠σϓϩΠ
ࣗಈԽͷऔΓΈ ·ͱΊ • GSSΛׂ͢Δ͜ͱͰෳਓ͕ฒߦͰฤूՄೳʹ • chat botͰ֤ਓ͕ΤϯδχΞͷखΛआΓͣʹ & ͪ࣌ؒͳ͘σʔλͷө͕Մೳʹ •
docker×mirageΛ༻͢Δ͜ͱͰ֤ਓ͕ ࣗ༝ʹ։ൃ/֬ೝͰ͖ΔڥΛߏஙՄೳʹ • ϚελʔσʔλΛCI͢Δ͜ͱͰ҆શͳӡ༻ج൫Λߏங
None
தنνʔϜΛࢧ͑ΔࣗಈԽ ͱϊϋڞ༗ͷΈ
தنνʔϜΛࢧ͑ΔࣗಈԽ ͱϊϋڞ༗ͷΈ
ϊϋڞ༗ͷΈ • νʔϜͰͷϊϋڞ༗ͷΈ • νʔϜؒͰͷϊϋڞ༗ͷΈ
νʔϜͰͷ ϊϋڞ༗ͷΈ
νʔϑͰͷϊϋڞ༗ • Ξνʔϒϝϯτγʔτ • όοΫΤϯυ͚ • ෛՙࢼݧ • োରԠه
Ξνʔϒϝϯτγʔτ
Ξνʔϒϝϯτγʔτͱʁ • “୭”͕ɺ”Կ͕Ͱ͖Δͷ” ͔Λදʹͨ͠ͷ • ॎ࣠ʹλεΫ • ԣ࣠ʹνʔϜͷϝϯόʔ • λεΫͷଐਓੑΛແͨ͘͢ΊͷऔΓΈͷҰ
• ࣅͨΑ͏ͳͷʹ εΩϧϚοϓɺऔද ͳͲ
Ξνʔϒϝϯτγʔτͱ? • λεΫ • ॏཁ×සͰॏΈ͚͕͞Ε͍ͯΔ • ֤ϝϯόʔ͕Ͱ͖Δ/Ͱ͖ͳ͍Λೖྗ
Ξνʔϒϝϯτγʔτͱ? • λεΫ • ॏཁ×සͰॏΈ͚͕͞Ε͍ͯΔ • ֤ϝϯόʔ͕Ͱ͖Δ/Ͱ͖ͳ͍Λೖྗ
Ξνʔϒϝϯτγʔτͱ?
Ξνʔϒϝϯτγʔτͱ?
ϝϦοτ • ֤ϝϯόʔͷεΩϧͷݟ͑ΔԽ • ଐਓੑͷՄࢹԽ • λεΫͷৼΓ͚࣌ʹ୲ऀ͕ ݻఆ͠ͳ͍Α͏ׂΓৼΔ • ଘࡏ͢ΔλεΫͷݟ͑ΔԽ/Խ
ϝϦοτ • “ࣄ͕Ͱ͖Δ”ɺ”1ਓલ”ΛͰఆٛͰ͖Δ • ඪઃఆͳͲͷ “1ਓલʹͳΔ” ͳͲఆྔతʹνΣοΫͰ͖Δ
σϝϦοτ • ࠷ॳ࡞Δ͕࣌େม • γʔτΛϝϯςφϯε͍ͯ͘͠ඞཁ͕͋Δ • ݱঢ়ͷӡ༻Ͱࣗͷओ؍Ͱ͚͍ͭͯΔ ͷ͋ΔͷͰݫີͰͳ͍ • ओత͕ଐਓੑͷՄࢹԽͷͨΊࠓͷͱ͜Ζ
ʹͳ͍ͬͯͳ͍
Ξνʔϒϝϯτγʔτͷӡ༻ • ৽ػೳ͕Ճ͞ΕͨλΠϛϯά • ৽όʔδϣϯΛϦϦʔεͨ͠λΠϛϯά • ৽͍͠ਓ͕δϣΠϯͨ͠λΠϛϯά • etc •
અઅͰ֤νʔϜߋ৽Λߦ͍ͬͯΔ
ෛՙࢼݧ
ෛՙࢼݧ • όοΫΤϯυΤϯδχΞ͚ͷऔΓΈ • ຊ൪ڥͱผʹ ຊ൪ڥͱಉ༷ͷڥΛߏங • ຊ൪ಉ༷ͷϢʔβʔͷϑϩʔͰ ରͷαʔόʔʹෛՙΛ͔͚Δ
ͳͥෛՙࢼݧʁ • ৽ػೳͷϦϦʔεޙ • େܕͷྲྀೖࢪࡦͷ࣮ࢪ • etc • ٸͳΞΫηε૿ʹඋ͑Δ
ͳͥෛՙࢼݧʁ • ຊ൪ڥϦϦʔεޙ େ͖͘ڥΛม͑Δ͜ͱগͳ͍ • σϓϩΠઃఆϑΝΠϧͷมߋ͚ͩͰ શΛѲ͠ʹ͍͘ • େ͖͘มߋ͠ͳ͍ͷͰ ຊ൪ڥΛѲ͍ͯ͠Δϝϯόʔ͕ภͬͯ͠·͏
ͳͥෛՙࢼݧʁ • ෛՙࢼݧͷ४උΛ௨ͯ͠ຊ൪ڥͷશମ૾ΛѲ • ࣗͰෛՙΛ͔͚Δ͜ͱʹΑͬͯ Ϣʔβʔͷಈ࡞͕Ͳ͏Өڹ͕͋Δͷ͔Λཧղ͢Δ
ෛՙࢼݧ • ͨͩɺͲΕ͚ͩඋ͑ͯى͜Δ࣌ى͜Δ • ΠϯϑϥىҼ • ΦϖϨʔγϣϯϛε • etc…
ෛՙࢼݧ • ΧϠοΫͰো࣌جຊ ΠϯϑϥνʔϜͱόοΫΤϯυΤϯδχΞ͕୲ • োͷݪҼڀ໌/෮چ ࠷ͰͷରԠ͕ٻΊΒΕΔ • ΕΔਓ/Γ׳ΕͯΔਓ͕ରԠ͢Δࣄ͕ଟ͘ͳΔ
োରԠه
োରԠه • શ͘ಉ͡ݪҼͷোຆͲແ͍ • γϛϡϨʔγϣϯ͕͠ʹ͍͘ • ϝϯόʔ͔ΒώΞϦϯά • Ͳ͏ͬͯোରԠग़དྷΔΑ͏ʹͳͬͨͷ͔ •
োରԠ͢Δ্Ͱͳʹ͕͔Βͳ͍ͷ͔
োରԠه • Ͳ͏ͬͯোͷ͋ͨΓΛ͚͍ͯΔͷ͔ • ௐࠪ࣌ʹԿΛݟ͍ͯΔͷ͔ • ԿͷΛΈͯΔͷ͔ • ͲΜͳίϚϯυΛ͍ͬͯΔ͔ •
ͲΜͳίϚϯυΛΈ߹ΘͤͯΔ͔ • etc
োରԠه • ͲͷΑ͏ʹͯ͠োΛରԠ͔ͨ͠Λه • ͍ͭ • Կ͕ى͖ͨ • Өڹ •
Ͳ͏ͬͯݪҼΛಛఆͨ͠ • ͲͷΑ͏ʹͯ͠ରԠͨ͠
োରԠه
োରԠه • ϝϯόʔ͔ΒͷFB • ԿΛݟͯஅ͍ͯ͠Δͷ͔ཧղͰ͖ͨ • ͲͷΑ͏ͳॱংΛܦͯোͷݪҼΛಛఆ͍ͯ͠Δ ͷ͕͔ΔΑ͏ʹͳͬͨ • ਖ਼ɺΞϥʔτͷ༰͚ͩͰݪҼΛಛఆ
Ͱ͖Δಛघೳྗతͳ͕ඞཁͩͱࢥ͍ͬͯ·ͨ͠
νʔϜؒͰͷ ϊϋڞ༗ͷΈ
νʔϜؒͰͷϊϋڞ༗ • ৬ೳ͝ͱͷि࣍KPT • ͬ͘͟ΒΜձ
৬ೳ͝ͱͷि࣍KPT • िʹ̍࣌ؒ ৬ೳϦʔμˍرऀ͕ग़੮ • લिʹ͋ͬͨ͜ͱΛڞ༗ • ࠓि͋ΔΠϕϯτ/ࢪࡦͷڞ༗ • ۙ͋Δେ͖ΊͷΠϕϯτ/ࢪࡦͷڞ༗
• ෆ۩߹ͷ༰ͱରԠ༰ͷڞ༗
৬ೳ͝ͱͷि࣍KPT • ಉ͡Α͏ͳ/՝ʹ໘͢Δࣄ͕… • ंྠͷ࠶ൃ໌Λ͙ • ଞνʔϜͷܯࠂ
ͬ͘͟ΒΜձ • ि࣍KPT͚ͩͰ͕࣌ؒΓͳ͍େ͖Ίͷ τϐοΫΛ֤νʔϜͲͷΑ͏ʹ͍ͬͯΔ͔Λڞ༗ • ৽نλΠτϧ্ཱͪ͛࣌ӡ༻։࢝ޙʹ։͔ΕΔࣄ͕ଟ͍ • ֎෦αʔϏεͷ࿈ܞํ๏ • AssetBundleͷӡ༻ํ๏
• KPTͷΓํ • etc
ϊϋڞ༗ ·ͱΊ • ΞνʔϒϝϯτγʔτΛ࡞ͬͯଐਓੑͷՄࢹԽ • ଐਓੑΛແ͘͢Α͏λεΫͷׂΓৼΓ • ෛՙࢼݧͱোରԠهͰ ࣮ફͰͷܦݧ͕ੵΈͮΒ͍ࣝͷڞ༗ •
ि࣍KPTɺͬ͘͟ΒΜձΛߦ͍ νʔϜؒͰϊϋΛڞ༗
·ͱΊ • தنνʔϜͷߏ • Ϛελʔσʔλӡ༻ͷͨΊͷࣗಈԽͷΈ • νʔϜ/νʔϜؒͰͷϊϋڞ༗ͷΈ
தنνʔϜΛࢧ͑ΔࣗಈԽͱ ϊϋڞ༗ͷΈ ໘ന๏ਓΧϠοΫ ਧྒྷհ@CEDEC2017
͝੩ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠
Q&A
ࢀߟURL • ΒͷߕࢠԂϙέοτ ެࣜαΠτ • https://koshien-pocket.kayac.com/ • ΩϯϚϯ Ϛοεϧγϣοτ ެࣜαΠτ
• http://muscleshot.jp/ • ΧϠοΫืू ৬छ • https://www.kayac.com/recruit/career • FINAL FANTASY Record KeeperͷϚελʔσʔλΛࢧ͑Δٕज़ • https://www.slideshare.net/dena_study/final-fantasy-record-keeper • ϞόΠϧήʔϜʹ͓͚ΔϚελʔσʔλӡ༻ࣄྫ • http://labs.gree.jp/blog/2015/12/15368/
ࢀߟURL • docker • https://www.docker.com/ • acidlemon/mirage • https://github.com/acidlemon/mirage •
DockerͰඇΤϯδχΞͰ։ൃڥΛ্͛Լ͛Ͱ͖Δɺmirageͱ͍͏πʔϧΛ࡞Γ·ͨ͠ • http://techblog.kayac.com/mirage • ιϑτΣΞσβΠϯ 2017 02 ݄߸ • https://www.amazon.co.jp/exec/obidos/ASIN/B01NBDY5L2 • ιʔείʔυҎ֎ͱʹ͔͘ςετ͢Δɻ͘͠ΧόϨοδ͚ͩͰμϝͩͱ͍͏ • http://www.songmu.jp/riji/entry/2014-12-25-test-anything.html • εΩϧϚοϓ࡞ͷ͢͢Ί • http://www.ryuzee.com/contents/blog/7065