0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub Copilot、個人的メモ

Last updated at Posted at 2025-10-01

はじめに

copilotが複数あることにきづいた

準備

  • vscode導入
  • プラグイン:GitHub Copilot導入

調査

いつもブラウザでアクセスしてたがMicrosoft Copilot
image.png

VSCode開いて表示されているのが、GitHub Copilot。
image.png

✖で消しても画面右上のこれで再表示されると思う。
image.png

関係

Microsoft(マイクロソフト)が Copilot ブランドを自社の複数の AI アシスタントに対して使っており、GitHub もマイクロソフト傘下なので、全体として「Copilot」ブランドにはつながりがあります。

ただし、Microsoft Copilot(一般向けの AI チャット/アシスタント機能等)と GitHub Copilot(プログラミング向け補助ツール)は、用途や機能、統合先が異なる別製品です。

つまり、完全に無関係というわけではない(親会社が同じ、技術的な基盤を共有する可能性も高い)が、 同じサービスではない と理解するのが妥当です。

使い方

pythonコードを生成する例を考える

要件例

まず伝えると良い要件(チェックリスト)
必要なものを書く。

例)youken.md
## コード作成時の共通要件
- 目的・ゴール:何を解決するのか、成功条件は何か(定量化できると最高)
- 入出力仕様:入力の型・形式(例: CSV/JSON/関数引数)、出力の型・例、エンコーディング
- 例データ:最小のサンプル(正常系/異常系)を2–3個ずつ
- インターフェース:CLI/関数/API/モジュールのどれか、想定する関数名・引数・戻り値
- 依存関係:使って良い/ダメなライブラリ、Pythonバージョン、OS
- 設計制約:並列/非同期の可否、メモリ/速度の目標、アルゴリズムの方針(許容計算量など)
- エラーハンドリング:例外の種類、再試行、タイムアウト、リトライポリシー、失敗時の戻り値
- バリデーション:入力検証ルール、境界値・欠損値の扱い
- セキュリティ:秘密情報の扱い(envやVault)、外部I/O時のサニタイズ
- ロギング/監視:ログレベル、フォーマット(JSON/プレーン)、PIIを入れない等
- テスト:pytestで単体テスト必須、カバレッジ目標、失敗しがちなケースを明示
- 品質ルール:型ヒント必須、docstring(Google/Numpy形式)、lint/format(ruff/black)
- 配布形態:単一スクリプト/パッケージ、フォルダ構成、ライセンス、READMEに入れる内容
- ドキュメント:使い方、制約、既知の限界、将来拡張ポイント
- 受け入れ条件(Acceptance Criteria):検証手順を言語化しておく(後述テンプレに含む)

これは長すぎるね

なので一旦これで

youken.md
- コードの冒頭に全体の概要を記載
- 関数に Google スタイルの docstring を追加してください。
    - 引数、戻り値、例を含めてください
    - 日本語で説明してください
- テスト(pytest)のコードも作成

AI入力文

コンテキストの追加をする→youken.md
これで中身を読んでくれる。文章で書いてもいいが、ファイルを開いておく必要があるらしい

そのうえで〇〇をするコードを作成してほしい。細かいことは共通要件に従ってほしい
で作ってもらえると思う

作ってもらったコード

sample.py
# このコードは、与えられた2つの数値の合計を計算して返すサンプルプログラムです。
# 関数にはGoogleスタイルのdocstringを付与しています。

def add_numbers(a, b):
    """
    2つの数値を加算して合計を返します。

    Args:
        a (int or float): 1つ目の数値
        b (int or float): 2つ目の数値

    Returns:
        int or float: 2つの数値の合計

    Examples:
        >>> add_numbers(3, 5)
        8
        >>> add_numbers(2.5, 4.5)
        7.0
    """
    return a + b

if __name__ == "__main__":
    print(add_numbers(3, 5))
test_sample.py
from sample import add_numbers

def test_add_positive_numbers():
    assert add_numbers(3, 5) == 8

def test_add_floats():
    assert add_numbers(2.5, 4.5) == 7.0

def test_add_negative_and_positive():
    assert add_numbers(-1, 1) == 0

def test_add_zeros():
    assert add_numbers(0, 0) == 0

実行結果

実行

PS C:\Users\tmori\python-repo> python sample.py
8

テスト

pytestがない場合はインストール

pip install pytest
PS C:\Users\tmori\python-repo> pytest test_sample.py
================================================ test session starts ================================================
platform win32 -- Python 3.13.7, pytest-8.4.2, pluggy-1.6.0
rootdir: C:\Users\tmori\python-repo
collected 4 items                                                                                                     

test_sample.py ....                                                                                            [100%] 

================================================= 4 passed in 0.02s ================================================= 
PS C:\Users\tmori\python-repo> 

提案機能

# ぼかし処理

と書いてエンター押すと、提案のコードが表示されtabを押すと記述される

学習方法

開発前確認チェックリスト

カテゴリ 確認内容 顧客回答 / メモ
1. 入出力仕様 入力形式(APIリクエスト、ファイル形式、DBスキーマなど)は?
出力形式(JSON、画面、ファイルなど)は?
エラー時の挙動は?(例外/コード返却/ログ出力)
2. 非機能要件 性能要件(処理速度、同時接続数、スループット)は?
信頼性(リトライ回数、冗長化、フェイルオーバー要否)は?
セキュリティ要件(認証方式、暗号化、ログの扱い)は?
3. 制約条件 使用言語やフレームワークのバージョン固定は?
外部ライブラリ利用可否(OSSライセンス制約含む)
デプロイ環境(クラウド/オンプレ/コンテナ/OS)は?
4. 受け入れ基準 「完成」と判定する条件は?
正常系/異常系の判定基準は?
必要なテストケース例(最低限の確認項目)は?
5. 運用・保守 ログ出力ルール(形式、保存期間、出力先)は?
設定ファイルや環境変数の扱いは?
エラーメッセージ/通知方法(ユーザー向け/運用者向け)は?
6. 境界条件・例外 入力が空/NULL/最大値超過時の挙動は?
外部APIやDBが停止していた場合は?
タイムアウトやリトライの上限は?
7. 引き渡し・ドキュメント 納品形式(Gitリポジトリ、ZIP、デプロイまで含むか)は?
必要なドキュメント(README、API仕様、設計書)は?
テスト範囲(単体のみ/結合/E2E含むか)は?
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?