アプリの開発

アプリ開発を始める

このセクションでは、アプリ開発に関する概要と、Shotgun Pipeline Toolkit によって新しいツールの開発を簡素化する方法について説明します。

目次:

はじめに

      スターター アプリ テンプレート

      既存のアプリのフォーク

新しいアプリをスクラッチから作成する

      開発サンドボックスを作成する

      スターター アプリ リポジトリのフォークまたはダウンロード

      パラメータとフレームワークを追加する

            フレームワークの必要最小バージョン

      環境に新しいリポジトリを追加する

      テンプレート スターター アプリの構造

      開発を実行する

      テストを実行する

      最初のリリースを準備する

      プロダクション構成に変更をインストールする

既存のアプリを変更する

ドキュメント リソース

ツールキットへのインタラクティブなアクセス

はじめに

Shotgun Pipeline Toolkit は Shotgun Software が管理するアプリとエンジンのコレクションであるだけでなく、カスタムのパイプライン ツールを迅速かつ簡単に作成するためのフレームワークと開発プラットフォームも提供します。このドキュメントでは、これらの両方のケースのワークフローの概要と、アプリ開発の基本事項のいくつかについて説明します。

Shotgun Software によって維持およびリリースされるすべてのアプリとエンジンはオープンソースで github から入手できます: https://github.com/shotgunsoftware

スターター アプリ テンプレート

新しいアプリを起動するときは、https://github.com/shotgunsoftware/tk-multi-starterapp にアクセスし、スターター アプリをご覧ください。これは、新しいアプリを開発するための開始地点として設計された「空の」アプリです。このアプリを使用する場合、すべての標準的なツールキットの定型コードがあらかじめ設定されています。

既存のアプリのフォーク

Shotgun Toolkit のアプリはすべてオープン ソースなので、ソース コードを基にアプリ開発を行うことも可能です。既定のアプリの 1 つで重要な機能が不足している場合は、github でクローンを作成し、開発を続けることができます。プル リクエストを歓迎します。他のユーザにとっても有益と思われる変更を行った場合には、プル リクエストとしてフィードバックしていただくようお願いいたします。フィードバックは、アプリのメイン バージョンに反映させていただく場合があります。

不足していると感じる機能があって、もしそれがあれば役に立つと思う場合は、support@shotgunsoftware.com までご意見をお寄せください。過去に計画したことのある変更や、別のお客様が既に実行している変更に該当するものがあるかもしれません。あるいは、同じ機能を別の方法で達成できる場合もあります。お客様が現在のバージョンのアプリに加えてほしいと感じている機能は何かを教えてください。

新しいアプリをスクラッチから作成する

このセクションでは、スターター テンプレートを使用して新しいアプリを作成する方法について説明します。ユーザは github と git のワークフローに精通していることを想定していますが、ソース管理ソリューションとして git を使用していなくても、Toolkit の開発は可能です。

開発サンドボックスを作成する

実際に開発に進む前に、プロジェクト設定のクローンを作成して開発サンドボックスを用意することをお勧めします。これにより、分離された設定を使用して開発と変更を行う(そして物事を動かす)ことができます。制作現場の誰かの邪魔になることはありません。設定のクローン作成の詳細については、次のドキュメントを参照してください。

スターター アプリ リポジトリのフォークまたはダウンロード

最も簡単なスタート方法は、スターター アプリをフォークすることです。スターター アプリは、https://github.com/shotgunsoftware/tk-multi-starterapp にあります。

今はまだ git ソース コントロールを使用しない場合は、github から zip ファイルをダウンロードし、ディスク上の場所で解凍しておきます。後で簡単に git (または他のソース コントロール パッケージ)に追加することができます。git リポジトリが必要であることが分かっている場合は、自分の git サーバにスターター アプリのリポジトリをフォークし、内容をローカルの開発領域にチェック アウトすることもできます。どちらの場合も、目的はスターター アプリ コードをローカルの開発領域に取り込んで開発を開始できるようにすることです。

パラメータとフレームワークを追加する

この段階でフレームワークを使用することがわかっていたり、必要な特定のマニフェスト パラメータがある場合は、ここで準備をするのが最善です。理由は、次の手順でアプリを環境にインストールすると、システムがすべての設定をユーザに代わって自動的に実行してくれるからです。

