Slide 1

Slide 1 text

面倒なことはGitHubCopilotにやらせたい… Atsushi Morimoto (@74th) VS Code Meetup Organizer VS Code Meetup #28 2024-03-25

Slide 2

Slide 2 text

Atsushi Morimoto @74th ● 本職 データエンジニア・アーキテクト ● 『改訂新版 Visual Studio Code実践ガイド』 (技術評論社) ○ 改訂新版 2024年1月より発売中!! ● M5Dialを使ったトラックパッド搭載 自作キーボードキット ※自作キーボード即売会『キーケット』に出展

Slide 3

Slide 3 text

『面倒なことはChatGPTにやらせよう』カレーちゃん/からあげ・著 ChatGPTを便利に使う実例が書かれた本 非常に興味深く、ヒントになったところ ● Chatで指示して、データ加工をしてもらう ● Chatで指示して、Pythonのコードを作らせて、 データ加工をしてもらう ○ Pythonの実行エンジンが付いているので、コード を作って演算させることができる (※GitHub Copilotは不明) この本でChatGPTに対するセンスが得られた気がする

Slide 4

Slide 4 text

GitHub Copilot Chatとは ● 有償のAIペアプログラマーサービス ● バックエンドはGPT4らしい ● 機能 ○ 付近のコードを読んで、次のコードを推薦する ○ Chatで、コードやエラーメッセージを読んで、質問できる ○ コードに対して、言語で指示できて、コードを改変してもらえる →この要素が『面倒なことをやらせよう』にマッチすることに気づく

Slide 5

Slide 5 text

Python: JSONデータからTypedDictのクラスを生成する Before Chat After

Slide 6

Slide 6 text

Python: ProtobufのEnumからPythonのEnumを生成する Before Chat After

Slide 7

Slide 7 text

Go: PythonのクラスをGoの構造体に書き換えさせる Before Chat After

Slide 8

Slide 8 text

Python: datetimeに対してオペレーションをしてもらう Before Chat & After

Slide 9

Slide 9 text

うまくいかないケース ● もう一声加工が欲しい場合 ○ Goの構造体に変換して ↓やり直し ○ Goの構造体に変換して、Snake Caseのフィールド名をPascal Case に直して ■ どちらかの指示が受け取れないことが多い ○ 2回に分けて指示する ■ Chat1: Goの構造体に変換して ■ Chat2: フィールド名をPascalCaseに直して ○ 3回やってダメならもう諦めている。

Slide 10

Slide 10 text

うまくいかないケース ● プロンプトの縮小化 ○ 「構造体化」「Enum化」「PascalCase」等の 単語だけの指示ではうまくいかないことが多い。 ○ 「PythonのコードをGoの構造体に書き換えて」くらいまで言った方が、 失敗率が下がる。 ○ かといって、たくさん文字を並べたら、 くみ取って処理してくれるかというと、そうでもないので、 複数回に分けて指示する。

Slide 11

Slide 11 text

GitHub Copilotに期待できるところできないところ 期待できると74thが思っているところ ● 広い知識と常識: 検索すればわかることや、ボイラーテンプレート ● 作業 期待できないと74thが思っているところ ● センス: コメントを作ってもらう、メソッド名を決めてもうらうなどの、 設計の意図を反映する命名センス ※注意: 74th個人の感想です

Slide 12

Slide 12 text

まとめ ● コードに対して加工する指示が出せるGitHub Copilotで 面倒なコーディング作業はやらせよう! ● ボイラーテンプレートやググればわかるレベルのことは GitHub Copilotにやらせよう! ● 小さい指示を複数回出そう。