Illustrator Advent Calendar

Illustratorアドベントカレンダー支援にもう一つご用意しました。

皆様御存知てまりアイコンのおおもとのイラストレータファイルを公開します。

スクリーンショット 2018-12-03 12.48.20.png

一応CC BY-SA 4.0ライセンスです。ダウンロードは以下のリンクから

https://drive.google.com/open?id=1R6QMpu9-Lg_8QZ6V3qYxxstYVRqrbREx

広告

[AI]スクリプトからのエフェクト操作

今回の投稿はクリスマスシーズンに入りましたので、DTPアドベントカレンダーへの投稿として簡単にまとめてみました。
これから年末にかけて多忙な日が続くとは思いますが、皆様が健康にクリスマス〜新年を迎えられますように(^-^)/
さて、IllustratorのスクリプトではapplyEffectというメソッドが存在します。これはIllustratorの効果メニューの各項目をスクリプトから適用するためのメソッドです。これに関しては
で言及してあります。しかし、この記事にも限界があります。FXG形式の書き出しはCS6以降では廃止された為、それ以降に実装された効果に関しては引数であるXMLを組み立てるためのパラメータがわからないのです。
ということで様々な方たちが色々なところを掘り返してパラメータを調べ始めました。以降でまとめられる手法は上海のスクリプターmoluappleがまとめたものを解説したものです。

コンテンツリカバリーモードを設定する

以下のスクリプトをIllustratorで1回実行し、コンテンツリカバリーモードを設定する。(on/offトグル動作なのでもう一度実行するとリカバリモードを抜ける)
app.preferences.setBooleanPreference("aiFileFormat/enableContentRecovery", 
!app.preferences.getBooleanPreference("aiFileFormat/enableContentRecovery"));

Illustrator書類をテキストエディタで開けるようにする

効果をかけたオブジェクトを含むファイルを予め作成しておき、そのファイルをコンテンツリカバリモードで保存します。
  1. Illustrator上でファイルを開くダイアログを表示。(まだファイルを開いてはいけません)
  2. 対象ファイルを選択した状態で「Command + Option + Shift(Mac)」「Ctrl + Alt + Shift (Windows)」をプレスしたまま開くボタンをクリックする。
  3. 空のドキュメントが開いた状態で対象ファイルが開かれるのでそのまま閉じる。
以上の手順で対象ファイルと同一のフォルダに頭に「_」が付いたファイルが保存されています。
このファイルをテキストエディタで開いて以下の正規表現で検索します。
「BasicFilter\s:\n\((.+?)\)\s1\s0\s\/Filter」
以下は「角を丸くする…」の記述部分がヒットしたものです。
/BasicFilter :
(Adobe Round Corners) 1 0 /Filter ,
1 /Visible ,
(Adobe Illustrator.app) /PluginFileName ,
(\212p\202\360\212\333\202\255\202\267\202\351) /Title ,
/Dictionary : /NotRecorded ,
2 /Real (radius) ,←逆ポーランド記法で値とDict名称が書かれている。
; /Dict ;
 /Part ,
このままではapplyEffectメソッドの引数のXML構造にはなりませんので整形が必要となります。
テンプレート
'<LiveEffect name="">'
+'<Dict data="'
+' '
+' I Adobe Effect Expand Before Version 16 " />'
+'</LiveEffect>'
上記のテンプレートのDict dataの値として検索でヒットした/Dictのパラメータを成形加工します。
角を丸くする…コマンドの/Dictは以下に抜き出した1行のみです。
2 /Real (radius) 
  ↓
R radius 2(データ型を表すアルファベット1文字、データ名称、数値の3点をスペース区切りで記述する)
上記のパターンで/Dictにエントリされている全てのパラメータを整形します。
データ型は、Real→R、Integer→I、Boolean→Bの3点が存在します。
この例ではDictエントリが1点だけなので最終的なXMLは以下の様になります。
'<LiveEffect name="Adobe Round Corners">'
+'<Dict data="'
+'R radius 2 '
+'I Adobe Effect Expand Before Version 16 " />'
+'</LiveEffect>'
これを用いてスクリプトを書くと「角を丸くする…」は以下のようなスクリプトになります。
var xmlstring = '<LiveEffect name="Adobe Round Corners">'
+'<Dict data="'
+'R radius 2 '
+'I Adobe Effect Expand Before Version 16 " />'
+'</LiveEffect>';
 app.selection[0].applyEffect(xmlstring);
