GREE Tech Conference 2021 で発表された資料です。 https://techcon.gree.jp/2021/session/Session-2
ίʔυͷࣗಈमਖ਼ʹΑ࣮ͬͯݱ͢Δػೳ։ൃΛࢭΊͳ͍ϑϨʔϜϫʔΫҠߦάϦʔϥΠϑελΠϧגࣜձࣾଜ༸ଠ
View Slide
ଜ༸ଠ˔ॴଐ˓ άϦʔϥΠϑελΠϧגࣜձࣾ ϓϩμΫτ։ൃ෦ ϝσΟΞ։ൃάϧʔϓ ΤϯδχΞϦϯάνʔϜ˔ܦྺ˓ άϦʔϥΠϑελΠϧגࣜձࣾ ೖࣾ˓ ओʹʮ-*.*"ʯͷαʔόʔɾΠϯϑϥ։ൃࣗݾհ22
LIMIAを知っていますか?ⓘ Start presenting to display the poll results on this slide.
͓खܰͰɺ͙͢ਅࣅͰ͖ΔͷʹɺͪΌΜͱΒ͍͢͠ɻ-*.*"Ոࣄͷ͕େू߹͢ΔϥΠϑελΠϧϝσΟΞͰ͢ɻ͓खܰͰՈࣄ্ख-*.*"ͷհ
˔Ҡߦલ˓ ϑϨʔϜϫʔΫ˙ 'VFM1)1˓ ݴޠ˙ 1)1˓ Πϯϑϥ˙ &$˔Ҡߦޙ˓ ϑϨʔϜϫʔΫ˙ -BSBWFM˓ ݴޠ˙ 1)1˓ Πϯϑϥ˙ &$4'BSHBUF5ϑϨʔϜϫʔΫҠߦϓϩδΣΫτhttps://aws.amazon.com/jp/architecture/icons/
6ҠߦϓϩδΣΫτͷεέδϡʔϧ˔ػೳ։ൃΛࢭΊͣʹҠߦͯ͠ཉ͍͠ͱ͍͏ཁ˔Ҡߦʹ͔͚ΒΕΔݶΒΕ͍ͯͨ˓ ฒߦ։ൃظ͕ؒͦ͏ͳݟࠐΈͩͬͨ方針検討コード自動修正ルールの作成 QA・バグ修正 インフラ検証݄ ݄ ݄ ݄ ݄࣮ࡍͷҠߦεέδϡʔϧ社内管理ツールリリースカナリヤリリース開始0.5人 1人 2人
7ͳͥࣗಈमਖ਼ʹ౿Έ͔ͬͨʁ˔ܰྔͳ'VFM1)1ػೳͷଟ͍-BSBWFMͷҠߦ˓ %# 2VFSZ#VJMEFS $POUSPMMFS͋ͨΓΛஔ͖͑Εྑͦ͞͏˓ 7JFXपΓςϯϓϨʔτΤϯδϯΛஔ͖͑Δ͚ͩͰྑͦ͞͏˔खಈमਖ਼ͷݫ͠͞˓ ສߦ͑ͷίʔυϕʔε˓ ਓ͕࣌ؒΓͳ͍˓ ػೳ։ൃΛฒߦͰߦ͍͍͕ͨʜʜ˙ ҠߦݩͱҠߦޙͷίʔυͷ྆ํΛมߋ͢Δඞཁ͕͋Δ˙ ҠߦޙͷίʔυʹมߋΛՃ͑ΔͱDPOGMJDU͕ى͜ΓಘΔ˙ ػೳ։ൃΛࢭΊΔ͔͠ͳ͍͕ɺࢭΊͨ߹ۙ͘ػೳ։ൃ͕ਐ·ͳ͍͜ͱ͕ݟࠐ·Εͨ
83FDUPS SFDUPSQIQSFDUPS˔ࣗಈϦϑΝΫλϦϯάɾϚΠάϨʔγϣϯπʔϧ˓ %FBE$PEF &BSMZ3FUVSOͳͲͷϦϑΝΫλϦϯάϧʔϧ˓ 1)1όʔδϣϯͷVQHSBEF EPXOHSBEF˔ಛ˓ OJLJDQIQBTU Λϕʔεʹநߏจʢ"45ʣΛฤू˓ ܕใΛ1)14UBO͔ΒऔಘͰ͖Δ˓ ςετ͕ॻ͖͍͢˓ ։ൃ͕׆ൃ
9ϑϨʔϜϫʔΫҠߦʹ͓͚Δίʔυͷमਖ਼ྫ˔2VFSZ#VJMEFSͷஔ͖͑˓ XIFSF DPM JO CXIFSF*O B C˓ XIFSF DPM TVC2VFSZXIFSF4VC DPM TVC2VFSZ˓ %#TFMFDU@BSSBZ <JE OBNF>%#TFMFDU JE OBNF˔$POUSPMMFSͷஔ͖͑˓ *OQVU 3FRVFTU 3FTQPOTFͳͲΛରԠ͢Δϝιουʹஔ͖͑˓ $POUSPMMFSΛQTS४ڌʹSFOBNF˓ QTSͷOBNFTQBDFʹ߹ΘͤͨσΟϨΫτϦҠಈ
103FDUPSͷมྫ&BSMZ3FUVSO$IBOHF/FTUFE*GT5P&BSMZ3FUVSO3FDUPSpublic 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"45https://github.com/nikic/PHP-Parser$var = "Hello World!";Stmt_ExpressionexprExpression_Assignvar, exprExpression_Variablename: varScalar_Stringvalue: Hello World!exprvarexpr
123FDUPSͷॲཧʢநߏจͷฤूʣ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_Stringvalue: Hello GREE Tech Conf!Stmt_ExpressionexprExpression_Assignvar, exprExpression_Variablename: varexprvarScalar_Stringvalue: Hello World!Scalar_Stringvalue: Hello World!
133FDUPSͷॲཧʢநߏจ͔ΒίʔυͷߏஙʣScalar_Stringvalue: Hello GREE Tech Conf!$var = "Hello GREE TechConf!";Stmt_ExpressionexprExpression_Assignvar, exprExpression_Variablename: varexprvar
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