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 / ChatGPT
Search
Masatoshi Itoh
May 20, 2023
Programming
1
920
サーバーサイド開発にありがたい GitHub Copilot / ChatGPT
サーバーサイド開発にありがたいGitHub Copilot / ChatGPT
というタイトルで、2023/5/20にJavaDoでしょう#22札幌で話した際の資料です。
Masatoshi Itoh
May 20, 2023
Tweet
Share
More Decks by Masatoshi Itoh
See All by Masatoshi Itoh
Hello - 本を書く- World !!
masatoshiitoh
0
65
TPI NEXTを読みました
masatoshiitoh
0
110
非同期ツールキット「Vert.x」のご紹介
masatoshiitoh
0
260
コードを書いたら負けなのか?
masatoshiitoh
0
410
1999年 最新バックアップ事情
masatoshiitoh
0
200
Google I/O 報告 (Google Assistant)
masatoshiitoh
0
470
GDC報告会資料 海外に見る「生産性改善」動向
masatoshiitoh
0
1.3k
イケメンシリーズでのORMとスロークエリ対策について
masatoshiitoh
0
2.7k
Erlangご紹介 websocket編
masatoshiitoh
0
2.8k
Other Decks in Programming
See All in Programming
Contemporary Test Cases
maaretp
0
140
2024/11/8 関西Kaggler会 2024 #3 / Kaggle Kernel で Gemma 2 × vLLM を動かす。
kohecchi
5
960
OnlineTestConf: Test Automation Friend or Foe
maaretp
0
120
Make Impossible States Impossibleを 意識してReactのPropsを設計しよう
ikumatadokoro
0
280
Compose 1.7のTextFieldはPOBox Plusで日本語変換できない
tomoya0x00
0
200
CSC509 Lecture 12
javiergs
PRO
0
160
みんなでプロポーザルを書いてみた
yuriko1211
0
280
ActiveSupport::Notifications supporting instrumentation of Rails apps with OpenTelemetry
ymtdzzz
1
250
レガシーシステムにどう立ち向かうか 複雑さと理想と現実/vs-legacy
suzukihoge
14
2.3k
subpath importsで始めるモック生活
10tera
0
320
WebフロントエンドにおけるGraphQL(あるいはバックエンドのAPI)との向き合い方 / #241106_plk_frontend
izumin5210
4
1.4k
Hotwire or React? ~アフタートーク・本編に含めなかった話~ / Hotwire or React? after talk
harunatsujita
1
120
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
180
21k
How STYLIGHT went responsive
nonsquared
95
5.2k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
Designing for Performance
lara
604
68k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
KATA
mclloyd
29
14k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
720
Become a Pro
speakerdeck
PRO
25
5k
Transcript
サーバーサイド開発にありがたい GitHub Copilot / ChatGPT 2023/5/20 JavaDoでしょう#22札幌 いとうまさとし Twitter:@masatoshiitoh
自己紹介 • いとうまさとし(Twitter: @masatoshiitoh) • 株式会社セガ札幌スタジオ • 今回の発表はセガサミーグループの技術スタックや開発・運営 中のタイトルとは全く関係ありません(為念 •
過去作品 • Speed.rbbtoday.com(IRI-CT、現イード在籍当時に開発) • 最近のGist • Camel から Camel Vert.x component 経由でVert.xクラスタのイベントバスを読み書きする • とにかくApache Camelを動かしてみるための最初の手順
今日の発表 • 自己紹介 • ChatGPTのプログラミングへの応用 • プログラマの体験が変わる点 • プログラマの体験が変わらない点 •
まとめ
もちろん • この目次はChatGPTさんに考えてもらいました! → 今日の n番煎じ
もちろん • この目次はChatGPTさんに考えてもらいました! → 今日の n番煎じ さて、まじめにやりましょう
今日の発表 1. 発表の目的 2. LLM活用サービスのプログラミングへのインパクトについて 1. GitHub CoPilot 2. ChatGPT
3. まとめ ※プロンプトで遊んでないので、そちらの情報はありません
発表の目的 • 未体験の方への「驚き」の共有 • 期待していいポイントと、そうじゃないポイントのご紹介 ※期待しすぎると、反動も大きいので... サーバープログラマ視点です
1)GitHub CoPilot • コード作成を加速してくれる • 0 → 1 ではなく、 50
→ 100、の道具という感じ • 「50→100」は、手慣れてる人を加速させる、というキモチ • 良くも悪くも「続きを提案してくれる」ツール
CoPilotは「定番の書き方知ってる」と有能 この例ではStarterプロジェクトを開いて、 1. 新しいファイルに"ProductListApiVerticle.java"という名前を付けた 2. クラス名の行を書いた ここで提案が来た。クラスの中身全部を提案してくれている!! ※クラス名がDatagramServerVerticleだとUDPサーバーを提案 賢い!
CoPilotはコメント駆動開発もできる! • 「HTTPサーバーを起動する」
CoPilotはコメント駆動開発もできる! • 「websocketサーバーを起動する」
CoPilotはコメント駆動開発もできる! • 「TCPサーバーを起動する」
知らないフレームワークだとCoPilot厳しい • この例では、Initializrのプロジェクトを開いたものの、どこをどう書 けば処理を書き始められるか分からず、書き換えを始められない状態 何もしないと提案もされない
エディタ内のCoPilot支援ツール • 「続きを書く」都合上、エディタとの連動が重要 • IntelliJ IDEA • JetBrains純正プラグインが提供されている • Visual
Studio Code • GitHub純正プラグインが提供されている ※ 話題のサービス関連なだけに、ベンダー製プラグインがおすすめ
GitHub CoPilot の感想 • CoPilot=「副操縦士」 • 主導権はあくまで機長である「あなた」 • 「プログラムの続きを書いてくれる」というスタイル •
提案のための情報(最初の呼び水)が必要 • どんなものを作ろうとしているか、プログラムまたはコメントの形で書き始める必要がある • CoPilotは、各種定番コードを「いい感じに埋める」役割 • 戻り値処理の分岐やコメントも起こしてくれるのは超ありがたい • この点では、ChatGPTのほうが「ふわっと」依頼しやすい(後述) • CoPilotの提案を受け入れた箇所が次の呼び水になるので、書き始めたらどんどん進 む
2)ChatGPT • 0 → 1 ツールとして最強 • (対人と違って)ふわっと質問し始められる • 回答に対して修正依頼することもできる
• 相談相手であり、アシスタントでもある
ChatGPTに「ふわっと依頼」とは? • 「〜〜するプログラムを書いて」と依頼すればOK • このとき、指示する粒度はある程度具体的に • 特に、HOWにあたる部分を明記するとよさそう
いきなり動くコードが出てくる衝撃 • 「vert.x で、 UDPパケットを受信してそのまま送り返すecho バーティ クルのサンプルを書いてください」 • Starterプロジェクト内に貼り付けてパッケージ名を追記したら動いた •
「gcc 用のUDPパケットを送るプログラムを書いてください」 • そのまま動いた • 「このプログラムを拡張して、送信後、UDPパケットを待ち受けて表示 する機能を追加してください。受信後はプログラムが終了するようにして ください。」 • そのまま動いた
ChatGPTにお願いしてみた(1) • 「springbootで HTTPでhello worldを返すサーバープログラ ムのサンプルを書いてください」
ChatGPTにお願いしてみた(2) • 「gcc用のUDPパケットを送るプログラムを書いてください」
動かし方も教えてくれる
自然言語でも対話可能 • 自然言語(日本語)で、相談や文書の作成依頼をすることも可能 • いとうの観測範囲では、どちらかというとTwitterとかで話題になりやす いのはこちらの印象
最初の依頼
方向性の修正
分からないところを確認
ChatGPT の感想 • 0 → 1 ツールとして最強 と書いたが... • まるっきりゼロでは無理だが、0.1とかぼんやり段階からOK
• 出てくるものは1どころじゃなく10とか100なこともよくある • 質問や指示をすると、答えが得られる • 答えに対して、質問や修正依頼が可能 → 対話し続けることが大事 • 答えには「プログラムコード」も「自然言語の文章」もOK
まとめ:CopilotとChatGPTどっちがいい? • どっちもいい • 両方使えばいい • 最初の勉強のハードルを下げてくれるのはChatGPT • スターターとして使えるコードを解説付きで生成してくれるのすごい •
「それっぽいけど動かない」こともあるが、とっかかりには十分 • 公式ドキュメントを読むときも、ChatGPTが翻訳・要約してくれる • ある程度書けるようになってからの手伝いはGitHub CoPilot
ご清聴ありがとうございました • We are Hiring! • 「セガ札幌スタジオ 中途採用」で検索!