エフェクトを検索する作業も楽しいので是非お試し下さい。

スクリプト作りに便利なエクステンション(ADOBEMAXJAPAN2018フォローアップ2)

今回の投稿はAdobe Max Japan2018にて私が担当したワークショップ「使わないと損をする! Illustrator & InDesignのScript活用講座 〜あれもこれも便利になります〜」のフォーローアップエントリー第2弾となります。

 

エクステンションについて

スクリプトの実行や開発等で使えるエクステンションがいくつかサードパーティーから公開されています。こういったものを利用するとスクリプトの実行だけでなく、スクリプトを少し改造したい場合などに各アプリケーションを離れずに手早く編集を行うことも可能となります。

 

標準的なエクステンションのインストール

基本的にはエクステンションの入手をAdobe Exchangeサイトより入手することができます。しかし、Adobe社の公式に掲載されないサードパーティー製のエクステンションにも便利なものが多々存在します。また、Adobe Exchangeポータルサイトを利用したインストールではトラブルが生じることも多々あります。
ここでは様々なケースでのエクステンションのインストール方法をお伝えします。

Adobe Exchangeポータルサイトからの入手

exchangeportalAdobe Exchangeからの入手の良い点は全てのエクステンションがAdobe社のスタッフの手による検証が行われている点です。セキュリティ上の問題や大きな不具合が無いという部分の検証がなされており、安心して導入できます。

Adobe Exchangeへアクセスする

Webブラウザーからhttps://www.adobeexchange.com/creativecloudへアクセスします。下に示すように各アプリケーションのメニュー「ウインドウ→Exchangeでエクステンションを検索」からアクセスすることも可能です。
残念ながら、現在Exchangeサイトは英語のみの対応となっています。英語が苦手な方はグーグルのトランスレートサービス等を利用して下さい。

searchadobeexchange

※MacintoshのSafariでAdobe Exchangeサイトを読み込むとページのリロードを繰り返して正常に表示されないケースが散見されます。このような症状が出る場合、Chrome等の他のWebブラウザにてお試し下さい。

エクステンションを探す

Exchangeサイトでのナビゲートは左のアプリケーションリストで対象アプリケーションの切り替え、右上のAll(全て)/paid(有料)/free(無料)の選択とソート方法の設定及び検索ボックスです。

searcextensions

 

ソートは最新がデフォルトで選択されています。これを「名前の順」「評価の高い順」「金額(昇順/降順)」「人気順」に変えることが可能です。

sort.png

各エクステンションのアイコンか名前をクリックすると詳細ページへジャンプします。

handleglue.png

上に挙げたエクステンションはshspageさんのエクステンションです。とても便利なエクステンションですからぜひお試しください。

右上にある青いボタン(Free)がインストールボタンになっています。

agreement

クリックするとライセンスについての同意を求められます。同意(Accept and Continue)をクリックするとダウンロード処理が始まります。処理が終わるとエクステンションページに青いバックのエクステンション取得に関するメッセージが表示されます。

acquired

通常、このメッセージが表示された時点でCreative Cloud Desktopアプリケーションによりダウンロードとインストールが終了しています。対象アプリケーションが立ち上がっている場合は終了し、起動します。

 

エクステンションが表示されない場合

