InDesign:マンチカンという名前の数列加工置換スクリプト作りました

はしがき

InDesignの正規表現検索機能、けっこう満足しています。
戻り読みの字数が確定していないといけないところなど目を瞑るべき点もあるものの。
正規表現には使用者のスキルが関わりますが、
検索形式を併せて絞り込めば、ほぼ大体の用事はこなせてしまいますね。

でも、置換のほうはどうでしょう。
正規表現でヒットした多様な文字列に対して、形式の変換や文字列の追加を一意にこなすしかできません。

中でも数字を扱う際、数字を「数」として扱いたいのに、ドキュメント上に点在している数字はただの「字」です。足したり引いたりはできません。
それでも、足したり引いたりをまとめて処理したくなる作業がしばしば発生します。

そんな理由で、今まではその場だけなんとかするスクリプトを書き、
次回の要件には微妙に合わず、また新しくスクリプトを都度々々(つどどど)書いてきました。

ここで公開している物、社内で提供した物を含め、

id_aibansShifter.jsx(選択範囲内の数字すべて一律に増減する)
id_charCodeShifter.jsx(選択範囲内の数字すべて文字コードをずらす)
id_numberShifter.jsx(忘れたけど確か番号ずらすやつ)
id_番号ズラッシャー.jsx(これもなんとかしてなんか番号ずらすやつ)
図番をズバンと変更.jsx(図番号を検索して、プロンプトで連続的に手入力していくやつ)

だの、なんだの…案件数ぶんスクリプトが増えていってます。
正直、どれがどれだか、書いた本人もまったく把握できておりません。

だもんで、いつかはこれらの統括スクリプトを作ってやろう
…と、もやもや思っていたのが今回ようやく少しカタチになってきた感じです。

 


Munchkin.jsx

InDesignCS6で動作確認。
CS4以降で動作する可能性はふんだんにはらんでいます。
なお、CC2015以降は後述のリターンキーばしばし連続置換ができません。CEP開発を気長に待ちましょう。
*コードの改変は任意ですがフィードバックいただけるとうれしいです。
*サイトを経由しない二次配布は固くおことわりします。
*不具合報告はコメント欄とかに随時どうぞ。
*改変リクエストは料金お支払い気分でお願いします。

リリース情報
2018.04.19 ver.1.12 初リリース
2018.04.25 ver.1.13 リクエストによりパレットを「閉じる」ボタンを増設
2018.04.26 ver.1.14 数値の増減タブ内に「文字コードで増減」を増設
2018.04.27 ver.1.15 置換文字列固定チェックボックスを増設


読み方、ムンチキンでもなんでもいいですけど、いちおうマンチカンです。
「萬置換」のニュアンスです。
スケベな事を連想してもらっても別に全然ちっともかまいません。
それはあなたが勝手にスケベなだけですから。スケベなのはあなたなのです。やーいスケベ。
むしろかわいいネコチャンの方を想像したほうが健康的です。プッシーのほう。


あそびかた

マンチカンは、数字に特化して、置換文字列を個々に制御するスクリプトです。

数値の増減(これは半角数字限定)

文字種の変換

文字列の追加

手入力

一連の処理を取捨選択して組み合わせ、連続的に置換するという、とってもかわいいやつです。
かわいいかわいい。

検索については、InDesign標準の検索置換ウィンドウの「正規表現」タブ内で設定してください。
・検索文字列
・検索オプション
・検索形式
の3つの設定が生かされます。
逆にいうと、検索に関わる設定は、検索対象のドロップダウンリスト(ドキュメント、ストーリーetc.の所)以外すべてここで行ってください。

設定し終わったら検索置換ウィンドウは閉じてしまってかまいません。
注意点として、検索履歴から検索文字列を呼び出し、そのまま閉じてしまうと空欄になってしまうので、
履歴の呼び出し後はてきとうに文字を打ってすぐ削除する、などして、いじっておいてください。
*クエリの呼び出しについてはこの限りではなく、リストから選択してそのまま閉じても大丈夫です。

マンチカンをカチカチするとパレットが出ます(厳密にパネルと呼べないのです)。

