ファイルの分別(前)

AppleScriptは映像制作で役立てようとすると、結構、使い方に「コツ」が要ります。「コツ」なんていう言い方をするのは、「基本に忠実で、理屈にかなっていても、うまく動かない時がある」からです。

例えば、5,000項目を取り扱うような場合は、市販参考書に書いてあるやりかたではダメです。市販参考書は、まさか5,000項目なんて処理するとは想定していないのですから。

例えば。

「anime_01_065_t1_」で名前が始まるファイルを抽出せよ‥‥などの時は、普通は「フィルタ参照形式」という方法で抜き出すのが基本ですが、相手が5,000項目ともなると、レインボーカーソルが回ったまま、Finderが応答しなくります。ビジー状態による、事実上のフリーズですネ。

move files of folder "MacHD:testfolder:" whose name starts with "anime_01_065_t1_" to folder "MacHD:testfolder2:"

そんな時は、無理せず、do shell script。Finderは、数千項目などの処理には「全く向かない」と考えて、他の手段で抜き出します。

do shell script "mv " & (POSIX path of "MacHD:testfolder:anime_01_065_t1_*")& " " & (POSIX path of "MacHD:testfolder2:")

なんのヒネリもないmvコマンドですが、AppleScriptと組み合わす事によって、様々なアプリケーションと連携が可能です。

でもまあ、上記の例だと、AppleScriptのうまみはほとんどない‥‥ですネ。ターミナルでやりゃ良いんだもん。

AppleScriptを使う以上、汎用性の高い、「カットごとの分別はおまかせ」的なツールに仕立て上げたいですよネ。

で‥‥、今回(と次回)のテーマは、「ファイルの分別」です。

AppleScriptは、「大量のファイルを捌くのは苦手」‥‥とされてきました。Finderの挙動が、誤解を招いてきたのかも知れません。

しかし、使い方次第で、いくらでも高速化できる事を、実践してみたいと思います。UNIXが見方ダヨ。

「レンダリングフォルダの中に、何カットものDPX連番ファイルを出力した」「カットごとにフォルダを分別するのが面倒」「After Effectsでフォルダを毎回指定するのも面倒」「さらには、関係ないPSDファイルやJPEG、QTファイルもあり、ごちゃごちゃになっている」「しかも、数は5,000ファイルを超える」

‥‥まあ、こんな事になる前に、After EffectsでESTKスクリプトを実行して、「連番ファイルの親フォルダを作る」のを自動化すれば良いんでしょうが、それはまた別の機会に。

とにかく、地獄絵図のようなフォルダの中から、「アンダーバーで区切られたカット名を持つファイルを、それぞれカットごとにフォルダを新作して分別する」ミッションを、AppleScriptにてクリアしたいと思います。


まずは、事前の確認。。。

カット名の規則は‥‥

作品名_話数またはシーン_カット番号_tテイク番号_連番.ファイル拡張子

という運用がなされているものとします。別の命名方法でも良いんですが、今回はこの命名規則を用います。

ちなみに‥‥

「いや‥‥。カット名も実は、作業者毎、個人個人バラバラで‥‥」

‥‥とか言う場合は、「運用のところ」から見つめ直しましょう。決まった法則でファイル名を運用出来てないのは、すなわち、「私(私たち)は価値ある時間を、混乱の収拾のために、無駄に費やしたいのです」と宣言しているようなもんです。最低でも「各作業セクション内では統一した規則で運用」すべきで、「自動処理以前に、まず運用の基本を形成して楽になろう」‥‥ですネ。

ワークフローを軽視せず、命名規則もキチンと規定してあれば、AppleScriptは守護天使のように、作業者・クリエーターに力を授けてくれます。

では後半へ続く。

Repeat with...は言うほど遅くない

AppleScriptは、よく「遅い」「のろい」と言われます。まあ、確かに。

でも、耐えられない遅さかと言えば、そうでもありません。フォルダ・ファイル操作関連で、4〜5,000項目をRepeat文で処理しても、数秒で終わる事もあります。

他の言語だと、数秒が2〜3秒に短縮されるわけですが、AppleScript5〜6秒で、その差3秒。‥‥キリキリと時間に余裕のない現場でも、5,000項目につき3秒前後の差ですから、特に問題にはなりません。

もちろん、1項目につき3秒の差がでてしまったら、重大な問題ですけども。

思うに、「遅い遅い」言われるのは、(前回からも言っているように)Finder絡みの処理時の印象なのでしょう。たしかに、5,000項目を「tell app "Finder"」なんかで処理すると、遅いどころか、レインボーカーソルが回って、応答がなくなります。

