Slide 1

Slide 1 text

גࣜձࣾλΠϛʔɹShintani Teppei GitHub Copilot Λ࢖ͬͯ ࣗ࡞ϥΠϒϥϦΛ࡞ͬͯΈΑ͏ @euglena1215 ʲϋΠϒϦου։࠵ʳGitHub CopilotͰ୓͘։ൃੜ࢈ੑ

Slide 2

Slide 2 text

ࣗݾ঺հ ৽୩ ఩ฏʢ@euglena1215ʣ ● גࣜձࣾλΠϛʔ ● όοΫΤϯυΤϯδχΞ ● ޷͖ͳΧϨʔϧʔ͸δϟϫΧϨʔதਏ Έͳ͞Μͷ͓͢͢ΊΧϨʔϧʔΛʮ#CopilotͰ୓͘։ൃੜ ࢈ੑʯͰπΠʔτϙετͯ͠ڭ͍͑ͯͩ͘͞

Slide 3

Slide 3 text

3

Slide 4

Slide 4 text

ืूਓ਺ͷਪҠ 4 ※1ɿ2022೥4Qͱ2021೥4Qͷൺֱ ίϩφՒʹ͓͍ͯ΋ɺ աڈʹྫΛݟͳ͍ఔͷ Ճ଎తߴ੒௕Λ࣮ݱɻ

Slide 5

Slide 5 text

એ఻ λΠϛʔɺ ·ͩ GitHub Copilot for Business ༨ͬͯ·͢ɻ

Slide 6

Slide 6 text

એ఻ ۀ຿Ͱ GitHub Copilot Λ࢖͍͍ͨํ͸
 λΠϛʔ΁ʂ ·ͣ͸ΧδϡΞϧ໘ஊ͔Βʂ ʮλΠϛʔ ΧδϡΞϧ໘ஊʯͰݕࡧ🔍

Slide 7

Slide 7 text

גࣜձࣾλΠϛʔɹShintani Teppei GitHub Copilot Λ࢖ͬͯ ࣗ࡞ϥΠϒϥϦΛ࡞ͬͯΈΑ͏ @euglena1215 ʲϋΠϒϦου։࠵ʳGitHub CopilotͰ୓͘։ൃੜ࢈ੑ

Slide 8

Slide 8 text

͜Μͳํ޲͚ͷൃදͰ͢ ● GitHub Copilot ࠷ۙΑ͘ฉ͚͘Ͳ݁ہ·ͩ࢖ͬͨ͜ͱ͕ͳ͍... ○ → GitHub Copilot ศར͡ΌΜɻͪΐͬͱ৮ͬͯΈΑ͏͔ͳ ● GitHub Copilot Λ࢖͍͜ͳ͍ͯ͠Δํ͸ʮ෼͔ΔʙʯͱπΠʔτ ͠ͳ͕ΒσϞͷԠԉΛ͓ئ͍͠·͢ʂ

Slide 9

Slide 9 text

໨࣍ 1. ͳͥࣗ࡞ϥΠϒϥϦͳͷ͔ 2. ࣮ࡍʹ࣮૷ͯ͠ΈΔ 3. ΍ͬͯΈͯͲ͏ײ͔ͨ͡

Slide 10

Slide 10 text

໨࣍ 1. ͳͥࣗ࡞ϥΠϒϥϦͳͷ͔ 2. ࣮ࡍʹ࣮૷ͯ͠ΈΔ 3. ΍ͬͯΈͯͲ͏ײ͔ͨ͡

Slide 11

Slide 11 text

1. ͳͥࣗ࡞ϥΠϒϥϦͳͷ͔ ۀ຿ΞϓϦέʔγϣϯ ● ݻ༗ͷυϝΠϯϩδοΫΛ࣋ͭ ● ۀ຿ΞϓϦέʔγϣϯͷίʔυؙ͕ʑެ։͞Ε͍ͯΔ͜ͱ͸গͳ͍
 ʢ㲈 σʔληοτ͕গͳ͍ʣ ● ݻ༗ͷυϝΠϯϩδοΫ͕গͳ͍ ● ༏लͳϥΠϒϥϦ͕Φʔϓϯιʔεͱͯͨ͘͠͞Μެ։͞Ε͍ͯΔ
 ʢ㲈 σʔληοτ͕ଟ͍ʣ ࣗ࡞ϥΠϒϥϦ

Slide 12

Slide 12 text

