チュートリアル / 読んで触ってよくわかる!Mayaを使いこなす為のAtoZ
第83回:「SHOTGUNを考える」その1 エンティティってなんですか?
- Flow Production Tracking
- Maya
- コラム
- チュートリアル
- 学生・初心者
Mayaのコラムといいつつ、Fusionなどその時々で触っているツールについてコラムを書いています。最近はSHOTGUNを触ることが増えたので、数回に分けてSHOTGUNを始めるうえで抑えるべきポイントについてご紹介していきます。
さて、そのSHOTGUNですが、ウェブブラウザでSHOTGUNの画面を見ると、エクセルのような感じです。
見た目は似ていても、入力しようとするとちょっとエクセルとは感じが違うことに気づきます。
例えば次の図のように、エクセルは好きなセルに値を入れられます。SHOTGUNはまず横方向の行を一つの単位として追加して、その後セル(フィールドと呼びます)に値を入力します。赤い矢印が示している項目を追加してから、各フィールドを編集します。
さてこの動作、そういうものだと思って使うこともできますが、なんでこうなの?というところが腑に落ちないと、SHOTGUNの使い勝手が向上しません。ああ、ポジティブに言うと「なぜこういう入力方法になるのかわかれば、あなたもバッチリSHOTGUNマスター!」ということです:)
SHOTGUNはなんとなく使い始めることもできます。とりあえず触って「SHOTGUNってこういうものかー」と感じながら慣れていってもモチロン大丈夫。
さらに一歩進んで、内部のデータ構造を知ってみましょう!テクニカルで難しそうに思えますが…実はそれほど難しい話ではなく、初めに知っておくとSHOTGUNが手に取るようにわかるようになります。
実際に私がお客様にSHOTGUNをご紹介するときは、まず「SHOTGUNのデータ構造を知る」ところから始めることをおススメしています。
データ構造を知るということはどういうことかというと、端的に言えば「エンティティってなによ?」ということです。SHOTGUNを始めるといたるところで「エンティティ」という言葉がでてきます。
この「エンティティ」が何なのかを、今回はご紹介していきます。
結局エンティティってなに?
よくある説明としては「SHOTGUNのエンティティとは管理の基本単位です」という感じの説明があります。その通りなのですが、もうちょっとかみ砕いて理解する必要があります。
エクセルでは好きに値や文字を入力できます。SHOTGUNでは入力できるデータの種類が決まっています。「Asset」「Task」といったデータを作成できます。
Mayaのコラムなので、いっそのことMayaで例えてしまいましょう。
データ作成とは「Asset」というノードや「Task」というノードを作る感じです。Assetというノードには次のアトリビュートがあるとします。
Assetノード
・ノードのID
・名前
・進捗具合はどうか
Taskというノードにも「ノードのID」「名前」などAssetと同じアトリビュートもあるでしょうし、さらにTaskならではのアトリビュートとして「作業担当者」「作業終了にOKを出す人」などあるかもしれません。
Mayaでいうノードの様に、SHOTGUNで決められているデータの種類を「エンティティ」と呼びます。
実際にSHOTGUNでAssetノードを、いや、Assetエンティティを作るところを見ていきましょう。
次の図では、SHOTGUNでAssetsというページを表示している状態です。このページに表示される「Add Asset」ボタンを押すと、作成のための入力フォームが表示されます。
必要な情報を入れて作成すると「Assetエンティティ」が作成されます。
作成すると次の図のように新しい行が追加されます。こうしてAssetエンティティが追加されます。
入力フォームに書いた情報はそのままフィールドに記録されます。何も書いていなかったところは空だったり、デフォルトの値が入ったりします。
IDは固有の、重複しないものが自動的に割り当てられます。あとで変えることはできません。
エンティティの種類も後で変えることはできません。これも重要なポイントです。
Mayaでいえば、MeshノードをLambertノードに変えることは出来ません。なぜなら集まっているアトリビュートが違ったり、ノードの取り扱い方法が異なるからです。Meshは頂点を編集できますが、Lambertマテリアルノードには頂点がないので、扱い方が変わります。
SHOTGUNでも全く同じで、エンティティのフィールドはエンティティごとに異なりますし、エンティティの取り扱い方法も異なるため変換できません。
ここまでで重要なことは、
「エンティティにはノードの種類の様に、決められた種類がある。」
「エンティティには決められたフィールド(アトリビュートっぽいもの)がある」
ということです。
エンティティがいる場所はどこ?
これがSHOTGUNを理解するうえで最も重要なトピックスです。
一般的なSHOTGUNの説明では、エンティティの階層はこんな感じで紹介されます。(しかもよくある図は映像向けなので、ここではゲーム向けに絞ったもので説明していきます。)
SHOTGUNのサイトを作成すると、URLが作られます。
このサイトの中にプロジェクトを複数作ることが出来ます。
プロジェクト内に、AssetエンティティやTaskエンティティを作って、制作管理していきます。
先ほどAssetエンティティを作りました。さて、このAssetエンティティはどこに記録されているか?上の図で考えれば、プロジェクト内に置かれます。
が、しかし、実はサイト以下に平たく存在します。つまりこんな感じです。
(実際にはリレーショナルデータベースであるためこうではないですが、考え方としてはこんな風に想像してもらえると完璧です!)
実はAssetやTaskだけでなく、Projectもエンティティです。どんなエンティティでも、どこで作ってもサイト以下に平たく存在します。
それぞれのエンティティには様々なフィールドがあります。AssetエンティティやTaskエンティティには「Project」というフィールドがあります。このフィールドには、属しているプロジェクトが記録されます。リンクを点線で表すとこんな感じです。(ここではAssetエンティティのみProjectフィールドを示していますが、実際にはTaskエンティティにもあります。)
これを、プロジェクトごとにまとめて表示するとこうなります。
TaskエンティティにはLinkというフィールドがあり、どのAssetエンティティと連携するかが設定できます。例えば上図のSignalプロジェクトのタスクは、次のようにSvenアセットにLink設定されています。
SHOTGUNのエンティティには、こういういうリンク情報がいたるところに存在します。TaskエンティティからAssetエンティティを見つけることもできますし、逆にAssetエンティティから、属しているTaskエンティティを見つけることもできます。
Project → Asset → Task という順序として、TaskエンティティとAssetエンティティのLinkをもとに階層を作ると、最終的にはこういう見た目になります。
まあ、よく考えてみるとMayaと同じですね。シーン内にノードがバラっと存在していますが、Outlinerとかでは整然と表示されます。同じノードも別のエディターでは表示のされ方が変わります。
同じことがSHOTGUNでも起きます。同じエンティティでも、表示の仕方を変えれば別の見え方をしますし、同じエンティティを別々のところから照会・編集することもできるわけです。
ここで重要なこととしては、
「エンティティはサイト内に平たく存在している」
ということです。
みんな同じエンティティを見ている
例えば次のSHOTGUNのページでは、Taskエンティティを二つの場所で表示しています。
左側は「自分にアサイン」されているものを表示しています。
右側は「自分にアサイン」されていて、ステータスが「進行中」のものを表示しています。
「Mayaからタスクを足すテスト」という謎のTaskエンティティが、どちらにも表示されることがわかります。これは、同じ一つのTaskエンティティを表示しています。各フィールドの値は、同じTaskエンティティから得て、表示しています。そう、表示しているだけです。
どちらかでフィールドを編集すると、大元のエンティティが変更されますので、もう一方の表示も更新されます。
エンティティは平たく存在しているので、目的のエンティティを見つけるためにフィルタリングします。SHOTGUNを使う時に行うことの大部分は、この「エンティティのフィルタリング」とも言えます。実際プロジェクトに表示される「Assets」「Tasks」「Shots」などの各ページは、それぞれのエンティティのみ表示するように設定されている(フィルタされている)ページです。
ここで重要なこととしては、エンティティはバラっと存在しているので、欲しい情報を得るには
「フィルタリングすることで、表示したいエンティティを選ぶ」
ということです。
「データ」と「見え方・まとめ方」が分かれている利点
エクセルなどの表計算系のデータは、セルの場所とデータが一致するようになっています。
一方でSHOTGUNのようなデータベースでは、データがどこかに記録されてはいますが、表示する場所は都度決まるように設計されます。
同じデータでもデザイナー向けやディレクター、プロデューサー向けで表示を変えられるため、いくらでもページを作成できます。
例えば次の例では、プロジェクト内のAssetエンティティのレポートを表示しています。
左側には各ステータスの集計グラフを表示しています。Finalが増えればプロジェクトは順調ということです。
右側にはAssetエンティティを表示しています。
Assetエンティティのリストで直接フィールドを編集することもできますし、誰かデザイナーがステータスを変えれば、すぐに反映されます。特別な集計をしなくても、このページを再度開けば、今この瞬間のレポートが生成されるわけです。
進捗状況を知るのにわざわざデータを集めるのは大変です時間もかかります。ミスも起きるかもしれません。
データから引っ張ってきてレポートを作るようにすれば、リアルタイムにプロジェクトの様子を知ることが出来ます。しかも正確に。
まとめ
いかがでしたでしょうか?今回ご紹介したようエンティティが何なのかがわかれば、SHOTGUNは手に取るようにわかるようになります。
SHOTGUNを使う上で今回ご紹介した心得をまとめますと、こんな感じになります。
・エンティティは決め打ちのデータ!(ノードのようなもの)
・エンティティはサイト内に平たく存在している!
・プロジェクトのページに入れば、そのプロジェクトのエンティティのみ表示される(フィルタされている)状態となる!
・Assetsなどのページに行くと、そのエンティティのみ表示するようにフィルタされる!
・欲しいエンティティをリストアップするフィルタを考えることが、SHOTGUNを使う基本となる!
フィルタでは、名前、日付、担当者、関連しているエンティティ?例えばTaskエンティティをフィルタするのに、LinkしているAssetエンティティが自分にアサインされている物のみ表示するなど。結構高度なことが出来ます。そのためにSHOTGUNは使いやすく柔軟で高速なフィルタを用意しています!
SHOTGUNではいきなりデータがすべて表示されることなく、クリックするまで詳細は出てこないなど、段階に応じたデータへのアクセスができます。不要な情報を出さないようにすることで、ネットワークアクセスを速くするだけでなく、情報の理解も無駄なく行えます。
また、エンティティやフィールドはログインしている人の権限設定により、誰が何を変更できるかも管理できますので、安全に管理することもできます。こういうところもデータベースならではですね。
次回もSHOTGUNを使い始めて陥る戸惑いについて解説していきたいと思います!