まずは下部の検索対象ドロップダウンリストから、検索範囲を設定します。
標準機能のやつは、選択範囲の状況に応じて勝手にころころ変わるところが大嫌いなので、わざわざ用意しました。
こちらは勝手にころころ変わらない代わりに、設定した検索対象に選択範囲がそぐわない場合はウンともスンとも動かないので気をつけましょう。
念のための補足ですが、選択された複数のテキストフレームを対象にしたいときは選択範囲ではありません。ストーリーです。
テキストフレームを内包するグループオブジェクトを対象にしたい場合は、ダイレクト選択(白矢印)ツールを持ちます。選択し直さなくても、持ち替えるだけでOKです(ちなみに標準機能と同じ挙動です)。

次に検索ボタンをカチ。


検索結果があればパレット最下部にヒット数が出て、ドキュメント上では最初の検索結果のテキストが選択状態になります。
「1/12を表示中」と出ていたら、12個見つかったうちの1個目を表示中という意味です。
そして上部の「置換文字列」欄には、検索結果と同じ内容の文字列が出ます。まだ何も加工していないわけで。


つかいかた

加工パートを順に説明していきます。

数値の増減

検索結果が半角数字だけで構成されている場合に限り、その数を足したり引いたりすることができます。
このため、最低限の正規表現習熟が必要とされます。
入力欄には、半角の「+」「-」と数字しか入力できません。小数も未対応。のちのち改良するかも。
増減が不要な場合は空欄にしておきます。
計算の都合上、元の文字列の先頭にゼロがついていると計算後はそのゼロが失われた置換文字列を返しますが、
隣の「桁数引上げ」をうまく併用してがんばりましょう。

…という機能に、文字コードを増減のチェックボックスを増設しました(ver1.14)。
このチェックが入っている場合に限り、半角数字以外の文字でも増減対象となります。

20までの丸数字とか1ケタまでのローマ数字とか、若干ながら増減に対応できるかと思います。
何言ってるかわからないという方は、まあほっといてください。

文字種変換

左(変換元)-> 右(変換先)とあります。
右のリストは初期状態はグレーアウトしていて触れませんが、左リストを「しない」以外にすることで操作可能となります。
プリセットとして、半角数字、全角数字、全角ローマ数字(大文字)、全角ローマ数字(半角)、丸数字、カッコ付き数字、漢数字 がドロップダウンリストに格納されています。
これらは、検索結果が何桁であっても1文字ごとの変換となります。したがって、プリセットでの置換はほぼ1〜9限定の用途となります。
また、ゼロを持たない種類の文字種についてはゼロだけが未変換のままとなりますのでご注意ください。
このほか、左リスト内に「任意テーブル」という項目があります。このときも右リストは操作不能となります。


「任意テーブル」を選択すると、すぐ下の「テーブル定義ファイルを選択」ボタンが押せるようになります。
ボタンを押すとファイル選択ダイアログが出るので、置換テーブル定義ファイル(タブ区切りのプレーンテキスト)を選択します。
こんな感じで、「元の文字列 [tab文字] 置換文字列」 のように記述した物を用意して使います。

プリセットでの文字種変換は1文字ずつ行のに引き換え、任意置換テーブルを使用する場合は、検索結果とテーブル内の文字列は先頭から末尾までの完全一致を置換条件とします。文字が余ると置換対象にはなりません。
これは主に漢数字や2ケタ以上のマル数字への変換を目的に実装したものですが、なんかうまいこと応用して便利に、あの、どうぞどうぞ。

文字列追加

これたぶん説明いらないので省略。

置換ログについては後述。


ここまでの設定を済ませ検索ボタンを押すと、上部の置換文字列欄には検索結果に応じた加工済みの文字列が表示されます。

また、置換文字列欄には任意の文字列を直接入力する事も可能です。これも大事なのです。
*当記事の最後で実用例を紹介しております。

検索後に設定を変更したり置換文字列を自身で書き換えたあとは、「再取得」ボタンで置換文字列を更新することができます。

固定のチェックを入れておくことで、検索結果の文字列の内容に関係なく、ずっと同じ文字列で置換する事ができます(ver1.15より)。

これだと普通の検索置換と変わらないわけですが、ウチはリターンキーをタンタンするだけでそれを済ませたかったんです。

置換の実行

置換、次を検索、置換して検索、すべてを置換、の4つのボタンについては説明不要と思われますが、
1つ1つ確認しながら置換作業を進めるなり、一気にやっちゃうなり、お好みでどうぞどうぞ。
「すべてを置換」は1回の取り消しで実行前まで戻せるようになっています。
CC2015以降はドキュメントウィンドウを前面に出さないとキーボードショートカットでの取り消しができないのでご注意ください。

