統合テストや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 typingLeft
Right
Up
Down
: arrow keysBackspace
Enter
Tab
Space
: 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映画(マトリックスなど)に登場するターミナルを再現するという興味深い試みも行われています。