でも実は、Finderを避ければ、「repeat with i from 1 to 5000」なんていう地道な5,000回の処理も、高速に処理できるのです。

Finderの遅さが、AppleScriptの速度として誤認されがち‥‥なんでしょうネ。

試しに、以下のスクリプトを動かしてみましたが、5秒くらいで5,040個のファイルを作れました。「dpx」とありますが、テスト用のダミーファイルですので、偽ものです。

set folderName to do shell script "date +%y%m%d-%H%M%S" --日付&時間の文字列を生成
tell application "Finder" --Finderに命令を開始
    activate --Finderを最前面にする
    set theFolder to make new folder at desktop with properties {name:folderName} --先ほど生成した文字列を名前にしてフォルダ(=テストの作業場所)をデスクトップに作る
    open theFolder --作ったテスト用フォルダのウィンドウを開く
end tell --Finderへの命令終了

set folderPath to theFolder as Unicode text --フォルダをパス文字列に変換する
set countOfFiles to 720 --カット毎の連番ファイル数を指定
set dummyCutNames to {"dummy_02_165", "dummy_01_014", "dummy_03_254a", "dummy_02_098", "test_a_211", "test_b_022b", "anime_13_067b"} --架空のカット名を生成

repeat with dummyCut in dummyCutNames --ダミーのカットで繰り返し処理
    repeat with i from 10001 to (10000 + countOfFiles) --10001から数え始めて指定ファイル数へ繰り返し処理
        set ofa to open for access file ((folderPath & dummyCut & "_" & ((characters 2 thru -1 of (i as text))) as Unicode text) & ".dpx") with write permission --テスト用フォルダ内にカット番号+4桁連番+拡張子の名前のダミーファイルを作ってアクセス開始
        write "dummyだよん" to ofa --dummyという文字列を書き込む(テキトーな文字)
        close access ofa --ファイルへのアクセスを終了する
    end repeat --繰り返し処理終了
end repeat --繰り返し処理終了

--テストフォルダの中には、5秒前後で5,040個のファイル(自動処理のテスト用の偽ファイル)が生成された、はずです.
--このスクリプトを動かした環境は、Moutain Lion, Mac mini i7 2.6GHz, 16GBメモリです.


コメントを入れたのでちょっとごちゃごちゃしてますが、構造は特に難解ではありません。典型的なリピート文です。文の内容に関する細かい説明は、またいずれ。

720個のファイルを、7回繰り返して、生成しています。なので、5,040ファイルです。

5,040回、「ファイルアクセス」をしている割には、5秒で完結します。1ファイルのアクセス開始&終了で、「1/1000」秒という速さです。

もちろん、ファイルの中身をあれこれ弄るのであれば、こんな秒数では済みませんが、「ファイルやフォルダへのアクセス自体が、まず遅い」わけではない事は証明されます。

ちなみに、この5,040個のファイルを、Finderで「カット名ごとに分別」したら、即、レインボーカーソルです。Finderが、5,040個のリストを「バッファ的なもの」へと入れる段階で、固まるような感じです。

さらには、上記スクリプトの「5〜6秒の処理」も、「実態は怪しい」ものです。単に、Finderの表示更新が追っ付いてないだけのようにも感じられます。ホントは、もう少し高速なのかも。

とまあ、何だかFinderを「悪者扱い」ですが、Finderの本分はどちらかというと、ユーザに対する快適なUIの提供だと思いますので、大量項目を処理できない事をあまり責めるのは「大人げない」ように思います。‥‥私は責めてるんじゃなくて、「Finderの使う場面をミスると、すごく遅くなる」というノウハウを書き綴りたいわけです。

次回は、5,040個のファイルを、やはり数秒で「カット名ごとのフォルダに分別処理する」スクリプトを書こうと思います。

AppleScriptはホントに、使い方次第、‥‥なんです。





もののねだん

私は資料用として、よくスケールモデル(実機のあるプラモデル)を購入しますが、「中古プラモデルまとめ売り割引」の時に、何とも言えないワビしいキモチになる事があります。

中古プラモ10点買うと、XXパーセントさらに割引‥‥とか言う時に、「あと一点あれば、対象になる」という場面があります。

その時に、私が買うのが、値崩れ商品です。値崩れ‥‥といっても、壮絶なヤツを、最近買いました。

まず、アマゾンでの値段。

古代ロボ「ゴダイガー」1390円なり。

一方、中古プラモの通販の定番、駿河屋。

古代ロボ「ゴダイガー」15円なり。


なんて言うか。‥‥‥15円とか、異常な値段です。しかも「新品」。ちなみに私が買ったのは、14円の中古。


しみじみ‥‥と、感慨にふけります。

