Open12

Github copilotお試し

MKMK

とりあえずLaravelの環境を作ってみる。

VSCodeに導入後、CHATに以下を聞いてみた

Can you create a devcontainer environment for Laravel 11 and MySQL 8.4?

結果は以下の通り、パブリックコードが含まれているので返答がブロックされた。
途中までは生成したところで急にブロックされたような気がした。

今後、このブロックがどの程度発生するかで使いやすさはかなり変わりそう。

ブロック関連メモ

テキスト→コードの提案のような場合、テキスト部分は普通に出力され、コード部分は画像のようにブロックされた

MKMK

Terminalを開くと、そこでもCHATが使え、何がしたいか聞いてくる。
試しに

start Laravel project with Sail

と打ったところ、返答は以下。

これは、Laravel公式に記載の内容と一致する。(公式で example-app となっている箇所が {project_name} に変わっている。

確かにすごいが、結局確認のため公式ページを見ながら進めるため、この使い方はしなさそう。

ただ、例えばDockerのコンテナ一覧を表示するコマンドってなんだっけ?といた場面でその場で検索っぽい事が出来るのはかなり時短になりそう。
提案されたコマンドを直接実行できるボタンもあるが、さすがに怖いので使うことはなさそう。

MKMK

この辺りはチャットを使う上で必須になりそう

@workspace has context about the code in your workspace and can help you navigate it, finding relevant files or classes.
@vscode knows about commands and features in the VS Code editor itself, and can help you use them.
@terminal has context about the integrated terminal shell and its contents.

お試し

@workspace

me: @workspace コードを解析し、おすすめのVSCode拡張をdevcontainer.jsonに追加してください

のような質問をChatですると、 このように参照されたファイルと行数が表示される。

Laravelを使っているのを理解し、Laravel用の拡張や、PHPUnitの拡張を提案してくれた。

@workspase を付けづに同じ質問をすると答えられなかった。

@workspace /explain #file:ファイル名

#file:ファイル名 で特定のファイルをコンテキストに含めることができる。
例えば @workspace /explain #file:docker-compose.yml とすれば、 docker-compose.yml の内容について説明してくれる(service毎に詳細に何をやっているか書いてくれたりかなり詳細)

@vscode

画像のように、返答の中でVSCodeのコマンドを提案してくれる場合、コマンドパレットで表示するボタンも出してくれる。

参考

MKMK

便利だと思った使い方

Editor Inline

  • 適当にスペース区切りされたテキストを選択してMarkdownTableに変換できる

/explain

  • Dockerfileの最初に取得している各種パッケージが何のための物なのかを質問する
  • DB設定の場所、バリデーションの方法など、既存コード理解の効率は圧倒的に高くなる。

Commandline

  • コマンドのオプションなどを忘れたときにすぐ聞ける
  • 特にDockerdesktopを利用できなくなり、コマンド操作を行う必要が出てきた中で、いちいちコマンドを調べるよりCopilotで聞く方が圧倒的に効率が良い(ただし、提案されたコマンドを即実行するのはリスクがあり、メンバー全体にリスクを浸透させる必要はある)

Chat window

@workspace

  • エラーを張り付けて原因を聞いてみると、コードの中から疑わしい部分をピックアップしてくれて大変助かる。
    • コード生成は割と疑わしいが、説明はかなり得意と見える
    • /fix を付けるとコード修正の提案をしてくれるが、こちらはあまり精度は高くない気がする(今のところ)
MKMK

IDE上で表示されているwarningなどのQuickFixでCopilotを利用できる。
選択すると勝手にコードを修正してくれる。

が、今回は対象が悪かったのか、あまりちゃんとした修正はしてくれなかった。
(エラーが出てる箇所を消そうとしたり)

MKMK

言語について

日本語で質問したら結果が返ってこず、英語で同じ質問をしたら返答が来ることがある。
ただ、そのあともう一度日本語で質問したら同様の返答が来たので、謎。(返答できないエラー的なのが表示されていたが、消えてしまったので次出たときはメモっておく)

諸々あるが、基本的には英語で利用するのが良さそう。
翻訳が手間なら一旦日本語で質問等してみて、返答が不満だったら英語を試すといいかもしれない。

explain

/explainはデフォルトでは英語が返ってくるので、これを日本語にしたい。

/explain in japanese と打てば日本語で結果が返ってくる。 (この書き方だと今の所エラーは変な返答は来ていない)
エラーは出ていないが、日本語で

すみません、私は日本語で説明することはできません。私はソフトウェア開発に関する質問にお答えすることができます。どのようにお手伝いできますか?

といった返答が来ることはあった。

色々試した時のログ

me: /explain explain code in Japanse

copolot: すみません、私は日本語で説明することはできません。私はソフトウェア開発に関する質問にお答えすることができます。どのようにお手伝いできますか?

試しにやってみたが上記はダメだった。
ただし、 no result のようなエラーが出たわけではないので、プロンプトによっては出来たりする・・・?要調査

(そもそも上記のプロンプトで /explain コマンドは効いてるのかも要調査)

ちなみに、フランス語だとできた

me: /explain explain code in French

copilot: Le code que vous avez sélectionné est une instruction use en PHP.
...(以下略)...

別の個所で以下のように試したら日本語で返答がもらえた

MKMK

@workspace /new で、ワークスペースの立ち上げ関連に強いBotを呼び出せる。

試しに簡単なDevcontainer環境を作ってもらおうとしたところ、以下のようにディレクトリ構成を提示し、Create Workspaceを押すとその構成通りにファイルを配置してくれる。

中々便利そうではあるが、今回だと docker-compose.ymlimageにDockerfileを指定しているのにDockerfileが存在しないなど、割とやらかしはある。
チャットで修正して貰うことは可能だが、このあたりは不確実性を考慮するくらいなら自分でやった方が早そう

諸々のフレームワークなどはプロジェクト立ち上げ用のCLIなどを提供している事が多く基本そっちを使う事になるので出番はあまりなさそう。

試し

以下のようにphpとMySQLの環境を作ってみた

結果、なぜかDockerfileがファイルではなくディレクトリになっているが、それ以外はちゃんと生成できていた

MKMK

ファイルの内容説明してもらうのに苦戦中。

Dockerfileに対して /explain #file をしてみたが、書いてある内容ではなくDockerfileの書き方的な指南が出てくる事がある。
聞き方を変えて何回か質問すれば求める結果は得られるので一旦はそうするで良いか・・・

MKMK

コーディング以外での利用

Markdown

適当なスペース区切りのデータを選択してMarkdownのテーブルに変換することができた。ドキュメント作成や、情報整理の時にとても役立ちそう

MKMK

その他試したい事

バージョンアップの補佐

あえてLaravel5.6, PHP7.2 , MySQL5.7などの古い環境を作成し、EOL対応を行う事を想定してどのような補佐が出来るかを試す

UnitTestの作成

UnitTestの存在しない既存コードに対してのテスト作成。
テスト設計書をベースにしたE2Eテストとかが作れれば一番だが、果たして・・・

API定義書からのAPI作成

Swaggerで定義したAPIを実装してくれないか。
どこまでできるか調査してみる

MKMK

Code completions

提案がないとき

VSCodeのOutPut(Ctrl+Shift+U)を表示し、プルダウンから「Github Copilot」を選択すると、コード補完時のリクエスト、レスポンスが確認できる。
(ここが動いていれば提案はしてくれないけれど動いてはいるなの確認ができる)

MKMK

ダミーデータの作成

CSVファイルで1行目を書いた後、同様のダミーデータの追加を指示すると対応してくれた。

テスト用データで、テスト条件を満たすデータを作ってくれるかなどは要検証