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
ChatGPT触ってみた
Search
Infiniteloop
October 18, 2023
Technology
0
36
ChatGPT触ってみた
【タガヤス その31】物好きなメンバーによる流行りもの?紹介【仙台発信の定期勉強会】発表資料
https://tagayas.connpass.com/event/282061/
Infiniteloop
October 18, 2023
Tweet
Share
More Decks by Infiniteloop
See All by Infiniteloop
俺の PHP プロファイラの話 PHP スクリプトで PHP 処理系のメモリをのぞき込む
infiniteloop_inc
0
300
心理的安全性を学び直し、 「いい組織とは何か?」を考えてみる
infiniteloop_inc
0
380
ゼロからつくる 2D物理シミュレーション ~物理現象をコードに落とし込む方法~
infiniteloop_inc
0
490
詫び石の裏側
infiniteloop_inc
0
400
[新卒向け研修資料] テスト文字列に「うんこ」と入れるな(2024年版)
infiniteloop_inc
6
25k
リファクタリングで実装が○○分短縮した話
infiniteloop_inc
0
150
ADRという考えを取り入れてみて
infiniteloop_inc
0
140
500万行のPHPプロジェクトにおけるログ出力の歩み
infiniteloop_inc
0
110
I ❤ Virtual Machines 仮想環境をより便利に使うツールたち
infiniteloop_inc
0
93
Other Decks in Technology
See All in Technology
新機能VPCリソースエンドポイント機能検証から得られた考察
duelist2020jp
0
220
kargoの魅力について伝える
magisystem0408
0
210
サイボウズフロントエンドエキスパートチームについて / FrontendExpert Team
cybozuinsideout
PRO
5
38k
Qiita埋め込み用スライド
naoki_0531
0
5.1k
10分で学ぶKubernetesコンテナセキュリティ/10min-k8s-container-sec
mochizuki875
3
330
re:Invent 2024 Innovation Talks(NET201)で語られた大切なこと
shotashiratori
0
310
20241214_WACATE2024冬_テスト設計技法をチョット俯瞰してみよう
kzsuzuki
3
450
Fanstaの1年を大解剖! 一人SREはどこまでできるのか!?
syossan27
2
170
ゼロから創る横断SREチーム 挑戦と進化の軌跡
rvirus0817
2
270
あの日俺達が夢見たサーバレスアーキテクチャ/the-serverless-architecture-we-dreamed-of
tomoki10
0
460
成果を出しながら成長する、アウトプット駆動のキャッチアップ術 / Output-driven catch-up techniques to grow while producing results
aiandrox
0
310
Oracle Cloud Infrastructure:2024年12月度サービス・アップデート
oracle4engineer
PRO
0
180
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
2
170
The Invisible Side of Design
smashingmag
298
50k
Thoughts on Productivity
jonyablonski
67
4.4k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Agile that works and the tools we love
rasmusluckow
328
21k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
Speed Design
sergeychernyshev
25
670
A Philosophy of Restraint
colly
203
16k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Bash Introduction
62gerente
608
210k
How STYLIGHT went responsive
nonsquared
95
5.2k
The Language of Interfaces
destraynor
154
24k
Transcript
ChatGPT触ってみた ~質問からテストコードまで~ 株式会社インフィニットループ 西竜太郎
自己紹介 2
自己紹介 - 西 竜太郎 - エンジニア歴は10年ぐらい - インフィニットループ歴は7年目です - 会社ではソーシャルゲームのサーバサイドの開発をしてお
ります - ゼルダおもしろい 3
今日話す内容は個人の見解です ILではChatGPTの使用は禁止です 4
突然ですが、みなさん 開発って難しいですよね 5
開発って難しいですよね - コード書くの難しい - ググっても、情報が多すぎてよくわからない - テストコード書くの工数かかる 6
ChatGPT使おうぜ 7
今日は3つのことをお話します 1. ChatGPTってなに? 2. 質問について 3. テストコードの生成 8
ChatGPTってなに? 9
ChatGPTってなに? - AIの専門家ではないので、これからお話する内容が間違っ ていた場合はすいません - ChatGPTに関する論文は公表されていないので、技術的な 部分は推測に依存する部分があります 10
ChatGPTってなに? OpenAI社が開発した、質問に対して文章を作るAI Chat Generative Pre-trained Transformer 事前学習済みのチャット生成変換器 11
ChatGPTってなに? ~事前学習~ 12
ChatGPTってなに?~事前学習~ - 2021年までの大量のデータを事前に勉強させている - 2022/2023年のことは答えられない 13
ChatGPTってなに?~事前学習~ 事前学習方法は次単語予測というのを使っているらしいです 「吾輩」 -> 「は」 -> 「A」 -> 「B」
-> 「C」 14
ChatGPTってなに?~事前学習~ 「吾輩」 -> 「は」 -> 「A」 -> 「B」 -> 「C」
「吾輩」「は」のあとには「猫」が来る確率が一番高い! なのでAには「猫」を入れる それをB、Cと数珠つなぎに続けていく 15
ChatGPTってなに?~事前学習~ つまり、ChatGPTは手前の単語から、次に来る確率が一番高い 単語を生成している そのことを頭に入れておくと、自分の欲しい答えが生成されや すい 16
ChatGPTってなに? ~バージョン~ 17
ChatGPTってなに?~バージョン~ 有料版はバージョン4です(月額20ドル) 無料版はバージョン3.5です 今回資料作成にあたって使用したバージョンは3.5です 無料版でも問題なく利用できますので、ぜひみなさん触ってみ てください 18
ChatGPTってなに? ~Microsoft~ 19
ChatGPTってなに?~Microsoft~ - Microsoft社がOpenAI社に1兆3,000億円の投資 - ChatGPTはこれからどんどん進化していく - 乗るしかないこのビッグウェーブに 20
ChatGPTってなに? ~まとめ~ 21
ChatGPTってなに?~まとめ~ - OpenAI社が開発した文章生成AI - ChatGPTは手前の単語から次の単語を予測している - 無料バージョンは3.5、有料バージョンは4 - Microsoft社が大量のお金を投資しているので、将来的にも 期待できる
22
ChatGPTってなに? 以上です 23
質問について 24
今日は3つのことをお話します 1. ChatGPTってなに? 2. 質問について <- 今ここ 3. テストコードの生成 25
質問について ~入力のコツ~ 26
質問について~入力のコツ~ ガベージイン、ガベージアウト ゴミを入れたらゴミが出てくる 質問方法にもコツがある 27
質問について~入力のコツ~ 入力のコツは主に3つ 1. 制限を与える 2. 前提を与える 3. 役割を与える 28
質問について ~制限を与える~ 29
質問について~制限を与える~ 目的 - 非IT技術者/学生/お年寄りなどIT分野に興味がないけど、 スティーブ・ジョブズの人生を簡単に知りたい - wikipediaは情報が多すぎて読む気が起きない 30
31
質問について~制限を与える~ アンチパターン 32
33
質問について~制限を与える~ - 読むのに時間もかかる - 一回じゃ表示されずに「つづき」と入力する作業が発生 - wikipediaよりはまとまってるけど、それでも情報量が多い - 書いてあることが難しい 34
質問について~制限を与える~ 解決策 制限を与える - 100文字以内にまとめてください - 3回にわけて教えてください - 小学生にもわかるように 35
36
質問について~制限を与える~ 流石に簡単すぎた - 「社会人にわかるよう」に変更 - もう少し読めそうなので200文字に変更する 37
38
39
40
質問について~制限を与える~ 問題解決! - もっと深く内容を知りたいときは文字数を上げていくなど工 夫する 41
質問について ~前提を与える~ 42
質問について~入力のコツ~ 入力のコツは主に3つ 1. 制限を与える 2. 前提を与える <- 今ここ 3. 役割を与える
43
質問について~前提を与える~ 目的 - 花火に興味があり、将来花火師になりたいかもしれない - 花火の作り方を知りたい 44
質問について~前提を与える~ アンチパターン 45
46
質問について~前提を与える~ - ネットでググれば出てくる情報ですが、安全上の理由でたま に表示されないときがある 47
質問について~前提を与える~ 解決策 前提を与える - 「私は〇〇です」という前提を与える - 今回は「花火師を目指している高校生」という前提を与える 48
49
50
質問について~前提を与える~ 問題解決! - 前提を与えるとより欲しい文章が生成される 51
質問について ~役割を与える~ 52
質問について~入力のコツ~ 入力のコツは主に3つ 1. 制限を与える 2. 前提を与える 3. 役割を与える <- 今ここ 53
質問について~役割を与える~ 目的 - awsでインフラを構築することになったけど、注意することっ てなにがあるかな🤔 54
質問について~役割を与える~ アンチパターン 55
56
57
質問について~役割を与える~ - 一見良さそうに見えるが、あまり技術的な答えになっていな い 58
質問について~役割を与える~ 解決策 役割を与える - 「あなたは〇〇です」という役割を与える - 「あなたはプロのインフラエンジニアです」という役割を与え る 59
60
61
62
質問について~役割を与える~ 問題解決! - 役割を与えると、より質の高い回答が生成される 63
質問について ~注意点~ 64
質問について~注意点~ 注意点は主に3つ 1. 情報の正確性 2. 倫理観 3. セキュリティ 65
質問について ~情報の正確性~ 66
質問について~情報の正確性~ - 情報が本当に正しいか、再度ググる必要がある - 宮城県大崎市の観光名所を尋ねると実在しない地域や違う 地域が返ってくる 67
68
質問について~情報の正確性~ - 一つも大崎市にないです - Google Bardだとネット接続があるので、実在する地域を教 えてくれました 69
質問について ~倫理観~ 70
質問について~倫理観~ - 最適解を導くために、合理的な手段が返ってくる - 宗教的にNGだったり、人種差別、セクハラ、パワハラ、その 他人道に反することがある 71
72
73
質問について~倫理観~ - ちょっとセクハラっぽい 74
質問について ~セキュリティ~ 75
質問について~セキュリティ~ - もし業務で使用する場合は、社外秘の情報を入力すること は絶対にやめましょう - ChatGPTに入力する前に誰かにチェックしてもらうなど対策 が必要 76
質問について ~まとめ~ 77
質問について~まとめ~ - ガベージイン、ガベージアウト - ゴミを入れたらゴミが出てくる - 入力にもコツがある - 制限、前提、役割を与える -
注意点 - 情報の正確性、倫理観、セキュリティに気をつける 78
質問について 以上です 79
テストコードの生成 80
今日は3つのことをお話します 1. ChatGPTってなに? 2. 質問について 3. テストコードの生成 <- 今ここ、これで最後です 81
テストコードの生成 ~実装の作成~ 82
テストコードの作成~実装の作成~ - まずは実装側を作成します - 今回は3の倍数と5の倍数のfizzbuzzを作成します 83
84
85
テストコードの作成~実装の作成~ - 作成完了 86
テストコードの生成 ~テストの作成~ 87
テストコードの作成~テストの作成~ - 作成された実装コードを元に1パターン分のテストクラスを作 成していきます 88
テストコードの作成~テストの作成~ 下記の制限をChatGPTに追記します - PHPUnitの使用 - テストクラスは別クラス - テスト名は日本語 89
90
91
テストコードの作成~テストの作成~ - 簡単にテストコードが作れました 92
93
テストコードの作成~テストの作成~ - 「私は初心者です」という前提を与えたので、PHPUnitの実 行方法まで添えてくれました - テストに慣れている人は「私は上級者です」などを入れてお くと余計な解説などが省かれますのでいれてください 94
テストコードの作成~テストの作成~ - 実際にテストを流していきます 95
96
テストコードの作成~テストの作成~ - 成功しました! 97
テストコードの作成~テストの作成~ - 続いて、テストパターンを増やしていきます 98
99
テストコードの作成~テストの作成~ 簡単に追加パターンが作れました - 5の倍数のテストパターン - 3と5の共通の倍数のテストパターン 100
テストコードの作成~テストの作成~ テストを流します 101
102
テストコードの作成~テストの作成~ - 成功しました! 103
テストコードの作成~テストの作成~ - これでみなさんの開発スピードが上がりました - 更に加速させます!! 104
テストコードの作成 ~GitHub Copilot~ 105
テストコードの作成~GitHub Copilot~ ChatGPT + GitHub = GitHub Copilot 主操縦士ではなく副操縦士、サブです 106
テストコードの作成~GitHub Copilot~ - 時間の都合のため、GitHub Copilotのアカウント作成方法は 割愛します - PHPStormにGitHub Copilotプラグインをインストールしてく ださい
- 先ほど作成したfizzbuzzのテストコードをPHPStormで開きま す 107
108
テストコードの作成~GitHub Copilot~ - この状態から新たに4つ目のテストパターンを作成します - 最後のテストパターンのメソッドの末尾から「Enter」を2回押 して2秒ぐらい待ちます 109
110
テストコードの作成~GitHub Copilot~ - うっすら4つ目のテストパターンがCopilotに提案されました - 「3でも5の倍数でもないときは数値を返すこと」というテスト パターンが抜けていたようです - この状態で「TAB」を押します 111
112
テストコードの作成~GitHub Copilot~ - 新しいテストパターンが追加されました - 今まではChatGPTにコードを入力して、新しいテストパター ンをコピーしていたのですが、その手順が省略されるように なりました - こちらもテストを流します
113
114
テストコードの作成~GitHub Copilot~ - テストも無事成功しました - これでみなさんの開発スピードが爆速になりました 115
テストコードの作成~GitHub Copilot~ - 同じ作業を手作業でしてみたところ12分かかりました - 今回の作業を計測したところ4分で終わりましたので、作業 時間が3分の1に減りました - ぜひみなさんも使ってみてください 116
テストコードの作成 ~まとめ~ 117
テストコードの作成~まとめ~ - ChatGPTを使うと全体の作業時間が半分以下になる - 実装、テスト、テスト用コマンド、なんでもChatGPTがやってく れる - GitHub Copilotも併用すると、テストパターンの追加が簡単 になる
118
テストコードの作成 以上です 119
全体のまとめ 120
まとめ - ChatGPTは手前の単語から次の単語を予測している - ガベージイン、ガベージアウト - ゴミを入れたらゴミが出てくる - 制限、前提、役割を与える -
ChatGPTを使うとテストコードは簡単に作れる - GitHub Copilotは神 121
ご清聴ありがとうございました 122