Automatorで快適なキャプチャ生活をおくる

ブログを書く上でけっこう手間なのが、画面のキャプチャです。
技術ブログを書く上で、現状PC上の画面を共有するためにMac標準のプレビューアプリで画面をキャプチャしています。

しかし標準のプレビューアプリ、デフォルト設定だとなかなかかゆいところに手がとどかない仕様になっています。撮影した後色々と手間を掛けないといけないのがつらいです。

具体的には

  • デフォルトでは画像の保存先は~/Desktopになっています。このままだと取る度に画像が増えて~/Desktopが散らかるので私はブログ用の保存フォルダを作成していちいち画像を移動していました。
  • 画像のサイズがとてつもなく大きいです。PCのディスプレイ解像度が上がっているので仕方がないのですが、1つのウインドウをキャプチャしただけで数千ピクセルの画像が出来上がってしまいます。このままブログにあげても無駄ですのでいい感じにリサイズをしたい。
  • デフォルトでは画像形式はPNGになるので、容量を減らすためにJPEGで保存したい

そこでいろいろ解決策を考えていたところ、Automatorというアプリを使えば楽に自動化できることがわかりましたので、記事にします。

動作環境

この記事では以下の環境で作りました。

  • OS X El Captian(10.11.6)
  • Automator バージョン2.6(419)

Automatorってなに?

Mac標準でインストールされている、PCの動作を自動で設定できるようにしてくれるアプリです。
GUIでMacの操作(Finderで新規作成など)やbash、AppleScriptも設定できるので、わりかしなんでも自動化できるアプリのようです。

作るサービス

まずは何を作るのかを決めたいと思います。

  1. キャプチャの保存先を指定したフォルダに変更する
  2. フォルダは日付をつける
  3. ファイル名も日付をいれる
  4. PNGは容量が大きいのでJPEG形式で画像を保存する
  5. 選択した画像を一発でリサイズする。

作り方

今回は1-4までのキャプチャして保存するサービスと5のリサイズするサービスを2つ作りたいと思います。

キャプチャして保存するサービスを作る

まずAutomatorを起動させます。

サービスを選んで新規作成します。

上部の項目は

  • "サービス"は、次の項目を受け取ります:入力なし
  • 検索対象:すべてのアプリケーション
  • 選択されたテキストを出力で置き換える ->チェックなし

にします。

左側のペインでアクションを設定していきます。

アクション -> ユーティリティ -> シェルスクリプトを実行を選択して、真ん中の領域にドラッグアンドドロップします。

下記の項目を以下のように選択します。

  • シェル:/bin/bash
  • 入力の引き渡し方法:引数として

シェルスクリプトを書きます。

saveDir=/Users/satoutakeshi/product/conohaServer/blog_contents/"$(date "+%Y%m%d")"

# saveDirが存在するかチェック
if [ -e $saveDir ]; then  
    echo $saveDir >> ~/Desktop/log.txt
else  
    echo "$saveDir NOT found." >> ~/Desktop/log.txt
    mkdir $saveDir #saveDir作成
fi

screencapture -i -t jpg $saveDir/$(date "+%Y%m%d_%s").jpg

コードの解説

saveDir=/Users/satoutakeshi/product/conohaServer/blog_contents/"$(date "+%Y%m%d")"

保存フォルダを指定します。
今回は/Users/satoutakeshi/product/conohaServer/blog_contents/直下に日付のフォルダを指定していきます。
2016年11月11日に実行すれば/Users/satoutakeshi/product/conohaServer/blog_contents/20161111のようなフォルダを指定しています。

# saveDirが存在するかチェック
if [ -e $saveDir ]; then  
    echo $saveDir >> ~/Desktop/log.txt
else  
    echo "$saveDir NOT found." >> ~/Desktop/log.txt
    mkdir $saveDir #saveDir作成
fi

$saveDirフォルダがないなら作成しています。
ついでに~/Desktop/に指定したディレクトリをログとして出力してみました。

screencapture -i -t jpg $saveDir/$(date "+%Y%m%d_%s").jpg  

スクリーンチャプチャを撮るコマンドです。キャプチャはscreencaptureコマンドから呼び出せます。

screencapture [option] fileName

オプションと保存するファイル名を指定するとそこに保存してくれます。

オプションの意味は以下の通りです

  • -i
    • インタラクティブモードで撮影(⌘+4と同じ動作)。インタラクティブモードでコントロールキーを押してクリップボードに保存。スペースキーでマウス選択とウィンドウ選択の切り替え。エスケープキーでキャンセル。
  • -t:
    • 保存する画像のフォーマット指定。デフォルトでpng。jpg,tiff,pdfが選択できる。

保存する

できたサービスは保存しましょう。

⌘+sで保存します。

サービス名はsaveImageにします。

ショートカットとして登録

このサービスを楽に呼び出すためににショートカットを登録します。

システム環境設定 > キーボード > ショートカット > サービスを選択します。

saveImageを見つけてショートカットを設定します。 今回はShift+⌘+6で登録してみました。

標準のキャプチャがShift+⌘+3Shift+⌘+4なので使いやすいと思います。

これでキャプチャを取ろうと思ったときはShift+⌘+6を押して、キャプチャすれば指定フォルダに画像が保存されます。

これだけでも大満足です。

リサイズするサービスを作る

つづいて画像をリサイズするサービスを作ってみます。

Automatorを起動して、新規作成でサービスを作ります。

上部メニューに以下を選択します。

  • "サービス"は、次の項目を受け取ります:ファイルまたはフォルダ
  • 検索対象:Finder.app

選択されたFinder項目を取得をメイン領域へドラッグアンドドロップします。

イメージをサイズ調整をメイン領域へドラッグアンドドロップします。 すると渡されたイメージファイルを変更します。というアラートがでます。
リサイズする元画像を保存するため元画像をコピーするためのアラートです。

今回は使用しないため、「 追加しない」を選択します。

イメージをサイズ調整で、比率(パーセント)指定を選んで70にします。 70%でリサイズすることにします。

サービスを保存します。ReSizeAllImagesという名前にします。

保存した後にファインダーで画像を選択して右クリックします。

サービスを選んで ReSizeAllImagesを選びます。

すると、選択した画像は70%にリサイズされると思います。

終わりに

マック生活4年目ですが、Automatorがこんなに便利だとは思いませんでした。シェルを使えるので色々な自動化ができるんですね。

キャプチャを多く撮る方の参考になればと思います!

参考