SlideShare a Scribd company logo
1 of 26
Download to read offline
究極のバッチフレームワーク(予定)



     (株)JCGS 痴山 紘史
動機


     1
プログラマなら誰でも考えること




 楽をするためならどんな
   苦労も厭わない




                  2
究極は、
 ボタン一つで
 全ての操作が
自動で行えるように
   する

            3
そのために
徹夜でがんばる!!


            4
いやまあ、一度作ればずっと
楽できるじゃないですか。




                5
事例紹介


       6
写真:Wikipedia
               7
JCGS Launcher



    • アプリケーションランチャ
    • プロジェクト固有の情報を管理
      –   サーバー名
      –   命名規則
      –   環境変数
      –   プラグイン




                   8
JCGS Launcher




 Core + UI
                9
コマンドライン版 JCGS Launcher




>python JCGSLauncherCmd.py testXML maya "2011 amd64 English"

                                                               10
スタートアップスクリプトの実行も、
 共通のインターフェースを提供



                11
12
Batch


• バッチ処理用フレームワーク
• オペレータをプラグインとして
  用意
• XMLでオペレータの処理順序
  を記述
• スタンドアロン/アプリケー
  ション用ツールどちらでも動作
• JCGSLauncher同様、Coreと
  UIが分かれている



                    13
Batch




• プロセスをまたいだバッチ処
  理が可能
• 3dsmax から Maya を起動
  したり
• 再帰的に Batch を実行する




                   14
15
アプリケーションが絡んだ
テストはものすごくメンドクサイ



                  16
たとえば


  Maya2009~2013、
   Max2009~2013、
Softimage2009~2013、
      32bit/64bit
   全ての環境でテスト

                      17
testSuite



• テストの中からアプリケーションを起動
• アプリケーション上でテストを実行
• 実行結果を元のテストに返す
• 成功/失敗だけでなく、traceback 情報も返す!!
 →通常のテストと同じ感覚で扱える




                            18
testSuite


• テストの中からアプリケーション
  を起動
• アプリケーション上でテストを実
  行
• 実行結果を元のテストに返す
• 成功/失敗だけでなく、
  traceback 情報も返す!!




                      19
テストの例
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
以上、実例でした。



            21
まとめ




•   全て JCGS Launcher がベース
•   強固な土台を作った上で派生させていくことが大事
•   自動処理システムを作ると人生が豊かになる(要出典)
•   ムダなことをして働きたくない!!




                                22
働くなら、価値を生む
部分で働きましょう!!


              23
課題 & Future work



• 作ったけど使いこなせてないよ!!
 – 要素技術はガンガン使ってるけど。。。
• GUIが絡むとまだまだ面倒
• DCCツールの自動処理を更に推し進める
• リリースパッケージ自動テストシステム



                         24
Q&A


      25

More Related Content

What's hot

関西Php勉強会のlimeの話
関西Php勉強会のlimeの話関西Php勉強会のlimeの話
関西Php勉強会のlimeの話
Hisateru Tanaka
 
System4 comment
System4 commentSystem4 comment
System4 comment
Jun Chiba
 
人と猫との関係に関する行動生理学的研究-接触インタラクションによる健康効果の発現とそのメカニズム
人と猫との関係に関する行動生理学的研究-接触インタラクションによる健康効果の発現とそのメカニズム人と猫との関係に関する行動生理学的研究-接触インタラクションによる健康効果の発現とそのメカニズム
人と猫との関係に関する行動生理学的研究-接触インタラクションによる健康効果の発現とそのメカニズム
Takumi Nagasawa
 

What's hot (20)

Laravel勉強会(データベーステスト編)
Laravel勉強会(データベーステスト編)Laravel勉強会(データベーステスト編)
Laravel勉強会(データベーステスト編)
 
関西Php勉強会のlimeの話
関西Php勉強会のlimeの話関西Php勉強会のlimeの話
関西Php勉強会のlimeの話
 
プロキシーを使ってテストを楽にする
プロキシーを使ってテストを楽にするプロキシーを使ってテストを楽にする
プロキシーを使ってテストを楽にする
 
テーマ「最適化」
テーマ「最適化」テーマ「最適化」
テーマ「最適化」
 
131026 kansai-emacs
131026 kansai-emacs131026 kansai-emacs
131026 kansai-emacs
 
HeapStats(Java解析ツールバトル)
HeapStats(Java解析ツールバトル)HeapStats(Java解析ツールバトル)
HeapStats(Java解析ツールバトル)
 
