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

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

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

 

セミナーレポートvol.1:効率的に仕事を進めるためのルール作り

登壇された高橋氏が最初に解説されたのが、基本的な開発ルール(ガイドライン)を設定することの重要性。その目的として高橋氏は、チームの成果物はチーム全員で保守する義務があるという基本のもと、他人が書いたコードの内容を把握する時間短縮、予測できるバグの防止等を改善していくためと解説する。さらにルールは日々変化していくため、変更に関してはテンプレートで共有し、ルール化した理由については文書化してConfluence(Webベース企業向けウィキ)で共有していくことが必須とも語られた。

続いて高橋氏が語ったのは、STUで実践されている4つの開発ルールとそれぞれの特徴的な使用例等だ。

(1)PEP8準拠のコードスタイル

  • import *(ワイルドカード)を正しく使用
  • 1行は99文字まで
  • 4スペースのインデント
  • ファイルエンコーディング
  • 文字列は徹底してunicode文字列を使用

 

このほか、MayaがPython3になる日に備えたルール作成、準拠の確認にチェッカーを使用する、pyflakesを利用した静的解析についても言及した。

(2)flake8でのチェック

  • いくつかのチェッカーを統合したflake8の採用

コードレビューに関しては、特別なツールを使わずリーダーチェックのみ。連絡はSlackで行い、最終的にはホワイトボードを用いた議論も、少規模であれば可能とする。また、テンプレートに存在するその他のルールとして、はじめに呼び出される関数名はmain、終了コード成功時は0・失敗時は0以外、コマンドライン引数解析、loggingモジュールの初期化が挙げられた。

(3)エディタを選ぶ

最も長時間触れるアプリケーションといえるテキストエディタの選択は、生産性にダイレクトに結びつくため、妥協せずこだわるべきとのこと。エディタに求められる必須機能としては、PEP8対応、シンタックスハイライト(シンタックスカラーリング)、スニペット(よく使う構文)管理、マルチプラットフォーム対応、デバッガとの連動などがあるが、高橋氏が推奨するエディタは、リモートデバッグが使用できるPyCharm Professionalとのことだった。

(4)SCM(Git、Perforce等)による管理

  • 開発したスクリプト、作成したファイルは例外なくSCMで管理する
  • ブランチを切って作業環境とリリース環境を分離する
  • ブランチを切らない場合でもSCMを経由してリリース

 

SCM経由による配布のメリットは、不具合が起こった場合はユーザーが前のバージョンに戻せる、最新の機能が不要であれば更新しないという選択も可能、さらに.pycファイルの削除は別途行っている点だ。対してNAS共有の場合、不具合が発生したときには全員に影響し、ファイル配布の場合、削除をサポートできない等の問題点が指摘された。

これ以外に重要な開発ルールとして紹介されたのが、サードパーティ製モジュールの管理だ。そのシステムである、pipの使い方、virtualenvの使い方にはじまり、Maya用wheelの作り方まで、それぞれの利点を解説しながら、パッケージの用意、運用の流れ、使用時の注意点等について、具体例を示しながら解説が行われた。なお、モジュールについては選択肢が数多く存在するため、選択によるブレをおさえるため、推奨モジュールは必ずリスト化して共有すること。同時にAlias名の統一もルール化を図ることが重要とのことだった。

 

※第2回のレポートでは、Pythonで実際にツールを作っていくフローを中心に紹介していく。

 

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

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