連想配列を使おう

アニメ業界の撮影さんのエクスプレッションは、ifやmatchは使う一方で、連想配列はあまり活用していません。

 

this_comp‥‥という表記を最近見かけましたので(現在はthisComp)、相当古いバージョンのAfter Effectsからエクスプレッションを受け継いでいることもありましょう。

 

私もそうでしたが、言語を覚えたての頃は、結構まわりくどい書き方をしているものです。

 

JavaScriptの場合、いちいち「何らか==trueだったら」「何らかが0以外ならば」という書き方をしなくても、「何らかだったら」というシンプルな書き方でOKです。

 

AppleScriptは明確に真偽値でない場合はNGですが、JavaScriptは、false、0、""、以外は真とみなされるので、書き方が短くて済みます。

 

2020年になった今、雛形を点検して整頓してみるのも良いですヨ。

 

 

 

「何撮か?」というボールドの表示で、今でもifを見かけます。

 

ifで延々と改行して条件分けする方法は、初心の頃にはやりがちです。

 

例えば、「XY」という作品略号で、

 

XY04_012_T2 → 作品「XY」4話 Cut12 本撮テイク2

XY11_201_K1 → 作品「XY」11話 Cut201 タイミング撮テイク1

 

‥‥という書式の場合、撮影の種別を示すTやKなどを、コンポジション名から取り出す流れは、

 

compType=thisComp.name.split("_")[2].charAt(0);

 

‥‥のようになりましょう。

 

TやKやSを「何撮」という文字列に関連づけて生成する際に、ifを使うと、

 

if(compType=="T"){

typeText="本撮":

}else if(compType=="K"){

typeText="タイミング撮":

}else if(compType=="S"){

typeText="線撮":

}else if(compType=="Y"){

typeText="予告":

}

 

‥‥となりますが、何回もelse ifやtypeText=を書くのは、正直、野暮ったいです。

 

なので、連想配列の出番。

 

typeList={T:"本撮",K:"タイミング撮",S:"線撮",Y:"予告"};

 

‥‥のような連想配列を記述して、キーワードで呼び出します。

 

typeList[compType];

 

ifとelseに比べて、たったの2行で済みます。

 

typeList={Y:"予告",S:"線撮",K:"タイミング撮",T:"本撮"};

typeText=typeList[compType];

 

 

if文より明解で簡潔、メンテもしやすいです。

 

もし「何撮」かが増えた場合は、連想配列の内容を増やせば良いだけです。elseで行を増やすより、扱いやすいです。行をスクロールせずに1行で判読できます。

 

 

 

連想配列を複合化して、辞書のようなものを作ることもできます。

 

typeDic={T:{jp:"本撮",en:"FINAL",summ_jp:"本番撮影",summ_kana:"ファイナルテイク",sect:"撮影工程",cont:"撮影工程における本番素材を用いた作業"};

 

Tというキーワードで、本撮にまつわる様々な情報を引き出せます。‥‥まあ、ここまで細かくする必要はないでしょうが、一例として。

 

typeDic[T][sect];

=結果は「撮影工程」

 

typeDic[T][cont];

=結果は「撮影工程における本番素材を用いた作業」

 

‥‥まあ、ここまで凝る必要もないとは思いますが、ifしか使わない時に比べて、格段にできることが広がります。

 

 

 

連想配列‥‥という言葉の「響き」は、聴き慣れないので難しく感じますが、要は「ラベル付きのリスト項目」です。

 

無作為に箱の中に詰めるより、1つ1つにラベルを貼っておけば、判別しやすくなって取り出しやすくなりますよネ。

 

聞けば「なんだ、そんなことだったのか。日常生活でも普通にあることだね。」と納得できることなんですが、「連想配列」などと言われるとなんだか難しく感じます。

 

クラス型オブジェクト、インスタンス、インヘリタンス‥‥とか聞くと、「ちんぷんかんぷん」と敬遠しがちです。

 

しかし、「型をあらかじめ作る」「型から実体を作る」「違う型を作る際に、元の型から要素を継承する」と言われれば、「あー、あるよね、そういうやり方」と思えるわけです。

 

プログラムは、「難しげな用語」に怖気付いたら負けです。

 

難しげな用語を、どういう意味か調べれば、さほど怖くはありません。恐ろしく難解な物事だったら、こんなに世界中にプログラマなんて溢れていませんよネ。

 

アニメ制作だって同じです。「密着マルチ」「付けパン」なんて聞くと、何のことか部外者はわかりませんが、現場で用語の意味と内容を知れば、普通に扱えるようになります。

 

言葉の響きに物怖じするなかれ。

 

 

 

連想配列は、エクスプレッションでも自動処理でも使えます。

 

Adobe CCなら、PhotoshopやAfter Effects、macOSなら様々なAppで、活用可能です。

 

JavaScriptに限らず、他の言語でも、「キーとバリュー」、つまりキーワードと項目の内容を関連付けるリスト(配列)は用意されていますので、考え方さえ覚えたら、様々に応用できるようになります。

 

 



calendar

S M T W T F S
   1234
567891011
12131415161718
19202122232425
262728293031 
<< July 2020 >>

selected entries

categories

archives

profile

search this site.

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM