Slide 1

Slide 1 text

ChatGPTとGitHub Copilotの使い分け めぐろLT #10 -LT忘年会2023- ラクスル株式会社 杉山 将利

Slide 2

Slide 2 text

自己紹介 ● 杉山 将利 / Masato Sugiyama ● X : @_smasato_ ● Software Engineer at RAKSUL INC. ● 2021年 サマーインターン参加 ● 2022年7月 内定者インターン開始 ● 2023年4月 新卒入社 2

Slide 3

Slide 3 text

本日のテーマ「ChatGPTとGitHub Copilotの使い分け」 実例ベースでどのようにChatGPTとGitHub Copilotを使い分け ているのか紹介します。 ● ChatGPT ○ ゼロからのコード生成 ○ どう実装するのがいいのかわからないコード生成 ● GitHub Copilot ○ コードの微修正 ○ 方向性が明確なコード生成 というような使い分けをしています。 3

Slide 4

Slide 4 text

やったこと「bundle update --conservativeの自動化」 bundle update --conservativeとは Ruby on Railsのアプリケーションで一部のgemを控えめにアップデートする。 モチベーション これまでは手動で、 ● Gemfileからgem名をコピペ→実行 ● (アップデートできたら)ブランチ作成→Gemfile.lockをコミット としていたがいい加減自動化したくなってきた。 4

Slide 5

Slide 5 text

いちおう前提 自分の関わっているアプリケーションでは、 bundle outdated は完了しません😢 5

Slide 6

Slide 6 text

コード生成 まずはChatGPTにやりたいことを伝えてコードを書いてもらう。 今回は方法を聞いてみたらコードを書いてくれた。 6

Slide 7

Slide 7 text

コード生成 書いてくれたコード。 7

Slide 8

Slide 8 text

コード生成 どんどん要望を伝える。 8

Slide 9

Slide 9 text

コード微修正 生成されたコードをGitHub Copilotで微修正し、ChatGPTに戻す。 9

Slide 10

Slide 10 text

GitHub Copilotでやったこと 1行コメントで説明できることはGitHub Copilotにやってもらう。コード を書き始めて、補完してもらう。 ● コマンドを実行時の標準出力を/dev/nullに捨てる ● termcolorで進捗状況の出力を装飾 ローカルで行った編集をChatGPTに把握してもらうために、編集後のコー ドを教えてあげる。 10

Slide 11

Slide 11 text

さらに改善してもらう ここまでの繰り返しでそれなりに使えるものができた。 やってくれるかわからないけどダメもとで聞いてみた。 11

Slide 12

Slide 12 text

さらに改善してもらう やってくれた🎉 12

Slide 13

Slide 13 text

さらに改善してもらう 生成されたコード(一部) それっぽい。 13

Slide 14

Slide 14 text

さらに改善してもらう このままでは使えないのでさらに要望する。 チャットを続けているとコードを省略してくるのでマージしてもらう。 14

Slide 15

Slide 15 text

チャットを続けているとコードを省略してくる ChatGPTでチャットをしながらコードを編集していると、話題にしていな い部分のコードを省略されることがある。 git関係の処理が省略されている。 15

Slide 16

Slide 16 text

チャットを続けているとコードを省略してくる その場合は、コードを提示して「マージして」とお願いすると全体を出 力してくれる。 16

Slide 17

Slide 17 text

エラーを解決してもらう よくわからないエラーはスクリプトとエラーメッセージから解決しても らう。→解決した 17

Slide 18

Slide 18 text

できたもの ● Gemfileにあるgemに対して bundle update --conservative を並列に実行 ● アップデートがあればbranchとcommitを作成 ● 実行時間は約5分(140gem,8スレッド) 18

Slide 19

Slide 19 text

まとめ ● ChatGPTとGitHub Copilotの特徴を理解して使うと便利です。 ChatGPT ● ゼロから指示してコード生成 ● 複数の情報の統合(ソースコード・エラーメッセージ) ● チャットが長くなると省略しちゃう・忘れちゃう GitHub Copilot ● 自分でも書けるコードの補完 ● 1行コメントで指示できる程度の修正 19