Edited at

Photoshopをエンジニアらしく使う方法

More than 1 year has passed since last update.


はじめに

mixiグループ Advent Calendar 2017 の13日目の記事です。

家族アルバム みてね」というサービスの開発を行っている、@gembafです。

仕事として、Photoshopを使う機会があったので、記事にしてみました。

ちなみに、今回初めて使いました。


みてね とは

子どもの成長をいつでも、どこでも、いつまでも

というテーマの元、スマホで撮った子どもの写真や動画を、簡単に共有・整理できることにより、家族で楽しく会話したり、成長をふりかえることができるアプリです。


やりたいこと

大量の画像に対して、Photoshopで色々加工して、いい感じの画像を量産したい (意訳)


問題点


  • 1つ1つ手でポチポチやっていくの辛すぎ問題

  • デザイナさんのリソースを専有できない


    • デザイナさんにはもっと高尚な作業をしてほしい



ということで、こんな仕事はコンピュータにやってもらいました


本題

流れとしては以下の通りです。


  1. Photoshopでアクションを定義

  2. Photoshopでアクションをドロップレット化

  3. ドロップレットをスクリプトで実行

今回は、例として72x72の画像ファイルを、24x24にリサイズしたいと思います。


Photoshopでアクションを定義


アクションとは

アクションの作成および再生方法(公式)


アクションとは、Photoshop での一連の作業を記憶しておいて、必要な時に再利用できるようにする機能です。いくつもの作業をその都度メニューから選択して実行する手順を、アクション機能を使用することにより、2、3 のステップで自動的に実行することができます。



使い方

詳細については上記の公式ドキュメントを参照してください。

基本的な流れは以下のとおりです。


  1. 画像開く

  2. アクションの録画開始

  3. リサイズ

  4. 別ファイルとして保存

  5. 画像閉じる(超重要!!!)

  6. アクションの録画終了

これでアクションを定義できました。

ファイルを開いてから、作成したアクションを再生すると、3〜5が実行されます。

ちなみに、5をやっておくと、リサイズが終わった画像は自動でタブが閉じられるので便利です。

ここまではデザイナの方に教えていただきました。


Photoshopでアクションをドロップレット化


ドロップレットとは

ドロップレットの作成方法(公式)


ドロップレットでは、ドロップレットアイコンに画像ファイルやフォルダーをドラッグ&ドロップすると 1 つのアクションを適用することができます。ドロップレットはデスクトップなどのディスク上に作成でき、実行するアクションの内容は自由に設定することができます。



使い方

詳細については(ry

先程作成したアクションをドロップレット化することで、画像をドラッグ&ドロップすると24x24にリサイズしてくれるデスクトップアプリ(?)が出来上がります。

数十枚ぐらいの画像なら、フォルダごとドラッグ&ドロップするだけでリサイズできます。

ただ、大量の画像を一気に与えると、Macが死んでしまうので、もう少し工夫が必要です。


ドロップレットをスクリプトで実行

最後に、先程作成したドロップレットをスクリプトで実行します。

自分はShell力が足りなかったのでRubyで書きましたが、外部コマンドを実行できればなんでもいいです。

APP = 'resize24x24.app' # ドロップレットのパス

DIR = 'path/to/72x72' # 対象のパス

# ドロップレットに引数として渡すときは、絶対パスでないと動かないので注意
files = `find \`pwd\`/#{DIR} -type f | grep -v '.DS_Store'`.split(/\n/)

files.each do |file|
p file
`open #{APP} --args #{file}` # ドロップレットの実行
sleep 1 # 優しさ
end

コマンドラインからアプリケーションを開くために、openを使用しました。

引数として与える画像ファイルのパスは、絶対パスでないとダメらしいので、そこだけ注意が必要です。

後は、ループ毎にPhotoshopへの気遣いを忘れなければ完璧です。

アクションを1回実行して、少し休憩するぐらいの時間を与えてあげましょう。


注意点

ちなみに、上記のスクリプトを実行すると、Mac上でフォーカスが取られ続けます。

このスクリプトは、1回のループで、「Terminal」→「Photoshop」というようにフォーカスが遷移します。

そのため、ループの度に(今回なら1秒に1回)フォーカスが移動し続けます。

めっちゃチカチカします。

帰り際に実行してから退社することをおすすめします。

もちろん、スリープの設定は切っておきましょう。


おわりに

初めて使いましたが、自動化しようと思えば結構できる部分もあって、意外とPhotoshop便利だなと思いました。

ちなみに、今回みたいな記事をチーム内ドキュメントにまとめてたら、ドロップレット機能の便利さに気づいたデザイナさんが覚醒して、Photoshopマスターになってました。

デザイナさん「画像ですか?いくらでも量産しますよ」