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
クリーンアーキテクチャとTDDの中でGitHub Copilotを使ってみた! - NIFTY...
Search
ニフティ株式会社
PRO
October 02, 2023
Video
Resources
Programming
0
1.2k
クリーンアーキテクチャとTDDの中でGitHub Copilotを使ってみた! - NIFTY Tech Talk #14
ニフティ株式会社
PRO
October 02, 2023
Tweet
Share
Video
Resources
GitHub Copilotの導入や活用 - NIFTY Tech Talk #14
https://nifty.connpass.com/event/295966/
More Decks by ニフティ株式会社
See All by ニフティ株式会社
Dify触ってみた。
niftycorp
PRO
0
91
Amazon Bedrockを使用して、 運用対応を楽にしてみた
niftycorp
PRO
0
79
自社製CMSからの脱却:10件のWebサイト再構築に学ぶ運用重視の技術選定 - NIFTY Tech Day 2025
niftycorp
PRO
0
33
エンジニアの殻を破る:インナーソースと社外活動がもたらした成長 - NIFTY Tech Day 2025
niftycorp
PRO
0
20
システム全体像把握の超高速化〜システム関連図を使い倒そう (LT) - NIFTY Tech Day 2025
niftycorp
PRO
0
21
Rust で生成 AI の社内 chatbot をメンテしている話 (LT) - NIFTY Tech Day 2025
niftycorp
PRO
0
24
メタバースは仕事に使える?〜100日間でバーチャルオフィスへの挑戦〜 (LT) - NIFTY Tech Day 2025
niftycorp
PRO
0
16
AWSでもOracleしたい!DB移行指南:マネージドサービス活用して属人化も解消 - NIFTY Tech Day 2025
niftycorp
PRO
0
19
スクラムマスター入門者のための学習マップ 効果的な学びと実践 - NIFTY Tech Day 2025
niftycorp
PRO
0
25
Other Decks in Programming
See All in Programming
Go 1.24でジェネリックになった型エイリアスの紹介
syumai
2
300
SwiftUI移行のためのインプレッショントラッキング基盤の構築
kokihirokawa
0
170
Webフレームワークとともに利用するWeb components / JSConf.jp おかわり
spring_raining
1
130
Jakarta EE meets AI
ivargrimstad
0
680
color-scheme: light dark; を完全に理解する
uhyo
7
510
1年目の私に伝えたい!テストコードを怖がらなくなるためのヒント/Tips for not being afraid of test code
push_gawa
1
650
クックパッド検索システム統合/Cookpad Search System Consolidation
giga811
0
140
15分で学ぶDuckDBの可愛い使い方 DuckDBの最近の更新
notrogue
3
830
AWS Step Functions は CDK で書こう!
konokenj
5
870
もう僕は OpenAPI を書きたくない
sgash708
6
1.9k
Honoをフロントエンドで使う 3つのやり方
yusukebe
7
3.6k
Duke on CRaC with Jakarta EE
ivargrimstad
0
130
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
380
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
4
440
Art, The Web, and Tiny UX
lynnandtonic
298
20k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
For a Future-Friendly Web
brad_frost
176
9.6k
GraphQLとの向き合い方2022年版
quramy
44
14k
Typedesign – Prime Four
hannesfritz
41
2.5k
GitHub's CSS Performance
jonrohan
1030
460k
Visualization
eitanlees
146
15k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Transcript
ΫϦʔϯΞʔΩςΫνϟͱTDDͷதͰ GitHub CopilotΛͬͯΈͨʂ @͚ͨΖ͍Ͳ Tech Talk #14
͜Μʹͪʂ ୈೋ։ൃΦϓγϣϯαϒνʔϜ ʹॴଐ͍ͯ͠·͢ɻ ͚ͨΖ͍Ͳ @takenokoroid
ճઢʹਵ͢ΔΦϓγϣϯαʔ ϏεΛӡ༻ɾอक͍ͯ͠·͢ɻ ͚ͨΖ͍Ͳ @takenokoroid https://security.nifty.com/sec24/
ΫϦʔϯΞʔΩςΫνϟʹଇΓ ։ൃΛߦ͍ͬͯ·͢ɻ ͚ͨΖ͍Ͳ @takenokoroid https://amzn.asia/d/0auO8rM
࠷ۙTDDͰ։ൃΛਐΊ͍ͯ͘ Α͏ʹ͍ͯ͠·͢ɻ ͚ͨΖ͍Ͳ @takenokoroid https://marsner.com/blog/why-test-driven-development-tdd/
ෳࡶͳ֊ߏɾϜϥͷ͋Δς ετ͕ͭΒ͍ʙ ͚ͨΖ͍Ͳ @takenokoroid
ෳࡶͳ֊ߏɾϜϥͷ͋Δς ετ͕ͭΒ͍ʙ ͚ͨΖ͍Ͳ @takenokoroid @takenokoroid ͕खॿ͚ͯ͋͛͠ΔΑʂ Copilot @copilot @copilot Ϛʁ
͚ͨΖ͍Ͳ @takenokoroid
- ෳࡶͳ֊ߏ - ґଘ͕ؔDIPʹΑΓҰ෦ෳࡶԽ - ॳݟ߈ུΉΓΆʢֶशίετ૿ʣ ෳࡶͳ֊ߏͷ
ෳࡶͳ֊ߏͷ ࣮ ґଘؔ υϝΠϯࣝ ࠓͷ༦൧ ਓੜઃܭ ࢥ͍Γ
ෳࡶͳ֊ߏͷ ࣮ ґଘ ؔ υϝΠϯࣝ ࠓͷ༦൧ ਓੜઃܭ ࢥ͍Γ
- ςετίʔυͷϜϥ - ݸਓͷखบࢥͰςετίʔυͷॻ͖ํ͕Ұ෦ҟͳΔ - ϨϏϡʔίετ͕૿Ճ͢Δ - ݸਓͷεΩϧʹΑͬͯςετ͕มԽ͢Δෆ݈શͳঢ়ଶʹ ςετίʔυͷϜϥͷ
def test_must_bill_in_bill_month(self): subscription = Subscription( ... ) # mockͷઃఆ ...
test_cases: list[dict] = [ { ... } ] for test_case in test_cases: with self.subTest(test_case["name"]): # ࣮ߦ actual = ... # ݺͼग़͠ςετ self.assertEqual(...) # returnͷςετ self.assertEqual(...) UsecaseͷςετͰ େ͖ͳҧ͍͕ ςετέʔεͷॻ͖ํʹ
def test_subscription_is_active_with_single_entry(self): # ਖ਼ৗܥ:αϒεΫϦϓγϣϯ͕ACTIVEͭ1݅ͷ࣌ request_value = { ... } rs
= ..., ɹwith self.app.app_context(): # ਖ਼ৗܥ result = self.interactor.handle( request=request_value["request"], _txs=request_value["transaction"], ) # ฦΓ͕True͔Ͳ͏͔ΛνΣοΫ self.assertEqual(...) self.assertEqual(...) def test_subscription_is_active_with_single_entry(self): # ਖ਼ৗܥ:αϒεΫϦϓγϣϯ͕ACTIVEͭ2݅Ҏ্ͷ࣌ ... UsecaseͷςετͰ େ͖ͳҧ͍͕ ͪ͜ΒͰςετέʔε͝ͱ ʹϝιουΛ͚͍ͯΔ
- ෳࡶͳ֊ߏ - ґଘ͕ؔͷϝϞϦΛѹഭͯ͠ɺίʔυͷࢥ͍Γ͕ඈͿ - ࣮࣌ʹർΕΔ - ςετίʔυͷϜϥ - ϨϏϡʔ͕ਏ͍
- ݸਓͷεΩϧʹΑ࣭͕ͬͯมΘΔෆ݈શͳঢ়ଶʹ ·ͱΊ
- ෳࡶͳ֊ߏ - ґଘ͕ؔͷϝϞϦΛѹഭͯ͠ɺίʔυͷࢥ͍Γ͕ඈͿ - ࣮࣌ʹർΕΔ - ςετίʔυͷϜϥ - ϨϏϡʔ͕ਏ͍
- ݸਓͷεΩϧʹΑ࣭͕ͬͯมΘΔෆ݈શͳঢ়ଶʹ ·ͱΊ
ෳࡶͳ֊ߏʹରͯ͠CopilotͲ͏ͩͬͨ ࣮ ґଘ ؔ υϝΠϯࣝ ࠓͷ༦൧ ਓੜઃܭ ࢥ͍Γ
ෳࡶͳ֊ߏʹରͯ͠CopilotͲ͏ͩͬͨ ࣮ ґଘؔ υϝΠϯࣝ ࠓͷ༦൧ ਓੜઃܭ ࢥ͍Γ ґଘؔ ΞϧΰϦζϜ
etc..
- ৭ʑͳॻ͖ํ͕Ͱ͖ͯ͠·ͬͨςετίʔυ - ϨϏϡʔίʔυϦʔσΟϯά͕͘͠... ςετίʔυͷϜϥʹର͠CopilotͲ͏ͩͬͨ
- طଘςετίʔυͷίϯςΩετΛཧղ͠ఏҊͯ͘͠ΕΔ - ίʔυ͕౷Ұ͞ΕɺϨϏϡʔ͘͢͠ͳͬͨ ςετίʔυͷϜϥʹର͠CopilotͲ͏ͩͬͨ
- ͔ͬ͠Γͱλϒཧ͠ίϯςΩετΛಡΈࠐ·ͤΔ - ։ൃऀ࣮ࣗʹूதͰ͖ΔΑ͏ʹͳͬͨ - తҙਤΛߟ͑ɺͦΕΛ͑Δͷ͕ओʹͳͬͨ ςετίʔυͷϜϥʹର͠CopilotͲ͏ͩͬͨ
- ଟॏԽͨ͠֊ߏͷͳ͔ͰޮՌతʹಇ͍ͨ - ΤϯδχΞ֓೦Λཧղ͠ɺಛఆͷϑΝΠϧΛ։͚ͩ͘Ͱྑ͍ - ஸೡͳίϝϯτΛߟ͑ͨΓͱʮࢥ͍Γʯͷ͕࣌ؒ૿͑ͨ - ςετίʔυϨϏϡϫʔʹ༏͘͠ͳͬͨ - λϒཧΛҙࣝ͢Δ͜ͱͰ࣮ʹूதͰ͖Δ
- ίʔυͷҙਤతͰձ͢Δ͜ͱ͕ҎલΑΓ૿Ճͨ͠ ·ͱΊ
Copilot͍͍ͧ ͚ͨΖ͍Ͳ @takenokoroid