はじめに:なぜ DevChat なのか?
GPT-4 をコード補助に使うとどんな感じか?DevChat なら毎日ちょっとチャットするだけで仕事が片付く。例えばこんな感じ:
- 朝はゆっくり起きて昼寝もする。
- 午後に DevChat と話しながら数百行のコードを書く。
- 定時前にコミットを投げて、上司に「よく頑張ったね」と言われる。
でも上司にこの「秘密兵器」を知られたら、3人分の仕事を振られるかも?
背景と動機
筆者は長年 JetBrains ユーザーで、VS Code には懐疑的だった。しかし、GPT-4 を気軽に使うために仮想電話番号や海外クレジットカードを試しても挫折。ところが DevChat は直接 GPT-4 に接続できて無料(当時)ということで、試しに VS Code を入れてみた。最初はバグを見つけて文句を言っていたが、実際に使ってみると問題解決に非常に役立ち、プログラミング効率が大幅に向上した。
実践:DevChat で Web サービスを作る
以下のシナリオでは、Go 言語で API サーバーを書き、Kubernetes にデプロイするまでの全工程を DevChat に手伝ってもらう。登場人物は「開発者」としよう。
1. プロジェクトの準備
mkdir go-webapp
cd go-webapp
git init
VS Code を開き、DevChat 拡張機能をインストール。https://www.devchat.ai でキーを取得して設定(Mac: ⌘+, / Windows: Win+,)。簡単な挨拶で動作確認完了。
2. Web フレームワークの選択
開発者: 「Go で API サーバーを書きたい。K8s で動かす。適切なフレームワークを教えて。」
DevChat は Gin、Echo、Fiber、Chi の4つを提示。今回は Gin を選択。
3. コードを書く
開発者: 「Gin で GET /ping を実装したサンプルコードを教えて。」
go mod init github.com/example/go-webapp
go get github.com/gin-gonic/gin
main.go を作成:
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{"message": "pong"})
})
r.Run(":8080")
}
実行して動作確認:
go run main.go
curl http://localhost:8080/ping
# {"message":"pong"}
4. Dockerfile の作成
開発者: 「このアプリをコンテナ化する Dockerfile を書いて。」(main.go をコンテキストに追加)
FROM golang:1.20-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o app
FROM alpine:3.18
WORKDIR /app
COPY --from=builder /app/app .
EXPOSE 8080
CMD ["./app"]
docker build -t go-webapp:latest .
docker run -p 8080:8080 go-webapp:latest
5. Helm Chart の作成
開発者: 「Helm でパッケージングしたい。手順を教えて。」
helm create mychart
values.yaml を編集:
image:
repository: go-webapp
tag: latest
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 8080
templates/deployment.yaml の livenessProbe と readinessProbe のパスを /ping に変更。
helm package mychart
# 成功: mychart-0.1.0.tgz が生成
6. ローカル K8s クラスタでテスト
開発者: 「minikube でクラスタを作り、Chart をデプロイしてテストしたい。Mac M1、Docker Desktop あり。」
brew install minikube
minikube start --driver=docker
minikube image load go-webapp:latest
helm install myapp ./mychart-0.1.0.tgz
kubectl get pods
# 正常に起動していることを確認
ポートフォワードでアクセス:
kubectl port-forward deployment/myapp 8080:8080
curl http://localhost:8080/ping
7. コミットメッセージの作成
複数のコミットに分割:
- Go コードと依存関係
- Dockerfile
- Helm Chart
git add 後に DevChat に「commit_message」コマンドを実行すると、GPT-4 が適切なメッセージを提案。例:
- Add project dependencies and basic server setup
- Add Dockerfile for Go application
- Add Helm chart for Golang web application
まとめ
DevChat は単なる ChatGPT を VS Code に移植したものではない。ソフトウェア開発の様々なシナリオ(フレームワーク選定、コード生成、Dockerfile/Helm/commit メッセージ作成)に最適化され、GPT-4 とエディタの隙間を埋める。まだ試していないなら、今すぐ https://www.devchat.ai でキーを取得しよう。