APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

GitHub Copilot Chatの /explain-jaコマンド をショートカットキーで実行する(VSCode)

はじめに

こんにちは、ACS事業部の過部です。

皆さま、GitHub Copilot Chatをいかが活用されてますでしょうか。 GitHub Copilot Labsと比べてコード説明機能が格段に向上してこともあり、よわよわエンジニアの自分はソースコードに片っ端から/explainを実行してコードリーディング補助ツールとしてこき使っています。GitHub Copilot Chatは現在、限定パブリックベータ版としてGitHub Copilot for Businessユーザーが利用できます。詳しくはこちらのGitHub日本語ブログを参照してください。また、GitHub Copilot Chatのウェイトリストへの登録はこちらからできます。

GitHub Copilot Chatには日本語でコード説明を行ってくれる /explain-ja という隠し?コマンドがある様で、自分としては有り難い限りです。 ただ、このコマンドは/explainコマンドとは異なり、VSCode向けのコマンドとしては実装されてないため、GUI上でお手軽にキーバインドできません。

※ /explainの場合は上記の様なコマンドが用意されている。

今回は、VSCodeのキーバインディング設定ファイルであるkeybindings.jsonを弄って、/explain-jaをショートカットキーでサクッと実行できる様にする手順をご紹介します。

実行内容の整理

まずは、ショートカットキー押下時に実行したい内容を以下に整理します。

1. GitHub Copilot Chatの画面を開く

2. /explain-jaと入力する

3. 送信する

キーバインディング設定の作成

先ほど挙げた3つの処理を単一キーにバインドする必要があります。 今回はrunCommandsというコマンドを利用して、ショートカットキー押下時に実行する処理を複数指定していきます。

[
    {
        "key": "ctrl+k ctrl+c", // バインドするショートカットキー
        "command": "runCommands",
        "args": {
            "commands": [
                {
                    "command": "workbench.panel.chat.view.copilot.focus", // GitHub Copilot Chatの画面を開く
                },
                {
                    "command": "type", // チャット欄に入力する
                    "args": {
                        "text": "/explain-ja" // 入力内容はここで指定
                    },
                    "when": "inputFocus"
                },
                {
                    "command": "chat.action.acceptInput", // チャット欄に入力した内容を送信する
                    "when": "inChatInput && textInputFocus"
                }
            ]
        },
    },
]

上記をVSCodeのkeybindings.jsonに記述することで、 Ctrl + K, Ctrl + C を押下した際に、アクティブエディタのコード説明が日本語で表示される様になります。

言わずもがなですが、"/explain-ja"の部分を変更することで、別の定型文をGitHub Copilot Chatで実行させることもできます。

※ when句に関する説明はここでは割愛します。詳しくはこちらをご覧ください。

参考情報:キーにバインドしたいコマンドの調べ方

keybindings.jsonを記述するためには、実行したい処理に対応するコマンドを探す必要があります。(上記Jsonにおける workbench.panel.chat.view.copilot.focuschat.action.acceptInput等)

公式ドキュメント等に載っているケースもありますが、今回のケースではいくら探せども見つからずとても苦戦してました。

そんな状況を解決してくれたのが、VSCodeのDeveloper: Toggle Keyboard Shortcuts Troubleshooting機能です。こちらをVSCodeのコマンドパレットから起動することで、実行されたコマンドをログ形式で出力してくれます。

下記はGitHub Copilot Chat画面に文章入力した状態でEnterキーを押下した際のログです。Enterキーを押下した際に、 chat.action.acceptInput コマンドが実行されているのが分かります。

2023-07-26 22:53:51.865 [info] [KeybindingService]: | Resolving Enter
2023-07-26 22:53:51.865 [info] [KeybindingService]: \ From 28 keybinding entries, matched chat.action.acceptInput, when: inChatInput && textInputFocus, source: built-in.
2023-07-26 22:53:51.865 [info] [KeybindingService]: + Invoking command chat.action.acceptInput.

これを利用すればキーバインド設定が捗りそうですね。

終わりに

私達ACS事業部はAzure・AKSを活用した内製化のご支援をしております。ご相談等ありましたらぜひご連絡ください。

www.ap-com.co.jp

また、一緒に働いていただける仲間も募集中です!
切磋琢磨しながらスキルを向上できる、エンジニアには良い環境だと思います。ご興味を持っていただけたら嬉しく思います。

www.ap-com.co.jp

本記事の投稿者: 過部 太智
Taichi Sugibe - Credly