はじめに
GitHub Copilot Chatを使えば、自然言語だけでコードを書くことができます。ただし、実際にどのように使えばよいのか、どのようにコードが提案されるのかを理解するには、手を動かして試してみるのが一番です。
今回はその試みとして、画像を圧縮するCLIツールをGitHub Copilot Chatだけで作ってみました。題材に画像圧縮を選んだのは、ブログ用にChatGPTで作成したサムネイル画像を手軽に軽量化したかったからです。
この記事では、Copilot Chatに自然言語でどのように指示を出し、どのようなコードが生成され、どのようにツールが形になっていったかを手順に沿って紹介していきます。
プロンプトの設計と準備
今回の開発は、「GitHub Copilotでコードを書くには、どのようなプロンプトを用意すればよいか」という問いから始まりました。まず最初に、ChatGPTに以下のように相談しました:
GitHub Copilotで開発用のプロンプトを作成したいです。段階的に質問して、作成してください。
この依頼に対し、ChatGPTはプロンプトを組み立てるためのヒアリング項目として、以下のステップを提示しました。
-
ステップ1:プロジェクトの概要と目的
どのような種類のプロジェクトを作成するかを決めます。(例:Webアプリ、APIサーバー、CLIツール、Chrome拡張機能、ライブラリ など)
→ 画像を圧縮するCLIツール -
ステップ2:技術スタックの指定
使用するプログラミング言語やライブラリを決定します。
→ Node.js -
ステップ3:実装したい機能の選定
ChatGPTが提案する機能の中から、採用するものを選びます。 -
ステップ4:CLIのコマンド構文
ChatGPTが提案するコマンド構文やオプションに対し、必要に応じて修正を指示します。 -
ステップ5:圧縮後の画像の保存方法
ステップ3に関連して、保存先の方針を決定します。 -
ステップ6:補足設定
TypeScriptの使用有無、テストフレームワークやLinterの導入など、補足情報について提案を受け、採用するか選びます。
これらの質問に順に答えていくことで、次のようなプロンプトが組み立てられました。
このプロンプトをGitHub Copilot Chatに入力し、CLIツールの作成を進めていきます。
CLIツールの生成(1回目)
初期プロンプトをGitHub Copilot Chatに入力すると、CLIツールの骨組みが次々と自動生成されていきます。
手動で行った作業は、基本的に提示されたコマンドの実行だけです。
テストコードの生成やLinterの設定も自動で行われ、結果を受けてファイルを自動修正する処理も含まれていました。
完成後、動作する最低限のCLIツールはできましたが、Copilot Chatから追加機能の提案があったり、実行時に想定通りの動作をしなかったりしたため、追加で指示を出す場面もありました。また、テストやLinterの適用が省略されることもあったため、補足的に指示を与える必要も生じました。
最終的に完成したCLIツールは以下のリポジトリに公開しています。
初期プロンプトからは一部構成が変更されていますが、ひとまず動作するものが仕上がりました。
評価の実施
CLIツールの作成後、GitHub Copilot自身に対してプロジェクトの評価を実施させました。
作成しててよかった点、苦労した点、改善点があればまとめてください。
さらに、初期プロンプトそのものについても評価を依頼しました。
作成してみて、元のプロンプトってどうだった?
簡潔な指示でしたが、CLI作成の過程を記憶していたため、内容のある評価結果が返ってきました。
この評価をもとに、新たなプロンプトの生成も行いました。
これらの内容を元に新しいプロンプト作成できる?
比較は難しいものの、CLI作成の過程で追加した機能や問題点が、プロンプトに反映されていることがわかります。
CLIツールの作成(2回目)
改善されたプロンプトを用いて、あらためてCLIツールを作り直してみました。基本的には1回目と同様に、必要な場面でのみ指示を出す形式で進めています。
完成した成果物は以下のリポジトリに公開しています。
プロンプトの文量が増えた影響もあり、開発には1回目よりも時間がかかりましたが、明らかに1回目より完成度の高いツールが仕上がっています。
まとめ
GitHub Copilot Chatを使えば、自然言語による対話だけでCLIツールのような実用的なプログラムを構築することができます。ただし、その精度や完成度は、プロンプトの設計や指示の出し方に大きく左右されます。
今回の取り組みを通じて、より良いツールを作るために有効だったと感じたポイントは、次のとおりです。
-
具体的で段階的なプロンプトを用意する
「何を作りたいか」「どういう機能が必要か」をあらかじめ細かく整理しておくことで、初期の提案精度が高まります。 -
Copilot Chatの提案を評価し、フィードバックを返す
生成されたコードや構成に対して「ここを直して」「もっとこうして」と伝えることで、品質が徐々に改善されていきます。 -
生成結果に対して再プロンプトを重ねる
初期プロンプトを見直し、改善点を踏まえて再生成することで、完成度の高いツールへと仕上がっていきます。 -
最終的な成果物を客観的に振り返る
Copilot Chatに評価や振り返りを依頼することで、改善点の発見やプロンプト最適化につながりました。
Copilot Chatは単なる生成ツールではなく、開発の相棒として使いこなすことで、自然言語によるプログラミングの可能性をより引き出すことができます。