総額での値引き目的で買うものの、そこはやはり、プロダクトとして可哀想なので、何かしらに役立てようとキットを眺めるのですが、しばし間の後、「アイデア保留」で棚の一番奥に収納されるのです。

ちなみに、箱の側面を見ると、「300円」が定価だった事がわかります。

私はごく稀に、資料目的以外に、「幼少の思い出」ノスタルジー目的でハセガワとかの中古プラモを買いますが、そっちは逆に値段に多少のプレミアが付いているのです。200円だったものが、600円とか。(ゴダイガーを15円で売る駿河屋でネ)

でもまあ、「ゴダイガー」もある種、ノスタルジーではあります。「あの頃の日本」の。

注)駿河屋の9円とか15円とかの商品、アマゾンでよくある「配送手数料でペイする」からくりではありません。もちろん、1500円以下だと送料がかかるとかは普通にありますが、「商品1つにつき必ず配送手数料」という仕掛けは無しです。

市販書との違い

アプレットAppleScriptを手軽に使って、プロアマ問わず映像制作の一助とする‥‥という目的の「今さらのAppleScript」。昔に出版されてたAppleScript解説本と、のっけから違う事に気付いた方もいるかも知れませんネ。

私はAppleScriptの基礎を市販解説本で学んだのですが、実際の現場の運用と解説本が「相性が良いか」と聞かれれば、NOです。市販解説本はあくまで「基礎を学ぶ用途」で用いて、現場では発想を少なからず変えなければなりません。

普通、AppleScript解説本では、ファイルやフォルダを扱う時、「file "名前" of folder "名前" of folder "名前" of disk "名前"」という「AppleScriptらしい」英語的な記述を解説します。しかし、実際にそんな記述は現場では「まどろっこしくて」使ってられません。

なので、このブログでは、いきなり割愛しております。

AdobeのESTKで扱う際に、事前にAppleScriptで「:」区切りのパス、「/」区切りのパスで運用しておけば、何のストレスもなく、スッと「協同スクリプト」が書けます。

JavaScriptの文字列処理も即座に使えます。

"MacHD:Library:QuickTime:".split(':');

とか、

"/Volumes/HD2TB/Render/".split('/')[1];

など。

また、解説本では基本となるやり方、例えばFinderに対する繰り返し文とかも、やっぱり現場では使えないルーチンの代表格なので、他の方法で説明する予定です。

解説本は、100〜200くらいの項目を処理するレベルを想定していると思われますが、映像制作では、桁が1つ、2つ、変わってきますので、Finderの「Repeat with」などは「項目数が少ないと断定できる場面のみ」でないと「使っちゃ絶対にダメ」なのです。4,000個のファイルを律儀にFinder上で処理しようものなら、レインボーカーソルが回って、Finderが死にます。

う〜ん。……こうして書いてて思ったけど、「AppleScriptが使えない」とか言われる所以て、案外、「その辺」かも知れませんネ。項目が大量の時には、スッパリと方針を変えて、Finderは入り口と出口くらいにしか使わないのが「鉄則」なんですが、ちまたでは「映像制作」的なスタンスではなく一般的なスタンスで説明しますから、「使えないと誤解」されるのかも。

基本的には、Finderを通さずに(通したとしてもリスト取得時のみ)、項目の情報を文字列に格納しちゃって、(たとえ何万文字でも)文字列処理した方が「比べ物にならないほど」格段に高速ですし、リネームなどはShellに頼るに限ります。Finderで、「set name of file "パス" to "newName"」 なんてノンビリやってたら、納品に間に合わないス。

私の今までの仕事の中、責任を問われる場面で、タフに応えてきたAppleScript。

使い方次第では、雲泥の「性能差」が出てしまうのです。

フォルダの扱い

今さらAppleScriptを解説するこのカテゴリ。日常英会話ならぬ、通常業務スクリプト会話の主旨にて、映像制作に必要な要素だけをピックアップして紹介します。

ファイルとフォルダは、日々の制作に必ず現れる要素です。静止画コンテンツと違って、映像コンテンツは、とにかく扱うファイルやフォルダの量がはんぱないです。連番ファイルをあまり扱わなくなった昨今でも、「バージョン管理」のため、QTファイルをフォルダで分別する事はよくある事です。しかもそれは、手でやるととても煩雑な上に、「ミスると大変」な、神経の擦り減る(私はとくに)作業でもあります。

ある一定の法則が見いだせれば、「間違ってはいけない作業」はMac/PCの自動処理が適しています。もしフローで本格的にサポートさえすれば、カット袋のバーコードからカット名を読み出して分別する事も可能ですし、チェック表の表計算上のセルの内容からQTファイルを分別する事も充分可能です。「そんな夢みたいな事が‥‥」とか言わんで下さい‥‥。スーパーマーケットの「大量の物品を管理して捌く」ソリューションを、買い物のたびに、我々は目にしてますよネ。