たとえば、アプリでウィジェットと Shotgun ユーティリティ フレームワークを使用する計画の場合は、info.yml マニフェストに以下を追加します。

# the frameworks required to run this app
frameworks:
    - {"name": "tk-framework-shotgunutils", "version": "v2.x.x"}
    - {"name": "tk-framework-qtwidgets", "version": "v1.x.x"}

フレームワークの必要最小バージョン

フレームワークに必要最小バージョンがある場合は、minimum_version 設定を info.yml マニフェストで使用できます。

# the frameworks required to run this app
frameworks:
    - {"name": "tk-framework-shotgunutils", "version": "v2.x.x"}
    - {"name": "tk-framework-qtwidgets", "version": "v1.x.x", "minimum_version": "v1.5.0"}

これにより、tk-framework-qtwidgetsv1.5.0 がアプリで使用できるようになります。使用できない場合、アプリは起動時にロードされず、コンソールにエラーが出力されます。アプリが tank updates を使用して更新されると、必要最小限のバージョンを満たしていない設定済みのフレームワークはアプリとともに自動的に更新されます。

フレームワークとその効果的な利用の方法については、次のリンクを確認してください:

環境に新しいリポジトリを追加する

それでは、このアプリを Toolkit の内部で起動して実行してみましょう。

開発サンドボックスには、この特定の構成に対処するために使用できる特定の tank または tank.bat バイナリがあります。ターミナルを開き、開発サンドボックスに移動します。ローカルの tank コマンドを使用して、install_app コマンドを実行します。アプリをインストールするときは、インストール先の環境とエンジンを選択する必要があります。エンジンは実行するアプリケーションなので、tk-maya または tk-nuke になります。環境は、特定の作業領域に対して実行するツールのコレクションです。既定の設定では、ショットを処理するときの環境は shot_step と呼ばれ、アセットを処理するときの環境は asset_step と呼ばれます。

たとえば新しいアプリ コードが /Users/manne/dev/tk-multi-mynewapp にある場合は、以下を実行してインストールします。

> cd /your/development/sandbox
> ./tank install_app shot_step tk-maya /Users/manne/dev/tk-multi-mynewapp

アプリで必要となるすべてのフレームワークは、install コマンドによって自動的にインストールされます。インストールした環境で Maya を起動すると、メニューにスターター アプリが表示されます。

テンプレート スターター アプリの構造

https://github.com/shotgunsoftware/tk-multi-starterapp にあるテンプレートのスターター アプリには以下の基本構造が含まれています。

  • アプリのエントリ ポイントとメニュー登録は app.py ファイルにあります。通常は、ここでクラスを設定し、必要な初期化およびメニュー項目の登録を行います。
  • マニフェストは、このアプリをインストールするときに必要となるすべての異なる設定を定義します。再利用可能なアプリが必要で、アプリ自体に値をハード コードしたくない場合には、それらの設定がしばしば役に立ちます。
  • dialog.py には、メイン アプリ ウィンドウを生成する ロジックやイベント コールバックが含まれます。
  • dialog.py は UI フォルダに常駐する自動生成されたウィジェット ファイルをロードします。このファイルにはダイアログ UI のすべての基本レイアウトとプロパティが含まれています。
  • リソース フォルダにある dialog.ui ファイルは QT Designer ファイルで、これを開いて使用し、アプリのルック アンド フィールをすばやく設計および定義することができます。変更の後、ビルド スクリプトを実行して UI ファイルを Python コードに変換する必要があります。

開発を実行する

これで開発の準備は完了しました。便利な機能として、構成の中に 1 つまたは複数の開発項目が用意されると、Toolkit は自動的に Reload and Restart オプションを Mayaや Nuke の内部メニューに追加します。これをクリックすると、構成とコードが再ロードされ、エンジンが再起動します。これによって、繰り返しの処理が高速化されます。すなわち、Maya を一度起動し、目的のコードまたは構成の変更を実行したら、[Reload and Restart]ボタンを押して変更を有効にします。UI が画面上でアクティブになっている場合は、これらは自動的に更新されず、メニューから UI を呼び出して再起動する必要があります。

テストを実行する

