世界を動かす技術を、日本語で。

Asciinema: ターミナルセッションを記録して共有する

概要

asciinema は、ターミナル操作の録画と共有を テキストベース で実現する 無料・オープンソース ツール。 動画ではなくテキスト記録のため、 軽量 かつ 高精細 な再現が可能。 録画・共有・埋め込みも 簡単操作 で完結。 コピー&ペーストブログ・資料への埋め込み にも対応。 開発者や技術者向けの ドキュメント作成・共有 に最適。

asciinema:ターミナル録画の新しい選択肢

  • asciinema は、 ターミナルセッション の録画・共有専用の テキストベース ツール
  • 無料 かつ オープンソース のため、誰でも利用・導入が容易
  • 従来の 画面録画アプリ動画 と異なり、 軽量高解像度 な記録が可能
  • インストール後、ターミナルでasciinema rec demo.castコマンドを実行するだけで録画開始
  • 録画終了は ctrl+d 押下、または exit 入力で完了
  • 記録データは .castファイル として保存、テキスト形式のため 容量が小さい
  • 録画内容は asciinema のWebサイトで 公開・共有 も可能

コピー&ペーストの利便性

  • 再生中に 一時停止 すれば、 表示テキスト をそのまま コピー&ペースト 可能
  • 動画形式 と異なり、 コマンドや出力 の再利用が容易
  • ドキュメント作成や 技術解説 の効率化に寄与

埋め込み機能

  • asciinema playerブログ記事ドキュメントカンファレンス資料簡単に埋め込み 可能
  • 埋め込み方法は 公式ドキュメント で詳細解説
  • インタラクティブ なデモや 実践的な解説 の実現

まとめ

  • asciinema は、 軽量・高精細 なターミナル録画と 柔軟な共有 を両立
  • 技術ブログプロジェクトドキュメント教育資料 など幅広い用途に最適
  • 動画では伝えきれない ターミナル操作の 正確な共有 を実現

Hackerたちの意見

asciinema、めっちゃ面白いと思ってて、いくつか自分がやったことを録画してみたんだ。実験的なEmacsコマンドとか、コンピュータ代数システム、ARMアセンブリで作ったUnicodeテトリスゲーム、ミニマルなローグライクとかね。これらはサイトの中で特に派手な録画ではないけど、アイデアを伝えるのに役立ってる。声の解説があったらいいのにな。試す前に知っておいてほしいのは、ファイル名を指定せずに録画すると、アカウントを作ってなくてもデフォルトでウェブサイトにアップロードされちゃうってこと。ただし、公開はされないから安心して。だから、機密性が求められるものは録画しない方がいいかもね、もしくはその機能を無効にして。

それ、めっちゃ怪しいね。

3.0以降(Rustで書き直されて、Archとかで既に出荷されてるやつね)、ファイル名の引数が必須になって、デフォルトでローカルに保存されるようになったよ。アップロードは別のコマンドだから。

ボイスオーバーとかもっと色々やりたいなら、CodeMic.ioをチェックしてみるといいよ。

vhsに移行したよ。https://github.com/charmbracelet/vhs

かっこいいけど、GIF作れるの? asciinemaはテキストベースだったと思うけど。名前がちょっと残念だな。ASCIIエネマって読んじゃうから、面白いけど考えたくないよね。tty-playerとかにしたらいいのに…

VHSは、.tapeファイルを使った宣言的アプローチを提供していて、ターミナルデモを再現可能かつバージョン管理できるようにしてるし、録音を表示するのにブラウザが必要ないGIFも生成してくれるよ。

便利なツールだけど、見るたびに「ASCIIエネマ」って読んじゃうのがどうしてもね。

それか「アスシネマ」かな。

AsciiEnema: 重要な部分もちゃんと扱ってる。…じゃあ、失礼します。