話を戻して。

フォルダは基本的にはFinder管轄、つまりシステムの要素なので、AppleScriptではFinderやSystem Events、shellなどで扱う事になります。

フォルダを扱う場合は、Finder上で「folder "フォルダのパス"」で指定するのが一番簡単で親しみやすい方法です。

MacHDのLibraryのApplication Supportというフォルダは、

folder "MacHD:Library:Application Support:"

‥‥という指定方法になります。Macの場合、フォルダのパスは、「:」で階層を区切って記述し、最後は「:」で閉じるのがお約束です。

実はファイルも、基本的には同じで、

file "MacHD:sample.psd"

‥‥のように指定して扱います。「フォルダかファイルか」の違いは、末尾が「:」か否か、です。
*実はフォルダでも「末尾の : 」無しで認識されはしますが、習慣として、フォルダのMacパスは、 : で閉じる」と覚えたほうが間違いが起こりにくいですネ。

フォルダの扱い、具体的には、

tell app "Finder"

open folder "MacHD:Library:Application Support:"

end


‥‥などのようにして、何らかの命令と一緒に記述します。これを実行すると、フォルダのウィンドウがopenします。ファイルの場合は、ファイルがopenする〜つまり、担当のアプリケーションに受け継がれてファイルが開きます。psdならPhotoshop(=インストールされていれば)が起動するはずです。

ちなみに、上記のスクリプトを「そのまま実行」したら、以下のようなエラーメッセージが表示される人が多いと思います。



これは当然と言えば、当然。「起動ディスクがMacHDという名前じゃない場合」は、folder "MacHD:Library:Application Support:"というフォルダは存在しませんよネ。なので、エラーなのです。

「オレの起動ディスク名は違う」「私も」という状況に備えて、以下のように工夫する事で「誰でも」特定フォルダがopenできます。

tell application "Finder"
   
open folder ((startup disk as Unicode text) & "Library:Application Support:")
   
end tell


これは、「MacHD」なんていう固有すぎる書き方をやめて、「起動ディスク」つまり「startup disk」というFinderで予約された単語を用いる事で、「Macの普遍的なパス」を得ているのです。

startup diskは、Finder上で起動ディスクを表す言葉ですが、フォルダパスの文字ではありません。‥‥なので、startup diskをパス文字列に変換するために、as unicode textという書き方で変換します。日本語で表現すると、「ユニコードテキストとしての起動ディスク」ですネ。

人によってはas strings、as textと記述する人もいます。私は、文字コードを明確にして文字列変換したいので、あえてas unicode textという書き方を好んで使用しています。


スクリプト習得の初期段階といえど、フォルダを新作したいニーズはありますよネ。AppleScriptの場合、何かを作る際は、

make new 何か

‥‥と記述します。例えば、以下のスクリプトを実行すると、デスクトップに「いまさら作ったフォルダ」と言う名前のフォルダが自動で作成されます。

tell app "Finder"

make new folder at desktop with properties {name:"いまさら作ったフォルダ"}

end





ここでちょっと疑問。

さっきの指定方法を応用して、「make new folder "フォルダのパス"」という書き方じゃダメなの?‥‥と思う人もいるかも知れません。しかし、



‥‥となってエラーになります。

新しく何かを作る時は、「make new 新作するものの種別 at 作る場所 with ....」の段取りを踏む必要があります。

店で品物を買う時に、レジに並ぶのと同じように、Finder上で何かする時には、Finderの流儀に従う必要があります。

「めんどくせーなー」とか思うかも知れませんが、実際のお店だって、商品棚に代金を置いたからって、レジを通らず商品を外に持ち出してはヤバい、ですよネ。最低の段取りは必要です。

逆に段取りさえ覚えてしまえば、Finderは(無茶な命令でなければ)文句を言わず、何度でも処理を実行してくれます。

ちなみに‥‥ですが、「do shell script」命令を使って、AppleScript上のshellコマンドラインでフォルダ作成すると、存在しないパスでも一気に階層を掘って新作してくれます。それはまた、いつか、後ほど。


make newは、実は色んなところで使うようになります。例えばPhotoshopなら、

tell application "Adobe Photoshop CS6"
    make new document at the end with properties {name:"作ってみたドキュメント", width:1280, height:720}
    make new art layer at the end of result with properties {name:"作ってみたアートレイヤー"}
end tell


‥‥のような感じです。上記の内容は、ドキュメントを新作して、そのドキュメントにレイヤーを新作する‥‥というものです。

