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
SGEを活性化させる内製ツール達 / SGE
Search
CyberAgent
PRO
February 22, 2019
Technology
0
400
SGEを活性化させる内製ツール達 / SGE
サイバーエージェントの技術者(エンジニア・クリエイター)向けカンファレンス『CA BASE CAMP 2019』
SGEを活性化させる内製ツール達
岩上 裕樹
CyberAgent
PRO
February 22, 2019
Tweet
Share
More Decks by CyberAgent
See All by CyberAgent
未来のテレビを形づくる ABEMAのグロース戦略:ユーザー体験と品質向上のアプローチ
cyberagentdevelopers
PRO
0
280
IBC 2024 動画技術関連レポート / IBC 2024 Report
cyberagentdevelopers
PRO
1
130
生成AIは安心・安全に貢献できるのか
cyberagentdevelopers
PRO
0
17
AIの血肉となるアノテーションデータのために大事にしている事
cyberagentdevelopers
PRO
2
20
ABEMA NEWSにおける映像データを活用した記事生成AI 〜記事制作者に寄り添ったソリューションにするまで〜
cyberagentdevelopers
PRO
0
36
ACL 2024 参加報告
cyberagentdevelopers
PRO
0
52
生成AIの強みと弱みを理解して、生成AIがもたらすパワーをプロダクトの価値へ繋げるために実践したこと / advance-ai-generating
cyberagentdevelopers
PRO
1
290
SNSマーケティングに革新! ABEMA サッカー動画切り出しを生成AIで自動化し、業務効率化を狙う! / abema-ai-marketing
cyberagentdevelopers
PRO
2
160
新卒1年目が挑む!生成AI × マルチエージェントで実現する次世代オンボーディング / operation-ai-onboarding
cyberagentdevelopers
PRO
1
250
Other Decks in Technology
See All in Technology
アプリエンジニアのためのGraphQL入門.pdf
spycwolf
0
140
もし大規模障害が、10分で解決できたら?
masaaki_k
0
110
Windows Server 2025 Pay as you Go ライセンスを試す
murachiakira
0
110
A Tour of Anti-patterns for Functional Programming
guvalif
0
1.9k
Continuous Integration! Raising the Bar
tdpauw
1
110
【LT】ソフトウェア産業は進化しているのか? #Agilejapan
takabow
1
130
LINEヤフーにおけるPrerender技術の導入とその効果
narirou
2
2.9k
Taming you application's environments
salaboy
0
210
複雑なState管理からの脱却
sansantech
PRO
1
190
Adopting Jetpack Compose in Your Existing Project - GDG DevFest Bangkok 2024
akexorcist
0
150
偶有的複雑性と戦うためのアーキテクチャとチームトポロジー
knih
7
4.2k
累計2500万着電を支える大規模 電話自動応答サービスのアーキテクチャ / Architecture of a Large-Scale Automated Phone Response Service Supporting 25 Million Cumulative Calls
ymachida
3
2.3k
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
Designing for Performance
lara
604
68k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
Code Reviewing Like a Champion
maltzj
520
39k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Typedesign – Prime Four
hannesfritz
40
2.4k
Optimizing for Happiness
mojombo
376
70k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
Ruby is Unlike a Banana
tanoku
97
11k
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
Designing for humans not robots
tammielis
250
25k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Transcript
SGEΛ׆ੑԽͤ͞Δ πʔϧୡ גࣜձࣾάϦϑΥϯ ؠ্༟थ
ؠ্ ༟थʢ͍Θ͔Έ Ώ͏͖ʣ • 20144݄ αΠόʔΤʔδΣϯτ৽ଔೖࣾ όοΫΤϯυΤϯδχΞ • 20147݄ Ξϝʔόࣄۀຊ෦ήʔϜࣄۀ෦ʹଐ
• 20148݄ʙݱࡏ גࣜձࣾάϦϑΥϯग़ 12ͷήʔϜͷ։ൃɾӡ༻ʹؔΘΓɺ4ͭͷήʔϜͷϦϦʔ εʹؔΘͬͨʢάϦϑΥϯ֎ͷSGEଞؚࣾΉʣ
SGEͱ • αΠόʔΤʔδΣϯτͷࢠձࣾ܈ʹΑΔήʔϜ&ΤϯλʔςΠϝϯτࣄۀ෦ SGE = [Next] Smartphone Games & Entertainment
SGEΛ׆ੑԽͤ͞Δ πʔϧୡͷհ
1. SGETube 2. SGooglE 3. εΰϦϥϯν 4. νϟοτߘπʔϧ 5. εΰϦϥϯσϒʔ
6. ͋ͨ͠ձٞͷಘγεςϜ
SGETube
SGEͷಛ • SGEͰͷษڧձ͕ͱͯଟ͍ ྫ͑ΞήςΫͳͲͷߨٛܗࣜͷษڧձ͕͋ͬͨΓ͢Δ ࢀߟɿʮͨΊʹͳΓ·ͨ͠ʂʯͰऴΘΒͤͳ͍࣮ʹͭͳ͕ΔษڧձʮΞήςΫʯͱʁ https://creator.game.cyberagent.co.jp/?p=5216 • SGEͷڞ༗ձଟ͍ ྫ͑ήʔϜ͕ϦϦʔεͨ͠Ұϲ݄ޙ͘Β͍ʹSGEͰڞ༗ձΛ࣮ࢪ͢Δ γεςϜͷߏͩͬͨΓɺۤ࿑ͨ͜͠ͱͩͬͨΓɺଞͷϓϩδΣΫτ։ൃͰ͠ͳͦ͏ͳͨ͜͠ͱͩͬͨΓɺاըʹ
͍ͭͯͩͬͨΓɺͳΜͰ • Πϕϯτଟ͍ • ͨ͘͞Μ͋ΔͷͰͯ͢ͷษڧձɾڞ༗ձʹग़੮Ͱ͖ͳ͍ ͦͷษڧձɾڞ༗ձͷ༰Δ͜ͱ͕Ͱ͖ͳ͍
ͦΜͳͱ͖ʹSGETubeʂʂ
SGETubeͱ • ࣾͷಈըڞ༗αΠτ ͚ࣾTubeͱࢥͬͯΒ͑ΔͱΘ͔Γ͍͔͢ • ࣾSSOͰϩάΠϯͰ͖ΔͨΊࣾһͳΒ୭ͰݟΕΔ • Ͳ͔͜ΒͰݟΕΔ ͋͑ͯIP੍ݶͳͲ͍ͯ͠ͳ͍ ͦͷͨΊɺՈͰͲ͜ͰษڧͰ͖Δ
• ϥΠϒ৴Ͱ͖Δ
SGETubeγεςϜߏ • AWS ΦϨΰϯ EC2ɺRDSɺS3ɺCloudFront εςʔδϯάڥ༻ҙ • ݴޠ PHP •
ಈըS3ʹอଘ • IP੍ݶ͔͚͍ͯͳ͍ͨΊɺॺ໊͖CookieΛ༻͍ͯɺηΩϡϦςΟΛ୲อ͍ͯ͠Δ https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/private-content- signed-cookies.html
SGETubeͷྑ͔ͬͨͳͲ • ಈը͕ͲΜͲΜΞοϓϩʔυ͞Ε͍ͯ͘ ୭ͰΞοϓϩʔυͰ͖ΔΑ͏ʹ͍ͯ͠ΔͷͰɺؾܰʹΞοϓͯ͘͠ΕΔ ษڧձҎ֎ʹήʔϜͷϞοΫͷಈըͱ͔Ξοϓͯ͘͠ΕΔ ϦϦʔεޙ7ϲ݄Ͱ136ݸͷಈը͕Ξοϓϩʔυ͞Ε͍ͯΔʢ20192݄12ݱࡏʣ • SGETube͕ϦϦʔε͞Ε͔ͯΒ֤ษڧձɾڞ༗ձʹඞͣΧϝϥϚϯ͕ࢀՃ͢ΔΑ͏ʹͳͬͨ ͯ͢ͷษڧձɾڞ༗ձͷಈը͕Ξοϓϩʔυ͞ΕΔΑ͏ʹͳͬͨ •
SGEͷΠϕϯτͷϥΠϒ৴ͰΈΜͳͰΓ্͕ΕΔ ձʹߦ͘͜ͱͰ͖ͳ͍͚ͲɺϦΞϧλΠϜͰݟΔ͜ͱ͕Ͱ͖Δ ֎ͰߦΘΕͨΫϦΤΠλʔͷΠϕϯτաڈ࠷ߴͷಉ࣌ଓ • ཁ͕ͨ͘͞Μಧ͘ վળ߲͕ʑ૿͍͑ͯ͘ɻɻָ͘͠ӡ༻͕Ͱ͖Δʂ
SGooglE
SGEͷಛ • SGEͨ͘͞Μͷࢠձࣾͷू·Γ • ֤ࣾʹ͍ΖΜͳϊϋ͕ू·͍ͬͯΔ • ֤ࣾͦΕͧΕͰWikiͳͲ͍ΖΜͳܗͰϊϋ͕ཷ·͍ͬͯΔ ConfluenceͩͬͨΓɺRedmineͩͬͨΓɺ͍Ζ͍Ζ • ֤ࣾόϥόϥͳͷͰɺͳʹ͔ௐ͍ͨͷ͕͋Δͱ͖ʹ֤WikiͰݕࡧ͢Δ
ͷ͕ΊΜͲ͍͘͞ ྫ͑UnityͰݕࡧ͍ͨ͠ͱ͖ɺ֤WikiͰUnityݕࡧ͠ͳ͍ͱ͍͚ͳ͍
ͦΜͳͱ͖ʹSGooglEʂʂ
SGooglEͱ • SGEͷ֤WikiΛҰׅͰݕࡧͰ͖ΔγεςϜ • ఆظతʹ֤ࣾͷWikiΛΫϩʔϦϯά͓ͯ͘͠ͷͰৗʹ࠷৽ͷใ • ࣾSSOͰϩάΠϯͰ͖ΔͨΊࣾһͳΒ୭Ͱ͑Δ • ࣾIPʹ੍ݶ •
Googleݕࡧͷݕࡧ݁Ռը໘ͷྡʹಉ࣌ʹSGooglEͷݕࡧ݁Ռදࣔͤ͞Δ ֦ுػೳΛ༻ҙʢ͢Δ༧ఆʣ
SGooglEγεςϜߏ • AWS EC2ɺElasticSearchʢ༁͋ͬͯEC2্Ͱಈ͔͍ͯ͠Δʣ • ݴޠ Java • ݕࡧΤϯδϯʹElasticSearchΛ༻ •
ΫϩʔϦϯάλΠϛϯάຖਂʹઃఆͯ͠ΈͯΔ • ݱࡏɺβ൛ެ։தͰɺSGEͷҰ෦ͷਓʹ৮ͬͯΒ͍ͬͯΔஈ֊
εΰϦϥϯν
ࣾͷ͓หͷಛ • CAͰ͓หΛ֨҆Ͱൢച͍ͯ͠ΔͷͰ֨҆ͰߪೖͰ͖Δ • ΈΜͳ͕ߪೖ͢ΔͷͰߦྻ͕Ͱ͖Δ • ΑΓྑ͍͓หΛखʹೖΕΔͨΊʹૣ͘ฒͿ • ൢചλΠϛϯάͰMTG͕ೖ͍ͬͯΔͱྑ͍͓ห͕खʹೖΒͳ͍
ͦΜͳͱ͖ʹεΰϦϥϯνʂʂ
εΰϦϥϯνͱ • ͓หΛ༧Ͱ͖ΔΞϓϦ • ͦͷʹങ͑Δ͓หΛޕલதʹ༧ • ͓னͷൢച࣌ؒଳʹΞϓϦͷ༧ը໘ΛݟͤͯߪೖͰ͖Δ ※ϦϦʔε࣌ͷϝʔϧͷεΫγϣΛΘ͍͍͓ͤͯͨͩͯΓ·͢ εΰϦϥ͘Μ
εΰϦϥϯνͷγεςϜߏ • GCP LBɺGCEʢNode.js + MariaDB + MongoDBʣ • AndroidͱiOS͚ΞϓϦ
εΰϦϥϯνͷྑ͔ͬͨͳͲ • ฒͳ͓ͯ͘ห͕ങ͑Δ Ϗϧͷ֊ʹ༗རෆར͕ͳ͘ͳͬͨ Ҏલ12࣌લμογϡͳͲ͕ଘࡏ͍ͯͯ͠ɺͦͷલͦΘͦΘ͍ͯͨ͠ • ͪߦྻ͕ͳ͘ͳΓɺདྷ٬ͷݟӫ͕͑Α͘ͳͬͨ • 20165݄ʹϦϦʔε͔ͯ͠ΒͣͬͱΘΕ͍ͯΔ SGEͷظӡ༻αʔϏεͷҰͭʹͳͬͨ
νϟοτߘπʔϧ
SGEͷಛ • SGEͨ͘͞Μͷࢠձࣾͷू·Γ • ֤ࣾͰslackΛͬͨΓchatworkΛͬͨΓ͍ͯ͠Δ • ֤ࣾʹ࿈བྷ͢Δͱ͖͍֤ͭࣾͷදʹ࿈བྷ͔ͯͦ͜͠ΒखಈͰߘͯ͠ Β͍ͬͯͨ
ͦΜͳͱ͖ʹνϟοτߘπʔϧʂʂ
νϟοτߘπʔϧͱ • Σϒϒϥβ͔Βߘ༰ΛϑΥʔϜૹ৴͢Δ͚ͩͰ֤ࣾͷνϟοτʹ ߘ͞ΕΔ Slack Chatwork
νϟοτߘπʔϧͷγεςϜߏ • AWS S3ʹΑΔHTML৴ɺAPI GatewayɺLambdaʢNode.jsʣ • αʔόϨεʂʂ ݸਓతʹ͜ͷߏͰ࡞ͬͯΈ͔ͨͬͨ
νϟοτߘπʔϧͷγεςϜߏ • ࣾSSOΛ༻͢ΔͨΊʹELB,EC2ΛڬΉ͜ͱʹͳͬͯ͠·ͬͨ αʔόϨε͡Όͳ͘ͳͬͯ͠·ͬͨ
νϟοτߘπʔϧͷγεςϜߏ • CloudFrontͰLambda@EdgeΛ༻͢Δ͜ͱͰղܾʂʢ4લʹͬͨʣ • Lambda@EdgeͰࣾSSOೝূͷॲཧΛߦ͏
νϟοτߘπʔϧͷྑ͔ͬͨͳͲ • Σϒ͔ΒαΫοͱߘͰ͖Δ • ؒʹਓΛڬ·ͳ͘ͳΔͷͰɺ͙͢ʹߘͰ͖Δ • ୭ͰؾܰʹߘͰ͖Δ Γ͗͢ʹҙ • ௨শʮؠ্๒ʯͱݺΕΔΑ͏ʹͳͬͯ͠·ͬͨ
ʮνϟοτߘπʔϧʯͬͯॻ͍͍ͯΔ͚Ͳɺਖ਼໊ࣜশ͕ͳ͍ ࣗͷ໊લ͕ͭ͘ͷݏͰ͢Ͷ
εΰϦϥϯσϒʔ
SGEͷಛ • SGEͷษڧձɾڞ༗ձ͕ଟ͍ • SGEͷ֤ࣾͰษڧձ͕ଟ͍ • ษڧձ͕ͨ͘͞Μ࣮͋ͬͯ࣍ࢪ͞ΕΔΠϕϯτ͕Կ͔͕ѲͰ͖ͳ͍ • ͍ͭͨ͘͞Μͷਓ͕ࢀՃͯ͘͠ΕΔ •
ࢀՃऀͷ༧ఆͷՃ͕ΊΜͲ͍͕͔͔࣌ؒ͘͞͠Δ
ͦΜͳͱ͖ʹεΰϦϥϯσϒʔʂʂ
εΰϦϥϯσϒʔͱ • ࣾͷΠϕϯτͷҰཡ͕֬ೝͰ͖ɺ؆୯ʹࢀՃͰ͖ΔγεςϜ • ࣾͷ༧ఆπʔϧʹ࿈ܞͯ͠؆୯ʹ༧ఆʹࢀՃͰ͖Δ • connpassATNDͷΑ͏ͳͷ • ݴޠ golang
• ։ൃதʂʂ
͋ͨ͠ձٞͷಘγεςϜ
SGEͰͷ͋ͨ͠ձٞ • ͋ͨ͠ձٞͱɺһͱࣾһ͕νʔϜΛΜͰɺαΠόʔΤʔδΣϯτͷ͋͠ ͨΛͭ͘Δ৽نࣄۀҊ՝ղܾҊͳͲΛఏҊ͢Δ߹॓ • αΠόʔΤʔδΣϯτશࣾͱ͍ͯͬͯ͠Δ͕ɺSGEͰ͍ͬͯΔ • ΫϦΤΠλʔɺΤϯδχΞ͚ͩͰ͋ͨ͠ձٞΛ࣮ࢪ͍ͯ͠Δ ΠϊςοΫΩϟϯϓɺΫϦΤΠλʔ͋ͨ͠ձٞɺٕज़ֵ৽ձٞͳͲ
SGEͰͷ͋ͨ͠ձٞ • ͋ͨ͠ձٞͱɺһͱࣾһ͕νʔϜΛΜͰɺαΠόʔΤʔδΣϯτͷ͋͠ ͨΛͭ͘Δ৽نࣄۀҊ՝ղܾҊͳͲΛఏҊ͢Δ߹॓ • αΠόʔΤʔδΣϯτશࣾͱ͍ͯͬͯ͠Δ͕ɺSGEͰ͍ͬͯΔ • ΫϦΤΠλʔɺΤϯδχΞ͚ͩͰ͋ͨ͠ձٞΛ࣮ࢪ͍ͯ͠Δ ΠϊςοΫΩϟϯϓɺΫϦΤΠλʔ͋ͨ͠ձٞɺٕज़ֵ৽ձٞͳͲ ಘൃදΛͬͱΓ্͍͛ͨ
ͦΜͳͱ͖ʹಘγεςϜʂʂ
͋ͨ͠ձٞͷಘγεςϜͱ • SGE͋ͨ͠ձٞͰߴ͞Μ͕ಘΛൃද͢Δ ผͷܗࣜͷ͋ͨ͠ձٞͰಘΛൃද͢Δਓ͕͍Δ • ԋग़Λ͚ͭͯಘΛൃද͢Δ͜ͱͰΓ্͛υΩυΩײΛग़͢ ێͪΌΜͷԾେతͳ
͋ͨ͠ձٞͷಘγεςϜͱ
͋ͨ͠ձٞͷಘγεςϜͱ
͋ͨ͠ձٞͷಘγεςϜͱ
͋ͨ͠ձٞͷಘγεςϜͱ
͋ͨ͠ձٞͷಘγεςϜͷγεςϜߏ • AWS EC2ʢNode.jsʣ • ଓʹ͍ͭͯ εϚϗˠEC2ɿAPIΛୟ͘ εΫϦʔϯˠEC2ɿWeb Socket εϚϗͷૢ࡞ΛͳΔ͘ૣ͘εΫϦʔϯʹөͤ͞Δ
͋ͨ͠ձٞͷಘγεςϜͷྑ͔ͬͨͳͲ • ಘൃද࣌ʹΓ্͕Δ • ࣗͰ࡞ͨ͠πʔϧͳͷʹ͍͢͝υΩυΩ͠ͳ͕ΒಘൃදΛݟकΔ • ͋ͨ͠ձٞ͝ͱʹ৽͍͠σβΠϯͷγεςϜΛ࡞ΔΑ͏ʹͳͬͯ͠·ͬͨ σβΠϯͷࠩ͠ସ͚͑ͩʂͷ͕ͣɺඍௐ͕ೖΔ
͓·͚ πʔϧͰͳ͍͕ ڞ௨Ͱ͍ͬͯΔπʔϧͷհ
SGE Gitlab
SGE Gitlab • ֤ࣾͰ࡞ͬͨήʔϜͳͲͷιʔείʔυ্͕͕͍ͬͯΔ • ֤ࣾͰGithubGitlab͕͋Δ͕ɺͦΕΛఆظతʹSGEͷGitlabʹΞοϓ ͯ͠Β͍ͬͯΔ • SGEͷGitlabΛ͚֤ࣾͷιʔείʔυΛݟΔ͜ͱ͕Ͱ͖Δ
SGE Slideshare
SGE Slideshare • ษڧձڞ༗ձɺ͋ΒΏΔͱ͜ΖͰ༻ͨ͠εϥΠυ͕Ξοϓ͞Ε͍ͯΔ • ͜͜Λ͘ͱաڈͷൃදࢿྉΛݟΔ͜ͱ͕Ͱ͖Δ • SGETubeΛݟͳ͕ΒSlideshareΛࢀߟʹ͢Δ͜ͱͰɺΑΓਂֶ͘Δͣ
SGE QiitaνʔϜ
SGE QiitaνʔϜ • SGEͰͷQiitaνʔϜ • ֤ࣾͷϊϋϝϞॻ͖ͳͲΛؾܰʹॻ͚Δ • ࠓͰ1175݅ͷهࣄ͕ߘ͞Ε͍ͯΔ • Qiita:Teamͷهࣄ
ʮ300ਓͷΤϯδχΞ৫Λԣஅͨ͠Qiita:Teamͷ׆༻ज़ͱʂʁʯ https://teams.qiita.com/customers/sge/
None
·ͱΊ • ٕज़Ͱ৫͕Γ্͕ΓɺSGE͕׆ੑԽ͞ΕΔ • ࣾπʔϧΛ༻͍ͯɺΑΓศརɺޮΞοϓɺεΩϧΞοϓʹߩݙ • ࢠձࣾΛӽ͑ͯ৫ͷ͍ΖΜͳਓͱؔΘΔ͜ͱ͕Ͱ͖ɺSGE͕׆ੑԽ͞ΕΔ • ৽͍ٕ͠ज़ͷઓΛೖΕΔ͜ͱ͕Ͱ͖Δ ࣗͷ߹ۀͰPHPΛ͏͜ͱ͕ଟ͍͕ɺ͍ΖΜͳݴޠΛ৮Δ͜ͱ͕Ͱ͖Δ
όοΫΤϯυະܦݧͰೖࣾͨࣗ͠ʹͱͬͯخ͍͠ • ϛεͬͯҰൠϢʔβʔʹӨڹ͕ग़ΔΘ͚Ͱͳ͘ɺSGEʹ͔͠Өڹ͕Ͱ ͳ͍ͷͰԕྀͳ͘ઓͰ͖Δ
ٕज़͕৫Λ׆ੑԽͤ͞Δʂ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