らくがきちょう

なんとなく

macOS のターミナル操作を ttyrec & ttygif で録画し、Gif アニメ化する

コマンドや説明の説明をする場合、テキストだけでなく、動画もあると便利です。 とは言え、.mp4 などで動画を用意するまでも無い、ターミナルの操作だけを録画/再生したり、Gif アニメ化したい… という場合は ttyrec と ttygif が便利です。 今回は macOS 10.14.2 へ ttyrec と ttygif をインストールする方法と、簡単な使い方をメモしておきます。

Homebrew でインストール出来るバージョン

ttyrec も ttygif も、どちらも Homebrew からインストール出来るのですが Homebrew からインストールした ttygif はオプションの指定が出来なかった為、別の方法でインストールする方がお勧めです。 Homebrew でインストール可能な ttyrec のバージョンは 1.0.8 でした。

$ brew info ttyrec
ttyrec: stable 1.0.8 (bottled)
Terminal interaction recorder and player
http://0xcc.net/ttyrec/
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/ttyrec.rb
==> Analytics
install: 245 (30 days), 729 (90 days), 3,918 (365 days)
install_on_request: 136 (30 days), 386 (90 days), 1,624 (365 days)
build_error: 0 (30 days)

ttygif のバージョンは 1.4.0 ですが、こちらは上述の理由から Homebrew でのインストールはお勧めしません。

$ brew info ttygif
ttygif: stable 1.4.0 (bottled)
Converts a ttyrec file into gif files
https://github.com/icholy/ttygif
/usr/local/Cellar/ttygif/1.4.0 (5 files, 24.4KB) *
  Poured from bottle on 2018-12-14 at 13:53:36
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/ttygif.rb
==> Dependencies
Required: imagemagick ✔, ttyrec ✔
==> Analytics
install: 118 (30 days), 385 (90 days), 1,774 (365 days)
install_on_request: 116 (30 days), 383 (90 days), 1,735 (365 days)
build_error: 0 (30 days)

これをインストールしてしまうと以下のようにオプションが全く指定出来ません…

$ ttygif --version
1.4.0

$ ttygif --help
Usage: ttygif [FILE] [-f]
  -f : include window border
  -h, --help : print this help
  -v, --version : print version

ttyrec のインストール

ttyrec は Homebrew で簡単にインストール出来ます。

brew install ttyrec

ttygif のインストール

ttygif は Go 言語で書かれたバイナリを取得して利用することにします (もし Go 言語がインストールされていない場合は Homebrew で Go 言語をインストールしておきます)。 ttygif を go get します。

go get github.com/sugyan/ttygif

これで ttygif もインストールされました。

$ which ttygif
/Users/enbutsu/bin/ttygif

ttygif のオプション

ttyrec には殆どオプションがありません。 ttygif のオプションは以下の通りです。

$ ttygif --help
Usage of ttygif:
  -help
        usage
  -in string
        input ttyrec file (default "ttyrecord")
  -noloop
        play only once
  -out string
        output gif file (default "tty.gif")
  -s float
        play speed (default 1)
  -v    version

簡単な使い方

録画する

ttyrec を実行するだけで、録画が開始されます。 特にオプションを指定しない場合は ttyrecord という名前で保存されます。

ttyrec

任意のファイル名で保存したい場合は ttyrec の引数にファイル名を指定します。

ttyrec [FINENAME]

Gif アニメ化する

ttygif を実行するだけで、Gif アニメが作成されます。 特にオプションを指定しない場合は ttyrecord というファイルから Gif アニメを作成しようとします。

ttygif

入力ファイル名や出力ファイル名を指定したい場合は -in-out オプションで指定します。

ttygif -in [INPUT_FILE] -out [OUTPUT_FILE]

Gif アニメの再生速度を変更したい場合は -s オプションを指定します。 再生スピードを 2 倍にしたい場合は -s 2 のように指定するようです。 また、デフォルトではループ再生する Gif アニメを作成しますが、非ループな Gif アニメにするには -noloop オプションを指定します。