PyCharm 活用術 (ja)

私は誰?

_images/face.png

http://about.me/shimizukawa, @shimizukawa

  • Sphinxの共同メンテナ (2011-)
  • PyCon JP 2014 会計
  • 共著書・共訳書
    • Sphinxをはじめよう (2013)
    • Pythonプロフェッショナルプログラミング (2012)
    • エキスパートPythonプログラミング (2010)

PyConJP2014に出したProposal

  1. Sphinx ドキュメント翻訳と処理の自動化
  2. Sphinx のautodocで自動ドキュメンテーションしよう
  3. Sphinx の開発で心がけていること
  4. PyCharm活用術
  5. IPython Notebookを使ったコーディング

自分もプロポーザル出したよ

  1. Sphinxドキュメント翻訳と処理の自動化
  2. Sphinxのautodocで自動ドキュメンテーションしよう
  3. Sphinxの開発で心がけていること
  4. PyCharm活用術 => 採用
  5. IPython Notebookを使ったコーディング

Sphinxじゃない!

PyCharmを仕事でもSphinx開発でも、ものすごく使っているので、今日は、PyCharmのすばらしさを伝える発表をします!

お題

Agenda

  • PyCharmで出来ること
  • PyCharmで出来ないこと
  • PyCharmを導入した感想
  • プロジェクトの設定
  • エディタの機能
  • デバッグ
  • テスト実行
  • Vagrant連携
  • リモートデプロイ
  • リモートデバッグ
  • データベース連携

PyCharmで出来ること1

  • Python2.x, 3.x 対応
  • syntaxチェック, ハイライト
  • 強力なコード補完
  • virtualenvの作成と管理
  • パッケージのインストール, アップデート
  • VCS連携
  • デバッグ実行

PyCharmで出来ること2

  • ssh越しのリモートデバッグ
  • Databaseの操作
  • Vagrant起動, ssh接続サポート
  • Python,JS同時デバッグ
  • 統合されたコンソール操作
  • キーバインディングの変更(標準, Emacs, Vim, ...)
  • 豊富なプラグイン(標準プラグイン, 3rd-partyプラグイン)
  • プラグイン作成(Javaで作る)

PyCharmで出来ないこと

  • プラグイン作成(Javaを勉強したら出来る)
  • 単一ファイルを編集するエディタ代わりの使用
  • reSTの3スペースインデント(4スペースになっちゃう)

PyCharmを導入した感想

  • 環境構築を色々頑張らなくてもよい
  • ほとんどの人にデフォルトである程度の利便性を提供できる
  • 多くの機能が提供され、難が無い。ただし、ものすごい機能も無い。
  • トリッキーな使い方をするとはまる。
  • Geek的な面白みは無い
  • Vimから乗り換えても良いと感じた(乗り換えた)
  • 慣れないJSでのsyntax check, 補完等がうれしい
  • メモリをたくさん消費する
  • 機能が多くて全てを使いこなすのは大変かも

ライセンス

  • Pro版(企業)
  • Pro版(個人)
  • Pro版(アカデミック)
  • Pro版(OSS)
  • コミュニティー版

http://www.jetbrains.com/pycharm/buy/license-matrix.jsp

Pro版(企業)

  • $199/1人
  • 利用者付替問わず
  • 商用・非商用利用可能
  • 1年間バージョンアップ無料

Pro版(個人)

  • $99/本人
  • 本人以外利用不可
  • 商用・非商用利用可能
  • 1年間バージョンアップ無料

コミュニティー版

  • 無料
  • Apache2ライセンス
  • 機能が少ない: Web開発サポート(Django, Flask, Google App Engine, Pyramid, web2py), 言語サポート(JavaScript, CoffeeScript, TypeScript, CSS, Cython, Template languages, ...), リモート開発サポート, データベースサポート

DEMO

最初にプロジェクト設定が必要

  • 使用するPythonインタプリタの選択
  • ソースコードディレクトリの選択(source, template, ignore)
  • リポジトリ連携(hg, git, ...)
  • ちょっとしたカスタマイズ: pep8警告, プラグイン追加

エディタの機能

  • 認識できるフォーマット: py, html, css, js, Djangoテンプレート, reST, ...
  • 編集差分表示
  • 変数補完
  • 属性補完
  • import補完
  • 関数引数の表示
  • リネーム
  • コード整形

デバッグ

  • プログラムの実行設定
  • ブレークポイント
  • ステップ実行
  • 条件付きブレーク
  • 依存ライブラリのソースコード閲覧、ブレーク
  • Djangoテンプレートでブレーク

テスト実行

  • テストの実行設定
  • pytestやnoseのランナーが入っている
  • 失敗したテストだけ再実行
  • カバレッジ表示

Vagrant連携

  • Vagrantの起動・リロード・終了
  • Vagrantfileを利用したssh接続

リモートデプロイ

  • ソースコードの同期
  • 上書き同期の注意点
    • リポジトリ更新で変更されたファイルが同期されないことがある
    • リポジトリ更新で削除されたファイルがリモートから消えない

リモートデバッグ

  • VMへはsshで接続して開発を行うためGUIエディタ,IDEが利用できない場合が多い
  • ssh越しでのデバッグの効率が良くない

PyCharmでは

  • リモートインタプリタを設定
  • プログラムの実行設定
  • リモート実行
  • リモート環境の依存ライブラリのソースコード閲覧, break

データベース連携

  • DBに接続してスキーマやデータの表示
  • データの編集
  • リモートサーバーのDBにも接続
  • ER図の表示
  • SQLコンソールでSQL文を書く