45
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【TIPS】GitHub Copilotで使えるちょっと便利なTIPS【小ネタ】

Last updated at Posted at 2023-05-29

GitHub Copilotをちょっと工夫して便利に使うTIPSです。

コンテキスト情報をコメントで注入する

変換元となるテキストをコメントに入れることで、Copilotがその情報をもとに補完してくれます。
例えば、データベースのテーブル定義からLaravelのMigrationコードを生成する場合。

tmp.php
<?php
declare(strict_types=1);

# 次のDDLをLaravel 9 のマイグレーションコードに変換してください
/*
    CREATE TABLE Games (
    GameID INT PRIMARY KEY,
    GameName VARCHAR(50) NOT NULL,
    Genre VARCHAR(50) NOT NULL,
    ReleaseDate DATE NOT NULL,
    ConsoleID INT,
    FOREIGN KEY (ConsoleID) REFERENCES GameConsoles(ConsoleID)
);
*/

return 

このように入力すると、以下のようにMigrationのコードが生成されます。
returnと書いてるのはreturn new classを引き出すための誘導のためです。

tmp.php
<?php
# (略)

return new class extends \Illuminate\Database\Migrations\Migration {
    public function up()
    {
        Schema::create('Games', function (Blueprint $table) {
            $table->integer('GameID')->primary();
            $table->string('GameName', 50)->nullable(false);
            $table->string('Genre', 50)->nullable(false);
            $table->date('ReleaseDate')->nullable(false);
            $table->integer('ConsoleID')->nullable(true);
            $table->foreign('ConsoleID')->references('ConsoleID')->on('GameConsoles');
        });
    }

    public function down()
    {
        Schema::dropIfExists('Games');
    }
};

与えたDDLをもとにコードを生成できました!
ちょっと手を加えなくてはいけないところはありますが、手動で書くより早く叩き台を作れますね。

ちょっとした文字列の抽出・加工をやらせる

人力でやる場合は、正規表現を書いて抽出したり、スクリプトやオンラインツールで文字列の加工をやることが多いかと思いますが、GitHub Copilotにやらせればお使いのIDE上で手軽にできて便利です。

抽出の例

/* 
 * CREATE TABLE Games (
    GameID INT PRIMARY KEY,
    GameName VARCHAR(50) NOT NULL,
    Genre VARCHAR(50) NOT NULL,
    ReleaseDate DATE NOT NULL,
    ConsoleID INT,
    FOREIGN KEY (ConsoleID) REFERENCES GameConsoles(ConsoleID)
);
*/

# カラム名をカンマ区切りで書いて
# GameID,

カンマ区切りで出したい場合、最初の1ワードくらいを人間の手で書いてあげればあとは補完してくれます。

# GameID,GameName,Genre,ReleaseDate,ConsoleID

この例では個数が少ないので人間が書いた方が早いかもしれないですが、件数が多くなるとCopilotを使った方が速くできそうです。
(純粋に、こういうだるいぽちぽち作業を自分の手でやりたくないので、機械にやらせたい)

加工の例

ついでに、snake_caseにもしてもらいましょう

補完前
# game_id,
補完後
# game_id,game_name,genre,release_date,console_id

おわりに

GitHub Copilotにコードやコメントを書かせるのではなく、ちょっとした文字列の抽出・加工もやらせるというのは盲点だった方もいるのではないでしょうか。
また、ChatGPTでも同じようなコード生成や加工ができますが、GitHub Copilot上でやれば、ウィンドウを切り替えたり、コピペせずにできるので便利です。

参考になりましたら幸いです。
皆様からのちょっとしたTipsもお待ちしております!

45
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
45
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?