
統合テストやCLIツールのデモのために、ターミナルの様子をGIFアニメとして保存することができるコマンドラインツール「VHS」が公開されています。
VHSはただ単にターミナルの様子を録画するわけではなく、文字や矢印キー、スペシャルキーの入力をエミュレートして実行し、その様子を.gifファイルに保存する事ができます。
ターミナルの操作を自動化して実行することができるため、何回でも同じ手順を繰り返すことができます。
プログラム自体はGo言語で作られており、Winows/macOS/Linuxなど、幅広い環境で動作します。
以下使用方法を説明します。
VHSの使用方法
VHSは、macOS、Linux、Winowsで使用できます。
macOSでHomebrewを使っている場合は、以下のコマンドを実行してインストールします。
brew install charmbracelet/tap/vhs ffmpeg brew install ttyd --HEAD
MacPortsを使ってインストールすることもできます。
sudo port install vhs
その他の環境に関しては公式サイトでご確認ください。
vhsコマンドが使えるようになったら、以下の手順でデモを試してみます。
まず新しい.tapeファイル(vhsが利用できるコマンドや設定を羅列したファイル)を作成します。
vhs new demo.tape
viなど好みのエディタでdemo.tapeファイルを開きます。
vim demo.tape
内容を次のように変更します。
# Where should we write the GIF? Output demo.gif # Set up a 1200x600 terminal with 46px font. Set FontSize 46 Set Width 1200 Set Height 600 # Type a command in the terminal. Type "echo 'Welcome to VHS!'" # Pause for dramatic effect... Sleep 500ms # Run the command by pressing enter. Enter # Admire the output for a bit. Sleep 5s
編集が終わったら以下のコマンドを実行して、demo.gifを作成します。Outputで出力ファイル名を変更することもできます。
vhs < demo.tape
実際に作成されたファイルが以下となります。

ターミナルに「echo 'Welcome to VHS!'」という文字を入力し、エンターキーを押すと、「Welcome to VHS!」という結果が表示される様子が確認できます。
VHSで利用できるコマンドはCommand Referenceにまとめられています。
Output <path>: specify file outputRequire <program>: specify required programs for tape fileSet <Setting> Value: set recording settingsType "<characters>": emulate typingLeftRightUpDown: arrow keysBackspaceEnterTabSpace: special keysCtrl+<char>: press control + keySleep <time>: wait for a certain amount of timeHide: hide commands from outputShow: stop hiding commands from output
その他多数のサンプルがこちらで確認可能です。
まとめ
ターミナルのGIFアニメ画像を作成できるコマンドラインツール「VHS」を紹介しました。デモやチュートリアルの作成といった実用的な用途のほか、SF映画(マトリックスなど)に登場するターミナルを再現するという興味深い試みも行われています。
