VS CodeをExtendScript用にセットアップする。(Mac版)

年末進行の慌ただしい中、ESTKが停止して世界が阿鼻叫喚に見舞われたことは記憶にあたらしいのですが、そんな中でさらっとESTKは32bitだからもう捨てるね(^-^)/なんて話も飛び出してwwwまあ、大変だったのですが、VisualStudio Codeのプラグインがリリースする事が発表されたのは朗報と言うべきでしょう。以前からVS Code慣れとけって言ってたのはこれに対応する為だったのですが、どれだけの人が真に受けたのでしょうかw
しかしながら、コードヘルパーの実装は見送られるようです。これはいけない、なんとかしなければって思ったのですが、世界は広いものでVS CodeでES編集する手法がありました。
こちらなのですが、TypeScript型定義ファイルを用意してTypeScript上でExtendScriptを編集してしまおうという乱暴な方たちです。

続きを読む

広告

ExtendScript用エディタ・エクステンション

あけおめどぞよろという事で平成最後となりましたが、この30年ちょいという期間はほとんどをAdobe社と歩んで来たという印象です。良いんだか悪いんだか自分でもよく分かりませんw
後半の方はひたすら自分が面白いと思う方向へ全力で傾倒して行ったような気がします。そしてしびれを切らした某社が反応せずにはいられなくなったという事なんだと思います。
2019年はいろんな意味で節目を迎える年であり、これより変革へと突き進む激動の時期へと移行します。
まず大きな変化はExtendScriptを取り巻く環境の変化から始まります。昨年末のESTKのトラブルからデベロッパー・エコシステムチームの公式の声明よりESTKの開発停止の報が流れました。それに伴い新しい編集・デバッグ環境についても情報が流れました。
そんなこんなで第1四半期は情報待ちです。みなさまにおかれましてもまずはVS Codeに慣れるように今から準備していただきたいと思います。

codeeditorv102

さて、そうこう言いましても現状ではESTK等を利用する他ありません。しかし、そこら辺を放置したままというのも片手落ちですから重い腰を上げてエクステンションを用意しました。と言いつつも以前適当に作ったやつの更新なのですがw
以下のリンクよりzxpファイルをダウンロードしてください。

https://drive.google.com/file/d/0B8WPQj-WNG_TbV9zblJGVUpPWDA/view?usp=sharing

インストールにはあなすたしーずえくすてんしょんまねーじゃーが便利かと思います。しかしながら、7z形式の圧縮ファイルですから解凍した上でExtensionsフォルダーに投入してもOKです。
キーマップはvimです。ご注意を(^o^)/

オブジェクトモデルについて

今回の投稿もAdobe Max Japan2018にて私が担当したワークショップ「使わないと損をする! Illustrator & InDesignのScript活用講座 〜あれもこれも便利になります〜」のフォーローアップエントリーとなります。
Workshopではオブジェクトモデルについて概要的な解説を行いました。今回はこのオブジェクトモデルについて少し掘り下げたいと思います。

続きを読む

[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

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

続きを読む