【GitHub Copilot】初日感想:これは使わない理由がない...

こんばんは。

GitHub Copilot 使ってみました。ちょっと衝撃的な感じだったのでメモ。

試したこと

GitHub Copilot 月額プランに申し込み(※省略)

Visual Studio で使えるように設定(※省略)

基本的に上のリンクを見れば設定できるので省略。

Visual Studio で C# を使い、自身のプロジェクトを設定して使ってみる(※ここについての感想)

あれ?大したことない→これはやばいの衝撃

GitHub Copilot はAIがコードの候補をいろいろ候補を提案してくれるらしいというものです。なんかすごいらしいという噂を聞き試してみました。

GitHub Copilot を入れて試したのは、仕事用というよりは自分が最近触っている個人用のプロジェクトです。積みあがっているタスクを実装しつつGitHub Copilotの挙動を確認してみました。結論から言うと「これ使わないのはありえない」という感想に至りました。革命ですね。。。

ただ最初の数時間の印象は「あんまり大したことがない???」でした。思ったよりも提案はしてくれないみたいな。あれ?GitHub Copilot 動いている?と思うくらい。

int CalculateDaysBetweenDates(

導入ページに上記のようなサンプルがあるんですが、確かにこれを打ってEnterするとそれっぽいコードを出してくれる。うん、まぁいいね。くらいの印象。

ただ毎月10$払ってまで使うかなぁ…。とりあえず30日は無料なのでお試しなのでいいけどね~と思ってました。

ただよくよく調べてみると、プロジェクト自体にいろいろコメントが入っていないとそもそも提案自体あんまりしてくれないらしいとのこと。確かに自前のサンプルプロジェクトで試していたのでコメントはほぼない状態でした。とりあえずコード整理を兼ねてプロパティやらメソッドにコメントをどんどん追加してみる。と次第に GitHub Copilot が提案してくれるようにはなってきた。

ただ提案はしてくれるはものの、そこまでサンプルプロジェクトを理解してくれてはない状態。提案はされてもなんでそれ?という感じ。

やっぱりまだ使えないのかなぁと思って作業を続けていたところ、急に GitHub Copilot が覚醒しました。

/// <summary>
/// XXXXXファイルを読み込むかどうか判定する
/// </summary>
/// <returns></returns>
internal bool IsLoadXXXXX()

これでコードを生成したのが下のもの。

/// <summary>
/// XXXXXファイルを読み込むかどうか判定する
/// </summary>
/// <returns></returns>
internal bool IsLoadXXXXX()
{
    // XXXXXファイルが存在しない場合は読み込まない
    if (!System.IO.File.Exists("XXXXX.txt"))
    {
        return false;
    }
    // XXXXXファイルの更新日時が1日以上前の場合は読み込まない
    var lastWriteTime = System.IO.File.GetLastWriteTime("XXXXX.txt");
    if (lastWriteTime < DateTime.Now.AddDays(-1))
    {
        return false;
    }
    return true;
}

処理としては確かに「ファイルの状態が新しければファイルから読み込み、ファイルが古ければファイルから読み込まず、別のところから取ってくる」と頭で思って書いてはいました。

ただこの時点で私のコードの中には「1日以上前の場合は読み込まない」という処理はどこにも存在していませんでした。確かに呼び出し先までみるとそんな感じに推測できなくはないし、そんな感じのことは思っていたけどもなぜなぜの不思議な体験です。まぁ結局このコード自体はここから少し変えるんですが「気づき」としてとてもいい。

ここから後の作業はかなり衝撃の連続でした。

ファイルのロード、ファイルのセーブに関しても「XXXXXファイルを保存する」「XXXXXファイルを保存する」とコメントするだけでなぜか思う通りにやっているし。最初は保存形式はCSVでしたが「json形式で保存する」でjsonに変えてくれました。ファイル名に現在日時を入れるなんてのも簡単です。これは凄い、としかいいようがない。

GitHub Copilot:付き合い方整理

・日本語のコメントでも使える
・Visual Studio でも使える
・既存コードのプロパティやメソッドはちゃんと整合性が取れるように書く
・プロジェクト全体の半分くらいにちゃんとコメント書いたらかなり提案してくれるようになった
・補完してほしい場合は徐々に情報を追加する。
「ファイルを保存する」→「ファイル名に今日の日付を付けて保存する」→「ファイル名に今日の日付を付けてjson形式で保存する」
・メソッド名の説明に処理をしっかり書くのもあり

触り初めて1時間の私へコメントすると「GitHub Copilot」がコードを提案しないのは「私のコードが悪い、コメントでの指示が悪い」ということでした。これはAIへの指示の話なので使い方の問題でした。他のAIの話と似ていますね。

まとめ

いままでのコメントは「コードを理解するために入れるもの」ではありましたが「コードを生成するための言葉」になりました。コードのメンテナンスって正直面倒だったり、他人のコメントだとよく日本語だったりが多いのですが、コードを作成するために書くのであれば誰でもそうするという流れに変わるのが凄い。コメントの表記ゆれも減るし。コメントルールなんてのも不要。

プロジェクトへの理解についても既存コードを理解してサポートしてくれるのはとてもありがたいところ。技術的なサポートだけでなく業務知識もこれでサポートしてくれるので新しくプロジェクトに入る人も助かる。

今後の話となるとコーディングの知識はそこまでいらなくなるかもしれませんが今のところ設計知識は必要ですね。json形式で保存するというのも「json」という知識がなければ指示が出来ないわけですし。そういう意味ではまだ私の仕事がなくなることはなさそうです。どちらかというとコーディング時間は減ることになるので今まで以上に仕事ができるようになりますね。

リモートワークだとなかなか人に相談することができないので GitHub Copilot には今後必須級にお世話になる予感がします。

この記事が気に入ったらサポートをしてみませんか?