InDesign:CEP版 jsx Timer できました

どうもどうも。
泥作業オペレーターの悲願である
あっちこっちに同じ文字を何度も何度も何度も何度も打つ時
とか、あるじゃないですか。まあ、あるんですよ。

昔、それで寝言をゆったんですわ。
「選択しただけで定型の文字が入るようにならんかなあ」って。
そしたら、まんまと叶ってしまったやつです。

当時、感激した記事です。さすがに記事内リンクはすべて切れていますw
InDesign:あっちこっちに同じ文字を何度も何度も何度も何度も打つ時にすごい便利なやつ

ご尽力いただいた信長と秀吉のお二人には、ほんとにもう。オッス、オラ家康!
今でも足を向けて寝られないので毎晩北枕です。

ところがで、CS6当時のエクステンションはFlashベースだもんで、
CC2015の頃にはもう使えなくなっちまいまして。
(実際にはCC2019を作業メインにする旨の号令が出るまでずっとCS6を使ってたので寿命はもう少しあった)
以来、作業効率が落ちるわ、キーボードは同じキーばっかり打つからへたっていくわ、散々。
「あたらしいのつくってー」とかおねだりできるほどツラのカワも厚くなくて(ということに)。

いつか、そのうち、自分でなんとか、とかぼんやり思って幾年、
何度かCEP系の案件をいただいたことで、ちょっとずつ自由が利くようになり、
ようやく動くものを作ることができましたのでお披露目です。
今のところ、ただ見せびらかしてるだけで公開の有無は未定。

当時の物に対して、ガワ(UI)だけはなるべく忠実に模倣しました。
中身は、できればまるっともらってラクしたかったんですがスキル的に無理だったため一新しました。

どんなもんなのか

端的には、
一点時間おきにスクリプトを実行するもの。現状、テキストにしか使えなくしてあります。

詳しくは、
一定時間おきにInDesign上の選択範囲をみて、前回と違っていたらスクリプトを実行するものです。
操作してないのに延々スクリプトが走るということはありません。
あのー、お鍋の吹きこぼれ防止装置みたいなもんです。

実演

反響次第では何か考えますが、今のところはただ自慢するだけです。
オッス、オラ骨川!

一番上から、
繰り返しのディレイ間隔1/1000秒、
入力する文字、
入力文字の登録&削除ボタン、
登録済み文字群、
スクリプトのたーっぷり詰まったフォルダの丸焼き選択ボタン、
フォルダから読み込んだスクリプトのボタン群。
クリックしたものは赤(アクティブ)になりタイマーが発動。

実際こんなかんじです。基本となる「文字を挿入」を使用したところ。

実際この内容だと「正規表現検索置換でよくね?」となるんですが…
フリーダムな文字訂正指示に手早く対応できるでございます。

うごかすスクリプトについて

公開した場合、登録するスクリプトは各自で用意してもらうことになりますが
いま使っているいくつかはサンプルとして収録の予定。
基本的には名前順で並ぶけど、ファイル名先頭に「00_」とナンバリングしておけば
優先して前に来るようにしました。
UI上ではナンバリングと拡張子は省略されたすっきり表示に。

3つばかし、定数のような変数を用意してあります。
必要なければ使わずに、スクリプト上で全部ケーサンして処理してもいいですし。

そんなかんじです。
はかどりすぎて顔がニヤけてしまい周囲に気味悪がられることうけあい。
どーですか。

InDesign用エクステンション「gyogyomojier」の使い方

BOOTH上で頒布しているCEPエクステンション「gyogyomojier」の解説記事です。

これはInDesignCC2015以降で使用できます。
ギョギョモジャー」と読みます。恥ずかしがらず声に出して読みましょう。
皆さんが作業で酷使するカーソルキー(矢印キー)の移動量を、手近なテキストの行送り値などから簡単にピックアップできるCEPエクステンションです。
テキストの増減に応じて別置きオブジェクトを手動で追従させなければいけないときなどに、とても便利なやつです。
カーソルキー移動量に基づいたオブジェクトの変形機能もついています。


もくじ

使いどころ
  • テキストの行数の変動などに応じてオブジェクトを移動・変形したいとき
  • カーソルキー移動量を頻繁に切り替えたいとき
おもな機能
  • 環境設定を開かずに「カーソルキー移動量」を設定
  • 選択テキストの行送り値を「カーソルキー移動量」に取り込む
  • 選択オブジェクトを任意方向に「カーソルキー移動量」ぶん変形
