Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
クリーンアーキテクチャとTDDの中でGitHub Copilotを使ってみた! - NIFTY...
Search
ニフティ株式会社
PRO
October 02, 2023
Video
Resources
Programming
1.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
クリーンアーキテクチャとTDDの中でGitHub Copilotを使ってみた! - NIFTY Tech Talk #14
ニフティ株式会社
PRO
October 02, 2023
Video
Resources
GitHub Copilotの導入や活用 - NIFTY Tech Talk #14
https://nifty.connpass.com/event/295966/
More Decks by ニフティ株式会社
See All by ニフティ株式会社
microCMS移行をいまならAIでどう進めるか - microCMS Meetup 2026
niftycorp
PRO
0
500
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
4.2k
ニフティ株式会社 エンジニア向け Company Deck 2026年版
niftycorp
PRO
0
1.2k
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
380
CS教育のDX AIによる育成の効率化
niftycorp
PRO
0
420
AI 開発合宿を通して得た学び
niftycorp
PRO
0
420
なぜISPでオリジナルカードゲームを作ったのか?制作者と対談 - NIFTY Tech Talk #25
niftycorp
PRO
0
140
「なぜかネットが遅い」を“見える化”する 〜マイ ニフティが繋ぐサポートと暮らし〜 - NIKKEI Tech Talk #39
niftycorp
PRO
0
690
InnerSource Summit 2025 Three points that promoted innersource activities
niftycorp
PRO
0
360
Other Decks in Programming
See All in Programming
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
2
300
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
540
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
150
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
510
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
250
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
500
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
170
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
320
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.3k
Heart of Swift Concurrency
koher
0
960
AI × TiDD / 2026.09.05 Redmine 大阪
tokudiro
1
180
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
490
Featured
See All Featured
Making Projects Easy
brettharned
120
6.8k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
610
Git: the NoSQL Database
bkeepers
PRO
432
67k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
280
The Curse of the Amulet
leimatthew05
3
15k
Being A Developer After 40
akosma
91
590k
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Docker and Python
trallard
47
4.2k
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