All Articles

AppleScriptを使ってMac画面収録動画をGIFに自動変換

動機

Mac で画面を収録する方法によると、

macOS Mojave では、キーボードの「shift + command (⌘) + 5」キーを押すと、画面の静止画を取り込んだり動画で撮影したりするために必要なコントロールが全部表示されます。

ただ、この方法で作成する動画が .mov 形式で、Blog や Pull Request にはそのままでは使えないので、FFmpeg を使って手動で GIF に変換していました。

これが結構手間で画像を貼り付けるモチベーションが下がるので、今回、Apple Script を使い自動化しました。誰かの手間が少しでも省けたら嬉しいです。

Gyazo などのツールでも画像を作成してくれるサービスを使わないの? 長めの尺のアニメーションを撮りたい時もあった為です。

セットアップ

  • python3
  • ffmpeg

をインストールします。

Git からソースを DL

こちらのソースをローカルに DL してください。

私は、iCloud 自動同期されたくないので、画面収録される場所を、デスクトップではなく、~/workspace/capture/ としていますが、デスクトップや別の場所に変更されている方はパスを変更してください。

※ 「shift + command (⌘) + 5」で表示されるツールバーのオプションにて保存先変更が可能です。

Python のインストールパスを変更

Apple Script を実行した際に、フルパスで指定する必要があったため、以下のように指定しています。各自の環境に合わせて修正してください。

  • scripts/convert.sh
~/.pyenv/shims/python convert.py

カスタム Apple Script 作成

アプリケーション > ユーティリティ > スクリプトエディタ で開いて任意のスクリプトを作成できます。 書き出しの際は、複数のフォーマットを選べますが、今回は、スクリプトを選んでください。拡張子が、.script で出力されれば OK です。

property dialog_timeout : 30 -- set the amount of time before dialogs auto-answer.

on adding folder items to this_folder after receiving added_items
    try
        do shell script "~/workspace/capture/scripts/convert.sh"
    end try
end adding folder items to

名前は何でも大丈夫です。

作成したファイルを、/Library/Scripts/Folder Action Scripts にコピーしてください。

フォルダアクションの設定

画面収録されるフォルダを選んで、右クリック → サービス → フォルダアクション設定にてフォルダアクションを設定可能です。

ここで設定できるのは、/Library/Scripts/Folder Action Scripts に配置されているものだけのようなので注意してください。

associate custom script

setup folder action

setup folder action

動作

  • Command + Shift + 5 にてオンス r クリーンコントローラを表示
  • 画面全体収録または、選択部分収録を選択して収録開始
  • Command + Control + Esc にて録画終了

参考