Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
カヤックのゲーム開発・運用の「今」 力技と効率化の先に我々が目にしたものとは / YAPC K...
Search
mackee
March 04, 2017
Programming
300k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
カヤックのゲーム開発・運用の「今」 力技と効率化の先に我々が目にしたものとは / YAPC Kansai 2017 Development of the Bokura No Koshien Pocket
YAPC::Kansai OSAKA 2017
2017-03-04 #yapcjapan #yapcjapanB
mackee
March 04, 2017
More Decks by mackee
See All by mackee
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
870
perlをWebAssembly上で動かすと何が嬉しいの??? / Where does Perl-on-Wasm actually make sense?
mackee
0
1.5k
Agentに至る道 〜なぜLLMは自動でコードを書けるようになったのか〜
mackee
6
6.8k
今!ソフトウェアエンジニアがハードウェアに手を出すには
mackee
14
7.6k
ワンバイナリWebサービスのススメ
mackee
10
9.3k
tanukistack ライブコーディング / tanukistack live-coding
mackee
0
950
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
1.2k
perl for shell, awk and sed programmers
mackee
3
3k
今更GoのWebフレームワークを作ろうとしているワケ / Why am I trying to create a Go web framework now?
mackee
1
1.2k
Other Decks in Programming
See All in Programming
AI-Powered Domain-Driven Design
ziobrando
0
330
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
210
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
250
Python Lambdaにおけるテストしやすい設計とAI支援の活用 / Designing Testable Python Lambda Functions with AI
kitano_yuichi
1
220
AIがコードを書いてくれる時代、我々は何を確かめるのか
yosuke_furukawa
PRO
12
4.8k
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
380
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
6
1.9k
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
2
200
学びを記事・スライド・Xへ高速展開する― AI-assisted Learning Loopで回すコンテンツ生成術
ochtum
0
150
Snowflake Openflow Connector利用の勘所 / 20261024developersio2026tokyo-snowflake-openflow
kasacchiful
PRO
0
210
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
380
見えないものを探る要求要件定義に必要な基本的思考 / invisible-requirement-thinking
minodriven
15
8.8k
Featured
See All Featured
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
880
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
310
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
380
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
From π to Pie charts
rasagy
1
420
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
290
Tell your own story through comics
letsgokoyo
1
1.1k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
2
2.1k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
330
Transcript
ΧϠοΫͷήʔϜ ։ൃɾӡ༻ͷʮࠓʯ ྗٕͱޮԽͷઌʹ զʑ͕ʹͨ͠ͷͱ @mackee_w a.k.a macopy YAPC::Kansai 2017 OSAKA
2017-03-04
͓લ୭ʁʁʁʁʁ
͓લ୭ʁʁʁʁʁ ͓ࣄιʔγϟϧήʔϜͷαʔ όαΠυͷ։ൃͱӡ༻ 1FSM HJUIVCNBDLFF UXJUUFS!NBDLFF@X 1"64&."$01: ࣄ1FSM͕ झຯ(P͕
΄΅ Α͘পʹؕΓ͕ͪ ࠷ۙ73
ࠓͷ: ʮ΅͘ΒͷߕࢠԂϙέοτʯͷ ӡ༻ͱ։ൃͷ
టष͍Λ͍ͬͯͧ̇͘
΅͘ΒͷߕࢠԂϙέοτͱʁ
΅͘ΒͷߕࢠԂϙέοτͷಛ • 14ճͷനͨ͠ࢼ߹ʂɹ܅ͷεΩϧͱΤʔϧ ͕উഊΛ͚Δʂʂʂ -> 14ճόοναʔό͕age㽉age㽉͢Δ • ͻ͖ͬΓͳ͠ʹ։࠵͞ΕΔ༷ʑͳϛχήʔϜΠϕ ϯτʂʂʂɹٿҎ֎ָ͠ΊΔͧʂ ɹ->
ຖσϓϩΠຖ։ൃʘ(^o^)ʗ
΅͘ΒͷߕࢠԂϙέοτͷಛ • 14ճͷനͨ͠ࢼ߹ʂɹ܅ͷεΩϧͱΤʔϧ ͕উഊΛ͚Δʂʂʂ -> 14ճόοναʔό͕age㽉age㽉͢Δ • ͻ͖ͬΓͳ͠ʹ։࠵͞ΕΔ༷ʑͳϛχήʔϜΠϕ ϯτʂʂʂɹٿҎ֎ָ͠ΊΔͧʂ ɹ->
ຖσϓϩΠຖ։ൃʘ(^o^)ʗ
ͱ͍͏ͷΛͲ͏Γ͍ͬͯΔ͔Λ ྺ࢙Λަ͑ͯհ͠·͢
ࠓ͔Β͢͜ͱ 1. ߏͷมભͱDBICͱDateTime.pm 2.ΨϯΨϯͬͯ͘ΔΠϕϯτΛӈ͔Βࠨͬ ͍͖ͯ͢Δख๏ʹ͍ͭͯ 3. 30ݸҎ্։ൃ༻ίϯςφཱ͕͍ͬͯͯ ͍ͭɹ͕ɹ͍ͬͯΔ +FOLJOTMPHPCZ+FOLJOT1SPKFDUIUUQTKFOLJOTJP
ߏͷมભͱDBICͱ DateTime.pm
Πϯϑϥʹ͍ͭͯͪ͜Β͕ৄ͍͠ IUUQTTQFBLFSEFDLDPNULVDIJLJOJBOKJBOZVOZPOHTJUFJSVTPTJZBSVHFNVGBMTFTBCBHPVDIFOHGBMTFCJBORJBO
ݱࡏͷΠϯϑϥߏ
ϦϦʔεॳͷΠϯϑϥߏ • உؾ͋;ΕΔγϯάϧϚελʔɾϊʔεϨʔϒ • ཧը໘εϨʔϒ • RDS for MySQL(5.6) •
ElastiCache RedisͰͳ͘Redis SentinelͰӡ༻ • WebAppͱBatchपΓߏʹมԽͳ͠ • deploy͕Archer͔Βstretcherʹͳͬͨ͘Β͍ • ϩάͷྲྀΕ͍ͩͿมΘ͍ͬͯΔ
ϦϦʔεॳͷ: ࢼ߹͕ॏ͍
ݱࡏͷ͋Δͷreq/sec
ݱࡏͷ͋Δͷreq/sec ϩʔΧϧϓογϡͰલͷഒͰۦ্͚͕Δ
͜Ε͕14ճ㽉㽉㽉㽉
ىͬͨ͜͜ͱ • όοναʔό͕ॏ͘ࢼ߹ਐߦ͕͔͔Γ͗͢Δ • DBͷෛՙͰଞͷAPIԆ࢝͠ΊΔ • ࢼ߹தεϨʔϒԆͰཧը໘͕10Ε ͱ͔ʹͳΔ • Redisͷసૹྔʘ(^o^)ʗ
ͬͨ͜ͱ • ͷࢼ߹Λຊͱ౦ຊͰ2ׂʹ͢Δ • ήʔϜͷνʔϜҬʹΑׂͬͯ͞Εͯ ͍Δ • 18࣌ͱ22࣌ͩͬͨͷΛ18/19࣌ͱ22/23࣌ʹ
14ճ㽉㽉㽉㽉 ↓ 16ճ㽉㽉㽉㽉㽉㽉
ϚελDBͷΫΤϦൃߦ
ͦͷଞ • DBICͰͷPrefetchͷ׆༻ • N + 1ΫΤϦΛpt-query-digestͱ͔Ͱݟ͚ͭͯҰͭͷ ΫΤϦʹ·ͱΊΔ • RedisʹΩϟογϡ͍ͯ͠Δࢼ߹σʔλΛlz4Ͱѹॖͯ͠
ऩΊΔ • WebAppαʔόԣʹฒΒΕΔ͔ΒগʑͷCPUίε τ͏
ͦͷଞ • εϨʔϒԆIOPS͕Γͳ͔ͬͨͷͰIOPS Λ૿͢ • ͓͔͔ۚΔ • ཧը໘ʹ͍ͬͯͨεϨʔϒʹ͚Δ ΈΛຊ൪ΞϓϦʹద༻ͯ͠Ϛελͷෛՙ Λݮ͢Δ
͍͍ͩͨDBͰࠔ͍ͬͯΔ • RedisͰͷΩϟογϡͰ͖Δ͚ͩΘͳ͍ํ • ύʔςΟγϣϯʹΑΔ࣮ߦܭըͷ༳Ε • TEXTͷΧϥϜʹΊͪΌͰ͔͍JSONಥͬࠐΜͰ సૹྔͶΔ • RDSͷϝϯςφϯε
Perlͷ
WebAppͰ͍ͬͯΔͭ • Perl 5.16.3 EOLͳͷͰ͍͋͛ͨ • Ark + DBIx::Class +
DateTime.pm… • ΫϥεϏϧμMouseΛଟ༻͍ͯ͠Δ
ʮAPI͍͓ͨ͘͠ʙʯ • DBICศརɺ͔͍͠͠ • ҎલDevel::NYTProfΛ͔͚ͨΒ΄΅DBICͱ͍͏݁Ռ͕ग़ͨ ͜ͱ
DateTime.pm • DateTime.pmඇৗʹଟػೳ͕ͩੜίετ ͕ߴ͍ • $row->created_atͰऔΔͱDateTimeʹͳͬ ͪΌ͏ͷͰ$row->get_column(“created_at”) ͰऔͬͯeqΒlt/gtͰൺֱ͢ΔςΫ͋Δ • (Θ͔Γʹ͍͘)
DateTime.pmͱ͏Δ͏ඵ • Perl ͷ DateTime ར༻্ͷҙ • https://shogo82148.github.io/blog/2015/12/09/perl-datetime/ • ςετதͷϩάʹ08:59:60ͱ͍͏จࣈΛݟ͚ͭͯɺͦͷ࣌ʹݪҼෆ
໌ͩͬͨ࣍ͷ0࣌ͪΐ͏Ͳʹࢼ߹ΛಥͬࠐΉσόοά͕ΤϥʔͰࢮΜ Ͱ͍ͨͷ͕͏Δ͏ඵͱΓमਖ਼ΛࢼΈΔ • ͔͠͠ίϯύΠϧ࣌ʹ͏Δ͏ඵΛຒΊࠐΜͰ͍ΔͷͰզʑϢʔβʹ Ͳ͏͢Δ͜ͱग़དྷͶ͑ • ͏Δ͏ඵΛΒͳ͍όʔδϣϯʹμϯάϨʔυͯ͠ରԠorz
͠Ύͬ͠Ύʔ
͠Ύͬ͠Ύʔ • ʮͳ͔ͬͨΒINSERT͍ͨ͠͠ɺ͋ΔͳΒϩοΫऔ Γ͍ͨΜ?ʯ • http://ichirin2501.hatenablog.com/entry/ 2015/08/23/191500 • INSERT͠Α͏ͱ͢Δͱdupͬͯɺ͡Ό͋͋Δ ΜͬͯSELECT͠Α͏ͱ͢ΔͱREPEATABLE
READͷ᠘Ͱݟ͑ͳ͍ɻҰମͲ͏͢Ε
͠Ύͬ͠Ύʔ͕ى͜Δͱ • Α͘Πϕϯτ։࢝࣌ʹى͜Γ͕ͪ • Πϕϯτ༻ͷνʔϜڞ௨ϢʔβσʔλΛΠ ϕϯτͷγʔϯʹೖͬͨ࣌ʹ࡞Δͱ͔Δ • σʔλΛࣄલೖ͢ΔͷޮՌత • ͔͠͠ޙ͔Β࡞ΒΕͨϢʔβνʔϜʹޮ
Ռ͕ͳ͍
ࠓͷͱ͜Ζͷରࡦํ๏ • τϥϯβΫγϣϯ֎(ίϯτϩʔϥͷԼ͔Β ಡΜͩผͷϞσϧͷϝιουͳͲ)ͰॳظԽ͞ ΕͨߦΛೖ͢Δ • ͦͷޙͷຊମͷϝιουͰͦͷߦͷϩοΫ Λऔͬͯߦ͕͔ͳΒͣ͋ΔલఏͰॲཧΛଓ͚Δ • ͢ΔͱϩοΫऔΕΔͤ͠
ΨϯΨϯͬͯ͘ΔΠϕϯτΛ ӈ͔Βࠨ͍͖͍ͬͯͯ͘͠ ख๏ʹ͍ͭͯ 1IPUPCZ$BUXBMLIUUQTqJDLSQ(87V
͋ΔҰिؒͷ։ൃ
͋ΔҰिؒͷ։ൃ ݟʹ͍͘ͷͰ ਅͬೋͭʹ͠ ·͚ͨ͠ΕͲ ຊ͜Μͳ ײ͡Ͱ͢ ݄Րਫۚ
͜ͷύΠϓϥΠϯΛ Γͳ͘εϜʔζʹ͍͖ͬͯ ग़དྷΔΑ͏ʹ͢Δͷ ΤϯδχΞͷࣄ
ࠓօ͞Μʹ ֮͑ͯ΄͍͜͠ͱ: ֮ޛͱؾ߹
֮ޛ: αʔόʹσϓϩΠ͞ΕΔͷ શͯαʔόΤϯδχΞ͕Λ௨͢
ͳͥͳΒ ͳΜ͔τϥϒͬͨͱ͖ αʔόΤϯδχΞ͕Δ͔Β
αʔόʹσϓϩΠ͞ΕΔͷ • Perlͷίʔυ • CSVͰಥͬࠐΉϚελσʔλ • Unity͕ಡΉAsset Bundle • chefͷrecipe
αʔόʹσϓϩΠ͞ΕΔͷ • Perlͷίʔυ • CSVͰಥͬࠐΉϚελσʔλ • Unity͕ಡΉAsset Bundle • chefͷrecipe
͜ΕΒશͯΛ αʔόΤϯδχΞ͕ Ѳ͢Δඞཁ͕͋Δ
͘͠୭͕͍ͬͯΔ͔Λ Ѳ͍ͯ͠Δඞཁ͕͋Δ -> ॿ͚ΛݺΔ
ؾ߹: పఈͨࣗ͠ಈԽ
։ൃ ͯ͢Pull RequestͰ ճ͍ͬͯΔ
ϒϥϯνΛΔBOT • ఆܗͷ໋໊نଇͱϒϥϯνπϦʔΛ࣋ͬͨ topicϒϥϯνΛࣗಈੜ͢ΔBOT • اըଆ͚ͩͰ࡞ۀΛ։࢝Ͱ͖Δ • hotfixϒϥϯνΕΔΑ͏ʹͳ͍ͬͯΔͷͰ मਖ਼ͯ͠։ൃڥσϓϩΠ·ͰΤϯδχΞ Ҏ֎͕ग़དྷΔΑ͏ʹͳ͍ͬͯΔ
͔͠͠؆୯ʹPRΛ࡞ΕΔͱ • No description… • ԿΛతʹ͜ͷPR͕࡞ΒΕͨͷ͔ॻ͔Εͣ ʹճ͖ͬͯͯࠔΔ
ԿΛ͔ͨ͠: ϙΤϜΛॻ͍ͨ
None
None
Τϥʔϝοηʔδ 2W1H ͕͍͍Μ͡Όͳ͍͔ - @bayashi Daily https://bayashi.net/diary/2016/0719 2W1H What? Why?
How?
Pull Request2W1HͰ ͍͍Μ͡Όͳ͍͔ʁ ·ͩͬͯͳ͍͚ΕͲ13ͷςϯϓϨʹೖΕΔͷྑͦ͞͏
اըͷਓ͕ԿΛ੍࡞͢Δͷ͔ʁ
Ϛελʔσʔλ
Ϛελσʔλ • DB੩తϦιʔε্ͷϢʔβʹมߋ͞Εͳ͍ σʔλ • ରٛޠϢʔβσʔλ • ϦϙδτϦʹCSVͰσϓϩΠ࣌ʹDBΫ ϥΠΞϯτʹ͢όΠφϦʹͳͬͨΓ͢Δ
Ϛελσʔλ • DBʹೖΔͷ͕େͳͷͰߗ͍εΩʔϚܗࣜ • CSVΛฤू͍ͯ͠ΔΘ͚Ͱͳ͘Google SpreadsheetΛ༻͍͍ͯΔɻ͜ΕΛCSVԽ͢Δ -> BOT͕CSVʹམͱͯ͠Pull Requestʹͯ͘͠ ΕΔ
ԿނGoogle SpreadsheetͰΔ͔: ͍͡Δਓ͕ίϯτϩʔϧͰ͖Δ
ΤΫηϧతͳͭͷ͍͍ͱ͜Ζ • දܭࢉͷ͕ؔ͑Δ • ؔΘΓ͔͠Θ͔Γ͍ࣗ͢ಈԽݴޠ • εΫϦϓτ͕͑Δ • σΟϨΫλʔ͕Կਓ͔GASॻ͍ͯࣗಈԽ͠ ͯΔ
ࣗಈԽΛઌͯ͠Δ͜ͱͰ ଞͷਓʹࣗಈԽΛଅ͢
ྫ͑Next IDൃߦ܅
͖ͬ͞ͷ͜Ε ࡞ۀதͷͷ͕ฒྻ
͖ͬ͞ͷ͜Ε ࡞ۀதͷͷ͕ฒྻ ͦΕͧΕʹϚελ σʔλ͕ଘࡏ͢Δ
ͳͷͰ
શͯͷγʔτΛ·͍ͨͰͲͷIDʹ ͖͔͢Λڭ͑ͯ͘ΕΔ܅͕ඞཁ
શͯͷγʔτʁʁʁ
͖ͬ͞ͷ͜Ε ࡞ۀதͷͷ͕ฒྻ ͦΕͧΕʹϚελ σʔλ͕ଘࡏ͢Δ
͖ͬ͞ͷ͜Ε ࡞ۀதͷͷ͕ฒྻ ͦΕͧΕʹಠཱͨ͠ εϓϨουγʔτ͕ ଘࡏ͢Δ
࣮ࡍʹCSVʹ͢Δͱ͖
࣮ࡍʹCSVʹ͢Δͱ͖ ຊ൪ʹೖ͍ͬͯΔϚελͷ γʔτ
࣮ࡍʹCSVʹ͢Δͱ͖ ຊ൪ʹೖ͍ͬͯΔϚελͷ γʔτ ΠϕϯτͰ͍͍ͨ Ϛελσʔλͷγʔτ
࣮ࡍʹCSVʹ͢Δͱ͖
࣮ࡍʹCSVʹ͢Δͱ͖
࣮ࡍʹCSVʹ͢Δͱ͖ ࠓσϓϩΠ͞ΕΔͱͲ͏ͳΔ͔$47
ͭ·Γ εϓϨουγʔτͷ ϒϥϯνཧ
େྔͷΠϕϯτΛճͨ͢Ίʹ • పఈͨࣗ͠ಈԽ • PullRequestͱγʔτͰݟ͑ΔԽͱ͍͡ΕΔԽ Λ͢Δ • γʔτΛࠩཧͯ҆͠શʹ։ൃ • BOTͰͬͯ୭͕ԿΛ͍ͬͯΔ͔ΛSlackͰ
ΕΔ
ͦΕͱେྔͷ։ൃڥ
։ൃڥͱ • ຊ൪ͱಠཱͨ͠ಛఆͷϒϥϯνͷίʔυͱϚ ελσʔλͱΞηοτ͕σϓϩΠ͞Εͨαʔό • ϗετ͕ৼΒΕͯ։ൃ൛ΞϓϦ͔Βܨ͛ΒΕΔ • ੲϩʔΧϧͰplackup͚ͯͨ͠ΕͲࠓͱͳͬ ͯPerlڥ͋ΔਓϩʔΧϧ͡Όͳͯ͘։ൃ ڥΛ্ཱͪ͛ͯ֬ೝ͢Δ͜ͱ͕ଟ͍
ੲ(৽ن։ൃॳ) ʮmacopy: ϒϥϯνhogehogeΛݟΕΔΑ͏ʹ ͯ͠ʯ ʮʔ͍ʯ ͔ͬͯͬͯΒdevelopmentαʔόʹϩάΠϯ ͯ͠ϒϥϯνΛΓସ͑ͯεΩʔϚద༻ͯ͠Ϛ ελಥͬࠐΜͰWebAppΛ࠶ىಈͯ͠…
ؾ͍ͮͨΒͣͬͱϒϥϯνσ ϓϩΠ৬ਓʹͳ͍ͬͯͨ
ΞΧϯͷͰBOTʹΒͤΔ • ಉ͜͡ͱΛBOTʹΒͤΔ • UnazuSanͱ͍͏ϞδϡʔϧΛ༻ͯ͠IRC͔ ΒҰ࿈ͷσϓϩΠίϚϯυΛ࣮ߦ͢ΔΑ͏ʹ ͨ͠ • ͜ΕͰίʔυ͕ॻ͚ΔΑ͏ʹͳͬͯϋοϐʔ
͔͜͠͠͏ͳͬͯ͘Δͱ
ಉ࣌ʹෳͷਓ͕ผʑͷ ڥΛݟ͍ͨͱ͍͏ཁ͕
͠Ό͋ͳ͍ͷͰෳڥΛ࡞Δ • devφϯτΧ͍ͬͯ͏αʔό͚ͩͩͬͨͷ͕ɺ dev01, dev02, dev03ͱ૿͑Δ • ͔͍ͬͯ͠͠Δͷʹଞਓ͕͓͏ͱͯ͠ফ ͢ •
εϓϨουγʔτΒϗϫΠτϘʔυͰཧ ࢝͠ΊΔ
ͳ͓ಉ͡ঢ়گʹஔ͔Εͨ ผͷνʔϜ ͍ͬͯΔਓͷ্ʹ෩ધ ͕͋Δͱ͍͏Ṗͷӡ༻Λ ͍ͯͨ͠Β͍͠ IUUQUFDICMPHLBZBDDPN@NJSBHF@JO@EPDLFSIUNM
͠ΐ͏͕ͳ͍ͷͰڥΛ૿͢ • ʮڥμϒͬͯ͏͠ΜͲ͍ͷͰͳΜͱ͔ͳΓ· ͤΜ͔ʯ • ʮ͠ΐ͏͕ͳ͍૿͔͢……ʯ Ұϲ݄ޙ ʮdev14·Ͱ࡞ΔͨΊʹdevͰchefճ͠·͢ʯ ΠϯϑϥʮͳΜͰͦΜͳ͜ͱʹʂʁʯ
૿ͯ͠ॴḨ༗ݶͳͷͰ͢
͋”͋” ແݶʹ։ൃڥΆ͜Ά͜ ཱ͍͓ͯͨʙ
+ mirage
(Ϧιʔε͕ڐ͢ݶΓͷ) ແݶͷ։ൃڥ • DockerͰϒϥϯνΓସ͑ͱcarton installͱDBϚ ΠάϨʔγϣϯΛߦͬͯplackup • Procletศར(ࢼ߹༻ʹgearmanͳͲཱͬͯΔ) • DBͱRedisલίϯςφʹཱ͍͕ͯͯͨɺϝϞϦ
ͱσΟεΫ৯͏ͷͱίϯςφམͱ͢ͱશͯͳ͘ͳΔͷ ͰɺϗετʹRedisཱͯͯDBAuroraͰσʔλϕʔε Λ͚ͯಉډ͍ͯ͠Δ
(Ϧιʔε͕ڐ͢ݶΓͷ)
BOTͰڥΛ্ཱͪ͛ΕΔ ཪͰJenkins͕mirageͷAPIΛୟ͍ͯίϯςφ ىಈ͍ͯ͠Δ
͢ΔͱΈͳ͞Μ ͖์ͳ͞ΕΔ
ίϯςφେരൃ
ίϯςφΠϝʔδআͱ͔ සൟʹ͍ͬͯΔ͕0%ʹͳͬͯdev͕ࢮͨ͠ ͜ͱԿ͋Δ σΟεΫ༗ݶ
ͱΓ͋͑ͣσΟεΫΛ εέʔϧΞοϓͨ͠ͷͱ ίϯςφͷμΠΤοτ
͋ͱࣥࣄౖ͕Δ ͜ΕݟͯΈΜͳʮ͋ʙͬͯͳ͍ͷ͋ͬͨΘʯͬͯݴͬͯ མͱ࢝͠ΊΔͷͰศར ͋ͱ࣌ؒΞΫηε͕ͳ͚Εམͱ͢ͱ͔ ݄༵ேʹશ෦མͱ͢ िӽ͠ͷίϯςφ࣋ͨͳ͍ ͱ͔ ͬͯΔ +FOLJOTMPHPCZ+FOLJOT1SPKFDUIUUQTKFOLJOTJP
ϝϞϦͱCPU༗ݶ
ݪҼσόοά༻εΫϦϓτ͕ ϝϞϦόΧ৯͍͔ͭฒྻ࣮ߦ • QAͳͲͰ͑ΔΑ͏ʹεΫϦϓτΛ࣮ߦ͢Δ WebUIΛ༻ҙ͍ͯ͠Δ͕ɺͦͷҰͭʹര͕ ͋ͬͨ • ͍ΘΏΔμϛʔσʔλ࡞Δܥɻ͜͏͍͏ͷ ίʔυϨϏϡʔ͕ૄ͔ʹͳΓ͕ͪͩ͠ɺຊ൪ ͱҧ͏ෛՙʹͳΓ͕ͪ
ͦΜͳ͜ΜͳͰେྔʹڥΛཱͯΕ Δ͜ͱʹΑͬͯ ेฒྻͷ։ൃ͕Մೳʹͳ͍ͬͯΔ
·ͱΊ • PerlݱͰಈ͍͍ͯ·͋͢ɻӡ༻͍ͯ͠·͋͢ɻ • ։ൃύΠϓϥΠϯΛਂͯ͘͠εέʔϧͤ͞Δͱαʔ Ϗεͷӡ༻ͷ෯͕͕Γ·͢ • ͦΜͳΘ͚ͰوॏͳPerlΤϯδχΞ߈Ίӡ༻͢ ΔͨΊʹύΠϓϥΠϯΈ͍ͨΤϯδχΞ͞Μ͍ ·ͤΜ͔ʔʔʔʔʔʂʂʂʂ[Ad]↓
ͦͷଞൃද͖͠Εͳ͔ͬͨͭ • ͋ͱ͔ΒϚϧνςφϯτʹ͢Δͱ͖ͷۤ࿑ • σϓϩΠʹ͍ͭͯ(papix͕લʹ͍Ζ͍Ζͬͯ ͍ΔΜ͡Όͳ͍͔ʁ) • ͍͜ͱ͍ͬͯΔͱϞδϡʔϧͷޙํޓഁյ ʹ·͞ΕΔ͕ΞάϨογϒʹ্͛Δ •
ςετ͕20͔͔ΔͷͰۚͰԥΔ༧ఆͷ