【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【200ヶ国以上 グローバル対応】eSIM Marketplace「beSIM(ビーシム)」

【200ヶ国以上 グローバル対応】eSIM Marketplace「beSIM(ビーシム)」

【中国現地企業に対応】中国クラウド / サーバー構築・運用保守

【中国現地企業に対応】中国クラウド / サーバー構築・運用保守

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

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 は名前の通り、補佐をする副操縦士なので、自分が主操縦士としてコードを書くことが大事。

それでは良いフライトを!

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
11
読み込み中...
11 票, 平均: 1.00 / 111
1,190
X facebook はてなブックマーク pocket
【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

この記事をかいた人

About the author

しんた

横浜生まれのゲームエンジニア出身の根性系エンジニアです!