これ、ターミナルの動きを見せるのにすごく良いし、コンパクトだね。2002年版のASCIIパックマンゲームを見せるのに使ったんだけど、誰もコンパイルしようとしないし、結局ビットロットしちゃうからね。プレイしてる様子(めっちゃ下手だけど!)はここで見れるよ。https://asciinema.org/a/723703

ゲームの出来、いいね! 録画も上手く見せてる。こういうのにasciinemaを使うの、いいアイデアだと思う。俺だったら、pacmanって打って、ゲームが始まるんじゃなくてシステムをアップデートしようとしてる理由を考えちゃうバカだな。

大好き!パックマンのキャラクターアニメーションが最高だね。

すごくクール!もしコードが共有できるなら、ぜひ見てみたいな。

アイデアはいいね。ツールは使ったことないけど、もしできるなら、録音をテキストドキュメントに変換して、何を実行するか、どんな出力が期待できるかを示してくれるといいな。ターミナルの録音を見ずに、動画を見なくても再現できるようなドキュメントにしたいんだ。ターミナルとテキストエディタの間でコピー&ペーストしたり、スクリーンショットを取ったりする必要がないように。人間が読めるファイル形式で録音して、それを適切なプロンプトでLLMを使って実行できればいいな。そしたら、常に録音しておきたい。tmuxのセッションがいつもたくさん動いてるから、全セッションの履歴を保存するように設定してるけど、履歴は一つのファイルになっちゃうからね。こういうのがあれば、うまく解決できそう。

録音したセッションのプレーンテキストログは、いくつかの方法で取得できるよ。asciinemaサーバー(例: asciinema.org)にアップロードしたら、ダウンロードをクリックしてtxt形式を選べるし、CLI 3.0を使えば、 - 既存のキャストファイルをプレーンテキストに変換: asciinema convert demo.cast demo.txt - プレーンテキストに直接録音: asciinema rec demo.txt

https://appzung.com のホームページでasciinemaを使ってるよ。これがいいのは、.castファイルのソーステキストを編集するだけで、公開したくない情報を簡単に削除できるところ。

誰か、asciinemaの録画をSVGに変換するプラグインで、今もメンテナンスされてるやつをおすすめしてくれない?前に見たときはこれが唯一アクティブにメンテされてるっぽかったけど: https://github.com/MrMarble/termsvg 他にもおすすめがあればいいな。SVGに変換するのが良いのは、帯域幅が少なくて静的サイトに使いやすいところだよね。

ちょっとだけ時間をもらいたいんだけど、asciinema自体の話じゃなくて、最近見つけたプロジェクト「carbonyl」について話したいんだ。これはヘッドレスGUIブラウザ(この場合はchromium)を使って、ウェブをサーフィンしてターミナルに表示するコマンドラインウェブブラウザなんだ。brow.shが先にあったけど(Firefoxが動いてた)、テストした感じ、carbonylの方がウェブサポートが全然いいよ。とにかく、すごく短いデモをここに貼っとくね: https://asciinema.org/a/HLHWeKE2s5bdyhUGQPBum49kx 帯域幅が高いからすごく短くなってるし、asciinema.orgは10MB以上のキャストを拒否するんだよね。

SadServersでは、いくつかのシナリオセッションを録画するのにAsciinemaを使ってるんだけど、こんな感じでやったよ: https://github.com/sadservers/sadservers?tab=readme-ov-file#... (まだ解決しなきゃいけない問題もあるけどね)著者のMarcinはいい人だし、asciinemaの開発は寄付やスポンサーに頼ってるってことを思い出しておいてね: https://github.com/sponsors/ku1ik

ここで見せてるターミナルエフェクトは全部、asciinemaを使って録画して、AGGでgifに変換したんだ: https://github.com/asciinema/agg ワークフローはほんの数秒で終わるよ。.castファイルがフォルダに出力されて、AGGがその.castを読み込んでgifを作るんだ。AGGには自動で行や列の幅を設定したり、非アクティブな時間を取り除く引数もあるよ。他に高品質なgifを作れる解決策は見つからなかった。asciinemaは最高だね。