1. ͳͥࣗ࡞ϥΠϒϥϦͳͷ͔ ۀ຿ΞϓϦέʔγϣϯ ● ݻ༗ͷυϝΠϯϩδοΫΛ࣋ͭ ● ۀ຿ΞϓϦέʔγϣϯͷίʔυؙ͕ʑެ։͞Ε͍ͯΔ͜ͱ͸গͳ͍
 ʢ㲈 σʔληοτ͕গͳ͍ʣ ● ݻ༗ͷυϝΠϯϩδοΫ͕গͳ͍ ● ༏लͳϥΠϒϥϦ͕Φʔϓϯιʔεͱͯͨ͘͠͞Μެ։͞Ε͍ͯΔ
 ʢ㲈 σʔληοτ͕ଟ͍ʣ ࣗ࡞ϥΠϒϥϦ ิ଍ɿ ● ͋͘·Ͱ૬ରతͳ࿩ ● ࣗ෼΋ۀ຿ΞϓϦέʔγϣϯΛ։ൃ͢Δࡍʹ
 GitHub Copilot Λ࢖͍ͬͯͯɺੜ࢈ੑͷ޲্Λײ͍ͯ͡·͢ɻ ● ۀ຿ΞϓϦέʔγϣϯͷ։ൃʹ͓͍ͯ GitHub Copilot ͕
 ༗༻Ͱ͸ͳ͍ͱ͍͏࿩Ͱ͸ͳ͍͜ͱΛ͝ೝ͍ࣝͩ͘͞ɻ

Slide 13

Slide 13 text

໨࣍ 1. ͳͥࣗ࡞ϥΠϒϥϦͳͷ͔ 2. ࣮ࡍʹ࣮૷ͯ͠ΈΔ 3. ΍ͬͯΈͯͲ͏ײ͔ͨ͡

Slide 14

Slide 14 text

2. ࣮ࡍʹ࣮૷ͯ͠ΈΔ σϞΛ౿·͑ͳ͕Β঺հ͍͖ͯ͠·͢ɻ σϞͰར༻ͨ͠ιʔείʔυɿ
 https://github.com/euglena1215/20230830_github_copilot_demo

Slide 15

Slide 15 text

my_active_model gem Λ࡞੒தɻࠓ࣮૷Ͱ͖͍ͯΔͷ͸͜͜·Ͱɻ 2. ࣮ࡍʹ࣮૷ͯ͠ΈΔ - લఏ attribute :foo ͱॻ͘ͱ 
 ରԠͨ͠ίϯετϥΫλɺ getterɺsetter ͕ఆٛ͞ΕΔɻ

Slide 16

Slide 16 text

attribute ʹҾ਺Λ௥Ճͯ͠ɺvalid? ͰܕͷݕূΛߦ͍͍ͨɻ 2. ࣮ࡍʹ࣮૷ͯ͠ΈΔᶃ - valid? ͷ࣮૷ ΫϥεͰࢦఆͨ͠ܕͱ஋͕Ұ க͍ͯ͠Ε͹ true Λฦ͢ɻ

Slide 17

Slide 17 text

DEMO 2. ࣮ࡍʹ࣮૷ͯ͠ΈΔᶃ - valid? ͷ࣮૷

Slide 18

Slide 18 text

ઃఆ͞Ε͍ͯΔશ attribute ʹରͯ͠ܕΛݕূͯ͠ ΄͍͠ͷͰఆٛ͞Εͨશ attribute ৘ใΛฦ͢ϝ ιουΛ࢖ͬͯϧʔϓΛճͦ͏ͱ͢Δͱ...

Slide 19

Slide 19 text

type ʹ :integer, :string ͳͲͷγϯϘϧͰ ͸ͳ͘ɺ Integer, String ͳͲͷΫϥε͕౉ ͞ΕΔ͜ͱΛ૝ఆ࣮ͨ͠૷͕ఏҊ͞Ε ͨɻʢ੯͍͠ʂʣ

Slide 20

Slide 20 text

ඞਢ߲໨ΛࢦఆͰ͖Δ required Φϓγϣϯ΋Ұ ॹʹఏҊ͞Εͨɻ͋ͬͯ΋Αͦ͞͏ɻ

Slide 21

Slide 21 text

ࠓճ͸ఏҊΛར༻ͤͣɺܕͷݕূͷ෦ ෼Λ੾Γग़ͨ͠ valid_type? ϝιου Λ࣮૷͢Δ͜ͱʹɻ

Slide 22

Slide 22 text

private ϝιουͱͯ͠ఆٛ͠Α͏ͱ “private” · Ͱೖྗ͢Δͱ valid_type? ϝιουͷఆ͕ٛఏҊ ͞Εͯ...

Slide 23

Slide 23 text

type Ҿ਺ʹ߹ΘͤͯܕͷݕূΛߦ͏࣮ ૷͕ఏҊ͞Εͨ 🎉

Slide 24

Slide 24 text

boolean ͷݕূ͸૝ఆ͍ͯ͠ͳ͔ͬͨ ΋ͷͷɺ͋ͬͨํ͕Αͦ͞͏ͳͷͰऔ ΓࠐΉ͜ͱʹɻ

Slide 25

Slide 25 text

boolean ͷݕূ͸૝ఆ͍ͯ͠ͳ͔ͬͨ ΋ͷͷɺ͋ͬͨํ͕ྑͦ͞͏ͩͱߟ͑ औΓࠐΉ͜ͱʹɻ ͜ΕͰ valid? ϝιουʹΑΔ ܕͷݕূ͸࣮૷׬ྃ 🎉🎉🎉

Slide 26

Slide 26 text

