asciinema について
asciinema はターミナル操作をプレーンテキストとして記録します。再生時も正確なタイミングと色が保持されます。ファイルはコンパクトで、ウェブページに埋め込んだり共有したりできます。
主な機能
- 01ターミナルセッションを軽量なテキスト形式で記録
- 02正確なタイミングと色を保持して再生
- 03オンラインで共有またはウェブページに埋め込み
活用シーン
- 01CLI ツールやオープンソースプロジェクトのデモ作成
- 02コマンド実行手順とワークフローのドキュメント化
- 03トラブルシューティング手順やセットアップ方法の共有
インストール
OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。
インストール後にasciinema --versionを実行して確認します。
コマンド例
よく使うコマンドを使う順に並べています。
詳細
asciinema
asciinema(asciinema CLI または asciinema recorder とも呼ばれます)は、ターミナルセッションを録画し、ライブストリーミングするためのコマンドラインツールです。
画面の映像を容量の大きい動画ファイル(.mp4、.mov)に記録する一般的な 画面録画 ソフトウェアとは異なり、asciinema CLI は ターミナル内で 実行され、ターミナルセッションの出力を軽量な録画ファイルとして
asciicast 形式(.cast)で記録するか、視聴者にリアルタイムでライブ配信します。
録画はターミナル内で再生したり、asciinema player を使ってウェブページに埋め込んだり、asciinema.org などの asciinema server に公開して共有したりできます。ライブストリームでは、視聴者がターミナルセッションの進行をリアルタイムで見ることができます。
asciinema は GNU/Linux、macOS、FreeBSD で動作します。
主な機能:
- ターミナルセッションをファイルに録画できます。キーボード入力の キャプチャ(オプション)や、環境変数のキャプチャ設定にも対応しています。
- ターミナル内で録画を再生できます。速度調整、ループ再生、アイドル時間の制限、ステップごとの移動、 マーカーでの一時停止、ターミナルの自動サイズ変更(オプション)に対応しています。
- ターミナルセッションを複数の視聴者にリアルタイムでローカルおよびリモートでライブ ストリーミングできます。LAN/localhost での視聴向けに、ウェブプレイヤーを内蔵した HTTP サーバーも備えています。
- セッションの同時実行:ローカルとリモートにストリーミングしながら、同時にファイルへ録画できます。
- 軽量な asciicast 録画
形式に対応し、zstd 圧縮(
.zst)録画の読み書きをネイティブにサポートします(平均で元のサイズの 8%)。 - asciicast v1/v2/v3 から asciicast v2/v3、生のターミナル出力、またはプレーンテキストへ変換できます。
- 複数の録画を 1 つに結合できます。タイミングは自動で調整されます。
- セッション中の操作:一時停止/再開によるキャプチャの制御や、カスタマイズ可能なキー バインディングによるマーカーの追加がその場で行えます。
- ターミナルサイズ、ターミナルテーマ、コマンド、タイトルなど、セッションのメタデータをキャプチャできます。
- 録画コマンド、キャプチャオプション、再生速度、アイドル時間の制限、通知、キー バインディングなどのデフォルト値を設定ファイルで指定できます。
- ヘッドレスモード、設定可能なターミナルウィンドウサイズ、終了ステータスの伝播に対応し、スクリプトや CI での録画・ストリーミングに適しています。
- 変換時の stdin/stdout、およびローカルファイル、stdin、HTTP(S) URL からの再生に対応しています。
- asciinema server(例:asciinema.org)と連携し、アップロード、ホスティング、リモートライブストリーミング、セルフホスト可能なサーバー、公開範囲の制御、説明、同期音声 URL を利用できます。
セッションを録画するには、シェルで次のコマンドを実行します。
asciinema rec demo.cast
内蔵 HTTP サーバー経由でセッションをストリーミングするには、次を実行します。
asciinema stream -l
リレー(asciinema server)経由でセッションをストリーミングするには、次を実行します。
asciinema stream -r
インストールと使い方の概要については、はじめに ガイドをご覧ください。
ビルド
ソースコードをダウンロードし、asciinema バイナリをビルドして、$HOME/.cargo/bin に一度にインストールするには、次を実行します。
cargo install --locked --git https://github.com/asciinema/asciinema
これには、システムのパッケージマネージャーまたは rustup を使用してインストールした、Cargo を含む Rust ツールチェーン(1.82 以降)が必要です。
インストール後、$HOME/.cargo/bin がシェルの $PATH に含まれていることを確認してください。
または、ローカルのチェックアウトからビルドすることもできます。まず、ソースコードをダウンロードします。
git clone https://github.com/asciinema/asciinema
cd asciinema
ツールチェーンを用意する方法として、必要なものがすべて揃っており、そのまま使える Nix 開発シェルを推奨します。
nix develop
Nix を使用しない場合は、上記のとおり Cargo を含む Rust が必要です。
次に、以下のコマンドでバイナリをビルドします。
cargo build --release
これにより、target/release/asciinema にバイナリが生成されます。このバイナリを $PATH 内のディレクトリにコピーするだけで使えます。
man ページとシェル補完ファイルを生成するには、これらのファイルの保存先のパスを ASCIINEMA_GEN_DIR に設定します。例:
ASCIINEMA_GEN_DIR=/foo cargo build --release
上記のコマンドはバイナリをビルドし、man ページを /foo/man/ に、シェル補完ファイルを /foo/completion/ ディレクトリに配置します。
メモ
現在、Windows はサポートされていません。詳しくは #467 をご覧ください。 代わりに PowerSession をお試しください。
開発
開発はすべて develop ブランチで行われます。このブランチには、Rust で書かれた現行世代(3.x)の asciinema CLI が含まれています。
Python で書かれた旧世代(2.x)は、python ブランチにあります。
ツールチェーンのセットアップとビルド手順については、ビルドをご覧ください。cargo test を実行するとテストスイートを実行できます。
変更を提案または提出する場合は、まずコントリビューションガイドラインをお読みください。
寄付
asciinema の開発を持続させるには、寄付とスポンサーシップが欠かせません。
このプロジェクトを気に入っていただけたら、支援者または企業スポンサーになることをご検討ください。
asciinema のスポンサー:
コンサルティング
ニーズに合わせた asciinema の統合やカスタマイズにご興味がある場合は、asciinema のコンサルティングサービスをご覧ください。
ライセンス
© 2011 Marcin Kulik.
すべてのコードは GPL v3 以降でライセンスされています。詳細は LICENSE ファイルをご覧ください。