ブログ記事

GitHub Copilotリリース直後に飛びついて使ってみた結果

話題のGitHub Copilotをリリース週に導入。3日間使い倒してみた正直レビュー。期待と現実のギャップを本音で語ります。

5分で読めます
R
Rina
Daily Hack 編集長
ツール
GitHub Copilot AI 開発ツール 体験談
GitHub Copilotリリース直後に飛びついて使ってみた結果のヒーロー画像

「新しい GitHub Copilot がリリースされた」というツイートを見て、即座に課金。まだ日本語の情報がほとんどない中、3 日間使い倒してみた正直な感想を書きます。

導入のきっかけ

Twitter で GitHub Copilot が話題になっていて、「AI がコード書いてくれるなら楽じゃん」と思ったのが始まりです。

でも実際は、期待していたような「魔法のツール」ではありませんでした。

セットアップでつまずいた点

最初、VSCodeで使おうとしたんですが、認証でエラーが出て 30 分くらい格闘しました。

Error: GitHub Copilot could not connect to server. Extension activation failed: "Connection refused"

原因は会社のプロキシ設定でした。settings.json に以下を追加して解決:

{
  "http.proxy": "http://proxy.company.com:8080",
  "https.proxy": "http://proxy.company.com:8080"
}

実際に役立った場面

1. 単純な関数の実装

配列操作やデータ変換など、よくあるパターンの関数は本当に楽になりました。

function groupByCategory(items) {
  const grouped = {};
  for (const item of items) {
    if (!grouped[item.category]) {
      grouped[item.category] = [];
    }
    grouped[item.category].push(item);
  }
  return grouped;
}
// カテゴリーごとにアイテムをグループ化
function groupByCategory(items) {
  return items.reduce((acc, item) => {
    (acc[item.category] ||= []).push(item);
    return acc;
  }, {});
}
手書き(5分かかった)
function groupByCategory(items) {
  const grouped = {};
  for (const item of items) {
    if (!grouped[item.category]) {
      grouped[item.category] = [];
    }
    grouped[item.category].push(item);
  }
  return grouped;
}
Copilot使用(30秒)
// カテゴリーごとにアイテムをグループ化
function groupByCategory(items) {
  return items.reduce((acc, item) => {
    (acc[item.category] ||= []).push(item);
    return acc;
  }, {});
}

正直、Copilot の方がエレガントなコードを書いてくれることもあります。

2. テストコードの雛形作成

Jest のテストを書くとき、基本的なケースは自動で書いてくれるので便利でした。

// getUserById関数のテストを書く
describe('getUserById', () => {
  // ↓ここからCopilotが提案
  it('should return user when valid id is provided', async () => {
    const user = await getUserById(1);
    expect(user).toEqual({ id: 1, name: 'John Doe' });
  });

  it('should throw error when user not found', async () => {
    await expect(getUserById(999)).rejects.toThrow('User not found');
  });
});

ただし、エッジケースは自分で追加する必要があります。

3. 正規表現の生成

正規表現は毎回ググってたんですが、Copilot がかなり正確に生成してくれます。

// 日本の郵便番号を検証する正規表現
const postalCodeRegex = /^\d{3}-?\d{4}$/;  // Copilotが提案

// メールアドレスの簡易検証
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;  // これも提案

困った場面

1. 間違ったコードの提案

データベースのクエリで、SQL インジェクションの脆弱性があるコードを提案されたことがあります。

// Copilotの提案(危険!)
const query = `SELECT * FROM users WHERE id = ${userId}`;

// 手動で修正
const query = 'SELECT * FROM users WHERE id = ?';
db.query(query, [userId]);

重要

Copilot の提案をそのまま使うと、セキュリティホールを作ってしまう可能性があります。必ずレビューしましょう。

2. 古いAPIの使用

React のコードで、非推奨になった componentWillMount を使ったコードを提案されました。

// Copilotの提案(古い)
componentWillMount() {
  this.loadData();
}

// 正しくはuseEffectを使う
useEffect(() => {
  loadData();
}, []);

3. 無限ループの生成

再帰関数で、終了条件が抜けていることがありました。

// Copilotの提案(無限ループ!)
function fibonacci(n) {
  return fibonacci(n - 1) + fibonacci(n - 2);
}

// 手動で終了条件を追加
function fibonacci(n) {
  if (n <= 1) return n;
  return fibonacci(n - 1) + fibonacci(n - 2);
}

効果的な使い方のコツ

3 ヶ月使ってみて分かった、効果的な使い方:

  1. コメントは日本語より英語の方が精度が高い

    // ユーザーの年齢を計算 → 微妙な提案
    // Calculate user age from birthdate → 良い提案
  2. 変数名や関数名を具体的にする

    // processData() → 曖昧な処理を提案
    // convertCsvToJson() → 的確な処理を提案
  3. 既存のコードパターンを学習させる 同じファイル内に似たような処理があると、それを参考に提案してくれます。

実際のパフォーマンス改善

プロジェクトでの実測値:

  • コーディング速度: 単純な処理は 2-3 倍速くなった
  • バグ率: ほぼ変わらず(むしろ増えた部分も)
  • コードレビュー時間: 1.5 倍に増加(AI 生成コードの確認が必要)

月額10ドルの価値はあるか?

正直なところ、人による、というのが結論です。

価値がある人:

  • 定型的なコードを大量に書く人
  • 英語のドキュメントを読むのが苦手な人
  • 新しい言語やフレームワークを学習中の人

価値が微妙な人:

  • 複雑なビジネスロジックを扱う人
  • パフォーマンスチューニングが必要な人
  • セキュリティが重要なシステムを扱う人

まとめ

GitHub Copilot は「アシスタント」として使うなら優秀です。でも「コードを書いてくれる魔法のツール」ではありません。

提案されたコードは必ずレビューが必要だし、複雑な処理は結局自分で書く必要があります。

それでも、面倒な定型処理から解放されるメリットは大きいです。特にテストコードやドキュメント生成では時間を大幅に節約できました。

無料トライアルもあるので、まずは 1 ヶ月試してみることをおすすめします。自分の開発スタイルに合うかどうかは、実際に使ってみないと分からないですから。

参考リンク

Rinaのプロフィール画像

Rina

Daily Hack 編集長

フルスタックエンジニアとして10年以上の経験を持つ。 大手IT企業やスタートアップでの開発経験を活かし、 実践的で即効性のある技術情報を日々発信中。 特にWeb開発、クラウド技術、AI活用に精通。

この記事は役に立ちましたか?

あなたのフィードバックが記事の改善に役立ちます

この記事は役に立ちましたか?

Daily Hackでは、開発者の皆様に役立つ情報を毎日発信しています。