Photoshopは、アクションでの自動制御の他に、スクリプトからの自動制御もあるのです。今まで、アクションでしかレイヤーを自動生成した事のない人も、結構いるんじゃないでしょうか。スクリプトでは、基本的な自動制御が出来るほか、何と、アクション自体も呼び出せるので、「スクリプト+アクション」の組み合わせは、Photoshopにおいてはもはや無敵の自動処理と言っても過言ではありません。これもまた、後ほど。


Finderのフォルダの話題に戻って‥‥。フォルダを自由に作れるようになれば、夥しい量のファイルをまとめて整理する事も可能になりそう‥‥なのは、想像できるんじゃないでしょうか。



CLIPのソフトウェア

昔、「セルシス」ブランドで販売されていたComic StudioやRETASなどが、今ではCLIPブランド(と言っていいのかな?)で発売されています。

私は、特に旧RETASに関しては、従来アニメとの作業上の互換を保つあまりに、どうも「アニメを昔の型に押し込められている」と感じて、ずっと使ってきませんでした。「透過光」という言葉1つとっても、もはや、コンピュータで映像表現をおこなう際には(わたし的には)「不毛」なスタンスだと思っているからです。‥‥あ、私の想いと、現場の現実は別、ですヨ。

新しいツールを手にしたのに、なぜ、昔の型を踏襲するのか。

例えば、飛行機に爆弾を積んで「飛距離のとても長い砲弾」として扱うようなもの‥‥とでもいいましょうか。新しい能力を、「戦術」ひいては「戦略」上で見誤る、重大な「人的過失」だと思うからです。

前置きが長くなりました‥‥が、最近、CLIPブランドに衣替えし、呼び名も新しくなったペイント系ソフトウェア「CLIP STUDIO PAINT EX」を使ったのですが(もちろん、自腹よ)、‥‥何か、柔軟性が向上しているように感じました。‥‥昔の印象と違います。

昔の型を踏襲しなくても、ソフトウェアが使える。

旧来のソフトウェア群にあった「型ハメ」の匂いが少なくなって、「結構、何でも活用できそうな予感」のするソフトウェアです。絵を描く‥‥という行為に対して、マンガやアニメの「売れ線」「スタンダード」の型にハマらずに、汎用性に富んだ使い方ができるような感触です。

旧来のComic Studio由来の「日本のマンガ」スタイルのツールも継承していますが、それらはあえて「日本のマンガ」スタイルで使わなくてもよく、自由度が高いように思います。

また売り方も、大きく変わっています。資金の乏しい学生、中学生のお小遣いやりくりレベルでも、ソフトウェアが使えるようになっています。バリュー版は月額500円。「500GOLD」という単位を導入しているのは、クレジットカードを持てない層に配慮しているように思えます。これ‥‥って、大げさな物言いかも知れませんが、「Grand Strategy」視野の思考ですよネ。さらには、その上の段階も目指しているんだろうか‥‥とつい邪推してしまうような、大きな目論見を感じます。何もなしに500円なんかでソフトは提供できないと思いますし。

サイトを見ると、「色々と買わせて」みたいに感じる人もいるかもしれませんが、絵を描く道具の購入は、ただ単に消費する一方のソリューションではありません。ゲームやコレクションとは性質が異なります。道具を買ったユーザが、今度は生み出す側になるわけです。プレミアムなイラストを「get」するんじゃなくて、自分の腕を上げて「make new」するのです。

日本人てさ、生み出す国民だと思ってたけど、最近は消費する国民じゃん。チョイスして消費するのが「センス」だと思うようになって‥‥。たとえ、最初は誰かのマネで、ツールにおんぶされてても、自分の手から生み出さないとさ。iPhoneばかり弄ってても‥‥さ。


話を元に戻して。‥‥思うに、2000年頃のRETASのイメージの延長線上で、CLIPブランドを捉えるのは間違いなのかも知れません。

セルシスの名をやめ、CLIPへと移行し、衣替えした老舗。全く内情はわからないですが、何か、新しい流れを、傍目からでも感じます。数年前にどんと安く売りはじめたのは、単なる前哨戦であって‥‥、うーむ、こういう展開で来たのか‥‥と、感慨に浸りました。


ちなみに、CLIP STUDIO PAINT EXは、Photoshopには無い「絵を描くのに有用な」機能があります。ベクター系の機能はComic Studio時代から実装されてはいましたが、やはり便利だし品質にも貢献します。SketchBookProあたりが競合かも知れませんが、コミック機能(吹き出しとかネ)は何かと使い回しがきいて、これからの電子図書の流れにもハマるやも知れません。ベクターでどんどん描ける、「Photoshopでの工夫では追いつかないレベル」のツールが備わっているのが、最大の魅力でしょう。