Java をクラッシュさせて遊んでみよう!
Java をクラッシュさせて遊んでみよう!Java をクラッシュさせて遊んでみよう!
Java をクラッシュさせて遊んでみよう!
 
Shellを書こう 02 shUnit2を使おう
Shellを書こう 02 shUnit2を使おうShellを書こう 02 shUnit2を使おう
Shellを書こう 02 shUnit2を使おう
 
Heap statsfx analyzer
Heap statsfx analyzerHeap statsfx analyzer
Heap statsfx analyzer
 
Shellを書こう 01 Shellcheckを使おう
Shellを書こう 01 Shellcheckを使おうShellを書こう 01 Shellcheckを使おう
Shellを書こう 01 Shellcheckを使おう
 
Synthesijer hls 20150116
Synthesijer hls 20150116Synthesijer hls 20150116
Synthesijer hls 20150116
 
CakePHP2.0 performance, upgrade shell
CakePHP2.0 performance, upgrade shellCakePHP2.0 performance, upgrade shell
CakePHP2.0 performance, upgrade shell
 
Unowned / Weak References with Closure
Unowned / Weak References with ClosureUnowned / Weak References with Closure
Unowned / Weak References with Closure
 
Tour of distributed systems 2 - Cassandra
Tour of distributed systems 2 - CassandraTour of distributed systems 2 - Cassandra
Tour of distributed systems 2 - Cassandra
 
Chef
ChefChef
Chef
 
Lisp Tutorial for Pythonista : Day 4
Lisp Tutorial for Pythonista : Day 4Lisp Tutorial for Pythonista : Day 4
Lisp Tutorial for Pythonista : Day 4
 
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめTypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
 
System4 comment
System4 commentSystem4 comment
System4 comment
 
人と猫との関係に関する行動生理学的研究-接触インタラクションによる健康効果の発現とそのメカニズム
人と猫との関係に関する行動生理学的研究-接触インタラクションによる健康効果の発現とそのメカニズム人と猫との関係に関する行動生理学的研究-接触インタラクションによる健康効果の発現とそのメカニズム
人と猫との関係に関する行動生理学的研究-接触インタラクションによる健康効果の発現とそのメカニズム
 
Ansibleを失敗しながら学ぶ その1
Ansibleを失敗しながら学ぶ その1Ansibleを失敗しながら学ぶ その1
Ansibleを失敗しながら学ぶ その1
 

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

あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)
Takuya Tsuchida
 
Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦
urasandesu
 
システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料
Masatoshi Itoh
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
 

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

TDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaTDD勉強会キックオフ for Java
TDD勉強会キックオフ for Java
 
StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践
 
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識
 
ソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テストソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テスト
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
 
実践で学ぶ、効率的な自動テストスクリプトのメンテナンス
実践で学ぶ、効率的な自動テストスクリプトのメンテナンス実践で学ぶ、効率的な自動テストスクリプトのメンテナンス
実践で学ぶ、効率的な自動テストスクリプトのメンテナンス
 
CLRH_120414_WFTDD
CLRH_120414_WFTDDCLRH_120414_WFTDD
CLRH_120414_WFTDD
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)
 
Jenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCIJenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCI
 
Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦
 
【CEDEC2018】CPUを使い切れ! Entity Component System(通称ECS) が切り開く新しいプログラミング
【CEDEC2018】CPUを使い切れ! Entity Component System(通称ECS) が切り開く新しいプログラミング【CEDEC2018】CPUを使い切れ! Entity Component System(通称ECS) が切り開く新しいプログラミング
【CEDEC2018】CPUを使い切れ! Entity Component System(通称ECS) が切り開く新しいプログラミング
 
システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料
 
Processing
ProcessingProcessing
Processing
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テストはこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テスト
 
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
 
Visual studio de debug
Visual studio de debugVisual studio de debug
Visual studio de debug
 
xUTP Chapter19 (2). Testcase Class
xUTP Chapter19 (2). Testcase ClassxUTP Chapter19 (2). Testcase Class
xUTP Chapter19 (2). Testcase Class
 
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
 
Azure Machine Learning Services 概要 - 2019年2月版
Azure Machine Learning Services 概要 - 2019年2月版Azure Machine Learning Services 概要 - 2019年2月版
Azure Machine Learning Services 概要 - 2019年2月版
 

More from fumoto kazuhiro

Kansai cedec 2015_fumoto
Kansai cedec 2015_fumotoKansai cedec 2015_fumoto
Kansai cedec 2015_fumoto
fumoto kazuhiro
 
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例
fumoto kazuhiro
 
