サーバーサイド開発にありがたいGitHub Copilot / ChatGPT というタイトルで、2023/5/20にJavaDoでしょう#22札幌で話した際の資料です。
サーバーサイド開発にありがたいGitHub Copilot / ChatGPT2023/5/20JavaDoでしょう#22札幌いとうまさとし Twitter:@masatoshiitoh
View Slide
自己紹介• いとうまさとし(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 CoPilot2. ChatGPT3. まとめ※プロンプトで遊んでないので、そちらの情報はありません
発表の目的• 未体験の方への「驚き」の共有• 期待していいポイントと、そうじゃないポイントのご紹介※期待しすぎると、反動も大きいので...サーバープログラマ視点です
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!• 「セガ札幌スタジオ中途採用」で検索!