タグ:Node 一覧

ElectronでTray iconを使う

Extensionを作れるようになると色々作ってしまうのですがパネルばかり作ってもパネルで画面が埋め尽くされて本来のワークスペースが破壊されて返ってやりづらくなりますしそもそもパネル自体できる事に限界があります。しかしパネル上ではできないメニューからの実行やキーボードショートカットといった機能も扱えれば可能性はもっと広がるでしょう。そして今回もElectronを使用するのですがElectronはwebベースの技術でUIが作れるだけでなくキーボードショートカット、アイコン、メニューといった幅広い機能をアプリケーションを制御できます。今回Trayアイコンの実装からscriptを実行するアプリケーシ

Read more

Adobe CEP11 2022年の開発環境

UXPの裏で影が薄くなってきていますがまだまだCEPはAdobeアプリケーション内でも主流ですし当分は現役でしょう。しかし終わりの見えてきたCEPも未だに情報が少なく開発に困ることが少なくありません。というわけで今回はライブラリ関係とjs実行環境関係について触れたいと思います。 JSON2 ECMA3のExtendScript側からオブジェクトをパネル側に返すときに必要なJSONのPolyfillです。(詳しくは過去の記事参照。) douglascrockford氏の公開しているGitHubから使わせてもらいましょう。 Vulcan.js CEPパネルの相互的な通信を可能とするライブラリです。

Read more

Extension Watch Placed Image ver2.0

前回開発したExtensionWatch Placed Imageを大幅にアップデートしました。 概要 Illustratorのドキュメントに配置された画像をNode.jsで監視して、更新されたら自動的にドキュメントを開いて保存するというものです。ポスターなんかで画像の色補正をしている時にテストプリントの度に補正->pdf保存->出力 補正->pdf保存->出力と繰り返すのが面倒だと思ってこの一連の作業を自動化するために開発しました。 使い方 前回同様保存対象のドキュメントと監視対象の画像を選ぶわけですが今回ドキュメントを読み込むとそのままドキュメント上に配置された画像を読み込みます。ドキュメ

Read more

Photoshop UXP上ではNode.jsは動かない。

振り返ったらPhotoshop UXPとNode.jsについてまとまった記事を書いていない事に気づいたので書くことにしました。まあ結論から言うとUXP上でNode.jsは使えないです。しかし下記のコードを見ると誰しもがNode.jsベースで動いたコードと思ってしまうとは思います。 requireでPhotoshopモジュールを呼び出してPhotoshop関係のメソッドを実行しています。見た目そのままNode.jsではありますがそれでは以下はどうでしょうか。 結果は以下。 pathモジュールもfsモジュールも一見使えそうではあります。そのpathモジュールのメソッド、例えばextnameやdir

Read more

Adobe Creative Cloud Libraries APIの中身(ログインとライラブラリー一覧取得)

何度か記事を載せてきたCreative Cloud Librariesですが今回具体的にどのように動いているか触れたいと思います。 そもそも何ができるのか サーバーサイドのコードからCreative Cloud Librariesのクラウドのドキュメントにアクセスできます。具体的にはクラウド上のドキュメンをダウンロードしたり逆に画像データのアップデート、ドキュメントの検索等。従来のExtendScript、もしくはUXP、CEPではCreative Cloud Librariesのクラウドにアクセスする方法自体ありませんでしたがこのAPIでAdobeのサーバーにアクセスすればクラウド上に保存さ

Read more

Adobe Creative Libraries APIにReact(Next.js)上でアクセスする。

前回の記事で取り上げましたAdobe Creative Libraries APIへのアクセスですが前回はサンプルのコードをそのまま動かしただけでした。サンプルコードではejsでHTMLの生成を行なっていましたがejs自体自分が慣れなてないのとやはりクライアントサイドはReactで構築したいということで試行錯誤してやってみました。自力でサーバーサイドレンダリングの環境を構築とかも考えたのですが色々難しそうなので結局Next.jsを使用。なお今回とりあえずAdobe Creative Libraries APIにアクセスするReactの環境を作ることが目的なのでReactやNext.jsの基本の

Read more

Adobe CCLibraries API クラウドにアクセスする

*2022年 1月 11日developer consoleのredirect URIフォームでエラーが出た場合の対処方法を追記 Adobeのソフトウェアにクラウドの環境が用意されてから既に結構時間も経ちました。ドキュメントを保存する時もローカルかクラウドか求められて段々Adobeも押してる感があります。実はExtendScriptでもいつの間にかクラウド関係のプロパティーがドキュメントオブジェクトに追加されていたりします。以下Illustratorの例です。 一応クラウド上のパスも取得できるのですがサーバーに実際にアクセスできる訳ではないようです。Creative Cloud Librari

Read more

Photoshop UXPからExtendScriptを無理矢理実行する

Photoshop UXPが導入されて巷ではどちらかというと今までCEPやExtendScriptで出来たことが出来なくなって悲鳴の方が大きい気がします。なのでUXPで出来ない事(ダイアログを呼び出さずにファイルを指定のパスに保存、特定のファイルを開く等)をやるためにどうにかExtendScriptを実行できないかみたいな話題も出てきています。そして結論から言うと通常の機能ではできません。そして今回それを無理矢理やろうという話です。 *5月31日storageに関する記述を修正。secureStorageは今回使用する必要がありませんでした。 そもそもUXPで出来ない事とは あまり公式ドキュメ

Read more

Promiseによる非同期処理のキャンセル機能を実装する

今後UXPの実装が進むとAdobe用のscriptの開発でこれまで以上に非同期処理が重要になるでしょう。もちろん非同期処理自体もはや当たり前のように使われていますが意外にキャンセルボタンの実装をしようと思ったかなりややこしかったのでまとめることにしました。なお、実装にあたってはこちらの記事を参考にしました。キャンセル可能でPromiseなsetTimeout()を作る 最初にPromise関数の実装にあたってPromiseの状態をオブジェクトで管理して一度resolve,rejectの結果を投げるメソッドをプロパティーに代入するという形をとっています。キャンセルボタンされない場合そのまま非同期

Read more

配置画像の差異を検知する Illustrator Extensionのプロトタイプ ItemInspector

Illustratorで画像を写真画像なりその他の素材を配置することはよくあることだと思います。そしてフォルダーを別の場所に移動させると配置した画像ががいつの間に似たような画像に置き換わったりすることも誰しもが経験することでしょう。Illustratorは配置された画像をaiファイルから見て配置データを相対パスで取得して管理しているのでしょうがこれがたまに上手くいかず同じ名前のファイルの別のディレクトリーに保存されているファイルを読み込んだりします。今回前回の保存ファイルのパスと更新日付をjsonファイルに保存して再度aiファイルを開いた時に前回更新時のデータを比較して前回の状態と新しい状態で

Read more