Open10

GitHub Copilot Chat (β版)を触ってみる

mikomiko

用意されているコマンド

/tests - Generate unit tests for the selected code
/fix - Propose a fix for the problems in the selected code
/explain - Explain how the selected code works
/ext - Ask about VS Code extension development
/createNotebook - Ask VS Code to create a notebook for you
/createWorkspace - Ask VS Code to create a project
/vscode - Ask questions about VS Code
/help - General help about GitHub Copilot

mikomiko

動作検証用のサンプルコード

function add(a, b) {
    return a + b;
}

function subtract(a, b) {
    return a - b;
}

function multiply(a, b) {
    return a * b;
}

function divide(a, b) {
    if (b === 0) {
        throw new Error('Division by zero');
    }
    return a / b;
}
mikomiko

/tests コマンドの実行結果

GitHub Copilot: 以下は、addsubtractmultiplydivide関数のためのユニットテストの例です。

describe('add', () => {
    it('should add two positive numbers', () => {
        expect(add(2, 3)).toBe(5);
    });

    it('should add a positive and a negative number', () => {
        expect(add(2, -3)).toBe(-1);
    });

    it('should add two negative numbers', () => {
        expect(add(-2, -3)).toBe(-5);
    });
});

describe('subtract', () => {
    it('should subtract two positive numbers', () => {
        expect(subtract(3, 2)).toBe(1);
    });

    it('should subtract a positive and a negative number', () => {
        expect(subtract(3, -2)).toBe(5);
    });

    it('should subtract two negative numbers', () => {
        expect(subtract(-3, -2)).toBe(-1);
    });
});

describe('multiply', () => {
    it('should multiply two positive numbers', () => {
        expect(multiply(2, 3)).toBe(6);
    });

    it('should multiply a positive and a negative number', () => {
        expect(multiply(2, -3)).toBe(-6);
    });

    it('should multiply two negative numbers', () => {
        expect(multiply(-2, -3)).toBe(6);
    });
});

describe('divide', () => {
    it('should divide two positive numbers', () => {
        expect(divide(6, 3)).toBe(2);
    });

    it('should divide a positive and a negative number', () => {
        expect(divide(6, -3)).toBe(-2);
    });

    it('should divide two negative numbers', () => {
        expect(divide(-6, -3)).toBe(2);
    });

    it('should throw an error when dividing by zero', () => {
        expect(() => divide(6, 0)).toThrow('Division by zero');
    });
});

これらのテストは、各関数のさまざまなシナリオをカバーしています。テストには、正の数、負の数、ゼロ、エラーハンドリングが含まれます。これらのテストをJestやMochaなどのテストフレームワークを使用して実行できます。

mikomiko

/fix コマンドの実行結果

GitHub Copilot: 以下は、addsubtractmultiplydivide関数のためのユニットテストの例です。

describe('add', () => {
    it('should add two positive numbers', () => {
        expect(add(2, 3)).toBe(5);
    });

    it('should add a positive and a negative number', () => {
        expect(add(2, -3)).toBe(-1);
    });

    it('should add two negative numbers', () => {
        expect(add(-2, -3)).toBe(-5);
    });
});

describe('subtract', () => {
    it('should subtract two positive numbers', () => {
        expect(subtract(3, 2)).toBe(1);
    });

    it('should subtract a positive and a negative number', () => {
        expect(subtract(3, -2)).toBe(5);
    });

    it('should subtract two negative numbers', () => {
        expect(subtract(-3, -2)).toBe(-1);
    });
});

describe('multiply', () => {
    it('should multiply two positive numbers', () => {
        expect(multiply(2, 3)).toBe(6);
    });

    it('should multiply a positive and a negative number', () => {
        expect(multiply(2, -3)).toBe(-6);
    });

    it('should multiply two negative numbers', () => {
        expect(multiply(-2, -3)).toBe(6);
    });
});

describe('divide', () => {
    it('should divide two positive numbers', () => {
        expect(divide(6, 3)).toBe(2);
    });

    it('should divide a positive and a negative number', () => {
        expect(divide(6, -3)).toBe(-2);
    });

    it('should divide two negative numbers', () => {
        expect(divide(-6, -3)).toBe(2);
    });

    it('should throw an error when dividing by zero', () => {
        expect(() => divide(6, 0)).toThrow('Division by zero');
    });
});

これらのテストは、各関数のさまざまなシナリオをカバーしています。テストには、正の数、負の数、ゼロ、エラーハンドリングが含まれます。これらのテストをJestやMochaなどのテストフレームワークを使用して実行できます。

mikomiko

/explain コマンドの実行結果

このコードは、四則演算用の4つの関数を定義しています。add関数は2つの引数aとbを受け取り、それらを足し算して結果を返します。subtract関数は2つの引数aとbを受け取り、それらを引き算して結果を返します。multiply関数は2つの引数aとbを受け取り、それらを掛け算して結果を返します。divide関数は2つの引数aとbを受け取り、それらを割り算して結果を返します。ただし、2つ目の引数が0の場合は、Division by zeroというエラーメッセージをスローします。

これらの関数は、非常にシンプルであり、基本的な四則演算を実行するために使用できます。ただし、このコードは、入力値が数値であることを前提としています。もし入力値が数値でない場合、このコードはエラーをスローしません。そのため、このコードを使用する場合は、入力値が数値であることを確認する必要があります。

また、divide関数は、0で割ることができないため、2つ目の引数が0の場合にエラーをスローするようになっています。これにより、プログラムがクラッシュすることを防ぐことができます。

mikomiko

VS Code内で利用可能なため、GitHub Copilotとの組み合わせで効率化ができそう。

mikomiko

/vscode コマンド

VS Codeに関する質問も可能で、コマンドパレット表示用のボタンが表示される。

mikomiko

/ext コマンド

拡張機能作成のアシストをしてくれる?
CSVファイル表示用の拡張機能の作り方を聞いてみた。