Upgrade to Pro — share decks privately, control downloads, hide ads and more …

サーバーサイド開発にありがたい GitHub Copilot / ChatGPT

サーバーサイド開発にありがたい GitHub Copilot / ChatGPT

サーバーサイド開発にありがたいGitHub Copilot / ChatGPT
というタイトルで、2023/5/20にJavaDoでしょう#22札幌で話した際の資料です。

Masatoshi Itoh

May 20, 2023
Tweet

More Decks by Masatoshi Itoh

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  21. 動かし方も教えてくれる

    View Slide

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

    View Slide

  23. 最初の依頼

    View Slide

  24. 方向性の修正

    View Slide

  25. 分からないところを確認

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide