ScriptUIで「箱入り娘」つくってみた

はじめに

ちかごろ、AIにスクリプト書いてもらうの上手な人たち、目立ちはじめてきましたねえ。
これはかんたんに予測できてた未来。
言われた通りのものを作るだけだと、もうスクリプトでカネ取るのは厳しくなってきてるのかもしれないですねえ。
とはいえ的確なプロンプトを入力するスキルのある人は、時間の問題でいずれ自分で書けるようになっていたであろう人、もしくは時間の問題でスクリプトを習得しなかった人、かなと思ってます。
注文のつけかたがうまい人ってのは前からいたので。

毎日、つぎつぎに単純ながらとても便利なスクリプトが公開されてってます。
スクリプトは書けるけどアイディアに乏しい、という人はもう優位性がだいぶ下がったんではないかな。
うちはまだまだがんばりますけどねえ。

つぎに

というわけで、マインスイーパースライドパズルと続いた「ScriptUI上に敷き詰めたアイコンボタンをポチポチするやつのシリーズ」これで最後です。

AIでUXPだCEPだをなんかする人というのはまだしばらく現れない気がしてるので、
前述のAI勢のタシになるよう、ExtendScriptおよびScriptUIでちょっと可能性を模索してみたつもり。
なので今回ばかりはコードもわざとらしくGitHubに置いときます。文末に。
機能を欲張ったせいでリファクタリングが甘々ですけど。

というわけで今回こしらえたのは「箱入り娘」というやつです。


ダウンロード

petDaughter

今までと違って、残念ながら現状、アプリを選びます。InDesign2023以下をおすすめします。
他でも動くんですけど外観が著しく不細工になるのでおすすめできません。

2023以下はもうインストールできません。環境を残してある同業者しか楽しめない残念仕様。InDesign伝道師としても落第。

Photoshopは特にひどいぞ。。

AfterEffectsやPremiereではどう見えるんだろう、これ。だれかおしえて。


あそびかた

例によってフォルダの中のjsxだけはアプリのスクリプトフォルダに移動して、残ったフォルダは丸ごとデスクトップに置いてください。デスクトップにアイコンフォルダがないと動きません。

jsxを実行するとレベル選択が出ます。
1:かんたん 〜 6:おに です。

選択してOKするとステージが出現します。
例によってイヤになったらescキーで終わらせましょう。

赤くてでっかい、まつげの長い娘を、がんばって出口まで運ぶやつです。


操作方法は3通り。よくばりすぎだろう。

動かしたいコマをクリック

ブランクマスに接したコマをクリックするとブランクへ移動します。

ただ、2方向にブランクがある場合は
強>> 上 下 左 右 >>弱
の優先度で移動方向が決まります。
優先度が低い方へ動かしたいときはshiftキーを併用してください。


キーボードの矢印キーでの操作

押した矢印方向の先にブランクがあるコマ、が動きます。
これも対象が2つある場合は上記にならい優先度に応じた挙動をします。
これも優先度が低い方を動かしたいときはshiftキーを併用してください。


マウスでドラッグ

これがいちばん直感的です。
…が、実践上、体感わりとだるいです。せっかくがんばって実装したのに、なんということだ。泣いた。


つわけで

今回、自分への課題は「ビット演算を多用する」なのでした。
徹頭徹尾というわけにはいかなかったけど、書いてる最中はだいぶコンピューターと対話しているような気分になれました。
自己満足でしかないっ

このコードの一部が誰かの役に立てば何よりですけども。
コードのリンクはこちらえ。
https://github.com/AJABON/petDaughter

次回?
…テトリスとかなんとか言われてるけど、冗談だよなw

InDesign, Illustrator:モジ入力するやつ、まとめました

というわけでアレコレコンパチにしました。
よかったねえ。正直誰も得しないんだけど、書いた人は管理がラクになるだよ。

※結局Windows環境があまりにもあんまりな挙動をしたので、分けなおしました…。
何やってんだー。
使い心地は一緒ですが、InDesignはダイアログのフリをしたパレットなので、出現中もドキュメントをさわれてしまいます。知らないふりして文字入力にいそしんでください。


モジ入力するだけ.jsx

たぶんCS5以降どれでも動きます。
前までのやつはCS4以降で動くと書いてたけど、あれは嘘ですな。CS4がやばいんだ。

2025.06.04 キャンセルしても入力されてしまうマヌケな不具合を修正…すみませんー。また、Windows環境ではダイアログを閉じた時にバックグラウンドのアプリが前面に出てしまう現象を確認しました。ひとまず応急的に対策しましたが、引き続き調査します。
2025.06.05 前日の修正でIllustratorに使えないメソッドを入れてしまったので対応。すみませーん。…と、選択文字列を取り込んだ際にWindows環境ではダイアログ上で選択状態にならなかったのを改善しました。


ここがチガウ

ダイアログをScriptUI仕立てのものに変更しました。
これでダイアログ上でのコピペやショートカットによる「すべてを選択」が可能になりました。
ついでで文字が少し大きくなりました。わざとではないのでこれ以上はどうしようもないんだけど。
まあ、よかったねえ。


ここもチガウ

ちょっと改良して、
スクリプト実行時にshiftキーが押されていると選択した文字列がダイアログに取り込まれます。
macOSでInDesign上で実行したときに限り、そのまま勝手に再変換がかかります。
再変換についてはだいぶ昔につくったやつをわりと安定化させました。
それ以外の環境で再変換したいときは自分でショートカットとかやってください。
※ ATOKなど外部IMを使ってる人のことは知りません
※ Windowsで情報おもちの方、なんかいい話あればおしえてください


つまりはショートカットを2通り登録するだよ

ということで、shiftあり/なし でショートカットを2通り作っておくといいです。
有志のスクリプトランチャーが対応しているかはちょっとわかりません(調べてません)。
InDesignの場合は楽勝で、
「内容」のプルダウンメニューで切り替えて、「オブジェクト」と「テキスト」で振り分けましょう。

Illustratorの場合はちょっとだけ手間をかけます。
新規アクション作成。ファンクションキーをあてます。shiftあり/なしで2こ作ります。

アクションパネルメニューから「メニュー項目を挿入」

で、この画面が出てるうちにメニューからスクリプトを実行すると名前が入るのでOKボタン。
アクション記録中にスクリプトをただ実行しただけだとうまく記録できないので注意。

というわけで。
さあ、安心して働きましょお。

Illustrator:重たいテキスト内で入力してると落ちたりしてこわいのでダイアログで補助するやつ

昨日のやつのIllustrator版。どうぞどうぞ。


ai_モジ入力するだけ.jsx

たぶんCS4以降どれでも動きます。

すみません、こっちにまとめました


コード使い回しで、InDeginよりシンプルに済むかと思ったら真逆っ!
入力後のキャレット位置がおぼつかなくてモチベ下げてたらmonokanoさんがSPAiの機能のひとつ「プレーンテキストでペースト」でやってる処理を提供してくださいました。徳がすごいぞ。やったね。ありがとうございますっ

このまま出したら完全に人のふんどしなので、
せっかくなのでshiftキーを押しながら実行した場合は選択テキストをダイアログ内に反映するようにしました。

するとどうなるの

ダイアログ上ならOSの機能で選択テキストを再変換できてしまうのです。
再変換は、macOSなら ctrl + shift + R。
さらに日本語キーボードなら「かな」キーを2連打でもOK。
Windowsなら…右クリックして「再変換」を選択(らしい)。

こんなかんじです。

Illustratorの場合、スクリプトの実行に直接ショートカットをあてることはできないので、
・スクリプトを実行するアクションを作成してそのアクションにショートカットを設定
Keyboard Maestro(有料)、前述したmonokanoさんのSPAi(macOS)、あるふぁさんのSppy(Windows)など利用してショートカットを設定してみてください。
もしかしたらshiftキー併用と折り合いがわるいかも。そこはまあ工夫してみて(投)。

参考:再変換の母、流星号さんのblog
人のふんどし祭りじゃー。