はじめに
copilotが複数あることにきづいた
準備
- vscode導入
- プラグイン:GitHub Copilot導入
調査
- Microsoft Copilot https://copilot.microsoft.com/
- GitHub Copilot
いつもブラウザでアクセスしてたがMicrosoft Copilot

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

関係
Microsoft(マイクロソフト)が Copilot ブランドを自社の複数の AI アシスタントに対して使っており、GitHub もマイクロソフト傘下なので、全体として「Copilot」ブランドにはつながりがあります。
ただし、Microsoft Copilot(一般向けの AI チャット/アシスタント機能等)と GitHub Copilot(プログラミング向け補助ツール)は、用途や機能、統合先が異なる別製品です。
つまり、完全に無関係というわけではない(親会社が同じ、技術的な基盤を共有する可能性も高い)が、 同じサービスではない と理解するのが妥当です。
使い方
pythonコードを生成する例を考える
要件例
まず伝えると良い要件(チェックリスト)
必要なものを書く。
## コード作成時の共通要件
- 目的・ゴール:何を解決するのか、成功条件は何か(定量化できると最高)
- 入出力仕様:入力の型・形式(例: 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):検証手順を言語化しておく(後述テンプレに含む)
これは長すぎるね
なので一旦これで
- コードの冒頭に全体の概要を記載
- 関数に Google スタイルの docstring を追加してください。
- 引数、戻り値、例を含めてください
- 日本語で説明してください
- テスト(pytest)のコードも作成
AI入力文
コンテキストの追加をする→youken.md
これで中身を読んでくれる。文章で書いてもいいが、ファイルを開いておく必要があるらしい
そのうえで〇〇をするコードを作成してほしい。細かいことは共通要件に従ってほしい
で作ってもらえると思う
作ってもらったコード
# このコードは、与えられた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))
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含むか)は? |