RETASのほうはどうなんだろうか。インターフェイスを見るに、「レイアウト、原画、動画、背景、ペイント、タイムシート、etc」のようなスタンスらしきものなので、わたし的にはPaintManの作業性には惹かれるのですが、未来の2Dアニメーションにはもはや対応できない印象が強いです。

一方、CLIP STUDIO MODELER(開発中との事)とかは、六角大王の長年のファンでもある私にとって、「なるほど、こういう事だったのか」と合点が行く「終作」吸収劇を感じました。私は近年は「大人の女性」を描きたい衝動が強いですが、3Dベースの可愛い女キャラも良いんじゃないでしょうか。3Dのキャラが身近になるのは良い事です。私は描き絵、2D派ですが、3Dもどんどん発達して、土壌が豊かになるのが良いと考えております。

欧米人の価値観では考えもつかない、2D,3Dの面白さを、皆で作ろうぜ。‥‥ちゅう事ですネ。


やっぱさ、子供のうちから、ツールになれて、絵を描かないとさ。ピラミッドの土台を支えるのは、技術ですからネ。

AppleScriptの役割

ドロップレットプログラム言語などを習得する際、市販の書籍を買うと、色々な作例をステップアップに合わせて消化する筋立てが多いのですが、これは目的が「言語の習得」だからでしょう。ゆえに、自分の目的(=ここでの場合、映像制作)とはあまり一致しない内容も含まれています。

私の成そうとしているこのコンテンツ(の草稿)の目的は「アニメーション映像制作の補助」なので、フォーカスははっきりしています。逆に、映像制作目的以外では、ほとんど役にたたないかも‥‥です。

「映像制作の補助」と言っても、じゃあ、AppleScriptは何ができるの?‥‥と言われると、AppleScriptそれそのものは、画像処理が出来る訳でもないし、ムービーファイルを変換できる訳でもありません。

「それじゃあ、何もできないんじゃん」と早合点してしまいそうになりますが‥‥。

昔、中学生の頃、自主アニメを作ろう!‥‥なんて考えて、「腕に覚えのある」(といっても中学生レベルでしたが)みんなで集まってみたものの、「何も事が起きなかった」という、今ではそのまま笑い話となるような事を経験した事があります。

何がその「集い」に足りなかったか。‥‥運用を仕切る人、段取って物事を進める人、です。

AppleScriptは、PhotoshopやAfterEffects、QuickTime Player、Numbers、Compressorなど、「才能豊かな」ソフトウェアを、「段取って仕切って、物事を目的地へと導く」ものです。運用を司る何かがなければ、コンピュータの中にあるのは、単なるスタンドアロンのアプリケーションに過ぎません。逆に、ソフトウェア単体はスタンドアロンであっても、AppleScriptで橋渡しをおこなえば、ソフトウェア単体では不可能だった事が可能になります。

「受け取ったQTファイルを、変換して、リネームして、サーバにアップして、連絡メールを送りたい」

‥‥こうした一連の作業は、もしAppleScriptがなかったら、その都度、人間が手作業でPCを操作しておこなう事になるでしょう。しかし、AppleScriptの「仲立ち」「段取り」があれば、人間が作業するのは、最初にQTファイルをAppleScriptアイコンにドロップする事だけです。

AppleScriptは「切り盛り役」です。段取りの善し悪しで状況がどれほど激変するか、想像してみてください。リアルな話ですと、帰宅の時刻を数時間前後させるほどの差が生じます。AppleScriptが「段取りをうまく捌いてくれる否か」で、人間の疲労度も大きく変わります。

コンピュータを使い始めると、最初は、単体アプリケーション〜自分の扱うツールの機能ばかりに目がいきがちです。しかし、ある程度の段階に到達したら、自分の手の延長線上のツールとしてだけでなく、作業のシステムまで視野に入れて、コンピュータを用いてみたらどうでしょうか。

作品上の断片的な個人技能レベルではなく、作品全体の戦術レベルをアップさせる「第一歩」が、まずは簡単なAppleScriptによる自動化ソフトの開発なのです。

AppleScriptの使い始め方

映像制作に用いる場面に特化したAppleScript使用法は、ほとんど紹介例がない‥‥というか、少なくとも私は見た事がない。‥‥ので、作ってみる事にしたのですが、最初っからコンテンツとして書き始めると、心が折れる事は必至ですので、ブログで草稿的に書き留める事にしたのです。

で、まず何よりも、AppleScriptの始め方‥‥です。

MacOSX10.8以降を対象にして書きます。

