私が実践しているPyCharmの運用ルール

私の記事の[「最強のPython開発環境 PyCharmのすゝめ」](http://qiita.com/pashango2/items/de342abc10722ed7a569)が、「いいね」が200超えましたので、続きを書こうかと思います。

とはいえ、便利な機能はあらかた紹介済みですので、私なりのPyCharmの運用ルールを書いてみたいと思います。
これはあくまで、私個人で実践している自分ルールですので、「こんな風にやってるんだ」くらいに読んでください。

# <i class="fa fa-check-square-o" aria-hidden="true"></i> 静的解析のインスペクション項目は全てON

PyCharmはリアルタイムでコードを静的解析して、コードのダメな部分を注意してくれます。

しかし、実際にコードを書いていると「ちょっと神経質かな〜？」と思うでしょう。
インスペクション項目（検査項目）は、１つ１つ細かくON/OFFができるので、自分流にカスタマイズしていくのが普通だと思います。

ちなみに、私のPyCharmは**インスペクション項目は全てON**です。
そのうえ、**インスペクションがグリーン（警告が０の状態）になるまでコミットしない**という縛りも課しています。

![範囲を選択_031.png](https://qiita-image-store.s3.amazonaws.com/0/140075/278d92dc-74be-9685-37a2-dffcbb893342.png)


とはいえ、ある程度の規模になってくるとオールグリーンはほぼ不可能です。
どうしても警告が取れない部分は、コメントによって最小範囲でインスペクションを無効にしています。

![範囲を選択_032.png](https://qiita-image-store.s3.amazonaws.com/0/140075/1d86f02f-4a93-16b7-d886-e90f998dc6bd.png)

大事な事は、無視する警告はあれどすべて目視チェックを通してから無効にするという事です。
自分の預かり知らない警告を握りつぶすと静的解析の意味がなくなりますので。

すべてのコードを一括でインスペクト（検査）したい場合は、メニュー「Code」→「Inspect Code...」を選択して一括検査することができます。

![範囲を選択_034.png](https://qiita-image-store.s3.amazonaws.com/0/140075/d7e89dc6-804b-42ee-dbb0-21761e7a2c0a.png)


# <i class="fa fa-check-square-o" aria-hidden="true"></i> コメントは書かずともタイプヒントだけは書く

個人的な話ですが、私はコードにコメントはあまり書きません。

そもそもコメントが必要なコードを書いている時点で設計がおかしいのです。適切な命名、機能分割、簡潔なコードであればコメントはほぼ必要ないはずで、そういうコードを目指しています（書けるとは言っていない)。

コメントよりも、タイプヒントをできるだけ書くように心がけています。

![範囲を選択_033.png](https://qiita-image-store.s3.amazonaws.com/0/140075/54977847-5781-9fcb-fb8e-bdf8ea21e81f.png)

紹介記事でも書きましたが、タイプヒントと静的解析によってPythonが**動的型付け言語と静的型付け言語の美味しいとこ取り**ができるのです。

静的解析を通していないPythonコードは**安全装置を外した銃**みたいなものです、安全装置を外したままの銃を弄っていれば、いつか自分の足を撃ちぬきます。

7年ほどPythonコード書いている私でも毎日自分の足をぶち抜いています[^1]、安全装置を外したエディタでバグを出さずにコードを書ける自信がありません。
逆にいえば安全装置のついたエディタを選ぶだけで、型の制約のない強力な表現力、柔軟性、お手軽さを兼ね備えた最強言語になります。

[^1]: 実際は自分の脚をぶち抜く前に、PyCharmが警告してくれています

# <i class="fa fa-bug" aria-hidden="true"></i> 単体テストライブラリ「py.test」を使う

単体テストのライブラリは[py.test](http://pytest.org/latest-ja/)を使っています。

テストの記述が簡単だし、テンポラリディレクトリの扱いが楽なので非常に重宝しています。
PyCharmでpy.testを使うには、標準のテストランナーを変更する必要があります、「Settings...」→「Python Integrated tools」の「Default test runner」の項目を設定します。

![メニュー_038.png](https://qiita-image-store.s3.amazonaws.com/0/140075/52cd1459-0f37-5258-4c19-ae8604957d8b.png)

テスト関数を右クリックで、そのテスト関数のみをテストできるようになるので便利です。

# <i class="fa fa-play" aria-hidden="true"></i> Jupyter Notebookを積極的に使う

最近、コードは専ら[Jupyter Notebook](http://jupyter.org/)で書いています。
結果を確認しながらコードを書けるのも便利ですが、コードを書いた後にマークダウンで注釈を書けばマニュアルにもなるし、単体テストにもなる素晴らしいツールです。

PyCharmとJupyterの連携機能を使うと、Jupyter上でPyCharmの補完機能が使えるので最高に快適です。

![tAZ4YS0mO3.png](https://qiita-image-store.s3.amazonaws.com/0/140075/1f6db6ea-fe84-69d0-ba93-7ee3a0c5360b.png)

Jupyterは便利なんですが、`from IPython.display import display`とか定型文を入力するの面倒ですよね。
私の場合は「Extranal Tools」を使って定型文が入力済みのノートブックを生成しているので、作業がめちゃくちゃ楽です。

![メニュー_019.png](https://qiita-image-store.s3.amazonaws.com/0/140075/b4841a0f-5540-e535-c499-af901a1c380d.png)

やり方は[「PythonでJupyterノートブック「.ipynb」を生成する」](http://qiita.com/pashango2/items/589522868a27ccdfdc55)に書いてありますので、そちらをどうぞ。

また、Jupyterの有効な使い方は[Jupyter Notebookを単体テストやマニュアル作成ツールとして使う](http://qiita.com/pashango2/items/942e0d9cf10b9e6e96e1)にも書きましたので、そちらも参考にしてください。

# <i class="fa fa-check-square-o" aria-hidden="true"></i> TODOを忘れない

非常に当たり前の事ですが、「あとで実装する」と書いたTODOコメントを忘れてはいけません。
でも忘れちゃいますよね、にんげんだもの。

メニューの「View」→「Tool Windows」→「TODO Alt+F6」でソースに書いたTODOコメントの一覧を集約して表示してくれます。

![範囲を選択_036.png](https://qiita-image-store.s3.amazonaws.com/0/140075/05e3bff9-9d6e-9357-6ca2-98e9444be3b9.png)

JenkinsでTODO一覧を出してくれる機能がありますが、こっちはローカル環境で一覧を出してくれます。
ありがてぇ、ありがてぇ。

# <i class="fa fa-search" aria-hidden="true"></i> コードの検索は`Shift` x 2

`Shift`を2回押すと出てくる検索ウインドウが強力すぎて、他の検索機能はあまり使いません。

![メニュー_035.png](https://qiita-image-store.s3.amazonaws.com/0/140075/7ad7945e-4a75-32ea-c73c-75e7fe7d1264.png)

これだけで、ファイル、クラス、メソッド、メンバ、変数まで全部これだけで検索できます。
あと使うのは`Ctrl + Shift + F`のグレップ検索くらいですね、この２つだけでだいだい事足ります。

# <i class="fa fa-keyboard-o" aria-hidden="true"></i> よく使うショートカット

PyCharmのUIが洗練されすぎてて、使っているショートカットは多くありません。
`Ctrl + W`&`Ctrl + Shift + W`が意外と便利。

| ショートカット | 機能 |
|:-:|:-:|
| Shift x 2  | 検索  |
| Ctrl + Shift + F  | グレップ検索  |
| Ctrl + /  | コメント/アンコメント  |
| Ctrl + Q  | オブジェクトのヘルプ表示 |
| Ctrl + X  | 行の削除(非選択状態）  |
| Ctrl + G  | 指定行へ移動  |
| Ctrl + W | 選択拡大 |
| Ctrl + Shift + W | 選択縮小 |
| Ctrl + B | 定義元へジャンプ  |
| Shift + Alt + ↑↓ | 行の上下移動  |
| Shift+ Enter | どこでも改行  |

更に詳しいショートカットの記事をがありました、私は別に忙しくないので覚えれるやつだけ使ってます。

[忙しい人のためのIntelliJ IDEAショートカット集（´-`）](http://qiita.com/yoppe/items/fd03607d4d4f191d32dd)



# まとめ

私なりのPyCharmの運用ルールを書きました。
PyCharmは機能が非常に多いので人それぞれ使い方に個性が出るんじゃないかなと思います、他の人のPyCharmまたはPythonコードの運用ルールも知りたいですねー。

みんなの運用ルール記事を読みたいです!

#### Qiitaの編集画面

関係ない話ですが、Qiitaの記事編集画面で編集する度にプレビューが先頭に戻ってしまうのは、私だけなんでしょうか？
すっごい使いにくいです。