このサイトはダイキン工業が運営するCG業界ニュースサイトです。
お問い合わせ

セミナーレポート 「Pythonを中心としたチーム開発(実践編)」3

2016年11月10日、ダイキン工業株式会社主催によるセミナー「Pythonを中心としたチーム開発(実践編)」が開催された。講演を行ったのは、『ベーシックなルール作りが、プロジェクト遂行を向上させる』にてお話をうかがった、スマイルテクノロジーユナイテッド株式会社代表取締役社長、高橋涼氏。セミナーでは、効率的に仕事を進めていくうえで不可欠な“ルールづくり”について、高橋氏率いるスマイルテクノロジーユナイテッド株式会社(以下STU)が実践している、Pythonを用いたテクニカルかつ具体的な手法を例に紹介していただいた。本セミナーの内容について、3回に分けてレポートしていく。

今回は、第3回イベントレポートをお送りする

 

セミナーレポートvol.3:エラーの追跡、PySideによるGUIの作成などについて

ウェイトの実装がほぼ完了したところで、話題はエラーの追跡へ。どんなツールでも出力されるログは、エラーの原因を突き止めるヒントになるという基本のもと、Pythonでは一番簡単に出力する方法はprintだが、実行ログを表示すべきではないこと。さらに、ログによる追跡でもエラーの原因が突き止められない場合、PyCharmのデバッガを使いリモートデバッグすることにより、簡単に問題をクリアできるノウハウが紹介された。また、Pythonでは「例外」はクラスとして認識されることから、必ずexceptでEweptionを指定し、予測できる例外については専用の例外クラスを作ることで、混乱しない例外処理が可能になることが語られた。

デバッガ等を駆使することで、必要なツールの機能を実装できたところで、話題はPySideでGUIを作成するノウハウに。今回はQtDesignerでのデザインが紹介され、Widgetをベースにダイアログが作成されましたが、PySideでGUIを作成する際のルールと、Pythonスクリプトへの組み込みに関するルールは以下の通り。

PySideでGUIを作成する際のルール

  • こだわりはじめるときりがないため色・幅・高さ等はデフォルトでいく
  • ウィジェットは3段階以上禁止
  • 「HELP」「Set Default」「実行ボタン」を実装する
  • リスト/テーブルでは~Widgetの使用禁止

Pythonスクリプトへの組み込みに関するルール

  • QtDesignerでのシグナル設定は禁止
  • ロジックはすべてPythonに集約
  • uiファイルの直接読み込み禁止

これらのルールの確立に加え、シグナルについてはドキュメントを確認してからコードを実装することが推奨された。

シグナルに設定したコールバック関数について高橋氏は、コールバック内ですべての処理を記述してしまう傾向があるため、GUIに依存してバッチ処理が行えない場合があることを指摘。そこで実行関数とは分離させ、コールバックは最低限におさえることが大切と語った。

続いて、Pythonの特徴的な機能であるデコレータを設定。デコレータとは、関数を受け取って関数を返す機能で、関数を実行した際に選択状況が変わってしまう場合、これを設定することで簡単に維持することができる。以上でツールが完成し、ユーザーにはMayaプロセス内でグローバルに管理されるMELコマンドの形でリリースしていく。

次の話題として取り上げられたのがテストコード。機能追加・不具合修正の動作確認は非常に重要だが、これを手作業で確認することは面倒なうえに人件費の面でも高コストになるため、自動化が必須。簡単な自動テストとして紹介されたのが、ライブラリの関数のテストに最適で、作るのも実行するのも容易なdoctestと、より複雑なテストコードを作成する仕組みであるunittest。また、高橋氏率いるSTU株式会社でも、テストコードはすべてJenkinsに組み込むことで自動的に実行させるよう設定されているそうだ。

最後にまとめとして、これらのガイドラインは現在も日々変わっていること忘れないことが伝えられた。さらに、「すべての要素のバランスが大切」と高橋氏は言う。ルールの徹底には痛みがともなううえ、ボトムアップで広めることは難しいことから、トップが覚悟をもって組織を変えていくことが必要との言葉で、セミナーを締めくくった。

終了後、参加者にその内容について感想を聞いたところ、以下のような声があった。

「普段、自分が使っていないエディタの話を聞けたこと。そして、GUIの組み込みのノウハウを知ることができてとても参考になりました」(webデザイナー)

「この分野のプロフェッショナルたちの仕事の一端を見られて、とても興味深かったです」(TV関係者)

「Pythonのツール開発に関するノウハウに加え、今後、必ず取り入れていかなければならない知識を数多く得られたと思います」(モーションビルダーツール開発者)

 

「Pythonを中心としたチーム開発(実践編)」1

「Pythonを中心としたチーム開発(実践編)」2