導入までの流れ
  • ダウンロードとインストール
  • ライセンスの購入
  • ライセンスの認証
  • ライセンス範囲
免責その他

使いどころ

テキストの行数変動などに応じてオブジェクトを移動・変形したいとき

用途としては、テキストに沿う形で別置きされたオブジェクトの位置をテキストの増減に応じて手動で対応したいとき、妙に活躍します。
今日び、アンカー付きオブジェクトや自動フレームサイズなど、InDesignの便利な機能をきちんと使えていればあまり出番は来ないはずなのですが、どこからかやって来たよくわからないデータ(わかってない人が作ったデータ)との熾烈な戦いにとても有用であることは皆さんよくおわかりかと思います。

カーソルキー移動量を頻繁に切り替えたいとき

カーソルキー(矢印キー)によるオブジェクト移動は直感的で非常に便利ですが、移動量の設定については「環境設定」を開き、「単位と増減値」をクリックして、となかなかの手間だったりします。
定型量の移動を何度も必要とする作業で、移動量が何パターンか存在する場合、カーソルキー移動量を手早く切り替えることで作業効率が大幅に上がります。


おもな機能

環境設定を開かずに「カーソルキー移動量」を設定

パネル内には「カーソルキー移動量」欄があります。
初回表示時、ドキュメントが開かれていれば最前面ドキュメントのカーソルキー移動量を反映します。
ドキュメントが1つも開かれていなければアプリケーションデフォルトのカーソルキー移動量が表示されます。
値の単位は「環境設定:定規の単位:水平方向」に準じます。
カッコ内は「環境設定:他の単位:組版」に準じています。いわゆる行送り値の単位です。
常に最前面ドキュメントに追従します(新規ドキュメントを開く、既存ドキュメントを開く、背面ドキュメントを前面に、etc.)。
※唯一、ユーザーが環境設定からカーソルキー移動量を直接変更したときはパネル内の値は反映されません。ご注意ください。

パネル内の「カーソルキー移動量」欄に任意の値を入力することで、環境設定を開くことなく前面ドキュメントのカーソルキー移動量を手早く設定することができます。
単位を省略した場合はデフォルト単位(環境設定:定規の単位:水平方向)として受け取ります。
単位つきで入力した場合は、入力確定(enter)後、デフォルト単位に換算された数値となります。
あまり一般的でない不人気な単位(パイカ、シセロ、アゲート、etc.)には対応しておりません。入力時はその旨警告が出ます。

入力確定前はカーソルキーの上下↑↓で整数化および増減ができます。また、シフトキー併用で5ずつの増減ができます。
enterキーで入力確定した値は、パネル上部の「設定履歴から呼び出し」ドロップダウンリストに自動登録されます。
履歴は最新のものが5つ、以降は上書きされていきます。同じ値の重複は起こりません(はずです)。


選択テキストの行送り値を「カーソルキー移動量」に取り込む

このエクステンションの原型となったスクリプト[ gyogyome(ギョギョーム)]から継承された主要機能です。
「行送り」ボタンで、選択されたテキスト(あるいは選択されたテキストフレームの先頭テキスト)から行送り値を取り込んでカーソルキー移動量にセットします。
同様に、「字送り」ボタンは選択テキストの全角幅を取り込みます。


選択オブジェクトを任意方向に「カーソルキー移動量」ぶん変形

天地左右にそれぞれプラスとマイナスのボタンが配置してあります。
選択したオブジェクト群を個別に変形できます。
変形の基準座標は各オブジェクトのバウンディングボックスなので、回転してある長方形がひし形に歪んだりすることはありません。

アプリケーションの仕様に基づき、同一の選択範囲でも、グループか(黒矢印)個別か(白矢印)で挙動は異なります。場面ごとに使い分けましょう。
また、ボタンをshift+クリックで設定値の10倍、command+shift+クリックで設定値の1/10倍での変形が可能となっています。


導入までの流れ

ダウンロードとインストール

ご購入はこちらから。BOOTH 「鯵屋」

体験版はこちらから。ダウンロードされる内容は変わりませんが後述の注文番号は付与されないため、ライセンス認証はできません(ので、すべての機能を使うことはできません)。

ZXPファイルのインストールは有志の作成したエクステンション管理アプリを利用してください。下記2点とも良好に動作しています。Mac/Win選択の上インストールしてください。

Anastasiy’s Extension Manager

ZXP Installer

