CrescPia

Github Copilot

少し前になりますが Github が Github Copilot を無償で利用できるようにしてくれました。
そろそろ AI アシスタント的なものを使ってみたいと思っていたところだったので、使ってみました。

Go 言語はじめました

初めての Go 言語

少し前のことですが、Go の初心者になったので、初心者ついでにいろいろと考え始めました・・・。
AI があるのに勉強する必要があるのか?
折しも GitHub が 「GitHub Copilot 」 を無償で利用できるようにしてくれたところでした。
初心者にとって何か便利に利用できるかもしれない!

写経

写経に Copilot は必要ありませんでした・・・。
想像以上に補完候補を表示してくれました。
参考にしている本ではユーザー名に戦国武将の名前を使っていましたが、それを踏まえているのが憎らしい。
写経画面 写経中にかなり心が乱されました・・・。

「Go 言語で WEB API を作りたいです」

「Go 言語で WEB API を作りたいです。ひな形を作ってください」
勉強中の身でありながら、禁断のお願いをしてみました。
すぐに、数ファイルを作成してくれました。

package routes

import (
    "github.com/gin-gonic/gin"
    "my-go-web-api/internal/handlers"
)

func SetupRoutes(router *gin.Engine, handler *handlers.Handler) {
    router.GET("/items", handler.GetItems)
    router.POST("/items", handler.CreateItem)
}

ただ、ちょっと考えていたものと違っていました。
勉強中なので標準ライブラリだけで作成したものを見たいと思っていたのですが、Go 言語の WEB フレームワークである Gin を利用したコードになっていました。
ですが、追加でフレームワークは使わずに標準ライブラリだけで作成してくれるようお願いすると、さっと作成してくれました。


最初から詳細に指示できればいいのですが、もれることや誤解されることもあります。
成果物が望んだものかどうかは見る必要がありますね。
んっ、人間の場合と一緒か・・・。


その後、Web サービスを2つほど作ってみました。
Go はもとより Gin は全く何もわかりません。
Gin で作ってみました。

雑感ですが、サーバー側は何度かやり取りするとほぼ 100 点の仕上がりになります。
フロント側はなかなか収束できません・・・。
指示が悪いんですが・・・指示がむずかしいですね・・・。
多分、最初はある程度自分で作ってベースがある状態から始めるとうまく進められるのではないかと思いました。
でも、本当にやってほしいのは最初のベースを作ってくれるところなんですが・・・。
フロント側はエディタではなくて別のツールの方がいいのかな?


VS Code キーバインド

VS Code では行のどこにカーソルがあっても ctrl + enter で改行できます。
このキーバインドを多用しているのですが、Copilot の起動に割り当たってしまっています。
ctrl + alt + i でチャットが開くのでこれだけでいいです。
ctrl + enter は元の機能に戻したいと思います。
キーバインドの変更は、
File > Prefarences > Keyboard Shortcuts で設定画面を開く。
ctrl + enter の Github Copilot の設定を見つけて右クリック Change When Expression で条件を - に書き換える。
(変更した後に戻したいときは、右クリックで Reset Keybinding とすれば元に戻る。)

vscode keybinding
・・・もしかしてこのキーバインドは今後の開発の進め方を試されているのか?
自分で Enter を押しながらコードを書くのか?それとも、AI に全部書いてもらうのか?

まとめ

写経する場合には Copilot は必要ありません。
サーバー側のようなロジックメインの処理については、指示が出しやすく望み通りのものが作りやすいと思います。
フロント側のようなデザインメインの処理は指示の与え方にまだまだ工夫が必要でした。


AI があるのに勉強する必要があるのか?
必要あると思います。
提案されたコードでは、そんなところにまで注意しているのかといういいコードがありました。
Pilot としてはそんなことは全部わかっているうえで、Copilot に任せたい。