アプリケーションフォルダの「ユーティリティ」の中に、AppleScriptのエディタ「AppleScript エディタ.app」があります。

これを起動すると、スクリプトの文章が記述できるウィンドウが1つ現れます。他のアプリと同様、ウィンドウは、2つ、3つと同時に開く事もできます。

AppleScriptエディタ


そこにスクリプトを書いて、「実行」ボタンをクリックすれば、スクリプトは動きます。Adobeのスクリプトエディタ(Expand Script Tool Kit.app〜ESTK)も同じような手順ですネ。


display dialog "Hello, World."



実行すると‥‥





普通は、すぐに実行せずに、「コンパイル」ボタンをクリックして構文チェック(スクリプトの書き方に間違いがないかチェック)してから実行します。


AdobeのESTKと違うのは、エディタに書いて実行するだけでなく、アプレットとドロップレットという「アプリケーション」形式でも書き出せる点です。

アプレットはダブルクリックすると起動して、スクリプトを実行するもの、一方ドロップレットは、ダブルクリック起動の他に、処理したいファイルやフォルダをアプリアイコンにドロップ(アイテムをアイコンに重ねて離す)事でも起動しスクリプトを実行する事ができます。

アプレット

アプレットの場合は、特定条件で動くスクリプトに適しています。例えば、特定のフォルダの中身を検索して、対話式で処理が進行するものとか。

ドロップレット

ドロップレットの場合は、任意のアイテムを処理する場面に適しています。受け取ったQTファイルを他のコーデックのQTファイルへ書き出し直すとか。アイコンのデザインがいかにも「放り込め」的なデザインへと変わってますネ。

その他、AppleScriptの便利な起動方法としては、スクリプトメニュー(Finderのメニュー内にある)から実行する方法とか、Finderのウィンドウ(要はフォルダのウィンドウですね)のツールバーに配置して実行する方法などがあります。頻繁に使うスクリプトなどは、ウィンドウのツールバーに置いとくと、すぐに使えて便利です。


*検索欄の左に、AppleScript


‥‥というわけで、使い方は、特に難しくありません。

プログラムって、何から始めればいいんだ?‥‥と初心者の頃は思います。私もそうでした。AppleScriptは、他の開発環境に比べて、極めて敷居が低く設計されています。プログラムの知識がなくても(というか、誰でも最初は知識など無い)、すっと入っていける親しみやすさがウリなのです。これはもちろん、AppleScriptを開発したAppleの開発テーマでもあったのです。

AppleScriptで、日々の些細な処理アプリから、コンポジット業務の生産性までを揺るがす大規模アプリまで、目的に応じた幅広いアプリケーションを作る事が可能です。

じゃ、なんでAppleScriptが映像制作で「定番として」活用されないか? ただ単に、機材管理の省力化であまりMacが使われない事、さらには、AppleScriptの使い方を、皆が知らないから‥‥です。

管理の都合でなく、実際の現場のニーズに合わせて機材をチョイスし、さらにはAppleScriptを始めとした各種自動化のソリューションをふんだんに盛り込めば、現場は徐々に、そして結果的には大きく改善される‥‥はずですが、まあ、そうはいかないのが世の常。

ただし、アマチュア、個人作家、小グループの映像制作集団などは、組織自体が軽量なので、相応に、軽いフットワークで柔軟に「有効と思われる要素」を取り入られると思います。

Macを使っているのなら、AppleScript。‥‥だって、すぐそこに、実質「タダ」で使える用意が整っているのですから。

Finderの自動操作

Appleユーザがここ数年増えているらしい気配を、ぽつぽつ、色々な場面で感じます。ひと昔前は、誰もがWindowsで、MacOSXなんて、CGフリークリエーターの人くらいしか使ってなかった雰囲気でしたが、学生やアマチュアでも、普通にMacを使って、自主制作をしている人が増えているようです。

じゃあ、AppleScript。

Appleに見捨てられたとか、ユーザに見限られたとか、足を半分墓石に突っ込んだまま、とか、色々ウワサされて、もう10年。なんだ、しぶといじゃないか。AppleScript。

MacOSを使うのなら、AppleScript。Adobe製品を使うなら、JavaScript。中途半端に開発環境に手を出すより、実りが速く、プログラムの洗礼も受けられるので、この2つの「Script」は人生の早期に押さえておいたほうが良いですネ。

私は、1997年に入った頃から、AppleScriptをイジりはじめました。半年前は、フォルダを作るショートカットすら知らなかった私が‥‥です。小さい頃からコンピュータをいじってないと無理だとか、工業系、理系でないとプログラムはできないとか、みんな、戸惑いからくる迷信です。文章を書く能力があれば、少なくとも、AppleScriptとJavaScriptは書けます(キッパリ)。

