メディアもドキュメントも！ターミナルで直接表示できる万能catコマンド「mcat」

近年のターミナル環境は非常に高機能化していますが、ファイルを閲覧する際には依然として`cat`コマンドが頻繁に使用されています。しかし、従来の`cat`コマンドはテキストファイルの表示に特化しており、画像やPDFなどのメディアファイルを表示するには別のアプリケーションを起動する必要がありますね。

今回紹介する「mcat」は、様々な形式のファイルをターミナル上で直接表示できる拡張版catコマンドです。Rustで開発されたこのツールを使えば、ドキュメント、画像、動画などをターミナルから離れることなく閲覧できます。

![Screenshot 2025-04-25 at 0.00.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79562/b2f706a5-3c93-40ec-96c6-cddf593ee69b.png)

## mcatとは？

mcatは、GitHub上の[Skardyy/mcat](https://github.com/Skardyy/mcat)リポジトリで公開されている「cat command for documents / images / videos and more!」をコンセプトに開発された、多機能なファイル閲覧ツールです。リポジトリの README.md に記載されている特徴は以下の通りです：

- **ファイルをMarkdown/HTMLに変換**: CSV、ディレクトリ、リッチドキュメント形式（DOCX など）などの構造化されたコンテンツをMarkdownまたはHTMLに変換
- **Markdown/HTMLを画像に変換**: MarkdownまたはHTMLファイルを画像としてレンダリング
- **インライン画像/動画表示**: Kitty、iTerm、Sixelなどのプロトコルを使用して、画像/動画をターミナル内に表示
- **URLからインライン画像/動画**: URLから画像/動画をターミナル内で表示
- **画像と動画の連結**: 同じ形式の動画を連結（時間連結）したり、画像を水平または垂直（デフォルト）に積み重ねて連結

## インストール方法

公式リポジトリでは、以下のインストール方法が紹介されています：

```bash
# Cargoを使ったインストール
cargo install mcat

# または、リポジトリをクローンしてインストール
git clone https://github.com/Skardyy/mcat
cd mcat
cargo install --path .
```

GitHubの[リリースページ](https://github.com/Skardyy/mcat/releases/latest)から、ビルド済みのバイナリをダウンロードすることもできます。

## 基本的な使い方

基本的な使用例を紹介します。

### テキストドキュメントの表示

```bash
# PDFをMarkdownとして表示
mcat resume.pdf

# DOCXをMarkdownとして表示
mcat document.docx
```

### 画像・動画の表示

```bash
# 画像をインライン表示
mcat diagram.png -i

# ドキュメントを画像として保存
mcat document.docx -o image > img.png
```

### Markdown/HTMLのレンダリング

```bash
# Markdownを画像としてレンダリング
mcat readme.md -i

# ダークテーマでレンダリング
mcat readme.md -im
```

### URLからのメディア表示

```bash
# URLからGIFを表示
mcat "https://giphy.com/gifs/..."
```

### 複数ファイルの連結

```bash
# 画像を縦に連結（デフォルト）
mcat SomeImage.png AnotherImage.bmp

# 画像を横に連結して保存
mcat someimage.png anotherimage.bmp --hori -o image > save.png

# 動画を連結（同じ形式である必要あり）
mcat part1.mp4 anothervideo.mp4 -o video > save.mp4
```

## サポートされる形式

以下の形式がサポートされています：

| 入力タイプ | 出力オプション |
|---|---|
| DOCX, PDF, CSV, ODT, PPTX, など | Markdown, HTML, 画像, インライン表示 |
| Markdown / HTML | 画像, インライン画像 |
| 画像, 動画 | インライン表示 |
| URL | 画像/動画の取得 + インライン表示 |

## 依存関係

mcatは以下に依存しています：

- **chromium**: HTMLを画像にレンダリングするために使用
- **ffmpeg**: 動画処理用

## コマンドラインオプション

mcatには様々なコマンドラインオプションがあります。以下は主要なオプションです：

```bash
mcat [OPTIONS] <input>...

オプション:
  -o <o>                    出力形式 [html, md, image, video, inline]
  -t <theme>                画像用の代替CSSファイル [default, makurai, <ローカルファイル>]
  -s                        HTMLにもスタイルを追加
  --kitty                   インライン画像をKittyエンコード
  --iterm                   インライン画像をiTermエンコード
  --sixel                   インライン画像をSIXELエンコード
  -r, --raw                 生のHTMLの実行を許可
  -i                        --output inline のショートカット
  -m                        --theme makurai のショートカット
  --hori                    画像を垂直ではなく水平に連結
  --inline-options <opts>   インライン表示のオプション
  -h, --help                ヘルプを表示
  -V, --version             バージョンを表示
```

## まとめ

mcatは、様々なファイル形式をターミナル上で直接閲覧できるとても便利なツールです。
テキストファイルから画像、動画、さらにはPDFやDOCXなどのリッチドキュメントまで、多様なファイル形式をターミナル内で直接表示できるので、コマンドラインでの作業がより効率的になること間違いなし！

## 参考リンク

- [GitHub リポジトリ](https://github.com/Skardyy/mcat)
- [リリースページ](https://github.com/Skardyy/mcat/releases/latest)