とことんDevOps | 日本仮想化技術が提供するDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けするとことんDevOpsでは、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果など、DevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、アジャイル開発、コンテナ開発など

開催予定の勉強会

各種SNSのフォローもよろしくお願いいたします。

VHSコマンドがなかなかよさそう

私はよく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の指定で、拡張子をmp4webmにすることで、出力するファイルフォーマットを指定できるようです。

Settingはターミナルの見た目を設定できます。フォントサイズや、ターミナル自体のサイズです。

Sleepは指定秒数sleepします。mssが指定できるようです。mminを指定してみましたがエラーになりました。

Typeはターミナルに送る文字列を記述します。ここには実行するコマンドを入力します。

Keysは文字列ではないキーを記述します。EnterTabなどですね。Ctrl+<key>でモディファイアキーも指定できます。

Displayはコマンド結果の出力を表示、非表示するかを設定できます。例えばパスワードの文字列を取得するようなコマンドで、GIFには載せたくない場合に使えるような気がします。


demo.tapeファイルのバリデーションをします。

vhs validate demo.tape

わざとSleepSを小文字にしてみました。構文エラーがあると色々教えてくれます。


GIFを生成する

vhs demo.tape

Outputに指定したパスにGIFが生成されます。


ちょっとしたGIF作成に便利そうです。.tapeさえあれば何度でもGIFの生成はできますし、手順書とかでGIFを使う場合に、手順の書き換えも容易です。