一点だけ、InDesign標準の検索置換ウィンドウのボタン群との違いがありまして。
「置換」ボタンで置換した後、「次を検索」するまでは直前の置換結果が現状のターゲットとなります
置換→やべえしくじった→取り消し→加工設定を変更→再取得→置換(2回目)などの流れを想定しています。いちおう。

置換処理の履歴

置換作業については「置換ログ」タブ内に逐一記録されます。
「保存」ボタンで内容のテキストを保存します。保存先はデスクトップ限定となっています。
既にログファイルが存在する場合は、既存テキストの末尾に追記されます。
ぶっとばしてやらかした時の検証に役立ててください。


おてほん

と、お待たせしました。
ウチの業務で実際に役立ったケースをいくつか紹介します。
このためにわざわざレイアウトをでっち上げるのがとても大変だー。

事例1:図表の追加による番号ズレの修正

よくあるやつですね。

検索文字列は当該の数字だけ拾うようにします。

マンチカン上の設定は、「数値の増減」に「+1」と入力。

順送りに選択されていくので、マンチカン上でボタン操作します。
置換して検索」は、置換文字列上でリターンキーを押すことでも同様に動作します。
*現状、CC2015以降では一度のリターンキー操作後、置換文字列からフォーカスが外れます。いちおうtabキーで再びハイライトしますが…いずれ改善できれば。


事例2:目次機能を使えないとき

ほんとにね、もくじ、さくいん…便利機能がInDesignにはあるのに、本文よりも先に出校しなきゃいけない時があったりしてて。
仕方なくダミーノンブルで出さないといけなかったりしてて。
こんな赤字が来ちゃうわけですよ。

まあカチカチ選択、タカタカ入力でも構わないんでしょけど。
ウチはカチカチが苦手なのです。「カッチカチ」になっちゃう。カッチカチやでー古い。

そこで、検索文字列を、こう。
今回に限り「00$」でも足りるといえばそうなんですが。

マンチカンのほうは何もいじらず、検索ボタン。
置換文字列上でリターンキーを叩くと置換して検索ボタンと同様の働きをするので、
ひたすら置換文字列を入力してリターンキーをタン、の繰り返し。
このサンプルデータ、15秒ほどで修正作業ぜんぶ終わりました。マジです。
まあ、ウチ個人が基本的に優秀なだけなんですけど

以上、とりあえずですが2例だしてみました。
いいでしょー。

 

Facebooktwittergoogle_plus

Photoshop:パスが反転する件(2017版)

2008年の当ブログ開設以来、「Photoshop:パス切り抜き中、いつの間にか反転してる件」という記事が、便利なスクリプト群そっちのけでぶっちぎりのアクセス数でありまして。今でも150pv/週を下らない感じです。
どんだけ使われてるんだよPhotoshop、ってことなんですが。

それにしても、記事中のスクショも今では見かけないぐらい古いバージョンの物だったりするし、そろそろリニューアルしておこうと思いまして。仕組みや解決策は当時の記事内容で今でもぜんぜん通用するんですが。スクショもCC2017で作り直しました。
※すでにCC2018がリリースされていますが、現場の事情というやつでウチには職場にも自宅にもまだお目見えしておりません。


パスの反転現象とは

ここでは、ペンツールで作成した領域(選択ハニー、ベクトルマスク、クリッピングパスなど)が、目的と正反対の領域に適用されてしまうことを指します。

いちおう検索結果トップヒットはウチのところなんですが、ヨソのページではきちんとした理解に及んでおらず解決した気になっている所がわりと多いです。今回そのあたりまできっちり解説しますので、興味があれば最後まで目を通していってくださいまし。

 

パスが反転する原因

ペンツール使用時、オプションバーに出てくる「シェイプ範囲」というのがあります。わざわざ公式用語を調べました。

コンポーネント同士が重なり合ったとき、前面のシェイプがこの設定に応じて混ざったりひっくり返ったりします。
過去バージョンのPhotoshopでは名称が違っていたりしますが効果は同様です。
コンポーネントとは:パスコンポーネント選択ツールでクリック選択できるパスの最小単位をコンポーネントといいます。ひと囲みの図形、始点と終点が重なっていないオープンパス、これらはすべてコンポーネントです。スクリプトを書く人にはサブパスと言ったほうが通じるかも)

