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
GitHub Copilot を使って自作ライブラリを作ってみよう/ Let's create...
Search
Shintani Teppei
August 30, 2023
Programming
0
330
GitHub Copilot を使って自作ライブラリを作ってみよう/ Let's create your own library using GitHub Copilot!
https://timeedev.connpass.com/event/292962/
こちらのイベントでの登壇資料です
Shintani Teppei
August 30, 2023
Tweet
Share
More Decks by Shintani Teppei
See All by Shintani Teppei
ISUCONで型をつける
euglena1215
1
65
3年でバックエンドエンジニアが5倍に増えても破綻しなかったアーキテクチャ そして、これから / Software architecture that scales even with a 5x increase in backend engineers in 3 years
euglena1215
11
4.4k
モジュラモノリス、その前に / Modular monolith, before that
euglena1215
8
920
いつか使える ObjectSpace / Maybe useful ObjectSpace
euglena1215
2
180
rbs-inlineを導入してYARDからRBSに移行する
euglena1215
1
580
Ruby の型に関する活動をやっている話 / Activities related to Ruby types
euglena1215
3
300
そろそろ理解する includes / Understanding includes
euglena1215
1
870
習うより慣れる Ruby AST / Ruby AST is better to get used to than to learn.
euglena1215
2
470
Railsでエンドポイントごとのテストカバレッジを測定する / Measuring Test Coverage per Endpoint in Rails
euglena1215
1
470
Other Decks in Programming
See All in Programming
Scaling your build logic
antalmonori
1
100
技術的負債と向き合うカイゼン活動を1年続けて分かった "持続可能" なプロダクト開発
yuichiro_serita
0
300
カンファレンス動画鑑賞会のススメ / Osaka.swift #1
hironytic
0
170
AppRouterを用いた大規模サービス開発におけるディレクトリ構成の変遷と問題点
eiganken
1
450
PHPUnitしか使ってこなかった 一般PHPerがPestに乗り換えた実録
mashirou1234
0
420
traP の部内 ISUCON とそれを支えるポータル / PISCON Portal
ikura_hamu
0
180
watsonx.ai Dojo #6 継続的なAIアプリ開発と展開
oniak3ibm
PRO
0
170
いりゃあせ、PHPカンファレンス名古屋2025 / Welcome to PHP Conference Nagoya 2025
ttskch
1
180
Fixstars高速化コンテスト2024準優勝解法
eijirou
0
190
BEエンジニアがFEの業務をできるようになるまでにやったこと
yoshida_ryushin
0
200
rails newと同時に型を書く
aki19035vc
5
710
Lookerは可視化だけじゃない。UIコンポーネントもあるんだ!
ymd65536
1
130
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.7k
Being A Developer After 40
akosma
89
590k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Fireside Chat
paigeccino
34
3.1k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.2k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.6k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.3k
Code Reviewing Like a Champion
maltzj
521
39k
Learning to Love Humans: Emotional Interface Design
aarron
274
40k
The World Runs on Bad Software
bkeepers
PRO
66
11k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
19
2.3k
Transcript
גࣜձࣾλΠϛʔɹShintani Teppei GitHub Copilot Λͬͯ ࣗ࡞ϥΠϒϥϦΛ࡞ͬͯΈΑ͏ @euglena1215 ʲϋΠϒϦου։࠵ʳGitHub CopilotͰ͘։ൃੜ࢈ੑ
ࣗݾհ ৽୩ ฏʢ@euglena1215ʣ • גࣜձࣾλΠϛʔ • όοΫΤϯυΤϯδχΞ • ͖ͳΧϨʔϧʔδϟϫΧϨʔதਏ Έͳ͞Μͷ͓͢͢ΊΧϨʔϧʔΛʮ#CopilotͰ͘։ൃੜ
࢈ੑʯͰπΠʔτϙετͯ͠ڭ͍͑ͯͩ͘͞
3
ืूਓͷਪҠ 4 ※1ɿ20224Qͱ20214Qͷൺֱ ίϩφՒʹ͓͍ͯɺ աڈʹྫΛݟͳ͍ఔͷ ՃతߴΛ࣮ݱɻ
એ λΠϛʔɺ ·ͩ GitHub Copilot for Business ༨ͬͯ·͢ɻ
એ ۀͰ GitHub Copilot Λ͍͍ͨํ λΠϛʔʂ ·ͣΧδϡΞϧ໘ஊ͔Βʂ ʮλΠϛʔ ΧδϡΞϧ໘ஊʯͰݕࡧ🔍
גࣜձࣾλΠϛʔɹShintani Teppei GitHub Copilot Λͬͯ ࣗ࡞ϥΠϒϥϦΛ࡞ͬͯΈΑ͏ @euglena1215 ʲϋΠϒϦου։࠵ʳGitHub CopilotͰ͘։ൃੜ࢈ੑ
͜Μͳํ͚ͷൃදͰ͢ • GitHub Copilot ࠷ۙΑ͘ฉ͚͘Ͳ݁ہ·ͩͬͨ͜ͱ͕ͳ͍... ◦ → GitHub Copilot ศར͡ΌΜɻͪΐͬͱ৮ͬͯΈΑ͏͔ͳ
• GitHub Copilot Λ͍͜ͳ͍ͯ͠Δํʮ͔ΔʙʯͱπΠʔτ ͠ͳ͕ΒσϞͷԠԉΛ͓ئ͍͠·͢ʂ
࣍ 1. ͳͥࣗ࡞ϥΠϒϥϦͳͷ͔ 2. ࣮ࡍʹ࣮ͯ͠ΈΔ 3. ͬͯΈͯͲ͏ײ͔ͨ͡
࣍ 1. ͳͥࣗ࡞ϥΠϒϥϦͳͷ͔ 2. ࣮ࡍʹ࣮ͯ͠ΈΔ 3. ͬͯΈͯͲ͏ײ͔ͨ͡
1. ͳͥࣗ࡞ϥΠϒϥϦͳͷ͔ ۀΞϓϦέʔγϣϯ • ݻ༗ͷυϝΠϯϩδοΫΛ࣋ͭ • ۀΞϓϦέʔγϣϯͷίʔυؙ͕ʑެ։͞Ε͍ͯΔ͜ͱগͳ͍ ʢ㲈 σʔληοτ͕গͳ͍ʣ •
ݻ༗ͷυϝΠϯϩδοΫ͕গͳ͍ • ༏लͳϥΠϒϥϦ͕Φʔϓϯιʔεͱͯͨ͘͠͞Μެ։͞Ε͍ͯΔ ʢ㲈 σʔληοτ͕ଟ͍ʣ ࣗ࡞ϥΠϒϥϦ
1. ͳͥࣗ࡞ϥΠϒϥϦͳͷ͔ ۀΞϓϦέʔγϣϯ • ݻ༗ͷυϝΠϯϩδοΫΛ࣋ͭ • ۀΞϓϦέʔγϣϯͷίʔυؙ͕ʑެ։͞Ε͍ͯΔ͜ͱগͳ͍ ʢ㲈 σʔληοτ͕গͳ͍ʣ •
ݻ༗ͷυϝΠϯϩδοΫ͕গͳ͍ • ༏लͳϥΠϒϥϦ͕Φʔϓϯιʔεͱͯͨ͘͠͞Μެ։͞Ε͍ͯΔ ʢ㲈 σʔληοτ͕ଟ͍ʣ ࣗ࡞ϥΠϒϥϦ ิɿ • ͋͘·Ͱ૬ରతͳ • ࣗۀΞϓϦέʔγϣϯΛ։ൃ͢Δࡍʹ GitHub Copilot Λ͍ͬͯͯɺੜ࢈ੑͷ্Λײ͍ͯ͡·͢ɻ • ۀΞϓϦέʔγϣϯͷ։ൃʹ͓͍ͯ GitHub Copilot ͕ ༗༻Ͱͳ͍ͱ͍͏Ͱͳ͍͜ͱΛ͝ೝ͍ࣝͩ͘͞ɻ
࣍ 1. ͳͥࣗ࡞ϥΠϒϥϦͳͷ͔ 2. ࣮ࡍʹ࣮ͯ͠ΈΔ 3. ͬͯΈͯͲ͏ײ͔ͨ͡
2. ࣮ࡍʹ࣮ͯ͠ΈΔ σϞΛ౿·͑ͳ͕Βհ͍͖ͯ͠·͢ɻ σϞͰར༻ͨ͠ιʔείʔυɿ https://github.com/euglena1215/20230830_github_copilot_demo
my_active_model gem Λ࡞தɻࠓ࣮Ͱ͖͍ͯΔͷ͜͜·Ͱɻ 2. ࣮ࡍʹ࣮ͯ͠ΈΔ - લఏ attribute :foo ͱॻ͘ͱ
ରԠͨ͠ίϯετϥΫλɺ getterɺsetter ͕ఆٛ͞ΕΔɻ
attribute ʹҾΛՃͯ͠ɺvalid? ͰܕͷݕূΛߦ͍͍ͨɻ 2. ࣮ࡍʹ࣮ͯ͠ΈΔᶃ - valid? ͷ࣮ ΫϥεͰࢦఆͨ͠ܕͱ͕Ұ க͍ͯ͠Ε
true Λฦ͢ɻ
DEMO 2. ࣮ࡍʹ࣮ͯ͠ΈΔᶃ - valid? ͷ࣮
ઃఆ͞Ε͍ͯΔશ attribute ʹରͯ͠ܕΛݕূͯ͠ ΄͍͠ͷͰఆٛ͞Εͨશ attribute ใΛฦ͢ϝ ιουΛͬͯϧʔϓΛճͦ͏ͱ͢Δͱ...
type ʹ :integer, :string ͳͲͷγϯϘϧͰ ͳ͘ɺ Integer, String ͳͲͷΫϥε͕ ͞ΕΔ͜ͱΛఆ࣮͕ͨ͠ఏҊ͞Ε
ͨɻʢ੯͍͠ʂʣ
ඞਢ߲ΛࢦఆͰ͖Δ required ΦϓγϣϯҰ ॹʹఏҊ͞Εͨɻ͋ͬͯΑͦ͞͏ɻ
ࠓճఏҊΛར༻ͤͣɺܕͷݕূͷ෦ ΛΓग़ͨ͠ valid_type? ϝιου Λ࣮͢Δ͜ͱʹɻ
private ϝιουͱͯ͠ఆٛ͠Α͏ͱ “private” · Ͱೖྗ͢Δͱ valid_type? ϝιουͷఆ͕ٛఏҊ ͞Εͯ...
type Ҿʹ߹ΘͤͯܕͷݕূΛߦ͏࣮ ͕ఏҊ͞Εͨ 🎉
boolean ͷݕূఆ͍ͯ͠ͳ͔ͬͨ ͷͷɺ͋ͬͨํ͕Αͦ͞͏ͳͷͰऔ ΓࠐΉ͜ͱʹɻ
boolean ͷݕূఆ͍ͯ͠ͳ͔ͬͨ ͷͷɺ͋ͬͨํ͕ྑͦ͞͏ͩͱߟ͑ औΓࠐΉ͜ͱʹɻ ͜ΕͰ valid? ϝιουʹΑΔ ܕͷݕূ࣮ྃ 🎉🎉🎉
to_h ΛՃͯ͠࿈ྻʢHashʣͱͯ͠ฦ͍ͨ͠ɻ 2. ࣮ࡍʹ࣮ͯ͠ΈΔᶄ - to_h ͷ࣮
DEMO 2. ࣮ࡍʹ࣮ͯ͠ΈΔᶄ - to_h ͷ࣮
ϝιου໊Λೖྗ͚ͨͩ͠ͰҰൃͰద ͳ࣮͕ఏҊ͞Εͨ 🎉
Enumerable#each_with_object ීஈ ͋·Γ͏͜ͱ͕ͳ͔ͬͨͷͰษڧʹ ͳͬͨɻ
Enumerable#each_with_object ීஈ ͋·Γ͏͜ͱ͕ͳ͔ͬͨͷͰษڧʹ ͳͬͨɻ ͜ΕͰ to_h ϝιουͷ࣮ྃ🎉🎉🎉
to_json ΛՃͯ͠JSONͱͯ͠ฦ͍ͨ͠ɻ 2. ࣮ࡍʹ࣮ͯ͠ΈΔᶅ - to_json ͷ࣮
DEMO 2. ࣮ࡍʹ࣮ͯ͠ΈΔᶅ - to_json ͷ࣮
ͪ͜Βϝιου໊Λೖྗ͢Δ͚ͩͰ ҰൃͰదͳ࣮͕ఏҊ͞Εͨ 🎉
͖ͬ͞ఆٛͨ͠ to_h ϝιου͕ ΘΕͯΔʂ
͖ͬ͞ఆٛͨ͠ to_h ϝιου͕ ΘΕͯΔʂ ͜ΕͰ to_json ϝιου ࣮ྃ🎉🎉🎉
࣍ 1. ͳͥࣗ࡞ϥΠϒϥϦͳͷ͔ 2. ࣮ࡍͲΜͳײ͡ͳͷ͔ 3. ͬͯΈͯͲ͏ײ͔ͨ͡
3. ͬͯΈͯͲ͏ײ͔ͨ͡ GitHub Copilot Λ͏͜ͱͰࣗ࡞ϥΠϒϥϦ࡞ͷϋʔυϧ͕άοͱԼ͕ͬͨʂ - ͖Δલʹ࠷ݶ্͛ΒΕΔ - ࣗ࡞ϥΠϒϥϦ͢Δલʹ͖ͯ͠·͍͕ͪ... -
GitHub Copilot Λ͑ߴʹ։ൃͰ͖ΔͷͰɺ͖Δલʹ࠷ݶͷ࣮Λ্͛ΒΕΔʂ - ֶशڭࡐͱͯ͠⭕ - ීஈΘͳ͍ϝιουͷ͍Ͳ͜ΖΛΕΔ - ϥΠϒϥϦಛ༗ͷநతͳίʔυఏҊͯ͘͠ΕΔ
3. ͬͯΈͯͲ͏ײ͔ͨ͡ GitHub Copilot Λ͏͜ͱͰࣗ࡞ϥΠϒϥϦ࡞ͷϋʔυϧ͕άοͱԼ͕ͬͨʂ - ͖Δલʹ࠷ݶ্͛ΒΕΔ - ࣗ࡞ϥΠϒϥϦ͢Δલʹ͖ͯ͠·͍͕ͪ... -
GitHub Copilot Λ͑ߴʹ։ൃͰ͖ΔͷͰɺ͖Δલʹ࠷ݶͷ࣮Λ্͛ΒΕΔʂ - ֶशڭࡐͱͯ͠⭕ - ීஈΘͳ͍ϝιουͷ͍Ͳ͜ΖΛΕΔ - ϥΠϒϥϦಛ༗ͷநతͳίʔυఏҊͯ͘͠ΕΔ ॳڃऀʹͱͬͯ։ൃͷิॿྠͱͯ͠ɺதڃɾ্ڃऀʹͱͬͯ։ൃͷ ϒʔελʔͱͯ͠ GitHub Copilot ΛҰՈʹҰ͍͔͕Ͱ͠ΐ͏͔ʁ