MayaのスクリプトをPyCharmで楽にコーディングする

#  MayaのスクリプトをPyCharmで楽にコーディングする
先日開催された [ゲーム開発者向けPythonセミナー](http://www.comtec.daikin.co.jp/DC/event/2018python-sem.html) にてPycharmを使ったデバッグ方法が紹介されていたので実際の導入方法を紹介します。

[PyCharm](https://www.jetbrains.com/pycharm/)を初めて起動する方はカスタマイズ設定終了後、このような画面から始まると思います。
右下のConfigureからSettingsに飛べますのでご参考までに
![01.png](https://qiita-image-store.s3.amazonaws.com/0/255056/65d26bea-76e1-ef51-64ec-eaa9a2677b2c.png)

## 目的
- 自動補完機能を使ったスムーズなコーディング
- 強力なリファクタリング
- デバッグ機能の活用

## 環境
- Windows10 Home
- Maya2017 Update5
- PyCharm 2018.1.4 Professional

# 自動補完の導入手順
## Maya devkitの導入
 [Maya devkid](https://www.autodesk.com/developer-network/platform-technologies/maya?_ga=2.262410188.1545203767.1528385161-1391943415.1528385161)とはざっくり言ってしまうとMayaのプラグイン開発やコーディングに必要な機能を盛り込んだものです。
[こちら](https://www.autodesk.com/developer-network/platform-technologies/maya?_ga=2.262410188.1545203767.1528385161-1391943415.1528385161)から自分の環境に合わせたdevkitをダウンロードしましょう。
Maya2017 Update5のdevkitが見当たらないのですがUpdate4で今のところ問題なく動いています。(不具合があるかもしれませんのでご注意を)

解凍したフォルダ内の `Maya2017u4_DEVKIT_Windows\devkitBase\devkit` をMayaのインストールディレクトリにコピーします。
デフォルトであれば `C:\Program Files\Autodesk\Maya2017` です。

## MayaCharmのインストール
[MayaCharm](https://plugins.jetbrains.com/plugin/8218-mayacharm)とはPyCharmのプラグインです。
PyCharm ProfessionalであればMayaに接続してデバッグ機能を利用することが可能です。
Settings --> Plugins --> Browse RepositoriesからMayaCharmを検索し、インストールします。
![02.png](https://qiita-image-store.s3.amazonaws.com/0/255056/405a262c-8d4a-997d-96ff-227da9abd8cb.png)

## PyCharmのProject Interpreter Paths追加
Settiings --> Project Interpreter
![03.png](https://qiita-image-store.s3.amazonaws.com/0/255056/5853e75e-21e8-2e11-2555-e445b28e0c87.png)

Project Interpreterの右側の歯車マークからAddでAdd Python Interpreterのウィンドウを開き、Project Interpreterを `C:\Program Files\Autodesk\Maya2017\bin\mayapy.exe` に設定
![04.png](https://qiita-image-store.s3.amazonaws.com/0/255056/2c42e19d-a6b6-73d7-e9ad-add153306dd1.png)

![05.png](https://qiita-image-store.s3.amazonaws.com/0/255056/2604ee44-6ea3-4ba2-783b-a55665c9a128.png)
Python packaging toolsがないと怒られたらそのすぐ右のInstall packaging toolsからインストールしてください。

先ほどの歯車マークからShow All --> 右側アイコン群の上から五番目のアイコンでInterpreter Pathウィンドウを開きます。
![06.png](https://qiita-image-store.s3.amazonaws.com/0/255056/61ca4971-f05f-aa39-622b-5e191764685e.png)

`C:\Program Files\Autodesk\Maya2017\Python\Lib\site-packages` をリムーブし、
`C:\Program Files\Autodesk\Maya2017\devkit\other\pymel\extras\completion\py` を追加します。
![07.png](https://qiita-image-store.s3.amazonaws.com/0/255056/97a83acc-ef37-a947-bff9-5b0babfd6a81.png)

新規プロジェクトを作成し、適当な.pyファイルを追加します。
![08.png](https://qiita-image-store.s3.amazonaws.com/0/255056/36eee62b-cc5f-4276-b3c9-4478a6c20e55.png)

これで補完が効くようになっているはずです。
![09.png](https://qiita-image-store.s3.amazonaws.com/0/255056/376305d4-4bcb-d8a8-f569-c0fff2f5c05d.png)

# リファクタリング
Typoであったり何かしらの問題点を波線で示してくれます。
波線にマウスポインタをかざして Alt + Enter で問題の解決策が提示されるので積極的に活用しましょう。

リファクタリングに関してはmayaに限らずpython全般に言えることなので省略。
ページ最下部に参考にさせて頂いているリンクを貼ります。

# デバッグ機能
MayaとPyCharmを接続する設定を行います。
## PyCharm側
### デバッグするファイルの設定
Run --> Edit Configuration
右上の + からMayaCharm Debugger
![10.png](https://qiita-image-store.s3.amazonaws.com/0/255056/37fdd20b-d573-2383-7482-b4b5e7fde721.png)

Fileをデバッグするスクリプトファイルに合わせます。

## Maya側
### コネクションするポート設定
デフォルトの設定であれば `C:\Users\ユーザ名\Documents\maya\2017\scripts\userSetup.py` に下記コマンドを追加します。

```python:userSetup.py
import maya.cmds as cmds
if not cmds.commandPort(':4434', q=True):
    cmds.commandPort(n=':4434') 
```
このコマンドはPyCharmの Settings -->MayaCharm で確認できます。
ホスト名やポート番号を変更した場合はこちらからコピペで
![11.png](https://qiita-image-store.s3.amazonaws.com/0/255056/5d25c0d1-0eac-f9ff-aaf1-ed41eb8151c3.png)

## デバッグ
左上のプルダウンメニューから先ほど作成したConfigurationを選択します。
![12.png](https://qiita-image-store.s3.amazonaws.com/0/255056/1c9569ac-047d-3ed9-3f9f-4f79a7811ab6.png)

RunでMayaへコマンドが送信されます。
![13.png](https://qiita-image-store.s3.amazonaws.com/0/255056/769d07fb-eeec-c96e-8e38-58c546861a89.png)

Debugを実行した場合このようにブレイクポイントを貼ることもできるのでprintfデバッグやコメントアウトデバッグが格段に減り、作業を効率化することができます。
![14.png](https://qiita-image-store.s3.amazonaws.com/0/255056/a5bd0728-02a4-2db1-fc8b-5cf1d4db840e.png)

# Gitを使ったバージョン管理
おまけ
VCS --> Enable Version Control Integration
![15.png](https://qiita-image-store.s3.amazonaws.com/0/255056/98ddea49-7f4e-d453-92fc-81061da443e4.png)

Gitがない人は右下で怒られるのでそこからインストールします。
![16.png](https://qiita-image-store.s3.amazonaws.com/0/255056/7b740f04-1a56-a826-9583-6fe2ab610480.png)

インストールが完了したらConfigure
Path to Git executableを先ほどインストールしたgit.exeに
デフォルトは `C:\Program Files\Git\bin\git.exe`
![17.png](https://qiita-image-store.s3.amazonaws.com/0/255056/acb21c0b-a86c-2613-a638-ef7990e1904c.png)

VCS からCloneやCommitなどのGit操作ができます。
![18.png](https://qiita-image-store.s3.amazonaws.com/0/255056/d4d5831d-ce76-4d62-0a08-2d8b270d9979.png)

# 参考リンク
[最強のPython開発環境 PyCharmのすゝめ](https://qiita.com/pashango2/items/de342abc10722ed7a569)
[最強のPython統合開発環境PyCharm](https://qiita.com/yamionp/items/f88d50da8d6b548fc44c)
[MayaとPyCharmと、時々、VIM（前編）](https://qiita.com/sporty/items/c012905ccd51cae75dfe)
[MayaとPyCharmと、時々、VIM（後編）](https://qiita.com/sporty/items/ad627f36e6b85d89c88d)
[print デバッグから卒業したい人のための Maya+PyCharm](https://qiita.com/sho7noka/items/a1e64812c896bd0da00d)