Hiromuブログ

最近はこちら(https://zenn.dev/hiromu)が本体

Photoshopでドローンを飛ばす

前回記事

www.hiromukato.com

今回はPhotoshopでドローンを飛ばす方法の記事になります。

Photoshopで(プラグインという括りだとあまり正確ではないかもしれませんが)いわゆるプログラミングにより何かしらの制御を行う方法を調べたところ以下の4種類ありました。

  • スクリプト
  • ジェネレータ
  • エクステンション
  • C++による開発

スクリプト

helpx.adobe.com

スクリプトはメニューの[ファイル] - [スクリプト]を選択したときに表示されるもので、JavaScript、Applescript、VBscriptで作成できます。

PhotoshopインストールフォルダのPresets¥Scriptsフォルダにスクリプトを保存することでメニューに表示されるようになります。

以下サイトの「ScriptingListener プラグイン」の項目にサンプルファイルが置いてあります。

helpx.adobe.com

ジェネレータ

ジェネレータはメニューの[ファイル] - [生成]を選択したときに表示されるもので、node.jsを利用した拡張になります。

以下に動画の紹介がありますが、とても便利な機能だと感じました。 http://blogs.adobe.com/photoshop/2013/09/introducing-adobe-generator-for-photoshop-cc.htmlblogs.adobe.com

ジェネレータの作り方について、日本語で解説されているものとしては以下サイトがわかりやすいと思います。 codezine.jp

ただし、以下本家のサイトを確認するのが一番確実ではあります。

github.com

node.jsを利用するため環境構築が必要になりますが、構築方法については以下に記載されています。

github.com

エクステンション

エクステンションはメニューの[ウィンドウ] - [エクステンション]を選択したときに表示されるものです。 Webの技術(HTML5, CSS3, JavaScript)を用いてUIや何かしらの処理を行うことができるもののようです。 詳しいことについてはこちらのサイトなどが参考になりそうです。(※)

www.tam-tam.co.jp

C++による開発

SDKがこちらで公開されています。(※)

www.adobe.com

(※)ジェネレータによりやりたいことが出来そうな目途が立っていたので詳細は未確認

ドローンを飛ばした方法

まずは一番シンプルそうなスクリプトについて、サンプルファイルの中に「Socket.jsx」というファイルがあるので確認しました。 通信できることは分かったのですが、以下のガイドを見るとTCPについては記載がありますが、UDPについてはなにも書かれていません。なのでいったんスクリプトで何とかする方法はここで見送りました。

http://estk.aenhancers.com/6%20-%20External%20Communication%20Tools/socket-object.htmlestk.aenhancers.com

次に、ジェネレータについて確認を進めました。Photoshopの裏でnode.jsを動かしているということが分かり、node.jsであればUDP通信できることがすぐに分かったため、ここでおおむね目途が付きました。 ジェネレータの環境構築については上記のリンクしているサイトに記載されている通りとなりますが、以下の点については注意が必要です。

  • node.jsのバージョンは最新のものを入れたら動かなかったのでv8.11.1をインストールする必要がある
  • もともとPhotoshopにnode.jsがビルトインされているようなので、そちらをオフにして新たにインストールされたnodo.jsに接続する必要がある(以下手順)
    • メニューの[編集] - [環境設定] - [プラグイン]を選択する
    • [Generatorを有効にする]のチェックを外す
    • [リモート接続を有効にする]にチェックを入れる
    • Photoshopを再起動する

後は、手順通りに進めれば特にハマるところはないと思います。最後に(そして今回の目的である)ドローンを飛ばすために必要となるjsonとjsファイルを実装すれば完成です!

package.json
{
  "name": "TELLO",
  "version": "1.0.0",
  "description": "TELLOプラグイン",
  "main": "main.js"
}

Photoshop(のジェネレータ)からTELLOを操作するスクリプト