私はよくRedditのr/commandline
というサブレディットを見ています。ここではコマンドラインツールのリリース情報や、こういう時どうしたらいいんだっけ?っという情報が流れてきます。
先日も情報収集のために徘徊しているとVHSというツールを発見しました。
.tape
拡張子のファイルに実行したいコマンドなどを記述してvhsコマンドに渡してあげると、その記述したコマンドを実行しているGif画像を生成してくれるようです。コマンド名といい、拡張子といい、センスありますね。
便利そうなので、試してみます。
インストール
インストール方法はREADME.mdに記載されています。
https://github.com/charmbracelet/vhs#installation
私はMacを使っているのでHomebrewからインストールしました。
ffmpeg、ttydに依存しているので、go get
でインストールする場合は、別途ffmpeg ttydをインストールしてください。
google-chrome(or chromium)にも依存してますが、chromeがインストールされていなければ自動でインストールされるようなので、以下のようなログが出ても問題ありません。
[launcher.Browser]2022/10/31 16:42:40 try to find the fastest host to download the browser binary [launcher.Browser]2022/10/31 16:42:40 check https://storage.googleapis.com/chromium-browser-snapshots/Mac/1033860/chrome-mac.zip [launcher.Browser]2022/10/31 16:42:40 check https://registry.npmmirror.com/-/binary/chromium-browser-snapshots/Mac/1033860/chrome-mac.zip [launcher.Browser]2022/10/31 16:42:40 check https://playwright.azureedge.net/builds/chromium/1033860/chromium-linux-arm64.zip [launcher.Browser]2022/10/31 16:42:40 check result: Get "https://playwright.azureedge.net/builds/chromium/1033860/chromium-linux-arm64.zip": context canceled [launcher.Browser]2022/10/31 16:42:40 check result: Get "https://registry.npmmirror.com/-/binary/chromium-browser-snapshots/Mac/1033860/chrome-mac.zip": context canceled [launcher.Browser]2022/10/31 16:42:40 Download: https://storage.googleapis.com/chromium-browser-snapshots/Mac/1033860/chrome-mac.zip [launcher.Browser]2022/10/31 16:42:41 Progress: [launcher.Browser]2022/10/31 16:42:41 00% [launcher.Browser]2022/10/31 16:42:42 45% [launcher.Browser]2022/10/31 16:42:43 100% [launcher.Browser]2022/10/31 16:42:43 Unzip to: /Users/ttanaka/.cache/rod/browser/chromium-1033860 [launcher.Browser]2022/10/31 16:42:43 Progress: [launcher.Browser]2022/10/31 16:42:43 00% [launcher.Browser]2022/10/31 16:42:44 37% [launcher.Browser]2022/10/31 16:42:45 71% [launcher.Browser]2022/10/31 16:42:45 100%
使ってみる
.tape
の雛形を作ります。
vhs new demo.tape
生成されたdemo.tape
を開いてみてください。色々書かれていると思います。
#
から始まる行がコメントです。コメントに設定項目が色々書かれています。
Output
は生成するGIFファイルまでのパスです。vhsはGIF
MP4
WebM
に対応していて、Outputの指定で、拡張子をmp4
やwebm
にすることで、出力するファイルフォーマットを指定できるようです。
Setting
はターミナルの見た目を設定できます。フォントサイズや、ターミナル自体のサイズです。
Sleep
は指定秒数sleepします。ms
やs
が指定できるようです。m
やmin
を指定してみましたがエラーになりました。
Type
はターミナルに送る文字列を記述します。ここには実行するコマンドを入力します。
Keys
は文字列ではないキーを記述します。Enter
やTab
などですね。Ctrl+<key>
でモディファイアキーも指定できます。
Display
はコマンド結果の出力を表示、非表示するかを設定できます。例えばパスワードの文字列を取得するようなコマンドで、GIFには載せたくない場合に使えるような気がします。
demo.tape
ファイルのバリデーションをします。
vhs validate demo.tape
わざとSleep
のS
を小文字にしてみました。構文エラーがあると色々教えてくれます。
GIFを生成する
vhs demo.tape
Output
に指定したパスにGIFが生成されます。
ちょっとしたGIF作成に便利そうです。.tape
さえあれば何度でもGIFの生成はできますし、手順書とかでGIFを使う場合に、手順の書き換えも容易です。