GitHub Copilotでラピッド開発

GitHub CopilotがGPT4oベースになって高速化&賢くなったというのでお試ししてみた。

PythonでFlaskアプリの基本形を開発してみる。

Visual Studio Codeだとプラグインを入れてコード補完やインライン・チャットベースでの支援が受けられて、シームレスに開発プロセスにAIを導入出来る。
今回はインラインのチャットで雛形を作ってみる(適当なpyファイル作って、エディタでCtrl+iするとコパイと簡単に話してすぐにコード反映出来る)

プロンプト

sqlalchemyのAccountモデルを作って、モデルは主キーid、文字列型usernameとpassword、日時型のcreatedとupdatedを持つ

createdはレコードが作成された時間を設定するようにして

すべてのカラムはnotnullにして

こうなった

お願いするたびimportが湧いたけど少し修正で行ける感じ

次はコントローラ側

プロンプト

Flaskでログイン画面を作って
sqlalchemyでmysqlに接続して、Accountモデルのusernameが変数usernameに、passwordが変数passwordに一致するか確認する処理を追加
AccountのpasswordはMD5処理されている

やっぱり多少修正すれば使えるね

プロンプト一行で10行以上のコードが出来上がって、直して欲しいところを追加で入れていけば基本形完成。 素人だと生成されたコードの意味がわからずエラー起こしたりするし、エラー処理とかは無いから程よくCopilotにお願いするか、手書きで追加するかは必要だけど、定型処理を毎度書くかどっかからコピペするとかよりは効率良い。

リファクタ機能があるから、そっちでお願いすると多少きれいにしてくれる。

モデルのコードをリファクタしてもらうと

重複importを綺麗にしてくれた

コントローラ側も綺麗にしてもらおう

結構になったね。
 DB接続を使うところでベタ書きだったDB接続情報がグローバルに持っていかれて全体で使い回せる構成、更に環境変数から取ろうとして、それでも無ければベタ値になってる、サーバレスとかで使いやすい形。 ベタ値は開発環境用とかで使ったり。 初心者コードがべスプラに近づいてる。
 更にMD5弱いからbcrypt使うようにしてくれて、セッションもクローズしてくれてる。
 けど、try中にreturnがあるからこのときはクローズしない? と思ったら、中でreturnしてもfinallyは実行されるっていう、今更の気付き、Copilot恐ろしい子! 今まで、DB処理部分だけtryでくくってDBに関する処理だけキャッチして、残りは次って書いてたよ・・・

ちなみに、テストコード作ってとかもしてくれる。
逆に既存コードを説明してってのもしてくれるので、引き継ぎとかされてない謎コードメンテのときとかに結構お役立ち。

対象にもよるけど最低でも2~3割早くなる、簡易ツールとかなら倍単位で早くなる感じ。 テストコードでパターンを書くとかいう手間が省けるので、テストするまでもないかなぁみたいなところも数秒でテストコード出来てクオリティアップできそう。

(13)


カテゴリー: LAMP[Linux, Apache, MySQL, PHP]   パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です