エクステンションが正しくインストールされた場合、InDesign再起動後、メニューの ウィンドウ > エクステンション に「gyogyomojier」が現れます。
※初回の起動時は登録前ということで、まだ機能制限がかかっています。せこいです。


アンインストール

インストールに利用したアプリの機能から行ってください。


ライセンスの購入

gyogyomojierはBOOTHにて頒布しております。
パネルメニュー「購入」から、BOOTH商品ページに行けます。
BOOTHでは設定価格のほか、作者への応援の気持ちを送るBOOSTという機能がついています(上目づかい)。

購入サイト(BOOTH 「鯵屋」)

購入後、BOOTHの注文番号が作者データベースに登録される仕組みとなっています。
注文番号は認証に必要となります。失念の際はBOOTHにログインの上、購入履歴を参照してください。


ライセンスの認証

認証はギョギョモジャーのUIパネル上で行います。
パネルメニュー「注文番号」から、BOOTH注文番号を入力してください。
続いて「認証」を実行してください。
注文番号と暗号化されたユーザー情報が作者データベースに送信されます。
データベースに正常に登録されれば機能制限が解除されます。
注文番号の入力および認証は、InDesignいずれかのバージョンで一回行うだけですべてのバージョンに適用されます。


ライセンス範囲

  • 初回に認証を行なったAdobeIDと同一のアカウントであれば無制限とします。
  • データベースに送られるユーザー情報はAdobeIDを基とした暗号化データです(暗号化される前のAdobeIDは作者にはわかりません)。
  • 認証作業に際して、現場の事情で頻繁にAdobeIDを切り替えて作業される方は特にご注意ください。

免責その他

  • 新バージョンのOSやInDesignがリリースされるたび何らかの不具合が発生する場合があります。作者も業務使用している都合で対応修正は積極的に行う所存ですが、何らかの事由により開発が滞ったり開発を終了する可能性があります。あらかじめご留意ください。
  • お使いの環境下で一般的ではない固有の不具合が発生した場合は、状況を伺った上、こちらの判断で対応を見送らせていただく可能性があります。
  • 機能に関する改善リクエストは実現を約束できません。
  • ライセンス認証は作者のレンタルサイトスペースのデータベースで管理しています。このデータベースに関わるトラブルで一時的に認証装置が機能しない可能性はあります。これについて何らかの損失が発生した場合の補償はいたしかねます。
  • 領収証の発行についてはBOOTHヘルプを参照してください。
  • 返金対応は一切いたしかねます。

エクステンション屋さんになれるまで_その0.1

はじめに

ここには、CEP(Common Extensibility Platform)とやらに手を染めていく経緯を書き綴っていきます。
ExtendScriptしか武器のない身で(大昔にポケコンBASICをかじった、数年前ActionScript3を少しかじった、Cを少しかじったけどカケラも覚えていない、HTML5+CSS3も同様)太刀打ちできるのか、いや全然太刀打ちできてないんですが。
誰の役にも立たなそうですが、何も作らないうちからあまりにもハマりどころが多かったので、恥晒しがてら記録を残していくことにします。後発の妨げにならぬよう、理解の固まった部分だけ書き記していく予定ですが、どこかしらおかしなところがあれば即座にツッコミ入れていただけると大いに助かります。


着手開始まで

DTP作業のかたわら、ちまちまとスクリプトを書いて、ちょっと便利そうなのができて「これは汎用性あるぞ」と思ったらScriptUIでパレットなど作ったりしてて。
このパレットをアクリケーション標準装備のパネル群とドッキングできたら、さぞかしよかろうなあと思い、いわゆるプラグインはどんなもんじゃろうとSDKを覗いてみましたが、さっぱりわからずそっと閉じ。
しばらくしてFlashベースのUIがGUI操作で簡単に作れるConiguratorが到来。Coniguratorによるパネル作成はたいした専門知識も必要なかったので大喜びでいくつか作りました。

が、敢えなくディスコンに。CC2015からはビタイチ使えなくなりました。Flashここまで追い込まれるほど憎まれてるの…
同時にConiguratorから生成したzxpファイルをインストールするためのExtensionManagerも終わりました。以後はAdobe Add-ons上でやれ、という事らしいです。
で、いよいよ、CEPおやりなさい、と天啓が。


いざ着手(環境整備)