パスアイテムの全ての内容がこの上から2つめ「前面シェイプを削除」に設定された場合に、パスの領域が反転する現象が起こります。
※厳密には「最背面のコンポーネントのシェイプ範囲がコレのとき」なんですが、覚えててもしょうがないのでざっくりの知識でいいと思います。

まとめ:ユーザーが知らずに「前面シェイプを削除」に設定してしまっているのです。

 

パスが反転する原因の原因

実は4つのシェイプ範囲のうち「シェイプを結合」と「前面シェイプを削除」の2つにだけキーボードショートカットが割り当てられています。
近年バージョンではどこを探してもそれがわからないようになってしまってます。ひどい。
古いバージョンではツールチップにしっかり出ていました。

プラスマイナスですね。ペンツール使用時だけ反応します。
過去にいろいろとほじくったんですが、この設定は切れませんでした。修行が足りない。

まとめ:ユーザーが知らずにペンツール使用中にマイナス(-)を押してしまっているのです。

 

パスが反転する原因の原因の原因

Photoshopを使っていて、マイナスを押す瞬間。
それはズームアウトのショートカット[command -]です。
Windowsでは[ctrl -]。
このとき修飾キーから指が外れてマイナスだけ押してしまった、というのが原因の大半と思われます。
だってほかにマイナス押す用事なんかろくにないでしょう。

まとめ:キーボードショートカットの入力ミスが発生している

 

パスが反転する原因に気付かない原因

前述の「マイナス押しちゃった罠」は、過去バージョンでは押してすぐには発動しませんでした
CS5.1以前では、シェイプ範囲の表示変更はマイナスを押した瞬間ではなく、作成中のコンポーネントがアクティブでなくなった瞬間に行われていました。これは作成中のアクティブなコンポーネントには適用されません。
そして、次回に作成される新規のコンポーネントに初めて影響を及ぼします。
なので、例え作業中に「あ、パスが反転してる」と気付いたとしても、それはマイナスを押してしまってからずーっと後だったりします。保存した画像を配置してみて気付いたなんてのは論外です。

CS6〜CC2014の場合、
パスの作成中にマイナスを押すと、オプションバー上のシェイプ範囲は即時「前面シェイプを削除」に変わりますが、CS5.1以前同様、作成中のコンポーネントには適用されません。

ここまでで、
CC2014以前は、キーボードショートカット「マイナス」はペンツールのデフォルト設定を変更する役割にとどまる、といえます。

 

しかし時代は変わった

ではCC2015以降はどうなのかというと。
マイナスを押した瞬間、作成中のコンポーネントのシェイプ範囲は即時「前面シェイプを削除」に変わります。しかし同様にシェイプ範囲を「シェイプが重なる領域を中マド」に戻してしまうことも可能です。
ただし、途中ではなく最初から「前面シェイプを削除」でパスを作成し始めた場合は変更不可です(「シェイプを結合」には変更できるのですが、「だから何」と言いたい。これについては後述)。

CC2015以降におけるキーボードショートカット「マイナス」はCS6以前の役割も有しつつ、選択中のパスがあればそのシェイプ範囲は変更されます。

ちなみにCC2015以降では、コンポーネントごとの正確なシェイプ範囲を確認するにはパスコンポーネント選択ツールでのみ行ってください。白矢印のパス選択ツールでは正しく確認できません

まとめ:CC2014以前の場合は、パスの反転はユーザーが「やらかした」と気付く瞬間のずっと前の時点で仕込みが完了している可能性がある。CC2015以降では万全とは言えないが、それでもずんとマシになっている(ウチも知らなかった)。

表にしてみると、こんなところです。

以上が現象および原因の考察となります。
自分でやっちゃった時は苦笑いで済むんですが、外注した切り抜きが全部コレやられてたりすると、
もうギョエーとか。ウギャーとか。

この反転しちゃったパスの直し方がわからずにやむなく最初から作り直してしまう方もいるんですが、
シェイプ範囲を理解していないと根幹が直らないもので、何度やっても反転してしまいます。
そのたんびに環境設定をクリアしてた人もいたらしいです。お疲れ様です。

余談なのですが、配置して初めて気付くのはある程度しょうがないんですけど、パスパネルのサムネイルで判断つきますので把握しておきましょう。

 

反転したパスの直しかた

いよいよですが、その前に。
シェイプやパスを何も選択していない状態でペンツールを持ち、シェイプ範囲が「シェイプが重なる領域を中マド」になっているか確認しましょう。なっていなかったら、今のうちに直しましょう。経験上、早めの段階でやらないと後でほぼ忘れます。

