はじめに
前回はPyCharmとVS Codeの比較記事を書きましたが、今回はPyCharmを実際に使い込んでいる開発者向けに、知っておくべき実践的なテクニックをまとめました。
この記事の対象読者
- PyCharmを使っているが基本機能しか知らない方
- FastAPIやdiscord.pyなどのフレームワークで開発している方
- デバッグやテストの効率を上げたい方
検証環境
- PyCharm 2024.3 (Professional / Community)
- Python 3.11以上
- FastAPI 0.100以上
Professional版の機能には [Pro] マークを付けています。
FastAPI開発でPyCharmが活きる理由
FastAPI専用プロジェクトテンプレート [Pro]
PyCharm ProfessionalにはFastAPI専用のプロジェクトテンプレートがあります。
File > New Project > FastAPI を選ぶだけで以下が自動セットアップされます。
-
fastapiとuvicornのインストール -
main.pyの基本構造 - テスト用
.httpファイル
数秒で開発を開始できる環境が整います。
Pydanticモデルの型推論と補完
FastAPIの型ヒント機能を、PyCharmは完璧にサポートします。
from fastapi import FastAPI
from pydantic import BaseModel
class User(BaseModel):
username: str
email: str
full_name: str | None = None
app = FastAPI()
@app.post("/users/")
async def create_user(user: User):
# userと入力した瞬間に.username, .email, .full_nameが補完される
return {"username": user.username}
ネストしたJSONの深い階層まで補完が効くため、ドキュメントを見返す回数が激減します。
Endpointsウィンドウで全体を把握 [Pro]
View > Tool Windows > Endpoints でエンドポイント一覧を表示できます。
このウィンドウでは以下が可能です。
- 全エンドポイントの一覧と検索
- エンドポイントのドキュメント確認
- HTTPリクエストの自動生成と実行
- OpenAPI仕様書の確認
エンドポイント名をダブルクリックすれば、該当コードへ即座にジャンプできます。「あのエンドポイントどこに書いたっけ?」という無駄な検索時間がなくなります。
HTTPクライアントで即座にテスト
PyCharmにはHTTPクライアントが標準搭載されています。
.httpファイルを作成してリクエストを記述します。
### ユーザー作成
POST http://localhost:8000/users/
Content-Type: application/json
{
"username": "test_user",
"email": "test@example.com",
"full_name": "Test User"
}
### ユーザー取得
GET http://localhost:8000/users/1
### レスポンステスト
GET https://api.example.com/health
> {%
client.test("ステータスコード確認", function() {
client.assert(response.status === 200);
});
%}
各リクエストの▶️ボタンをクリックするだけで実行でき、レスポンスは専用ペインに表示されます。Postmanを起動する手間が完全に不要になります。
JavaScriptでテストも書けるため、CI/CDパイプラインでの自動テストにも活用できます。
デバッグの生産性を上げる
条件付きブレークポイント
ブレークポイントを右クリックして条件を設定できます。
@app.get("/users/{user_id}")
async def get_user(user_id: int):
user = await fetch_user(user_id) # ここにブレークポイント
return user
user_id == 12345 という条件を設定すれば、特定のユーザーIDのリクエストだけでデバッガが停止します。
for文の中で特定の条件だけをデバッグしたい場合に特に有効です。
インラインデバッグで変数を即座に確認
デバッグ実行中、変数の値がエディタ上に直接表示されます。
設定方法:
- Debugツールウィンドウのツールバーにある⚙️アイコンをクリック
- Show Values Inline を選択
または Settings > Build, Execution, Deployment > Debugger > Data Views から Show values inline にチェック。
複雑にネストした辞書やリストの中身を確認するために、Debugウィンドウまで視線を移す必要がなくなります。
デバッグ中に変数を書き換える
ブレークポイントで停止中、Set Value で変数を動的に変更できます。
user_permissions = ["read"] # ここで停止
# user_permissions = ["read", "write"] に変更
# 続きを実行してwrite権限がある場合の挙動を確認
コードを書き直して再実行する手間が省け、仮説検証のサイクルが劇的に速くなります。
コード品質を維持する
Local Historyで変更を復元
PyCharmはファイルの変更履歴をローカルに自動保存しています。
右クリック > Local History > Show History で、Gitにコミットしていない変更も全て復元可能です。
リファクタリング中に誤って削除した関数を復元したい時の救世主です。
Code Inspectionで品質チェック
Code > Inspect Code でプロジェクト全体のコード品質を分析できます。
検出される問題:
- 未使用のimport文
- 複雑度が高い関数
- 重複したコードブロック
- 型ヒント不備
- Pydanticモデルの設計ミス
リファクタリング候補を自動提示するため、技術的負債の早期発見に役立ちます。
開発速度を上げる小技
Speed Searchでアクション検索
Ctrl+Shift+A (Mac: Cmd+Shift+A) でアクション検索を開き、単語の頭文字だけで検索できます。
例:
| 入力 | 候補 |
|---|---|
fipa |
Find in Path |
rfr |
Refactor File or Rename |
crgc |
Create Run Configuration |
設定項目の検索にも使えるため、マウスなしで全操作が完結します。
Multiple Cursorsで一括編集
Alt+J (Mac: Ctrl+G) で同じ単語を選択し、複数カーソルで一括編集できます。
全ての出現箇所を一度に選択する場合は Ctrl+Alt+Shift+J (Mac: Ctrl+Cmd+G) を使います。
# user_nameをusernameに一括変換
user_name = "test"
print(user_name)
return user_name
# Alt+Jを3回押してuser_nameを全選択 → 一括変更
変数名の一括リネームなど、単純作業を瞬時に終わらせられます。
Distraction Free Modeで集中
View > Appearance > Enter Distraction Free Mode で全てのUIを非表示にできます。
コードレビューや複雑なアルゴリズム実装時に、視覚的なノイズを完全に排除して集中力を最大化できます。
導入すべきプラグイン
Pydantic
Pydantic公式ドキュメントで推奨されているプラグインです。
機能:
- Pydanticモデルのフィールド補完強化
- バリデーションエラーのハイライト
-
BaseModel継承クラスの検査 - フィールド名のリファクタリングサポート
FastAPI開発では必須レベルのプラグインです。
GitHub Copilot
AIによるコード補完・生成機能を提供します。
PyCharmでは現在のファイル、最近使用したファイル、プロジェクト構造というコンテキストを理解した上で提案するため、精度の高いコード生成が可能です。
Key Promoter X
マウス操作に対応するショートカットキーを通知してくれます。
自然にショートカットを覚えられるため、キーボード操作への移行がスムーズになります。
まとめ
PyCharmは基本機能だけでなく、これらの機能を組み合わせることで真価を発揮します。
FastAPI開発で特に効果的な3つ:
- Pydanticモデルの完璧な補完
- Endpointsウィンドウでの全体把握 [Pro]
- HTTPクライアントによる即座のテスト
「エディタにお金を払うなんて...」と思っていた頃の自分に、「時間を買っているんだよ」と伝えたいです。
次回はPyCharmの隠し設定やカスタマイズについて書く予定です。