なんでもかんでもわかっている人にとってはテキストエディタひとつで作れる物…らしいのですが。
ExtendScript以外まるでわからないのでそういうわけには行きませぬ。
「Adobe CEP Extension」などでweb検索してみたとして、いろんなページに当たるわけですが、
人によりほぼ情報がバラバラです。とくに2015年以前の記事は混乱を招くので関わらぬが吉、と出ました。
いずれにしても、足元がおぼつくまでは、あっちこっち全部を参考にしていたらきっとわけがわからなくなることうけあい。
ウチの場合は幸いにしてten先生に手ほどきを乞うことができました。以後、全ての罠に律儀に嵌りながら進む無様っぷりの記録というわけです。
この記録は誰かのお役に立てば、という意識はほとんどなく、自分が同じ轍を踏まないように時折振り返るために書き留めておこう、というやつです。道のりが遠い。
つとめて自己の無知っぷり・できないっぷりを露見しつつになるのがとても痛いんだけど、まあがまん。
でもまあほら、つまづいたぶんだけ理解が深まる気もするし。。それにしてもつまづきすぎているのだが。

経典1:
CEP EXTENSION PRIMER 1 – SETTING UP TOOLS

ten先生によるお導きページ。文中のリンクも含め何度か(何度も)読み返すことになる経典。
書かれている通りにやれば一歩は踏み出せるようになっている。
…らしいのだが。はずだったのだが。

まあ、上記リンクの内容に沿って環境をこしらえます。
まずはBracketsのインストール。
今回の用途に向け非常に強力な、あのーアレである(言えよw)。
インストール後、起動します。アイコンは残念ながらブラでもケツでもありません。

機能拡張マネージャーから、先人がリリースされたエクステンションをどんどこインストールできます。

まあお好みで。ここではお薦めなど挙げませんが…

以下、必須項目。名称の一部を検索欄にどうぞ。紛らわしい名称の別物が出てくる場合もあるので注意。
Creative Cloud Extension Builder(CEP 7)
将来的にCEPバージョンは上がると思いますっていうか、コレ書いてる間に上がるっぽいです。CC2018出たし。
インストール後、ただちにメニューバーに項目「CC Extension Builder」が追加されます。

メニュー項目の詳細についてはのちほど。
※ウチはここから順調につまづき始めます


PlayerDebugModeの設定

次、経典に沿って、PlayerDebugModeの設定。詳しくは経典の後半を参照してください。

~/Library/Preferences/com.adobe.CSXS.<当該バージョンNo.>.plist
に追記せよ、とあります。


つまづき:
ユーザ>ライブラリ ではなく起動ディスク>ライブラリを見に行きました。


そっからかよ、と言われそうですが、まあ、そっからです。。
いざ書類は見つけたんですが
“「PlayerDebugMode」というエントリを追加して値を1(String)に設定”
がおぼつかず、ターミナルコマンドを授かりました。

defaults write com.adobe.CSXS.5 PlayerDebugMode 1

とくに説明ありませんでしたが(信頼されている)、
<コンピュータ名>:~ <ユーザ名>$ からではファイルパスが通らないのでcdコマンドが必要です。
cd (←半角スペースつける)
まで打って、ユーザ>ライブラリ>Preferencesフォルダを投げ込んでreturnします。
カレントディレクトリを移動、というやつです。
<コンピュータ名>:Preferences <ユーザ名>$ になったら授かりコマンドをペースト。
CC2017でテストするので、5を7に書き換え、

defaults write com.adobe.CSXS.7 PlayerDebugMode 1

とし、事なきを得ました。
経典1はここまで。まだ準備の半分です。。

経典2:
CEP EXTENSION PRIMER 2 BUILD UP PROJECTS 1

次の経典です。
この内容に沿って続けるとします。

新規Extensionの作成

Extensionプロジェクトの生成。さきほど増えたメニュー項目「CC Extension Builder」から「New Creative Cloud Extension」を実行。
ここでエクステンション名とユニークIDの入力がありますが、最初の最初だし、テストってことでHello Worldのまま進めます。

で、プロジェクトが作られるんですが、内容はというと「『Hello World! とアラートを出すためのボタンが1個あるだけのパネル」です。

ホストアプリケーションの指定

経典に沿って、Bracketsのウィンドウ左側から CSXS>manifest.xml を開き、最低限いじります。
最低限とは、ホストアプリケーションの指定。ウチはInDesignにしました。


つまづき:
CC2014以下では動きません


たまたま起動してたCS6を対象にしようとしてしまいました。けっこう恥ずかしい。
気を取り直して、InDesignCC2017をホストに指定します。
manifest.xml の <HostList> タグ内に見慣れたアプリケーション名が連なっているので、