コードをテストする場合は、他のユーザを Shotgun のパイプライン構成エントリに追加することで、自分の開発サンドボックスに簡単に招待できます。ユーザを追加するとすぐに、Shotgun 内のユーザのメニューに新しい項目が表示されます。

そしてユーザは、たとえば開発サンドボックスに関連付けられている[launch maya]メニュー項目をクリックすることができます。Maya が起動すると、ユーザは Maya を開発者の構成から実行し、開発者と同じように作業の進捗を確認します。注: ユーザにはアプリ コードを表示するための権限も与えたれていることを確認してください。権限がないと、アプリはロードされません。

最初のリリースを準備する

最初のリリースを作成する準備が整い、まだ作成を始めていない場合は、ソース コントロールを使用して変更がトラックされていることを確認することを推奨します。Toolkit では、git (http://git-scm.com/)をそのまま使用できるので、git を使用することを強く推奨します。このドキュメントのこれ以降の説明では、ユーザが git に精通し、マシンに git を設定していることを前提としています。

アプリ用の git リポジトリを既に設定しているかもしれません。まだ設定していない場合は、作成して最初のコミットをプッシュしてください。Toolkit の git リポジトリには単一のアプリだけが含まれている必要があります。基本的に git リポジトリは、元のコードを取得したスターター アプリ リポジトリと同じ構造でなければなりません。

開発の実行時、Toolkit は、環境ファイル内の次のような開発ロケーションを使用します。

location: {path: /Users/manne/dev/tk-multi-mynewapp, type: dev}

これは、Toolkit に対して、指定された場所のディスクから直接アプリコードをロードするよう指示します。これは、コードを常に変更したい開発に最適です。

リリースされたソフトウェアの場合、安全かつ簡単にアップグレードできるようにバージョン管理を行います。Toolkit のすべてのビルトイン アプリはツールキットの App Store を使用してアップデートとリリースをトラックし、次のようなロケーション タグを持ちます:

location: {name: tk-multi-setframerange, type: app_store, version: v0.1.7}

これにより、Toolkit (たとえば、tank updates コマンド)がいつ更新が利用可能になるかを確認し、設定を非常に安全な方法で更新および維持することができます。新しいバージョンが利用可能になると、Toolkit はコードを自動的にダウンロードし、ディスク上のローカルの「アプリ キャッシュ」に配置し、ユーザがコードにアクセスできるようにします。

社内ツールの場合、同じ原則を使用できますが、Toolkit の App Store を使用する代わりに git でタグを使用できます。そこで、新しいアプリに対して、新しいタグを作成し、git にプッシュします。スターター アプリのクローンを作成した場合は、既にタグが定義されています。タグを作成するときは、セマンティック バージョニングを使用することを強く推奨します(http://semver.org を参照)。Toolkit はこれらのバージョン番号を使用して最新のバージョンを判断し、規約 vX.Y.Z に従ってアプリのバージョン管理は Toolkit との互換性を維持します。

プロダクション構成に変更をインストールする

git で最初のタグ(例: v1.0.0)を作成したら、これをプロダクション構成に安全にインストールできます。これで、プロダクション構成を使用している全員が新しいツールにアクセスできます。アプリのインストールには install app コマンドを使用します。install コマンドを実行するときは、プライマリのプロダクション構成に属する tank コマンドを使用します。

> cd /your/primary/tank/configuration
> ./tank install_app shot_step tk-maya user@remotehost:/path_to/tk-multi-mynewapp.git

これは git の最新バージョンのタグを見つけ、環境にインストールします。インストールが完了したら tank updates を実行します。新しいタグが作成されると、アップグレードするかを尋ねるメッセージが表示されます。これで、ワークフローは公式の App Store アプリで実行されるワークフローと同じになります。

既存のアプリを変更する

場合によっては、空のスターター テンプレートから開始するのではなく、Shotgun Software の標準アプリの 1 つなど、既存のアプリにマイナー機能を追加する必要があります。変更したバージョンのアプリを使用する場合は通常、ソース アプリを「トラック」し、定期的に変更とバグ修正を取得します。

このような開発を行うときは、親コードを選択し、変更のいくつかを適用して、パイプラインにリリースします。リリースはアプリの基本バージョンと適用されたローカルの変更で効果的に構成されます。既存のバージョン番号にバージョン サフィックスを追加することを推奨します。これは Toolkit とシームレスに連携し、動作も比較的単純です。次のワークフローに実行の手順を示します。

  • 親アプリに対して自分専用のリポジトリを作成します。フォークを使用してすべての git タグを取得します。最新のタグは v0.2.12 と呼ばれ、マスター ブランチは基本的にこのタグのコンテンツと同じです。
  • 変更を適用し、マスターにコミットします。これで、基本的に v0.2.12 に変更が加えられた状態になります。これをプロダクション構成にリリースするときは、タグを作成する必要があります。タグに v0.2.12.1 という名前を付け、コードが v0.2.12 に基づいていること、そしてこれが最初のリリースであることを示します。
  • 誰かが変更部分にバグを見つけました。バグを修正し、タグを付けて v0.2.12.2 をリリースします。
  • 親リポジトリではいくつかの重要なバグ修正がリリースされました。それらをリポジトリにプル ダウンします。親リポジトリで発生したリリースにより、現在の最新のタグは v0.2.15 です。変更をマスターとマージして、テストします。これで、基本的に親アプリ v0.2.15 が変更にマージされました。v0.2.15.1 にタグを付けます。

上記のタグ付けスキームにより、Toolkit の更新が正しく実行され、フォーク内の各タグがどのコードに基づいているかを簡単に確認できるようになります。

ドキュメント リソース

このドキュメントの他にも、アプリ開発に役立ついくつかのドキュメント リソースが用意されています。

Core API リファレンス ドキュメントには、システム内のコンテキスト、ファイル システム テンプレート、および他のコア メカニズムを操作するために使用するすべてのコマンドが含まれています。

プラットフォーム API リファレンス ドキュメントは、エンジンとアプリの基本クラスについて説明し、アプリ コードを作成するときに使用できるオプションについての詳細情報が含まれています。

アプリ構成リファレンス ドキュメントでは、アプリのパラメータと構成をセット アップするさまざまな方法の概要を説明します。

Toolkit へのインタラクティブなアクセス

Toolkit をよりインタラクティブな方法で操作したい場合は、Toolkit エンジンを起動した後、たとえば Nuke や Maya などの内部で簡単に必要な操作を実行し、Shotgun メニューを表示させることができます。現在実行中のエンジンを経由して、すべての Toolkit にアクセスすることができます。エンジンは、Maya や Nuke の Python シェルの内部で次のように取得できます。

import sgtk
engine = sgtk.platform.current_engine()

エンジンにアクセスできるようになると、現在ロードされている環境のその他のほとんどの部分を見ることができます。

# A Shotgun API instance
engine.shotgun

# The toolkit API instance
engine.sgtk

# The current work area object
engine.context

# All the apps currently loaded
engine.apps

tank コマンドにアクセスできるコマンド シェルでは、tank shell コマンドを実行してインタラクティブな Python セッションを簡単に開くことができます。Toolkit はシステムのできるだけ多くの部分を起動しようとしますが、コンテキストによっては、取得できるアクセサのセットは限られる場合があります。

> tank Shot ABC123 shell

Welcome to the Shotgun Pipeline Toolkit!
For documentation, see https://support.shotgunsoftware.com
Will search across all Shotgun Projects.
- Found Shot ABC123 (Project 'Chasing the Light')
- Using configuration 'Primary' and Core v0.14.214
- Setting the Context to Shot ABC123.
- Started Shell Engine version v0.3.4
- Environment: /mnt/software/tank/chasing_v2/config/env/shot.yml.
- Running command shell...

----------------------------------------------------------------------
Command: Shell
----------------------------------------------------------------------

Welcome to Shotgun Pipeline Toolkit Python!
2.7.1 (r271:86832, Jul 31 2011, 19:30:53) 
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)]
Running on darwin

- A tk API handle is available via the tk variable
- A Shotgun API handle is available via the shotgun variable
- Your current context is stored in the context variable
- The shell engine can be accessed via the engine variable
>>>

Toolkit シェルは、クイック デバッグの実行や数行のスクリプトの実行に便利です。

Big Buck Bunny - 画像提供: (CC) Blender Foundation (www.blender.org)
フォローする

0 コメント

ログインしてコメントを残してください。