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
gree_tech
PRO
November 11, 2021
Technology
0
430
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
GREE Tech Conference 2021 で発表された資料です。
https://techcon.gree.jp/2021/session/Session-2
gree_tech
PRO
November 11, 2021
Tweet
Share
More Decks by gree_tech
See All by gree_tech
コミュニケーションに鍵を見いだす、エンジニア1年目の経験談
gree_tech
PRO
0
48
REALITY株式会社における開発生産性向上の取り組み: 失敗と成功から学んだこと
gree_tech
PRO
2
1.3k
『ヘブンバーンズレッド』におけるフィールドギミックの裏側
gree_tech
PRO
2
440
セキュリティインシデント対応の体制・運用の試行錯誤 / greetechcon2024-session-a1
gree_tech
PRO
1
430
『アナザーエデン 時空を超える猫』国内海外同時運営実現への道のり ~別々で開発されたアプリを安定して同時リリースするまでの取り組み~
gree_tech
PRO
1
410
『アサルトリリィ Last Bullet』におけるクラウドストリーミング技術を用いたブラウザゲーム化の紹介
gree_tech
PRO
1
460
UnityによるPCアプリの新しい選択肢。「PC版 Google Play Games」への対応について
gree_tech
PRO
1
800
実機ビルドのエラーによる検証ブロッカーを0に!『ヘブンバーンズレッド』のスモークテスト自動化の取り組み
gree_tech
PRO
1
500
"ゲームQA業界の技術向上を目指す! 会社を超えた研究会の取り組み"
gree_tech
PRO
1
600
Other Decks in Technology
See All in Technology
更新系と状態
uhyo
7
1.9k
AWS全冠芸人が見た世界 ~資格取得より大切なこと~
masakiokuda
5
6.4k
Classmethod AI Talks(CATs) #21 司会進行スライド(2025.04.17) / classmethod-ai-talks-aka-cats_moderator-slides_vol21_2025-04-17
shinyaa31
0
620
OpenLane-V2ベンチマークと代表的な手法
kzykmyzw
0
110
技術者はかっこいいものだ!!~キルラキルから学んだエンジニアの生き方~
masakiokuda
2
280
4/16/25 - SFJug - Java meets AI: Build LLM-Powered Apps with LangChain4j
edeandrea
PRO
2
130
勝手に!深堀り!Cloud Run worker pools / Deep dive Cloud Run worker pools
iselegant
3
500
エンジニアリングで組織のアウトカムを最速で最大化する!
ham0215
1
170
Oracle Cloud Infrastructure:2025年4月度サービス・アップデート
oracle4engineer
PRO
0
120
2025-04-24 "Manga AI Understanding & Localization" Furukawa Arata (CyberAgent, Inc)
ornew
2
260
グループ ポリシー再確認 (2)
murachiakira
0
110
10ヶ月かけてstyled-components v4からv5にアップデートした話
uhyo
2
100
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
23
2.6k
Documentation Writing (for coders)
carmenintech
69
4.7k
Code Reviewing Like a Champion
maltzj
522
40k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
52
2.4k
Facilitating Awesome Meetings
lara
54
6.3k
What's in a price? How to price your products and services
michaelherold
245
12k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Adopting Sorbet at Scale
ufuk
76
9.3k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Into the Great Unknown - MozCon
thekraken
38
1.7k
Producing Creativity
orderedlist
PRO
344
40k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.5k
Transcript
ίʔυͷࣗಈमਖ਼ʹΑ࣮ͬͯݱ͢Δ ػೳ։ൃΛࢭΊͳ͍ϑϨʔϜϫʔΫҠߦ άϦʔϥΠϑελΠϧגࣜձࣾ ଜ༸ଠ
ଜ༸ଠ ˔ॴଐ ˓ άϦʔϥΠϑελΠϧגࣜձࣾ ϓϩμΫτ։ൃ෦ ϝσΟΞ։ൃ άϧʔϓ ΤϯδχΞϦϯάνʔϜ ˔ܦྺ ˓
άϦʔϥΠϑελΠϧגࣜձࣾ ೖࣾ ˓ ओʹʮ-*.*"ʯͷαʔόʔɾΠϯϑϥ։ൃ ࣗݾհ 2 2
LIMIAを知っていますか? ⓘ Start presenting to display the poll results on
this slide.
͓खܰͰɺ͙͢ਅࣅͰ͖ΔͷʹɺͪΌΜͱΒ͍͢͠ɻ -*.*"Ոࣄͷ͕େू߹͢ΔϥΠϑελΠϧϝσΟΞͰ͢ɻ ͓खܰͰՈࣄ্ख -*.*"ͷհ
˔Ҡߦલ ˓ ϑϨʔϜϫʔΫ ˙ 'VFM1)1 ˓ ݴޠ ˙ 1)1 ˓
Πϯϑϥ ˙ &$ ˔Ҡߦޙ ˓ ϑϨʔϜϫʔΫ ˙ -BSBWFM ˓ ݴޠ ˙ 1)1 ˓ Πϯϑϥ ˙ &$4'BSHBUF 5 ϑϨʔϜϫʔΫҠߦϓϩδΣΫτ https://aws.amazon.com/jp/architecture/icons/
6 ҠߦϓϩδΣΫτͷεέδϡʔϧ ˔ػೳ։ൃΛࢭΊͣʹҠߦͯ͠ཉ͍͠ͱ͍͏ཁ ˔Ҡߦʹ͔͚ΒΕΔݶΒΕ͍ͯͨ ˓ ฒߦ։ൃظ͕ؒͦ͏ͳݟࠐΈͩͬͨ 方針 検討 コード自動修正ルールの作成 QA・バグ修正
インフラ検証 ݄ ݄ ݄ ݄ ݄ ࣮ࡍͷҠߦεέδϡʔϧ 社内管理ツール リリース カナリヤ リリース開始 0.5人 1人 2人
7 ͳͥࣗಈमਖ਼ʹ౿Έ͔ͬͨʁ ˔ܰྔͳ'VFM1)1ػೳͷଟ͍-BSBWFMͷҠߦ ˓ %# 2VFSZ#VJMEFS $POUSPMMFS͋ͨΓΛஔ͖͑Εྑͦ͞͏ ˓ 7JFXपΓςϯϓϨʔτΤϯδϯΛஔ͖͑Δ͚ͩͰྑͦ͞͏ ˔खಈमਖ਼ͷݫ͠͞
˓ ສߦ͑ͷίʔυϕʔε ˓ ਓ͕࣌ؒΓͳ͍ ˓ ػೳ։ൃΛฒߦͰߦ͍͍͕ͨʜʜ ˙ ҠߦݩͱҠߦޙͷίʔυͷ྆ํΛมߋ͢Δඞཁ͕͋Δ ˙ ҠߦޙͷίʔυʹมߋΛՃ͑ΔͱDPOGMJDU͕ى͜ΓಘΔ ˙ ػೳ։ൃΛࢭΊΔ͔͠ͳ͍͕ɺࢭΊͨ߹ۙ͘ػೳ։ൃ͕ਐ·ͳ͍͜ͱ ͕ݟࠐ·Εͨ
8 3FDUPS SFDUPSQIQSFDUPS ˔ࣗಈϦϑΝΫλϦϯάɾϚΠάϨʔγϣϯπʔϧ ˓ %FBE$PEF &BSMZ3FUVSOͳͲͷϦϑΝΫλϦϯάϧʔϧ ˓ 1)1όʔδϣϯͷVQHSBEF EPXOHSBEF
˔ಛ ˓ OJLJDQIQBTU Λϕʔεʹநߏจʢ"45ʣΛฤू ˓ ܕใΛ1)14UBO͔ΒऔಘͰ͖Δ ˓ ςετ͕ॻ͖͍͢ ˓ ։ൃ͕׆ൃ
9 ϑϨʔϜϫʔΫҠߦʹ͓͚Δίʔυͷमਖ਼ྫ ˔2VFSZ#VJMEFSͷஔ͖͑ ˓ XIFSF DPM JO C XIFSF*O B
C ˓ XIFSF DPM TVC2VFSZ XIFSF4VC DPM TVC2VFSZ ˓ %#TFMFDU@BSSBZ <JE OBNF> %#TFMFDU JE OBNF ˔$POUSPMMFSͷஔ͖͑ ˓ *OQVU 3FRVFTU 3FTQPOTFͳͲΛରԠ͢Δϝιουʹஔ͖͑ ˓ $POUSPMMFSΛQTS४ڌʹSFOBNF ˓ QTSͷOBNFTQBDFʹ߹ΘͤͨσΟϨΫτϦҠಈ
10 3FDUPSͷมྫ&BSMZ3FUVSO $IBOHF/FTUFE*GT5P&BSMZ3FUVSO3FDUPS public function hoge($value) { if ($value %
2 === 0) { if ($value % 3 === 0) { return 'yes'; } } return 'no'; } public function hoge($value) if ($value % 2 !== 0) { return 'no'; } if ($value % 3 === 0) { return yes; } return 'no'; }
11 நߏจ "CTUSBDU4ZOUBY5SFF"45 https://github.com/nikic/PHP-Parser <?php $var = "Hello World!"; Stmt_Expression
expr Expression_Assign var, expr Expression_Variable name: var Scalar_String value: Hello World! expr var expr
12 3FDUPSͷॲཧʢநߏจͷฤूʣ public function getNodeTypes(): array { return [String_::class]; }
public function refactor($node): ?Node { if ($node->value === "Hello World!") { $node->value = "Hello GREE Tech Conf!"; return $node; } return null; } Scalar_String value: Hello GREE Tech Conf! Stmt_Expression expr Expression_Assign var, expr Expression_Variable name: var expr var Scalar_String value: Hello World! Scalar_String value: Hello World!
13 3FDUPSͷॲཧʢநߏจ͔Βίʔυͷߏஙʣ Scalar_String value: Hello GREE Tech Conf! <?php $var
= "Hello GREE Tech Conf!"; Stmt_Expression expr Expression_Assign var, expr Expression_Variable name: var expr var
14 ࣮ࡍͷίʔυࣗಈमਖ਼ͷྫ 'VFM1)1 ¥DB::select_array(['id', 'name'])->from('user'); -BSBWFM ¥DB::table('user')->select('id', 'name')
15 ࣮ࡍͷ3FDUPSϧʔϧTFMFDUGSPNΛUBCMFTFMFDU ¥DB::select_array(['id', 'name'])->from('user'); ¥DB::table('user')->select_array(['id', 'name']); TFMFDUGSPNΛUBCMFTFMFDUʹมߋ
16 ࣮ࡍͷ3FDUPSϧʔϧTFMFDU@BSSBZΛTFMFDU ¥DB::table('user')->select('id', 'name'); ¥DB::select_array(['id', 'name'])->from('user'); ¥DB::table('user')->select_array(['id', 'name']); TFMFDUGSPNΛUBCMFTFMFDUʹมߋ TFMFDU@BSSBZͷҾΛల։
作成したRectorのルール数 ⓘ Start presenting to display the poll results on
this slide.
18 ͑
19 ͳͥࣗಈमਖ਼ʹ౿Έ͔ͬͨʁʢ࠶ܝʣ ˔ܰྔͳ'VFM1)1ػೳͷଟ͍-BSBWFMͷҠߦ ˓ %# 2VFSZ#VJMEFS $POUSPMMFS͋ͨΓΛஔ͖͑Εྑͦ͞͏ ˓ 7JFXपΓςϯϓϨʔτΤϯδϯΛஔ͖͑Δ͚ͩͰྑͦ͞͏ ˔खಈमਖ਼ͷݫ͠͞
˓ ສߦ͑ͷίʔυϕʔε ˓ ਓ͕࣌ؒΓͳ͍ ˓ ػೳ։ൃΛฒߦͰߦ͍͍͕ͨʜʜ ˙ ҠߦݩͱҠߦޙͷίʔυͷ྆ํΛมߋ͢Δඞཁ͕͋Δ ˙ ҠߦޙͷίʔυʹมߋΛՃ͑ΔͱDPOGMJDU͕ى͜ΓಘΔ ˙ ػೳ։ൃΛࢭΊΔ͔͠ͳ͍͕ɺࢭΊͨ߹ۙ͘ػೳ։ൃ͕ਐ·ͳ͍͜ͱ ͕ݟࠐ·Εͨ
20 ίʔυͷࣗಈमਖ਼ʹΑΔػೳ։ൃͱҠߦͷฒߦ։ൃ ։ൃϒϥϯν ˓ ػೳ։ൃɺόάमਖ਼ ˓ 1)1ʹ͏ίʔυमਖ਼ Ҡߦ༻ϒϥϯν ˓ 3FDUPSͷϧʔϧͷ࡞
˓ -BSBWFMؔ࿈ϑΝΠϧͷՃ ࠓ·Ͱ௨ΓͷϑϩʔͰ 2"ɾϦϦʔε $*ʹΑΔ ࣗಈमਖ਼ ҠߦڥͰͷςετ ΞϓϦέʔγϣϯͷίʔυ Ҡߦ༻ϒϥϯνͰฤू͠ͳ͍
21 ͲΕ͘Β͍ࣗಈमਖ਼ͰҠߦͰ͖͔ͨ ˔1)1ϑΝΠϧϑΝΠϧ͘Β͍ ˔มߋྔ ˔खಈͰҠߦͨ͠ϑΝΠϧʢʙϑΝΠϧʣ ˓ ೝূपΓ ˓ ϧʔςΟϯά ˓
'PSNBUUFS "HFOUͳͲ'VFM1)1ʹ͔͠ͳ͍ػೳ
22 ίʔυͷࣗಈमਖ਼ΛΔ্Ͱʜʜ ˔ςετ ˓ ͋Δͱͱͯྑ͍ ˓ -*.*"Ͱςετ͋·Γಈ͍͍ͯͳ͔ͬͨ ˔3FDUPSϧʔϧͷςετ ˓ ϧʔϧʹΑΔมΛ͋ΔఔอূͰ͖Δ
˓ 3FDUPSCSFBLJOHDIBOHF͕ଟ͍ͷͰ݁ߏʹཱͬͨ ˔੩తղੳπʔϧ ˓ 1)14UBOͷಋೖ ˙ Ұ൪ʹͨͬͨ ˙ ػೳ։ൃͷํͷόάݕग़ͯ͘͠Εͨ
23 ࣗಈमਖ਼Ͱۤ࿑ͨ͜͠ͱ ˔Ͳ͏ͯࣗ͠ಈमਖ਼͕ͦ͠͏ͳίʔυ ˓ ΊͪΌͪ͘Όෳࡶͳ2VFSZ#VJMEFS ˓ ༷͔ΒΑ͘Θ͔Βͳ͍ίʔυ ݩͷίʔυଆΛ3FDUPSͰมͰ͖ΔϦϑΝΫλϦϯάͨ͠ ͍ͦͦΒͳ͍ίʔυ͕ଟ͔ͬͨͷͰফ͠·ͬͨ͘ʢສߦʣ ˔πʔϧଆͷόά
˓ ਖ਼ͦ͠͏ͳͷʹಈ͔ͳ͍ͱࢥͬͨΒόʔδϣϯΛม͑Δͱಈ͍ͨΓ ˓ 3FDUPSͷ$BDIF͕յΕ͍ͯΔ 044ͳΜ͔ͩΒࣗͰ͢ʂʂ
24 ࣗಈमਖ਼ʹΑΔҠߦ·ͱΊ ˔ྑ͔ͬͨ͜ͱ ˓ ྔʹର߅Ͱ͖Δ ˓ ώϡʔϚϯΤϥʔΛݮΒͤΔ ˓ ৽نՃ͞ΕͨϑΝΠϧࣗಈͰҠߦ͞ΕΔ ˓
ػೳ։ൃͱDPOqJDU͢Δ͜ͱ͕ͳ͍ ˔ѱ͔ͬͨ͜ͱ ˓ -BSBWFMͷػೳΛϑϧʹ͑ͳ͍ ˓ நߏจͷਂ͍ࣝͳͲ͕ඞཁͰଐਓԽ͍͢͠
25 ҠߦϓϩδΣΫτΛऴ͑ͯ ˔ࣗಈमਖ਼Λܾஅͯ͠ྑ͔ͬͨ ˔3FDUPSͱ͍͏πʔϧʹग़ձ͑ͯྑ͔ͬͨ ˓ 1)11)1Ͱ׆༂ͦ͠͏ʂ ˓ ϦϑΝΫλϦϯάπʔϧͱͯ͠$*ʹೖΕ͍ͨ ˔ΠϯϑϥͷҠߦָ͔ͬͨ͠ ˓
71$5SBGGJD.JSSPSJOHʹΑΔෛՙςετ ˓ &$ͱ'BSHBUFͰͷΧφϦϠϦϦʔεΛߦ͏ͨΊͷ ˓ $*$%େ෯ʹվળ ˓ ΤϯδχΞϒϩάॻ͖͍ͨͱࢥ͍ͬͯ·͢ʜʜ
26