<!– Photoshop –>

の下2行ぶんをコメントアウトします。前後の行にならって “<!—“と “–>”で括ります。
続いて、コメントアウトされているInDesignのホスト名をコメント解除します。


つまづき:
末尾のスラッシュ “/“は削除しちゃだめ


なんだかとても疲れていたので、”/>”がエスケープされていると錯覚したらしいです。すごく恥ずかしい。

次に、その行のバージョン指定を変更します。
既存の”[10.0,10.9]” はCC2014を指しています。CC2017で動かすために”[12.0,12.9]”としました。

manifest.xml はここまで。保存します。
経典のほうはその他の要素について解説が続きますが、今回は最低限をやるので割愛。

経典3:
BRACKETS用エクステンション、リリースしました(^-^)/

ここで、ten先生謹製のBracketsエクステンションを頂戴します。

packagetoolのインストール

Bracketsの拡張機能マネージャー(前述です)を開き、ウィンドウ下部の「URLからインストール」から、ten先生謹製「packagetool」をインストールします。
直リンも行儀がわるいので、経典3のほうでURLをコピーしてきてくださいまし。本文中の最初のリンクのやつです。
インストールするとメニューバー項目「Package Current Project」が追加されます。


ZXPSignCmdのインストール

次に経典でいうところの「肝心のツール」をダウンロードします。

CEP-Resources > ZXPSignCMD > 4.0.7 > osx10 > ZXPSignCmd.dmg まで掘り下げていくとダウンロードボタンあります。
とりゃえずCC2017で試すだけなので最新のをもらってきましたが
頂いて展開したZXPSignCMDフォルダは、どこか適当なところに置いておきます。オデコの上とかそういうのはだめです。


つまづき:
当該ファイルだけダウンロードするのがおぼつかず、CEP-Resources全体をダウンロードしちまいました。重かった。


そしたらメニュー「Package Current Project」から「Packager Preferences」を実行。
設定画面が出ます。

上の項目で、さっきもらってきたZXPSignCMDファイルを指定。
下の項目にタイムスタンプサーバのURLを入れます。どれを使うかはごじぶんで決めてください。何も言えない。

.p12ファイルの用意

準備があとひとつあります。.p12ファイルの用意です。ウチは既に持っていました。


つまづき:
Configuratorで作成したp12ファイルはだめ


Adobeつながりでも流用不可でした。。認証サーバが店じまいしている。
ten先生に相談したところ、「AdobeExchangePackagerを使えばいいかも」とのことで。
なんかわからないまま、p12ファイルを作るだけのために以下のアプリをダウンロード。
https://www.adobeexchange.com/api/Packager.dmg
インストール&起動して、右上の「Certificate and Settings」をカチ。

「Create Certificate..」ボタンからp12ファイルを作成できます。
作成時に設定したパスワードはパッケージ時に必要になるので忘れないように。
どこか適当なところに置いておきます。オデコの上とかそういうのはだめです。


(やっと)エクステンション作成

えー、いよいよのエクステンション作成。
メニュー「Package Current Project」から「Package Current Project」を実行。

3つの項目を埋めます。
1番目でp12ファイルを指定
2番目で書き出し先を指定
3番目でp12ファイルのパスワードを入力。
書き出しに成功すればその旨ゆってきます。

ちなみに書き出し失敗した時のエラーがこちら。エラーコード26はp12ファイルが不正。

というわけでzxpファイルが生成できました。やれやれ。
しかしこれで終わりではないのです。。


野良zxpや自分テスト用zxpファイルのインストールにはZXPInstallerを使わせてもらいます。
http://zxpinstaller.com
これをダウンロードして起動します

このウィンドウにzxpファイルを投げ込むとインストールが始まり…
ませんでした。

よくわからなくなったので新規のHelloWorldを作成。今度こそうまくいき…
ませんでした。

これは前述のマニフェストのスラッシュ削除によるもの。……ぜぇぜぇ。

…という感じで、やっとインストール成功。


ten先生の寸評:
「ドーテーの初体験見ているようだったw」


おわりに

毎日の昼休みでだけさわってたんですが、
この一歩を踏み出すのに2週間以上かかった勘定になります。おつかれさま。。
さてー、いよいよなんか作ってみるとしますっ。
わりと先が思いやられます。

今から始める人たちが、ここまでをつまづかずにやれるたら何よりです(などといった心配はたぶん無用で、まわりの人たちはさくさく進んでおられるようす…)。