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
370
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
AIと”コードの評価関数”を共有する / Share the "code evaluation function" with AI
euglena1215
1
170
ISUCONで型をつける
euglena1215
1
110
3年でバックエンドエンジニアが5倍に増えても破綻しなかったアーキテクチャ そして、これから / Software architecture that scales even with a 5x increase in backend engineers in 3 years
euglena1215
11
5.2k
モジュラモノリス、その前に / Modular monolith, before that
euglena1215
8
1.1k
いつか使える ObjectSpace / Maybe useful ObjectSpace
euglena1215
2
220
rbs-inlineを導入してYARDからRBSに移行する
euglena1215
1
800
Ruby の型に関する活動をやっている話 / Activities related to Ruby types
euglena1215
3
370
そろそろ理解する includes / Understanding includes
euglena1215
1
930
習うより慣れる Ruby AST / Ruby AST is better to get used to than to learn.
euglena1215
2
620
Other Decks in Programming
See All in Programming
おやつのお供はお決まりですか?@WWDC25 Recap -Japan-\(region).swift
shingangan
0
140
イベントストーミング図からコードへの変換手順 / Procedure for Converting Event Storming Diagrams to Code
nrslib
2
860
「テストは愚直&&網羅的に書くほどよい」という誤解 / Test Smarter, Not Harder
munetoshi
0
180
テスト駆動Kaggle
isax1015
1
430
チームのテスト力を総合的に鍛えて品質、スピード、レジリエンスを共立させる/Testing approach that improves quality, speed, and resilience
goyoki
5
940
#QiitaBash MCPのセキュリティ
ryosukedtomita
1
1.4k
Google Agent Development Kit でLINE Botを作ってみた
ymd65536
2
260
設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
panda_program
6
2.2k
AIともっと楽するE2Eテスト
myohei
7
2.8k
テストから始めるAgentic Coding 〜Claude Codeと共に行うTDD〜 / Agentic Coding starts with testing
rkaga
13
4.9k
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
270
Android 16KBページサイズ対応をはじめからていねいに
mine2424
0
130
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.4k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
980
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Speed Design
sergeychernyshev
32
1k
Building Applications with DynamoDB
mza
95
6.5k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
The Straight Up "How To Draw Better" Workshop
denniskardys
235
140k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
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 ΛҰՈʹҰ͍͔͕Ͱ͠ΐ͏͔ʁ