tell application "Finder" to display dialog "Hello world I'm your wild girl" with icon note buttons {"OK"} giving up after 6 default answer "I'm your ch ch ch ch ch cherry bomb"

ブログでは自動で改行されてますが、スクリプト文は1行のみです。これを実行すると、アイコン付きのダイログウィンドウが表示されます。そして、6秒後に自動で閉じます。

tell application "Finder"
    set cont to (current date) as Unicode text
    display dialog "現在の時間は下記の通りです." with icon note buttons {"OK"} default button 1 giving up after 10 default answer cont
end tell


上記の4行スクリプトは、時間をテキスト入力欄に自動で書き込んで、ダイアログを表示します。10秒後に自動で閉じるほか、既にボタンにフォーカスを入れてあるので、リターンキーでも閉じる事ができます。

スクリプト文そのものを、敬遠せずに、ちょっと目を通してみると、何やら、意味が分からなくもない‥‥ですネ。

今度は、デスクトップにフォルダを20個、いっきに作ります。迷惑だと思う人は、実行を控えてください。

tell application "Finder"
    repeat with i from 1 to 20
        make new folder at desktop with properties {name:"試しに作った-" & (i as text)}
    end repeat
end tell


デスクトップをみると、盛大に20個のフォルダが作成されてます。

試しにもう一度スクリプトを実行すると、エラーで止まります。既に同名のフォルダがあるので、2度目は、同じ命令文ではフォルダを作らせてもらえないのです。動作の確認が済んだら、実験で作ったフォルダは捨てちゃいましょう。

他愛のないスクリプトですが、これを習得し、発展させると、QuickTimeファイルの諸元を一覧表に書き出したり、コンポジットに必要なファイルを収拾してフォルダにまとめたり、収拾した素材から自動でAfter Effectsプロジェクト&コンポジションを作ったり、鬼のような自動処理が可能となります。

現在、AppleScriptは正直、下火もいいところで、いざ習得しようと思っても、中々文献が見つからないですよネ。そんなんじゃ、やる気も起きない。‥‥なんで、AppleScriptに恩のある私(私の参加した歴代の劇場映画は、AppleScript無しでは成立しません)が、ちょいちょい、ドキュメントを書き綴ってみようかと思います。



雑感

H.265の圧縮率は、スペックを読むに、ものスゴいですネ。

フルHD/30fpsで2Mbps、4K/30fpsで10Mbps。まあ、これは配信時の最低スペックかとは思いますが、どこまで圧縮できるんだ?‥‥という感じです。

H.265だけ見ると脅威的ですが、コーデックの歴史を見ると、段階的に技術が進歩してきた事がわかります。

よく考える事ですが、鎌倉時代に新幹線が造れなかったのは、技術の積み重ねが出来上がってなかったから‥‥ですよね。凄く、極端な言い方ですけども。資材は地球上に昔からあったはずですしネ。1900年代のある日突然、隕石に乗って、世界のテクノロジを一新する新素材がやってきたわけじゃないもんネ。

世界全域ひっくるめて、とてつもなく長い時間の中で、知識や技術、そしていくつもの発明が積み重なって、段階的に色々な事が可能になっていった‥‥のでしょう。すごく歴史の長い、夥しいマンパワーの、地道な積み重ねの成果です。

視野を小さくして、例えると‥‥

レインボー戦隊ロビンやビッグXなどのアニメを作ってた時代に、なぜ攻殻機動隊と同じ作画レベルが存在しなかったのか。技術の積み重ねと、それによるマインドセットが無かったからです。

ポール・ギルバートやイングヴェイ、エドワード・ヴァン・ヘイレンのようなギタリストが、なぜ1950年代に現れなかったのか。ストラトは既に1954年から発売してたのに?‥‥結局、同じ理由、ですネ。

個人レベルでもそうで、何で昔の自分は、あんなに迂闊な絵を描いてたのか、とか。歳喰って、技術が蓄積された状態で過去を振り返ると、過去の自分の稚拙さに、他人事のように驚いたり。決して、手の機能が劣ってたわけではなく、単に知識と技術が足りてなかっただけです。

個人規模でも、ジャンル規模でも、世界規模でも、歴史規模でも、技術の積み重ねって、土台を支える必要不可欠なものですネ。

楽器でも映像でも、おそらく工業分野でも、「もっとできるはず」「もしかしたら」という人間の冒険心・好奇心・欲求があればこそ、技術は進化していくのでしょう。


calendar

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
293031    
<< October 2017 >>

selected entries

categories

archives

profile

search this site.

others

mobile

qrcode

powered

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