$30 off During Our Annual Pro Sale. View Details »
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
410
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
allow_retry と Arel.sql / allow_retry and Arel.sql
euglena1215
1
210
AIと”コードの評価関数”を共有する / Share the "code evaluation function" with AI
euglena1215
1
230
ISUCONで型をつける
euglena1215
1
130
3年でバックエンドエンジニアが5倍に増えても破綻しなかったアーキテクチャ そして、これから / Software architecture that scales even with a 5x increase in backend engineers in 3 years
euglena1215
11
5.5k
モジュラモノリス、その前に / Modular monolith, before that
euglena1215
8
1.1k
いつか使える ObjectSpace / Maybe useful ObjectSpace
euglena1215
2
240
rbs-inlineを導入してYARDからRBSに移行する
euglena1215
1
870
Ruby の型に関する活動をやっている話 / Activities related to Ruby types
euglena1215
3
410
そろそろ理解する includes / Understanding includes
euglena1215
1
980
Other Decks in Programming
See All in Programming
Rediscover the Console - SymfonyCon Amsterdam 2025
chalasr
2
170
Why Kotlin? 電子カルテを Kotlin で開発する理由 / Why Kotlin? at Henry
agatan
2
7.3k
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
410
大体よく分かるscala.collection.immutable.HashMap ~ Compressed Hash-Array Mapped Prefix-tree (CHAMP) ~
matsu_chara
2
220
Developing static sites with Ruby
okuramasafumi
0
310
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
120
なあ兄弟、 余白の意味を考えてから UI実装してくれ!
ktcryomm
11
11k
俺流レスポンシブコーディング 2025
tak_dcxi
14
8.9k
JETLS.jl ─ A New Language Server for Julia
abap34
1
410
関数実行の裏側では何が起きているのか?
minop1205
1
700
非同期処理の迷宮を抜ける: 初学者がつまづく構造的な原因
pd1xx
1
730
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
850
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
331
21k
Speed Design
sergeychernyshev
33
1.4k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
54k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
286
14k
Code Reviewing Like a Champion
maltzj
527
40k
Automating Front-end Workflow
addyosmani
1371
200k
Raft: Consensus for Rubyists
vanstee
141
7.2k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.2k
Into the Great Unknown - MozCon
thekraken
40
2.2k
Done Done
chrislema
186
16k
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 ΛҰՈʹҰ͍͔͕Ͱ͠ΐ͏͔ʁ