GitHub Copilotをちょっと工夫して便利に使うTIPSです。
コンテキスト情報をコメントで注入する
変換元となるテキストをコメントに入れることで、Copilotがその情報をもとに補完してくれます。
例えば、データベースのテーブル定義からLaravelのMigrationコードを生成する場合。
<?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
を引き出すための誘導のためです。
<?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もお待ちしております!