Gemini CLI vs Claude Code徹底比較2025 - 開発者のための最適なAI選択ガイド
Google Gemini CLIとClaude Codeの機能・料金・使い勝手を徹底比較。開発者がどちらを選ぶべきかを実際の使用例を交えて解説します。
話題のGitHub Copilotをリリース週に導入。3日間使い倒してみた正直レビュー。期待と現実のギャップを本音で語ります。
「新しい 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"
}
配列操作やデータ変換など、よくあるパターンの関数は本当に楽になりました。
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;
}, {});
}
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;
}, {});
}
正直、Copilot の方がエレガントなコードを書いてくれることもあります。
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');
});
});
ただし、エッジケースは自分で追加する必要があります。
正規表現は毎回ググってたんですが、Copilot がかなり正確に生成してくれます。
// 日本の郵便番号を検証する正規表現
const postalCodeRegex = /^\d{3}-?\d{4}$/; // Copilotが提案
// メールアドレスの簡易検証
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; // これも提案
データベースのクエリで、SQL インジェクションの脆弱性があるコードを提案されたことがあります。
// Copilotの提案(危険!)
const query = `SELECT * FROM users WHERE id = ${userId}`;
// 手動で修正
const query = 'SELECT * FROM users WHERE id = ?';
db.query(query, [userId]);
Copilot の提案をそのまま使うと、セキュリティホールを作ってしまう可能性があります。必ずレビューしましょう。
React のコードで、非推奨になった componentWillMount
を使ったコードを提案されました。
// Copilotの提案(古い)
componentWillMount() {
this.loadData();
}
// 正しくはuseEffectを使う
useEffect(() => {
loadData();
}, []);
再帰関数で、終了条件が抜けていることがありました。
// 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 ヶ月使ってみて分かった、効果的な使い方:
コメントは日本語より英語の方が精度が高い
// ユーザーの年齢を計算 → 微妙な提案
// Calculate user age from birthdate → 良い提案
変数名や関数名を具体的にする
// processData() → 曖昧な処理を提案
// convertCsvToJson() → 的確な処理を提案
既存のコードパターンを学習させる 同じファイル内に似たような処理があると、それを参考に提案してくれます。
プロジェクトでの実測値:
正直なところ、人による、というのが結論です。
価値がある人:
価値が微妙な人:
GitHub Copilot は「アシスタント」として使うなら優秀です。でも「コードを書いてくれる魔法のツール」ではありません。
提案されたコードは必ずレビューが必要だし、複雑な処理は結局自分で書く必要があります。
それでも、面倒な定型処理から解放されるメリットは大きいです。特にテストコードやドキュメント生成では時間を大幅に節約できました。
無料トライアルもあるので、まずは 1 ヶ月試してみることをおすすめします。自分の開発スタイルに合うかどうかは、実際に使ってみないと分からないですから。