GitHub Copilot と一緒に PHP でガチャAPIを作ってみた!
目次
初めまして
記事を開いていただきありがとうございます。
システム開発部のしんたです。
ここしばらく ChatGPT などのAI技術の発展がすさまじく面白い時代になってきましたね。
そんな大AI時代に取り残されないために、今回は GitHub Copilot を使ってコーディングを行ってみました!
導入方法
GitHub Copilot は、Visual Studio Code や JetBrains IDE などのエディタに、プラグインをインストールすることで利用できます。
各エディタのプラグインの導入方法は、こちらのリンクから確認できます。
サブスクリプションでの購入が必要なのでプラグインを入れる前にこちらのリンクから登録を行う必要があります。
注意!!!
個人用プランはデフォルト設定のままだと、自分のソースコードが Copilot の学習に利用されてしまいます。
学習されないように変更できるので、必ず変更しておきましょう。Businessプランを利用している場合はデフォルトで学習されないようになっているかと思います。
使い方
GitHub Copilot は、コード補完の候補を表示することで利用できます。
入力している途中にグレーの文字でコード補完の候補が表示されるので、それを選択することでコードを補完することができます。
コード補完の候補は、通常のコード補完と同様に、Ctrl+Space
などのショートカットキーで表示することができます。
使用例
PHP8.2 で laravel を使用します。
IDE は IntelliJ IDEA Ultimate を今回は利用しました。
ガチャを実行するAPIを極力コメントだけで作ってみる
ほぼコメント部分だけ入力、たまに変数名が間違っていたりするので、そこだけ修正を行いました。
コメントを書くと赤枠で囲った部分のように候補が出てくるので、問題無ければ Enter を押すと補完されます。
lotteryItem関数はこの時点では存在していないので作成する必要があります。
抽選処理lotteryItemを作成する
関数名lotteryItemを入力した時点でパッと見完璧なソースが候補で出てきました。
よく見てみると実際に作りたい処理と違う
rand(0,$sumWeight)
だと$sumWeight
が10000の時に0~10000の間で0も抽選されてしまうrand
ではなくmt_rand
を使いたい- 減算より加算処理の方が個人的に見やすいので変えたい
- 引数が Collection になっていない
- コメントがちょっと変
修正してみる
動作確認結果
多分問題無いと思うヨシ!
使ってみた感想
序盤はあまり補完が効かない
lottery関数を作ってる間は数行程度しか補完してくれなかった。恐らく既存コードが少ないと何が作りたいのかを理解できてないのだと思う。
あるタイミングからいきなり強烈に補完してくる
lotteryItem関数を作成した時点でパッと見完璧なソースが出てきた。多少間違ってはいたが全然修正可能な範囲内だった。
やはり記述量が多ければ多いほど補完の精度が上がるのだと思う。
補完の候補が自分の意図と違うときは何個も候補を出せる
何通りか候補を出してくれるので、自分の意図にあったものを選ぶことができる。
作りたい処理が明確になってくるとコメントも勝手に書いてくれる
例えばガチャマスタというモデルからデータを取得する処理を書くと次の行に// ガチャマスタのデータが存在しない場合はエラー
というコメントを補完で出力してくれる。
単純にタイプ数を減らせるのでかなり嬉しい。
今後の課題
Copilotにちゃんと伝わるようなコメントの書き方を覚える
あまりにもザックリしたコメントだと、補完の候補が意図したものと違うものになってしまうことがある。
この辺は実際に触ってみないと分からないので、実際に触ってみて適宜修正していくのが良いと思う。
処理によっては間違ったコードを補完してくることがある
例えばサンプルが多そうなログイン処理を作るときはかなり精度が高い補完が出てくるが、今回のガチャのような処理はちょっと精度が低い。(気がする)
それっぽいソースコードが返ってくるので、そのまま使ってしまうとバグの原因になる可能性があるので注意が必要。
自力で書ける処理以外では使わないほうが良い
結構な確率で適切でないコードが長々と返ってくることがある。それをパッと見て気づけずヨシ!としてしまうと後々大惨事になる。
特にプログラム経験が浅い人は、どこまでを信用していいのか判断が付きにくいため、その処理が本当にあっているかは必ずチェックをしましょう!
まとめ
GitHub Copilot はかなり便利、何を作りたいのか明確であればコメントを残しつつ、ソースは Copilot に書いてもらえるので作業効率がかなり上がる。
ただし、提案に頼りすぎるとバグに気が付かなかったり、従いすぎて自分で考えて実装する力が身につかない可能性もあります。
あくまでも Copilot は名前の通り、補佐をする副操縦士なので、自分が主操縦士としてコードを書くことが大事。
それでは良いフライトを!