1
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?

高校生エンジニアがVS CodeからPyCharmに乗り換えた理由 〜GitHub Copilotとの最強タッグで実現する快適Python開発〜

Posted at

この記事では、Discord bot「Disnana」やOSSライブラリ「DictSQLite」の開発を通じて体感した、PyCharmの圧倒的な開発体験について紹介します。VS Codeユーザーの方に「PyCharm、ちょっと試してみようかな」と思ってもらえたら嬉しいです!

はじめに

こんにちは!高校生エンジニアの@harumaki4649です。普段はDiscord botのDisnanaやPythonライブラリDictSQLiteの開発をしています。

以前はVS Codeを使っていましたが、PyCharmに移行してから開発体験が劇的に向上しました。今回は「なぜPyCharmなのか?」という観点から、実際の開発現場で感じたメリットを紹介します。

学生の味方! PyCharm Professionalは学生なら無料で使えます。私も学生ライセンスを活用しています!
JetBrains 学生向けライセンス

TL;DR

PyCharm Python

# PyCharmの魅力を一言で表すと...
pycharm = {
    "IDE": "最初から全部入り",
    "リファクタリング": "プロジェクト全体を解析して安全に変更",
    "デザイン": "美しくて使いやすいUI",
    "Copilot統合": "PylintとPEP8をCopilotが認識",
    "デバッガー": "VS Codeの比じゃない",
    "データベース": "IDE内で完結する開発体験"
}

VS Codeから乗り換えた3つの理由

1. リファクタリングの精度が別次元

VS Codeでリファクタリングをしていると、こんな経験ありませんか?

  • 変数名を変更したら、一部だけ変更されて他は手動修正
  • 関数を移動したら、importが壊れる
  • 「本当に安全に変更できたのか?」という不安

PyCharmのリファクタリングはプロジェクト全体を静的解析して、安全性を保証してくれます。

実例: DictSQLiteでの大規模リファクタリング

DictSQLiteの開発中、クラス名をDictSQLiteからDictSQLiteV4に変更する必要がありました。

VS Code時代の悪夢(クリックして展開)
# 変更前
from dictsqlite import DictSQLite

class MyApp:
    def __init__(self):
        self.db = DictSQLite('app.db')

VS Codeで「DictSQLite」を「DictSQLiteV4」に置換すると...

# 変更後(壊れる!)
from dictsqlite import DictSQLite  # ← importは変わってない!

class MyApp:
    def __init__(self):
        self.db = DictSQLiteV4('app.db')  # ← NameError!

手動で修正が必要...😱

PyCharmなら:

# Shift+F6でRename
# → 自動的に全ファイルのimport、型ヒント、docstringまで更新!

複数ファイルに跨るリファクタリングも完璧!
PyCharmはプロジェクト全体を解析するため、以下も自動で修正してくれます:

  • Import文
  • 型ヒント
  • Docstring内の参照
  • テストコード内の使用箇所

リファクタリング機能の比較

機能 PyCharm VS Code
変数名変更 ✅ プロジェクト全体 ⚠️ ファイル内のみ
メソッド移動 ✅ Import自動更新 ❌ 手動修正必要
関数抽出 ✅ スコープ解析済み ⚠️ 簡易的
変更前プレビュー ✅ Diff表示あり ⚠️ 基本的になし
Undo ✅ リファクタリング単位 ⚠️ 編集単位

2. GitHub Copilot + Pylint + PEP8の最強トリオ

PyCharmの素晴らしいところは、GitHub CopilotがPylintとPEP8の警告を認識してコードを生成してくれることです。

実例: コード品質の自動維持

# GitHub Copilotに「ユーザー認証関数を作って」と依頼

# VS Codeでの生成結果
def authenticate_user(username, password):
    if username == "admin" and password == "pass":  # Pylint: 平文パスワード
        return True
    return False

# PyCharmでの生成結果(PylintとPEP8を認識!)
def authenticate_user(username: str, password: str) -> bool:
    """
    ユーザー認証を行う
    
    Args:
        username: ユーザー名
        password: パスワード(ハッシュ化済み)
        
    Returns:
        認証成功ならTrue
    """
    # TODO: 実際のハッシュ検証ロジックを実装
    hashed_password = hashlib.sha256(password.encode()).hexdigest()
    return check_password_hash(username, hashed_password)

PyCharmのインスペクション設定

  1. SettingsEditorInspections
  2. Python セクションでPylintを有効化
  3. GitHub Copilotがこれらのルールを認識してコード生成!

地味に便利: クリップボードDiff

コードをコピペする前に、クリップボードの内容と現在のコードの差分を確認できます。

# Ctrl+Shift+V でクリップボード履歴
# → 貼り付ける前にDiffを確認可能!

これ、地味すぎて誰も話題にしないけど、めちゃくちゃ便利なんですよね...

