Google のファイル判定プログラム Magika を Python から C# に移植する過程を共有する記事の第4回目です。
前回から本格的に C# で Magika のコードをクラスライブラリとして移植する作業を始めました。しかしひとつひとつのコードを調べながら移植していく作業はどうしても時間がかかり、少しばかりうんざりしてきてしまいました。
今回はもっと効率的に移植作業を進めるべく、GitHub Copilot を使った AI によるコード生成を試してみることにしました。
目次
- Day 1 : まずは Magika の中身を見てみよう
- Day 2 : C# で 概念実証コードを書いてみる
- Day 3 : C# クラスライブラリとして Magika を移植していく
- Day 4 : GitHub Copilot を使って作業効率アップ
- Day 5 : クラスライブラリとしての Magika を完成させる
- Day 6 : コンソールアプリを作成する
- Day 7 : 移植したMagikaをビルドし、動作確認する
GitHub Copilot を使って作業効率アップ
GitHub Copilot は GitHub が提供しているサブスクリプションサービスで、AI がコーディング作業の補助をしてくれるサービスです。
月額 10 ドル(約 1500 円)と決して安くはありませんが、30 日間は無料でトライアルできますので、一か月以内に移植作業を終えて解約すればそれきりで済みますし、それで作業効率が大きく上がるのであれば支払う価値があるのではないかと思いました。
GitHub Copilot は 30 日間は無料でトライアルできますが、私は以前にトライアルを使って解約したことがあるため、今回は 10 ドル支払って使っています。
GitHub Copilot の使い方
GitHub にサインインして https://github.com/github-copilot/signup からサービスに申し込みます。
続いて Visual Studio Code に GitHub Copilot 拡張機能をインストールします。インストール後、GitHub にサインインするよう要求されるのでサインインします。これで準備は完了です。
GitHub Copilot には大きく分けて2つの機能があり、ひとつはインラインでのコード補完、もうひとつはチャット形式でコードの説明をしたり、コードを生成してもらうCopilot Chatです。
インラインでのコード補完
コード補完については、普通にソースコードを書いていると薄いグレーでAIが続きのコードを提案してきてくれます。その提案内容が気に入ればTabキーを押すとそのままコードが挿入されますし、気に入らなければ無視してそのまま自分でコードを書き続けることもできます。
特に同じようなコードを、変数名などを少しずつ変えながら繰り返し書かないといけないような場合に、そのパターンを学習してそれっぽいコードを提案してきてくれるので便利だと感じました。
ただ、提案されたコードをそのまま使うというよりは、参考にしつつ自分で手直ししていく必要がある感触でした。
Copilot Chat
今回のような Python のコードを C# に移植させるような作業にはこちらの Copilot Chat の機能が特に役に立ちました。
Python から C# に移植したいコードを選択した状態で、Copilot Chat の入力ボックスに「C#のコードに書き換えたい」と入力すると、AIが書き換えたコードを提案してくれます。
うまくハマると、ほぼそのままコピペで使えるようなコードを提案してくれます。100 行くらいあるメソッドを十数秒の待ち時間でまるごと完璧に変換してくれたときには、「俺がこれまで苦労して移植してた作業はなんだったんだ」と思わざるをえませんでした。
ただ、実際のところは当たり外れが大きく、うまく変換してくれない場合も多々ありました。入力できるコードの量にも制限があるようで、全コードをまるごと選択して移植させようとすると「コードを指定してください」などと言われてしまうため、少しずつ区切って変換させるなどの工夫も必要なようです。
続く
GitHub Copilot の導入で作業効率は確かに上がりましたが、時間的には10%~20%の短縮といったところでしょうか。月額10ドルに見合うかどうかは状況次第かなぁという印象です。
GitHub Copilot の助けも借りつつ、引き続き Magika の C# 移植作業を進めていきます。次回はクラスライブラリとしての Magika をひとまず完成させるところまでを目指していきます。