えーでは、反転したパスの直しかた。
パスを選択して「前面シェイプを削除」のパスを「シェイプが重なる領域を中マド」に変える。
文字にするとたったこれだけなんですが、しかし簡単にはいかない場合があるのです。
とにかく、まずはやってみましょう。

・反転したパスアイテムの内容を全て選択
ペンツール、パス選択ツール、パスコンポーネント選択ツール のいずれかを持ち、パスパネルのサムネイル部分をoption+クリック(Windowsではalt+クリック)。
過去のバージョンではサムネイルに限らず名前部分のクリックでもいけたのだが…

・シェイプ範囲を「シェイプが重なる領域を中マド」に変更

ここで反転が直ればぶじ終了。
しかしこの通りにはいかない場合が多いのです。

 

うまくいかなかった場合

少々めんどうです。パスアイテムをコピペで作り直す必要があります。

・前述にならい、パスアイテムの内容を全て選択、それをcommand+Cなどでコピー

・何も選択していない状態でオプションバーのシェイプ範囲が「シェイプが重なる領域を中マド」になっているのを確認して、新規パスを作成
※厳密には「前面シェイプを削除」以外になっていればOKです

・ペースト(すべてのシェイプが選択された状態に)

・シェイプ範囲を「シェイプが重なる領域を中マド」に変更

これで完了。
終わったら、元のダメなパスはパスアイテムごと削除しましょう。最寄りのゴミ箱などに。

このあと、元のダメなパスがクリッピングパスだった場合は、作り直したパスを改めてクリッピングパスに設定する必要があり、
ベクトルマスク(シェイプレイヤーも)のパスだった場合はレイヤーのベクトルマスクに適用し直す必要があります。とてもめんどうです。

まとめ:めんどう。

うまくいかなかった原因

パスアイテムを作り直したりせず、シェイプ範囲を変更するだけで簡単に済んだのはなぜか、
逆に、それができなくてパスアイテムを作り直す羽目になったのはなぜなのか。

ペンツールでカンバス上にパスを打ち始めた場合(作業用パスが自動生成された場合)が、簡単には直らなかったパターンです。
バグだと思うんですが、不具合報告をすっかり忘れていました。わーい。

対して、パスパネル上で新規パスを作成してからパスを打ち始めた場合が、簡単に直るパターンです。
特に事前説明がない場合、こんなおしとやかな手順で作業する人なんかまずいないと思うんですが。。

なので、今後もパスの反転をやらかす自信のある方は、カンバス上にパスを打ち始めたい気持ちを抑えて、まずパスパネルから「新規パス」を心がけるとよいのかも知れません。

まとめ:「作業用パス」は手軽な半面、なんかちょっとだめなところがある。

 

よそのサイトの情報への不信感について

ここまで、口がすっぱくなるほど「シェイプが重なる領域を中マド」を提唱してきました。
パスの反転現象が解決できた、と書かれてあるよそのサイトのいくつかには、シェイプ範囲を「シェイプを結合」にすればいい、という結論で終わっている所がいくつかありました。
でもそれはだめ。

まとめ:それはぜんぜんだめ

 

「シェイプを結合」ではだめな理由

「シェイプを結合」ではドーナツの穴っぽこが抜けません。
穴のあいていない絵柄なら別にいいじゃん、とも思われるでしょうが、穴のあるなしでいちいち使い分けるほうが面倒でしょう。

【重要】クリッピングパスに複数のシェイプ範囲が混在していると出力処理がものすごく重たくなります。
かつて自分でも運用してみていた時期がありましたが、ほんとにおすすめしません。出力にめちゃくちゃ時間がかかります。
クリッピングパス以外のパスでは構わないのでしょうけど…

それはおいといても、Photoshop5.5Jまではシェイプ範囲は今のように4つではなく、この中マドひとつしかありませんでした。
現在においても万能なのはこれひとつです。あくまでも中マドを基本にするべきです。
うしろむきな理由として、シェイプ範囲を理解していない人にデータを引き継ぐ事も考えないといけない場合もあります…

しかしシェイプ範囲を駆使してシェイプを作成し、「シェイプコンポーネントを結合」でパスを整形するのは大いにアリです。
Illustrator使いの方にはおなじみのパスファインダー的なやつです。活用していきましょう。