3. デザインが美しくて使いやすい

これは完全に主観ですが、PyCharmのUIデザインが本当に好きなんです。

VS Codeとの比較

項目 PyCharm VS Code
テーマ Darcula最高 拡張機能で調整必要
フォント JetBrains Mono標準 自分で設定
アイコン 統一感あり 拡張機能次第
ツールウィンドウ スッキリ配置 サイドバーが混雑

個人的にはDarculaテーマ + JetBrains Monoの組み合わせが最高です。長時間コードを見ていても目が疲れません。

# JetBrains Monoのリガチャ(合字)がキレイ
def example():
    if x >= 10 and y <= 20:  # >=, <= が見やすい
        return x != y         # != も美しい

PyCharmの圧倒的に便利な機能

デバッガーが優秀すぎる

VS Codeのデバッガーも悪くないですが、PyCharmはさらに上を行きます。

条件付きブレークポイント

# ループ内で特定条件のみ止めたい
for i in range(1000):
    result = process_data(i)  # ← ここにブレークポイント
    # 条件: i > 500 and result is None

VS Codeだと設定が面倒ですが、PyCharmなら:

  1. ブレークポイントを右クリック
  2. 条件式を入力: i > 500 and result is None
  3. 完了!

変数のウォッチが見やすい

# デバッグ中の変数表示
users = [
    {'name': 'Alice', 'age': 30},
    {'name': 'Bob', 'age': 25},
]

# PyCharmなら辞書やリストの中身が
# 階層的に展開されて見やすい!

Evaluate Expression機能
デバッグ中にAlt+F8で任意のPython式を評価できます。

# デバッグ中に実行可能
sum([user['age'] for user in users if user['age'] > 25])

データベースツールの統合

DictSQLiteやDisnanaの開発では、SQLiteとPostgreSQLを頻繁に使います。PyCharmならIDE内でデータベース開発が完結します。

実例: DictSQLite開発でのDB確認

# コードを書きながら...
db = DictSQLite('test.db')
db['key1'] = 'value1'

# IDE右側のDatabase Tools で即座に確認
# → テーブル構造、データ、クエリ実行が同じ画面で!

できること:

  • ✅ テーブル構造の可視化
  • ✅ データの直接編集
  • ✅ SQLクエリの実行とフォーマット
  • ✅ ERダイアグラムの自動生成
  • ✅ コード内のSQL文へのジャンプ
-- PyCharm内でクエリを書いて実行
SELECT key, value 
FROM main 
WHERE key LIKE 'user%'
ORDER BY key;

-- 結果を即座に表示
-- → CSVやJSONでエクスポートも可能

注意: Professional版の機能です
Database Toolsは有料版(Professional)の機能ですが、学生なら無料で使えます!

プロジェクト全体の静的解析

これがPyCharmの本当の強みです。

複数ファイルに跨る警告

# dictsqlite/main.py
class DictSQLite:
    def __init__(self, db_path: str):
        self.db_path = db_path

# dictsqlite/utils.py
from .main import DictSQLite

def create_db(path):  # ← 型ヒントがない!
    return DictSQLite(path)

# tests/test_main.py
from dictsqlite.utils import create_db

db = create_db(123)  # ← PyCharmが警告!
# Expected type 'str', got 'int' instead

VS Codeだとファイルを開いているときしかチェックされませんが、PyCharmはプロジェクト全体を常に監視しています。

ファイル分割の推奨

数千行のファイルは重くなる
PyCharmは高機能な分、1ファイルが数千行になるとVS Codeより重くなります。ただし、適切にファイルを分割していれば全く問題ありません

むしろ、そこまで長いコードを1ファイルに書くのは好ましくないので、PyCharmが「コード分割しなさい」と教えてくれていると考えています。

私の分割ルール:

# 悪い例: main.py に全部詰め込む(3000行)
class DictSQLite:
    # ... 500行
    
class AsyncDictSQLite:
    # ... 500行
    
class TableProxy:
    # ... 500行
    
# 以下、ユーティリティ関数が2000行...

# 良い例: 適切に分割
dictsqlite/
├── __init__.py
├── main.py          # DictSQLite本体(500行)
├── async_impl.py    # 非同期版(500行)
├── proxy.py         # TableProxy(300行)
└── utils/
    ├── crypto.py    # 暗号化(200行)
    ├── pickle.py    # シリアライズ(200行)
    └── validators.py # バリデーション(150行)

分割後も、PyCharmは全ファイルを解析して警告を出してくれます。これがマジで優秀!

学生に優しいPyCharm

学生なら無料でProfessional版!
私も学生ライセンスを使っています。GitHub Copilotは有料ですが、PyCharm Professional自体は完全無料です。

JetBrains 学生向けライセンス申請

私の開発環境

