Successfully reported this slideshow.

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

究極のバッチフレームワーク(予定)

  1. 1. 究極のバッチフレームワーク(予定) (株)JCGS 痴山 紘史
  2. 2. 動機 1
  3. 3. プログラマなら誰でも考えること 楽をするためならどんな 苦労も厭わない 2
  4. 4. 究極は、 ボタン一つで 全ての操作が 自動で行えるように する 3
  5. 5. そのために 徹夜でがんばる!! 4
  6. 6. いやまあ、一度作ればずっと 楽できるじゃないですか。 5
  7. 7. 事例紹介 6
  8. 8. 写真:Wikipedia 7
  9. 9. JCGS Launcher • アプリケーションランチャ • プロジェクト固有の情報を管理 – サーバー名 – 命名規則 – 環境変数 – プラグイン 8
  10. 10. JCGS Launcher Core + UI 9
  11. 11. コマンドライン版 JCGS Launcher >python JCGSLauncherCmd.py testXML maya "2011 amd64 English" 10
  12. 12. スタートアップスクリプトの実行も、 共通のインターフェースを提供 11
  13. 13. 12
  14. 14. Batch • バッチ処理用フレームワーク • オペレータをプラグインとして 用意 • XMLでオペレータの処理順序 を記述 • スタンドアロン/アプリケー ション用ツールどちらでも動作 • JCGSLauncher同様、Coreと UIが分かれている 13
  15. 15. Batch • プロセスをまたいだバッチ処 理が可能 • 3dsmax から Maya を起動 したり • 再帰的に Batch を実行する 14
  16. 16. 15
  17. 17. アプリケーションが絡んだ テストはものすごくメンドクサイ 16
  18. 18. たとえば Maya2009~2013、 Max2009~2013、 Softimage2009~2013、 32bit/64bit 全ての環境でテスト 17
  19. 19. testSuite • テストの中からアプリケーションを起動 • アプリケーション上でテストを実行 • 実行結果を元のテストに返す • 成功/失敗だけでなく、traceback 情報も返す!! →通常のテストと同じ感覚で扱える 18
  20. 20. testSuite • テストの中からアプリケーション を起動 • アプリケーション上でテストを実 行 • 実行結果を元のテストに返す • 成功/失敗だけでなく、 traceback 情報も返す!! 19
  21. 21. テストの例 import os import os from JCGS.util import testSuite import unittest import unittest class Test_test_maya_util(unittest.TestCase): class TestUtil(unittest.TestCase): def test_createWorkspace(self): def setUp(self): DCCTools.util.createWorkspace(wsPath) self.d = os.path.dirname(__file__) self.assertEqual(True, os.path.exists(wsPath)) def test_maya_util2011(self): def run(): f = os.path.join(self.d, 'test_maya_util.py') suite = unittest.TestSuite([ ret = testSuite.run_test('maya', '2011 amd64 English', f) unittest.TestLoader().loadTestsFromTestCase( self.assertEqual(True, ret) Test_test_maya_util),]) def test_maya_util2012(self): output = os.path.join(os.environ['JCGSTOOLDIR'], 'build', f = os.path.join(self.d, 'test_maya_util.py') 'testResult') ret = testSuite.run_test('maya', '2012 amd64 English', f) runner = xmlrunner.XMLTestRunner(output=output) self.assertEqual(True, ret) ret = runner.run(suite) return ret if __name__ == '__main__': run() 20
  22. 22. 以上、実例でした。 21
  23. 23. まとめ • 全て JCGS Launcher がベース • 強固な土台を作った上で派生させていくことが大事 • 自動処理システムを作ると人生が豊かになる(要出典) • ムダなことをして働きたくない!! 22
  24. 24. 働くなら、価値を生む 部分で働きましょう!! 23
  25. 25. 課題 & Future work • 作ったけど使いこなせてないよ!! – 要素技術はガンガン使ってるけど。。。 • GUIが絡むとまだまだ面倒 • DCCツールの自動処理を更に推し進める • リリースパッケージ自動テストシステム 24
  26. 26. Q&A 25

×