Slide 1

Slide 1 text

サーバーサイド開発にありがたい GitHub Copilot / ChatGPT 2023/5/20 JavaDoでしょう#22札幌 いとうまさとし Twitter:@masatoshiitoh

Slide 2

Slide 2 text

自己紹介 • いとうまさとし(Twitter: @masatoshiitoh) • 株式会社セガ札幌スタジオ • 今回の発表はセガサミーグループの技術スタックや開発・運営 中のタイトルとは全く関係ありません(為念 • 過去作品 • Speed.rbbtoday.com(IRI-CT、現イード在籍当時に開発) • 最近のGist • Camel から Camel Vert.x component 経由でVert.xクラスタのイベントバスを読み書きする • とにかくApache Camelを動かしてみるための最初の手順

Slide 3

Slide 3 text

今日の発表 • 自己紹介 • ChatGPTのプログラミングへの応用 • プログラマの体験が変わる点 • プログラマの体験が変わらない点 • まとめ

Slide 4

Slide 4 text

もちろん • この目次はChatGPTさんに考えてもらいました! → 今日の n番煎じ

Slide 5

Slide 5 text

もちろん • この目次はChatGPTさんに考えてもらいました! → 今日の n番煎じ さて、まじめにやりましょう

Slide 6

Slide 6 text

今日の発表 1. 発表の目的 2. LLM活用サービスのプログラミングへのインパクトについて 1. GitHub CoPilot 2. ChatGPT 3. まとめ ※プロンプトで遊んでないので、そちらの情報はありません

Slide 7

Slide 7 text

発表の目的 • 未体験の方への「驚き」の共有 • 期待していいポイントと、そうじゃないポイントのご紹介 ※期待しすぎると、反動も大きいので... サーバープログラマ視点です

Slide 8

Slide 8 text

1)GitHub CoPilot • コード作成を加速してくれる • 0 → 1 ではなく、 50 → 100、の道具という感じ • 「50→100」は、手慣れてる人を加速させる、というキモチ • 良くも悪くも「続きを提案してくれる」ツール

Slide 9

Slide 9 text

CoPilotは「定番の書き方知ってる」と有能 この例ではStarterプロジェクトを開いて、 1. 新しいファイルに"ProductListApiVerticle.java"という名前を付けた 2. クラス名の行を書いた ここで提案が来た。クラスの中身全部を提案してくれている!! ※クラス名がDatagramServerVerticleだとUDPサーバーを提案 賢い!

Slide 10

Slide 10 text

CoPilotはコメント駆動開発もできる! • 「HTTPサーバーを起動する」

Slide 11

Slide 11 text

CoPilotはコメント駆動開発もできる! • 「websocketサーバーを起動する」

Slide 12

Slide 12 text

CoPilotはコメント駆動開発もできる! • 「TCPサーバーを起動する」

Slide 13

Slide 13 text

知らないフレームワークだとCoPilot厳しい • この例では、Initializrのプロジェクトを開いたものの、どこをどう書 けば処理を書き始められるか分からず、書き換えを始められない状態 何もしないと提案もされない

Slide 14

Slide 14 text

エディタ内のCoPilot支援ツール • 「続きを書く」都合上、エディタとの連動が重要 • IntelliJ IDEA • JetBrains純正プラグインが提供されている • Visual Studio Code • GitHub純正プラグインが提供されている ※ 話題のサービス関連なだけに、ベンダー製プラグインがおすすめ

Slide 15

Slide 15 text

GitHub CoPilot の感想 • CoPilot=「副操縦士」 • 主導権はあくまで機長である「あなた」 • 「プログラムの続きを書いてくれる」というスタイル • 提案のための情報(最初の呼び水)が必要 • どんなものを作ろうとしているか、プログラムまたはコメントの形で書き始める必要がある • CoPilotは、各種定番コードを「いい感じに埋める」役割 • 戻り値処理の分岐やコメントも起こしてくれるのは超ありがたい • この点では、ChatGPTのほうが「ふわっと」依頼しやすい(後述) • CoPilotの提案を受け入れた箇所が次の呼び水になるので、書き始めたらどんどん進 む

Slide 16

Slide 16 text

2)ChatGPT • 0 → 1 ツールとして最強 • (対人と違って)ふわっと質問し始められる • 回答に対して修正依頼することもできる • 相談相手であり、アシスタントでもある

Slide 17

Slide 17 text

ChatGPTに「ふわっと依頼」とは? • 「〜〜するプログラムを書いて」と依頼すればOK • このとき、指示する粒度はある程度具体的に • 特に、HOWにあたる部分を明記するとよさそう

Slide 18

Slide 18 text

いきなり動くコードが出てくる衝撃 • 「vert.x で、 UDPパケットを受信してそのまま送り返すecho バーティ クルのサンプルを書いてください」 • Starterプロジェクト内に貼り付けてパッケージ名を追記したら動いた • 「gcc 用のUDPパケットを送るプログラムを書いてください」 • そのまま動いた • 「このプログラムを拡張して、送信後、UDPパケットを待ち受けて表示 する機能を追加してください。受信後はプログラムが終了するようにして ください。」 • そのまま動いた

Slide 19

Slide 19 text

ChatGPTにお願いしてみた(1) • 「springbootで HTTPでhello worldを返すサーバープログラ ムのサンプルを書いてください」

Slide 20

Slide 20 text

ChatGPTにお願いしてみた(2) • 「gcc用のUDPパケットを送るプログラムを書いてください」

Slide 21

Slide 21 text

動かし方も教えてくれる

Slide 22

Slide 22 text

自然言語でも対話可能 • 自然言語(日本語)で、相談や文書の作成依頼をすることも可能 • いとうの観測範囲では、どちらかというとTwitterとかで話題になりやす いのはこちらの印象

Slide 23

Slide 23 text

最初の依頼

Slide 24

Slide 24 text

方向性の修正

Slide 25

Slide 25 text

分からないところを確認

Slide 26

Slide 26 text

ChatGPT の感想 • 0 → 1 ツールとして最強 と書いたが... • まるっきりゼロでは無理だが、0.1とかぼんやり段階からOK • 出てくるものは1どころじゃなく10とか100なこともよくある • 質問や指示をすると、答えが得られる • 答えに対して、質問や修正依頼が可能 → 対話し続けることが大事 • 答えには「プログラムコード」も「自然言語の文章」もOK

Slide 27

Slide 27 text

まとめ:CopilotとChatGPTどっちがいい? • どっちもいい • 両方使えばいい • 最初の勉強のハードルを下げてくれるのはChatGPT • スターターとして使えるコードを解説付きで生成してくれるのすごい • 「それっぽいけど動かない」こともあるが、とっかかりには十分 • 公式ドキュメントを読むときも、ChatGPTが翻訳・要約してくれる • ある程度書けるようになってからの手伝いはGitHub CoPilot

Slide 28

Slide 28 text

ご清聴ありがとうございました • We are Hiring! • 「セガ札幌スタジオ 中途採用」で検索!