IDE: PyCharm Professional 2024.3
ライセンス: 学生向け無料ライセンス
AI補助: GitHub Copilot(学生割引)
テーマ: Darcula
フォント: JetBrains Mono

プラグイン:
  - GitHub Copilot
  - .ignore
  - Rainbow Brackets
  - Key Promoter X  # ショートカット学習用

GitHub Copilotも学生なら月額$4(通常$10)で使えます。PyCharm AI Assistantは残念ながら追加費用がかかるので、今は使っていません...お金が、、ね?😅

実践: Disnana開発での活用例

Discord bot開発でのデバッグ

import discord
from discord.ext import commands

bot = commands.Bot(command_prefix='!')

@bot.command()
async def ping(ctx):
    # ここにブレークポイント
    # → Discord APIの応答を確認しながらデバッグ
    latency = bot.latency * 1000
    await ctx.send(f'Pong! {latency:.2f}ms')

# PyCharmのデバッガーで非同期処理も快適にデバッグ!

データベース開発との連携

from dictsqlite import DictSQLite

# コードを書きながら...
db = DictSQLite('bot_config.db')
guilds = db.table('guilds')

# Database Tools で即座にテーブル確認
# → スキーマ変更もIDE内で完結

GitHub Copilotとの協働

# Copilotに「設定管理クラスを作って」と依頼
# → Pylint準拠のコードが生成される!

class ConfigManager:
    """Discord botの設定を管理するクラス"""
    
    def __init__(self, db_path: str = 'config.db'):
        """
        初期化
        
        Args:
            db_path: データベースファイルのパス
        """
        self.db = DictSQLite(db_path)
        self.guilds = self.db.table('guilds')
    
    def get_prefix(self, guild_id: int) -> str:
        """
        ギルドのプレフィックスを取得
        
        Args:
            guild_id: ギルドID
            
        Returns:
            プレフィックス文字列
        """
        config = self.guilds.get(str(guild_id), {})
        return config.get('prefix', '!')

型ヒント、docstring、PEP8準拠...全部自動で生成してくれます!

PyCharmのショートカット(厳選)

使い始めると覚えるショートカット:

ショートカット 機能 使用頻度
Shift×2 Search Everywhere ⭐⭐⭐⭐⭐
Ctrl+Space 補完 ⭐⭐⭐⭐⭐
Shift+F6 Rename ⭐⭐⭐⭐⭐
Ctrl+Alt+L コード整形 ⭐⭐⭐⭐⭐
Ctrl+B 定義へジャンプ ⭐⭐⭐⭐⭐
Alt+Enter Quick Fix ⭐⭐⭐⭐⭐
Ctrl+Shift+A Find Action ⭐⭐⭐⭐
Alt+F8 Evaluate Expression ⭐⭐⭐⭐
Ctrl+Shift+V クリップボード履歴 ⭐⭐⭐

Key Promoter Xプラグイン
マウスでやった操作のショートカットを教えてくれます。自然とショートカットを覚えられるのでオススメ!

VS Code vs PyCharm 最終比較

PyCharmを選ぶべき人

  • ✅ Python開発がメイン
  • ✅ 大規模プロジェクトを扱う
  • ✅ リファクタリングを頻繁に行う
  • ✅ データベース開発も行う
  • ✅ コード品質にこだわる
  • ✅ 学生(無料で使える!)

VS Codeを選ぶべき人

  • ✅ 軽量なエディタが好き
  • ✅ 複数言語を頻繁に切り替える
  • ✅ カスタマイズ性を重視
  • ✅ リモート開発がメイン

両方使うのもアリ!
私も実は軽い編集やMarkdownファイルの編集にはVS Codeを使っています。適材適所ですね!

まとめ

PyCharmに移行してから、以下が劇的に改善されました:

  1. リファクタリングの安全性 → プロジェクト全体を解析
  2. コード品質 → Pylint + PEP8をCopilotが認識
  3. 開発速度 → データベースツールでIDE内完結
  4. デバッグ効率 → 条件付きブレークポイント等が便利
  5. 見た目 → Darculaテーマが美しい

特に大規模なPythonプロジェクトを扱う場合、PyCharmの恩恵は計り知れません。DictSQLiteのような数千行のライブラリ開発では、もうVS Codeには戻れないレベルです。

今後の展望

PyCharmをさらに活用するために:

  • 🔄 AI Assistantの導入検討(お金が貯まったら...笑)
  • 🔄 カスタムインスペクションの作成
  • 🔄 プロジェクトテンプレートの整備
  • 🔄 チーム開発でのコードスタイル統一

リンク集


VS CodeからPyCharmへの移行を検討している方の参考になれば幸いです!質問があればGitHubやメールでお気軽にどうぞ!

学生の皆さん、無料でProfessional版が使えるチャンスをお見逃しなく! 🎓✨

1
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
1
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?