Cedec taラウンドテーブル プログラマー編
Cedec taラウンドテーブル プログラマー編Cedec taラウンドテーブル プログラマー編
Cedec taラウンドテーブル プログラマー編
fumoto kazuhiro
 
Gdc2011報告会用 fumotokz
Gdc2011報告会用 fumotokzGdc2011報告会用 fumotokz
Gdc2011報告会用 fumotokz
fumoto kazuhiro
 
物理ベースの絵作りのための基礎
物理ベースの絵作りのための基礎物理ベースの絵作りのための基礎
物理ベースの絵作りのための基礎
fumoto kazuhiro
 
海外Ta事情から日本のta像について考えてみる
海外Ta事情から日本のta像について考えてみる海外Ta事情から日本のta像について考えてみる
海外Ta事情から日本のta像について考えてみる
fumoto kazuhiro
 
Dccツール別リアルタイムシェーダの環境
Dccツール別リアルタイムシェーダの環境Dccツール別リアルタイムシェーダの環境
Dccツール別リアルタイムシェーダの環境
fumoto kazuhiro
 
データフロー自動化ツールの考え方
データフロー自動化ツールの考え方データフロー自動化ツールの考え方
データフロー自動化ツールの考え方
fumoto kazuhiro
 
第一回テクニカルアーティストラウンドテーブル・セッション
第一回テクニカルアーティストラウンドテーブル・セッション第一回テクニカルアーティストラウンドテーブル・セッション
第一回テクニカルアーティストラウンドテーブル・セッション
fumoto kazuhiro
 

More from fumoto kazuhiro (18)

Tabc vol3 テクニカルアーティストを始めるにあたって
Tabc vol3 テクニカルアーティストを始めるにあたってTabc vol3 テクニカルアーティストを始めるにあたって
Tabc vol3 テクニカルアーティストを始めるにあたって
 
Kansai cedec 2015_fumoto
Kansai cedec 2015_fumotoKansai cedec 2015_fumoto
Kansai cedec 2015_fumoto
 
シェーダ体系の話
シェーダ体系の話シェーダ体系の話
シェーダ体系の話
 
TAと歩くGDC2013報告会資料
TAと歩くGDC2013報告会資料TAと歩くGDC2013報告会資料
TAと歩くGDC2013報告会資料
 
Siggraph2012報告会前半
Siggraph2012報告会前半Siggraph2012報告会前半
Siggraph2012報告会前半
 
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例
 
そうだRTシェーダをはじめよう
そうだRTシェーダをはじめようそうだRTシェーダをはじめよう
そうだRTシェーダをはじめよう
 
SA09 Realtime education
SA09 Realtime educationSA09 Realtime education
SA09 Realtime education
 
Taと歩くgdc2012 up
Taと歩くgdc2012 upTaと歩くgdc2012 up
Taと歩くgdc2012 up
 
Tart2011 Art sub
Tart2011 Art subTart2011 Art sub
Tart2011 Art sub
 
Cedec taラウンドテーブル プログラマー編
Cedec taラウンドテーブル プログラマー編Cedec taラウンドテーブル プログラマー編
Cedec taラウンドテーブル プログラマー編
 
Gdc2011報告会用 fumotokz
Gdc2011報告会用 fumotokzGdc2011報告会用 fumotokz
Gdc2011報告会用 fumotokz
 
Cyma gdc2011 tabc報告
Cyma gdc2011 tabc報告Cyma gdc2011 tabc報告
Cyma gdc2011 tabc報告
 
物理ベースの絵作りのための基礎
物理ベースの絵作りのための基礎物理ベースの絵作りのための基礎
物理ベースの絵作りのための基礎
 
海外Ta事情から日本のta像について考えてみる
海外Ta事情から日本のta像について考えてみる海外Ta事情から日本のta像について考えてみる
海外Ta事情から日本のta像について考えてみる
 
Dccツール別リアルタイムシェーダの環境
Dccツール別リアルタイムシェーダの環境Dccツール別リアルタイムシェーダの環境
Dccツール別リアルタイムシェーダの環境
 
データフロー自動化ツールの考え方
データフロー自動化ツールの考え方データフロー自動化ツールの考え方
データフロー自動化ツールの考え方
 
第一回テクニカルアーティストラウンドテーブル・セッション
第一回テクニカルアーティストラウンドテーブル・セッション第一回テクニカルアーティストラウンドテーブル・セッション
第一回テクニカルアーティストラウンドテーブル・セッション
 

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