slumber:883⭐のターミナル HTTP/REST クライアント
slumber:883⭐のターミナル HTTP/REST クライアント
API デバッグはバックエンド開発やフロントエンド・バックエンド連携で避けられない作業です。Postman は機能が充実していますが起動が遅く、cURL は軽量ですが操作が煩雑です。今回紹介する slumber はターミナル上で動作する HTTP/REST クライアントで、両者のバランスを取ろうとしています。
プロジェクト概要
| 属性 | 詳細 |
|---|---|
| GitHub | LucasPickering/slumber |
| ホームページ | https://slumber.lucaspickering.me/ |
| Stars | 883 ⭐ |
| 言語 | Rust |
| ライセンス | MIT |
| 作成日 | 2023 年 8 月 |
主な機能
slumber のポジショニングは明確です:GUI に切り替えることなく、ターミナル内で API デバッグの大部分を完了させます。
リクエストコレクション管理
YAML 設定ファイルでリクエストコレクションを定義、以下をサポート:
profiles:
local:
data:
host: http://localhost:3000
production:
data:
host: https://api.example.com
requests:
get_user:
method: GET
url: "{{host}}/users/{{user_id}}"
create_user:
method: POST
url: "{{host}}/users"
body:
type: json
data:
name: "test"
email: "test@example.com"
設定ファイルはバージョン管理にコミットでき、チームでの API 定義共有が可能です。
チェーンリクエストと変数
レスポンスからデータを抽出し、後続のリクエストで使用可能:
requests:
login:
method: POST
url: "{{host}}/auth/login"
body:
type: json
data:
username: admin
password: secret
get_profile:
method: GET
url: "{{host}}/profile"
headers:
Authorization: "Bearer {{login.token}}"
このチェーン設計により、複雑な API 呼び出しフローも明確に記述できます。
ターミナルネイティブ体験
Ratatui で構築されたインターフェースはターミナルの特性を最大限活用:
- キーボードナビゲーション - Vim スタイルのショートカット、
j/kで移動、/で検索 - ページング表示 - リクエスト一覧、リクエスト詳細、履歴を分割表示
- シンタックスハイライト - JSON レスポンスの自動整形とカラー表示
- クリップボード統合 - レスポンス内容をワンクリックでクリップボードにコピー
インストール方法
プリコンパイルバイナリ
# macOS/Linux (Homebrew)
brew install slumber
# Cargo
cargo install slumber
# GitHub Release からダウンロード
curl -LO https://github.com/LucasPickering/slumber/releases/latest/download/slumber-x86_64-unknown-linux-gnu.tar.gz
設定ファイルで起動
# 設定ファイルを作成
cat > slumber.yml << 'EOF'
profiles:
default:
data:
host: https://httpbin.org
requests:
get:
method: GET
url: "{{host}}/get"
post:
method: POST
url: "{{host}}/post"
body:
type: json
data:
key: value
EOF
# TUI を起動
slumber
使用シーン
シーン 1:ローカル開発時のデバッグ
REST API 開発時、slumber は軽量なテストツールとして使用可能:
- 設定ファイルをコードと同じ場所に配置
- 各種テストケースを定義(正常入力、境界値、エラーケース)
- ターミナル内で素早く切り替え実行
シーン 2:CI/CD 統合
slumber は非対話モードをサポートし、自動テストに使用可能:
# すべてのリクエストを実行して終了
slumber --no-tui
# 特定のプロファイルを指定
slumber -p production --no-tui
シーン 3:チームコラボレーション
Postman のクラウド共有に比べ、slumber の設定ファイルは Git に直接コミット可能:
git add slumber.yml
git commit -m "Add API test definitions"
チームメンバーはクローン後すぐに使用可能で、追加設定は不要です。
技術アーキテクチャ
┌─────────────────────────────────────────┐
│ TUI インターフェース (Ratatui) │
│ ┌──────────┬──────────┬──────────────┐ │
│ │ リクエスト一覧 │ リクエスト詳細 │ レスポンスプレビュー │ │
│ └──────────┴──────────┴──────────────┘ │
└──────────────────┬──────────────────────┘
│ HTTP リクエスト
▼
┌─────────────────────────────────────────┐
│ HTTP クライアント (reqwest) │
└─────────────────────────────────────────┘
コア技術スタック:
- Ratatui - ターミナル UI フレームワーク
- reqwest - HTTP クライアント
- serde - シリアライズ/デシリアライズ
- tokio - 非同期ランタイム
類似ツール比較
| ツール | タイプ | 特徴 | 適用シーン |
|---|---|---|---|
| slumber | ターミナル TUI | 設定ファイル駆動、チェーンリクエスト | チーム連携、バージョン管理 |
| Postman | GUI | 機能充実、エコシステム豊富 | 複雑なテスト、非技術者向け |
| Insomnia | GUI | オープンソース、軽量 | 個人開発者向け |
| HTTPie | CLI | シンプルな構文 | 一回限りのリクエスト |
| curl | CLI | どこでも利用可能 | スクリプト、シンプルなリクエスト |
| Bruno | GUI | オフライン優先、Git フレンドリー | Postman の代替 |
制限と注意事項
- 学習曲線 - 設定ファイルの構文に慣れる必要があります
- 機能の境界 - テストアサーションや自動テストレポートなどの高度な機能は非対応
- グラフィカルインターフェース - バイナリレスポンス(画像、PDF)は直接プレビュー不可
まとめ
slumber の価値は、API デバッグワークフローを開発者が最も慣れ親しんだ場所、つまりターミナルに持ち込んだ点にあります。cURL より使いやすく、Postman より軽量な選択肢を求めるコマンドラインツール愛好家の開発者に最適です。ニッチなツールとしては 883 スターは実用性を証明しています。
バージョン管理に組み込み、チームでの連携をサポートする HTTP クライアントをお探しの場合、slumber は試す価値があります。
参考リンク