もし、エクステンションがメニューに表示されない場合は手動でのインストール処理が可能です。
まず、ExchangeポータルのMy Exchange(https://www.adobeexchange.com/my-exchange.html?cloud=cc)へ移動します。

インストールされているエクステンションは右側のボタンが「uninstall」となっています。その下にInstall issues?のリンクが設置されています。

このページのリンクから当該エクステンションのインストーラーをダウンロードできます。
エクステンションのインストーラーファイルは拡張子がzxpとなっています。このファイルは通常CUIから操作するアプリケーションによってインストール作業を行う必要がありますが、今回はExchangeサイトでも紹介されているAnastasiy’s Extension Managerを利用してインストールする方法をご紹介します。

スクリーンショット 2018-11-27 8.06.17

こちらのサイトにアクセスしFree Downloadをクリックするとプラットフォーム選択までスクロールします。

スクリーンショット 2018-11-27 8.08.56

MacintoshかWindowsを選択してクリックするだけでダウンロードが始まります。
ダウンロードされたExtensionManager.zipを解凍し現れたアプリケーションをダブルクリックで起動します。

em0

開いたウインドウの左上のinstallをクリックしてダウンロードしたzxpファイルを選択します。

em1

管理者権限でのインストールになるためにこの様にユーザー認証が必要になります。
正常にインストール処理が終わった場合、メッセージが表示されウインドウにエクステンションがリストアップされます。ターゲットアプリケーションを起動または再起動してエクステンションメニューを確認して下さい。

 

エクステンションについて

エクステンションはデフォルトのパネルと同様に扱うことのできる非常に便利な機能拡張ですが、ネットワーク関連の機能などの実装も可能となっています。悪意のあるものがネットワークを介して情報を抜き出すような物も作ることができますので、エクステンションやプラグインと言った物に関してはAdobe Exchange以外のものでは、信頼できる製作者の手による物以外は導入に注意が必要です。
また、実装が複雑なエクステンションになるとエクステンション起動時のサイン検証が数分に及ぶこともあります。このような状態に関してはPlayerDebugModeと呼ばれる開発者向けのモードを設定する事ができます。これはサイン処理をバイパスする為エクステンションの起動が迅速に行われます。しかしながら、前述の通りセキュリティの問題があるため、信用できるデベロッパーのエクステンションのみを利用するようにして下さい。

 

PlayerDebugModeの設定方法

Macintoshの場合
ターミナル.appから以下のコマンドを実行します。(CC2018の場合)

defaults write ~/Library/Preferences/com.adobe.CSXS.8.plist PlayerDebugMode 1

 

Windowsの場合
コマンドプロンプトから以下のコマンドを実行します。(CC2018の場合)

reg add HKEY_CURRENT_USER\SOFTWARE\Adobe\CSXS.8 /t REG_SZ /v PlayerDebugMode /d 1 /f

 

CC2019の場合は上記の「CSXS.8」を「CSXS.9」に書き換えて実行します。
CC2017の場合は「CSXS.7」に書き換えて実行します。なお、動画関連アプリケーションへの対応が必要な場合は「CSXS.7」だけでなく「CSXS.6」に書き換えて再度実行して下さい。

スクリプト関連で有用なエクステンション

ここでスクリプトの運用や開発で重宝するエクステンションをご紹介いたします。

JSX Launcher
IllustratorやPhotoshop等で登録したスクリプトをワンクリックで実行可能なスクリプトランチャー
https://www.adobeexchange.com/creativecloud.details.12096.html

Property Explorer
選択したオブジェクトのスクリプトで利用するプロパティ等をリストアップするツール
https://www.adobeexchange.com/creativecloud.details.1170.html

Code Editor
Adobe Max Japan 2018のワークショップの参加者の皆様にお配りしたサンプルの「helperTools」フォルダにインストーラーを用意しています。Anastasiy’s Extension Managerを利用してインストールして下さい。
エディタの動作はvim仕様です。エクステンションを開くと通常モードで開かれますのでそのままでは入力できません。「aキー」を一回押すと挿入モードになり入力できるようになります。「escキー」を押すと通常モードに切り替わります。操作に関してはvimの操作について検索して下さい。
エクステンション上でスクリプトを入力し、即実行できます。簡単な処理を手早く行う際やちょっとした調査などで重宝します。
第2回の投稿も環境整備関連の情報をお届けしました。こういった情報は大切な事なのですが、短いワークショップの中で解説すると、この話だけでワークショップが終わりかねませんのでこのような形でお届けすることにしました。
次回はオブジェクトモデルに関してワークショップでご説明させていただいた事について少しだけ掘り下げたいと思います。

スクリプト環境の整備(AdobeMaxJapan2018フォローアップ1)

今回の投稿はAdobe Max Japan2018にて私が担当したワークショップ「使わないと損をする! Illustrator & InDesignのScript活用講座 〜あれもこれも便利になります〜」のフォーローアップエントリーになります。
不幸な事に当日は丁度ExtendScript Toolkit CCが不具合が発生した当日で、不具合を起こしたプラットフォームがMacintoshだったこともありWindowsを利用していたためワークショップ中はわたし自身も全く気がついていませんでした。実際に参加者の皆様の中にはESTKが動作しなくて困られた方もおられたようで申し訳ない状況でした。
この不具合に関する情報収集及び対処方法等を確認する作業を優先させたためにフォローアップが後手に回ってしまいました。申し訳ございません。

しかし、結果としてはESTKの修正処理の簡素化等成果が出ていますのでスクリプトを学び、活用して行こうと考えられている方々にはこれで良かったのだろうとは思っています。
ESTKのエラーに関しては以下のAdobe フォーラムのドキュメントをご確認いただきご自身の手で修正作業を行っていただきたいと思います。

https://forums.adobe.com/docs/DOC-9621

さて、フォローアップについてです。今回のワークショップのテーマはスクリプトを活用することでどの様に日頃の作業を楽にできるかと言う部分をお見せし、体感していただくことでした。その中でスクリプトによる操作の概念なども簡単にご説明させていただきました。しかしながら、短い時間という事もあり概要的な解説になっています。この様な部分は充分に時間をかけて説明するべき部分なのです。今回から数回の連載という形で関連情報及び解説をお届けしようと思います。

続きを読む

ESTKが「#1116」エラーを吐く問題について

これは内部的に利用しているjsxファイルにオーバーフローを生じる変数が存在するために起こるものです。Adobe Deveroper Ecosystemチームが既に原因を特定していて修正手順を公開しています。しかしながら、ESTK自体が既にディスコンなので公式にパッチを当てたバージョンがリリースされるかどうかは微妙なところです。

色々と考えるのですが、とりあえず今は自動化フォーラムのhttps://forums.adobe.com/docs/DOC-9621の手順を推しておきます。
モノグサな方は以下のワンライナーをターミナルで実行して下さい。そうそう、使えるのはデフォルトのインストール位置の場合だけなのでご注意を(^-^)/

sed -i -e 's/604800000/604800/g' /Applications/Adobe ExtendScript Toolkit CC/ExtendScript Toolkit.app/Contents/SharedSupport/Required/cdic/11BTBackend.jsx

AdobeのDeveloper Ecosystemチームはわりと新しい部署なのですが、Ash Ryan率いるメンバーは非常に動きが早くスキルレベルも高いです。
色々と過渡期ではあるのですが、彼らには頑張っていただきたいと思います。

※ものかのせんせーにパッチアプリお願いしました〜(^ー^)・

追記
ものかのセンセーがパッチアプリにしてくれました!
https://m.box.com/shared_item/https%3A%2F%2Fapp.box.com%2Fs%2F71iocxhtq68n4udusorvx2623asobojl

上記から圧縮ファイルをダウンロードし、「RepairESTK-100.tbz2」右クリックメニュー[開く]選択して解凍します。
出てきた「Repair ESTK .app」を選択して右クリックメニュー[開く]を選択します。その後「ExtendScript Toolkit.app」をドラッグ&ドロップして下さい。
環境によってはシステム環境設定のセキュリティとプライバシーのダウンロードしたアプリケーションの実行許可の項目について変更が必要な場合があります。

[CEP] JSXファイルの動的読み込み

CEPエクステンションのデバッグにはCEF Clientを利用すると便利だという話は以前書きました。(https://forums.adobe.com/community/international_forums/japanese/automation/blog/2018/01/25/cefclientによるエクステンションのリモートデバッグ
このクライアントを利用すればCEP側のJavaScriptは実際にアプリケーション上で動作させ、適宜修正を加えながら再読込し動作を確認することが出来ます。しかし、この再読込出来るのはCEP側だけです。ExtendScript側は再読込することが出来ません。
日頃「アプリケーション側のロジックはエクステンションに組み込む前にESTK等を利用して完全にデバッグを済ませておく」という趣旨の事は口を酸っぱくして言い続けているわけで、わたしのブログをご覧になっている方々はきっと何度も目にしていることだと思います。しかしながら、ExtendScript側もデバッグ時に「あの部分をちょっとだけ変えてみたい…」といった事が少なからず起こってきます。そういった場合においても、いちいちアプリケーションから立ち上げ直すと言った作業を強いられながらデバッグを進めるというのも精神衛生上如何なものかとも思います。
今回はそういったケースでもExtendScript側のロジックを再読込出来る手法を解説します。

続きを読む

ExtendScript用OpenCVラッパー

基本的にNoReferenceでのご提供でございます。

こちらは/Library/Framework/に投入。
https://drive.google.com/open?id=1g9yBguBj61pEcO_tTWcNe41tkYllRc3C

以下を解凍すると必要なものが揃っています。
https://drive.google.com/open?id=1me95GKDUjn0BI3nIXsyCYkp6p8s_XPOU
全部同じ階層においておけば動作可能。Frameworkはユニバーサル構成ですから32bitのESTKからも実行可能。ExternalObjectをコールして帰ってくるのは顔のバウンズです。とりあえずjsxファイルの構成を確認してご利用ください。

恐らくOSX10.9以降なら動作するとおもわれます。