[Osaka/Yokohama] Looking for infrastructure/server side engineers!

[Osaka/Yokohama] Looking for infrastructure/server side engineers!

[Deployed by over 500 companies] AWS construction, operation, maintenance, and monitoring services

[Deployed by over 500 companies] AWS construction, operation, maintenance, and monitoring services

[Successor to CentOS] AlmaLinux OS server construction/migration service

[Successor to CentOS] AlmaLinux OS server construction/migration service

[For WordPress only] Cloud server “Web Speed”

[For WordPress only] Cloud server “Web Speed”

[Cheap] Website security automatic diagnosis “Quick Scanner”

[Cheap] Website security automatic diagnosis “Quick Scanner”

[Low cost] Wasabi object storage construction and operation service

[Low cost] Wasabi object storage construction and operation service

[Reservation system development] EDISONE customization development service

[Reservation system development] EDISONE customization development service

[Registration of 100 URLs is 0 yen] Website monitoring service “Appmill”

[Registration of 100 URLs is 0 yen] Website monitoring service “Appmill”

[Compatible with over 200 countries] Global eSIM “beSIM”

[Compatible with over 200 countries] Global eSIM “beSIM”

[Compatible with Chinese corporations] Chinese cloud / server construction, operation and maintenance

[Compatible with Chinese corporations] Chinese cloud / server construction, operation and maintenance

[YouTube] Beyond official channel “Biyomaru Channel”

[YouTube] Beyond official channel “Biyomaru Channel”

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,270
X facebook はてなブックマーク pocket
[2024.6.30 CentOS support ended] CentOS server migration solution

[2024.6.30 CentOS support ended] CentOS server migration solution

[2025.6.30 Amazon Linux 2 support ended] Amazon Linux server migration solution

[2025.6.30 Amazon Linux 2 support ended] Amazon Linux server migration solution

[Osaka/Yokohama] Actively recruiting infrastructure engineers and server side engineers!

[Osaka/Yokohama] Actively recruiting infrastructure engineers and server side engineers!

The person who wrote this article

About the author

Shinta

I'm a game engineer born in Yokohama, and I'm a gutsy engineer!