まとめ:「シェイプが重なる領域を中マド」が基本です。超基本です。「シェイプコンポーネントを結合」をしない場合は他のシェイプ範囲はあとに残る形で使うべきではありません。

 

最後に

ここまで我慢強く読んだ人だけに、簡単に反転パスが直るスクリプトを用意しました(よくある展開)。
…となってればよかったんですが。いろいろ残念なのですが今回はありません。
ESTKの限界を見た気がします。たった一点解決できればちゃんとしたのが書けるので、これはいずれ改めて。

ではでは。

 

過去記事(いちおう残してありますが、もう見なくて大丈夫です)
パス切り抜き中、いつの間にか反転してる件
パスが反転して困っちゃわないために(未決)
パス反転の件まとめ

Facebooktwittergoogle_plus

InDesign:文字スタイル[なし]にショートカットあてたいのすけ

どこぞで「一人よがりでニッチなスクリプトを必死にたどたどしく書いてるblog」的なご紹介を頂きましたよありがとうございますちくしょうコンニチワ。少なくともそう読めましたw
まあ評価は皆さんにお任せします。
ただ、きちんと報酬ご用意の上でご依頼頂いた方々まで間接的に下げられてしまうことになるのはちょっとなあ、と。
営業妨害かよ。
まあお任せしますよ。めんどくさ。
さておき、


文字スタイル[なし]にキーボードショートカットを設定しようと思ったんですよ。
そしたら、なんだかできないっぽくて、
だったら文字スタイル[なし]をあてるスクリプトを書いてそれにショートカットを、と思ったら、
ごく単純に書いてみたら、確かに文字スタイル[なし]があたるものの、
適用した文字スタイルで設定されていない属性は(つまりぜんぶ)現状を引き継いでしまう…
のか、なんなのか、正直わからんのですが、とにかくあんまり意味がない。いやぜんぜん意味がない。

あと、みんな忘れてないか「クイック適用」。あれの検索欄に「なし」と入れておけば項目がかなり絞り込まれるので試してみたんですが、
困キー+returnで呼び出し、文字スタイル[なし]が選択されている(だろう)ので適用のためにまたreturn。
つごう、リターンキーを2連打するかっこうになるんですが。
このリターンキー2連打、「タタン」だとだめ。クイック適用を呼び出すたんびに毎回検索ワードで絞り込みが始まるので、目的以外のどうでもいい文字スタイルがあたってしまう。
リターンキー「タン、タン」ならOK。「タタン」はダメ。
ウチの電光石火のオペレーションには堪えませんでした。

2018.04.09
だいぶわかりにくかったので補足追記。
たとえば、文字サイズ13Qで明朝、という段落スタイル内の文字に、書体だけゴシックに設定した文字スタイルをあててあり、さらに手動オーバーライドで12Qにしてあったりします。
書体は明朝に戻し体(文字スタイルの適用をやめたい)、でも文字サイズ12Qはキープしたい。
それを実現するのが、文字スタイル[なし]の適用なのです。
冒頭では暗黙に段落スタイルのオーバーライド削除がかかってしまい、不満に悶えている様子を表しております。

で、ちょっと前に別件でテストしてたことがあって、それの応用で
新規文字スタイル(基準:[なし])を作成して、それをあててみたら、きれいに属性が消えてくれました。
あっちがダメでこっちがダメじゃない事情がよくわからんのですが。
まあいいや。
やったー。
ので、そこまでをスクリプトにまとめてみました。


id_disapplyCharacterStyle.jsx

最近のバージョンならたぶんどれでも動きます。
動かしてみて動けば動きます。
いつものことですが。ダウンロード後は自分でわかりやすいファイル名になおしてあげてくださいまし。
おすすめは「エイトビートって『AとBと』じゃないよそんなコード進行あったらおかしいけどちょっとがんばってみてもいいかも.jsx」です。

2018.01.05 ver_b セルを選択した場合など処理されなかったので処理対象を見直し

新規文字スタイル作成>それを選択テキストに適用>選択テキストに文字スタイル[なし]を適用>作成した文字スタイルを削除>終了
という処理を行っておりますが、取り消しは1回こっきりで戻せます。

ですー。
図版がないけど、まあおっけーですw

Facebooktwittergoogle_plus

エクステンション屋さんになれるまで_その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週間以上かかった勘定になります。おつかれさま。。
さてー、いよいよなんか作ってみるとしますっ。
わりと先が思いやられます。

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

Facebooktwittergoogle_plus