to_h Λ௥Ճͯ͠࿈૝഑ྻʢHashʣͱͯ͠ฦ͍ͨ͠ɻ 2. ࣮ࡍʹ࣮૷ͯ͠ΈΔᶄ - to_h ͷ࣮૷

Slide 27

Slide 27 text

DEMO 2. ࣮ࡍʹ࣮૷ͯ͠ΈΔᶄ - to_h ͷ࣮૷

Slide 28

Slide 28 text

ϝιου໊Λೖྗ͚ͨͩ͠ͰҰൃͰద ੾ͳ࣮૷͕ఏҊ͞Εͨ 🎉

Slide 29

Slide 29 text

Enumerable#each_with_object ͸ීஈ ͋·Γ࢖͏͜ͱ͕ͳ͔ͬͨͷͰษڧʹ ͳͬͨɻ

Slide 30

Slide 30 text

Enumerable#each_with_object ͸ීஈ ͋·Γ࢖͏͜ͱ͕ͳ͔ͬͨͷͰษڧʹ ͳͬͨɻ ͜ΕͰ to_h ϝιουͷ࣮૷΋׬ྃ🎉🎉🎉

Slide 31

Slide 31 text

to_json Λ௥Ճͯ͠JSONͱͯ͠ฦ͍ͨ͠ɻ 2. ࣮ࡍʹ࣮૷ͯ͠ΈΔᶅ - to_json ͷ࣮૷

Slide 32

Slide 32 text

DEMO 2. ࣮ࡍʹ࣮૷ͯ͠ΈΔᶅ - to_json ͷ࣮૷

Slide 33

Slide 33 text

ͪ͜Β΋ϝιου໊Λೖྗ͢Δ͚ͩͰ ҰൃͰద੾ͳ࣮૷͕ఏҊ͞Εͨ 🎉

Slide 34

Slide 34 text

͖ͬ͞ఆٛͨ͠ to_h ϝιου͕
 ࢖ΘΕͯΔʂ

Slide 35

Slide 35 text

͖ͬ͞ఆٛͨ͠ to_h ϝιου͕
 ࢖ΘΕͯΔʂ ͜ΕͰ to_json ϝιου΋ ࣮૷׬ྃ🎉🎉🎉

Slide 36

Slide 36 text

໨࣍ 1. ͳͥࣗ࡞ϥΠϒϥϦͳͷ͔ 2. ࣮ࡍͲΜͳײ͡ͳͷ͔ 3. ΍ͬͯΈͯͲ͏ײ͔ͨ͡

Slide 37

Slide 37 text

3. ΍ͬͯΈͯͲ͏ײ͔ͨ͡ GitHub Copilot Λ࢖͏͜ͱͰࣗ࡞ϥΠϒϥϦ࡞੒ͷϋʔυϧ͕άοͱԼ͕ͬͨʂ - ๞͖Δલʹ࠷௿ݶ࢓্͛ΒΕΔ - ࣗ࡞ϥΠϒϥϦ͸׬੒͢Δલʹ๞͖ͯ͠·͍͕ͪ... - GitHub Copilot Λ࢖͑͹ߴ଎ʹ։ൃͰ͖ΔͷͰɺ๞͖Δલʹ࠷௿ݶͷ࣮૷Λ࢓্͛ΒΕΔʂ - ֶशڭࡐͱͯ͠΋⭕ - ීஈ࢖Θͳ͍ϝιουͷ࢖͍Ͳ͜ΖΛ஌ΕΔ - ϥΠϒϥϦಛ༗ͷந৅తͳίʔυ΋ఏҊͯ͘͠ΕΔ

Slide 38

Slide 38 text

3. ΍ͬͯΈͯͲ͏ײ͔ͨ͡ GitHub Copilot Λ࢖͏͜ͱͰࣗ࡞ϥΠϒϥϦ࡞੒ͷϋʔυϧ͕άοͱԼ͕ͬͨʂ - ๞͖Δલʹ࠷௿ݶ࢓্͛ΒΕΔ - ࣗ࡞ϥΠϒϥϦ͸׬੒͢Δલʹ๞͖ͯ͠·͍͕ͪ... - GitHub Copilot Λ࢖͑͹ߴ଎ʹ։ൃͰ͖ΔͷͰɺ๞͖Δલʹ࠷௿ݶͷ࣮૷Λ࢓্͛ΒΕΔʂ - ֶशڭࡐͱͯ͠΋⭕ - ීஈ࢖Θͳ͍ϝιουͷ࢖͍Ͳ͜ΖΛ஌ΕΔ - ϥΠϒϥϦಛ༗ͷந৅తͳίʔυ΋ఏҊͯ͘͠ΕΔ ॳڃऀʹͱͬͯ͸։ൃͷิॿྠͱͯ͠ɺதڃɾ্ڃऀʹͱͬͯ͸։ൃͷ
 ϒʔελʔͱͯ͠ GitHub Copilot ΛҰՈʹҰ୆͍͔͕Ͱ͠ΐ͏͔ʁ