☠️

【息抜き記事】ちょっと面白いGitHub Copilot×ワンピース

2023/09/26に公開

初めに

この記事はGitHub Copilotの便利さやその使い方を伝えることにフォーカスした記事ではありません。GitHub Copilotを無料期間の1ヶ月で使用している際に、驚いたり、面白いなぁと思ったことがあったので、それを共有するための記事です。勉強に疲れた方の息抜きになれば幸いです。

今回実施したことの背景

JavaでEnumの使い方についてまとめよう!と思って、ワンピースの麦わらの一味の情報を格納したOnePeaceEnumを作成しようと思いました。Enumは複数の定数をまとめて管理できるようなものなのですが、今回Enumの特徴や機能は特に気にする必要がないので、雰囲気でいきましょう。

超簡単なGitHub Copilotの説明

AIで次どんなことを書きたいかを予測して候補を表示してくれます。

早速OnePeaceEnumを作っていきましょう!

自分がOnePeaceEnumを作るために以下のコードを書きました。

public enum OnePeaceEnum {
}

すると、、以下のように麦わらの一味の情報をCopilotが勝手に書いてくれました!

public enum OnePeaceEnum {
    LUFFY,
    ZORO,
    NAMI,
    USOPP,
    SANJI,
    CHOPPER,
    ROBIN,
    FRANKY,
    BROOK,
    JINBEI;
}

この情報は自分がネットで英語の綴り等調べて書いていこうと思っていた内容だったので、それをCopilotが表示してくれたことに驚きました!
何より私が与えた情報ってpublic enum OnePeaceEnum {くらいなんですよね。それで自分の思っていた情報を書いてくれるとは!と驚きました。麦わらの一味という情報も、船員の情報ということも伝えていないんですよね。そもそも麦わらの一味の情報知っとったんかい!とも思いました笑。

LUFFYの右に括弧をつけると以下のようにルフィという文字列をCopilotが紐づけてくれました。

public enum OnePeaceEnum {
    LUFFY("ルフィ"),

さらに情報を追加してみる

コメントでどのようなEnumを作りたいかを書けば、よりCopilotも詳しい予測を書いてくれるだろうと思い、以下のようなコメントを役割についての途中まで記載しました。

// 麦わらの一味の列挙子を作成し、列挙子には船員名・船員番号・役割・得意技を設定する
// 船員番号は船員を識別する番号を1から順番につける
// 役割は船長・剣士
public enum OnePeaceEnum {

役割ってあと何があったっけ?ネットで調べるか〜と思っているとまたもCopilotが以下のように書いてくれました。

// 麦わらの一味の列挙子を作成し、列挙子には船員名・船員番号・役割・得意技を設定する
// 船員番号は船員を識別する番号を1から順番につける
// 役割は船長・剣士・航海士・狙撃手・料理人・船医・考古学者・船大工・音楽家・船員の10種類
public enum OnePeaceEnum {

どんぴしゃの回答だ!と私は思いました。唯一のミスを挙げるとジンベエの役割は船員ではなく、操舵手である。実に惜しい。

↓ではこのコメントを元にどのようなコードをCopilotが提案してくれるのでしょうか?

先ほど同様LUFFYの右に括弧を記載すると、以下のようにCopilotが書いてくれました!

public enum OnePeaceEnum {
    LUFFY(1, "船長", "ゴムゴムのピストル"),

船員番号・役割・得意技、全て完璧でした!

ちなみにゾロとナミもCopilotに書いてもらうと、以下のようになりました。

ZORO(2, "剣士", "三刀流"),
NAMI(3, "航海士", "天候棒"),

船員番号と役割は完璧。しかし得意技が流派や武器名になってしまっています。

まとめ

お金もそれなりにかかるので、無料枠が終わったのちGitHub Copilotを使い続けるかは分かりませんが、便利なものには違いありません。思った以上に書きたいことを推測してくれるので、このようなAIツールはうまく活用していきたいですね!

Discussion