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


はじめに

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マスターになってました。

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