slumber:883⭐のターミナル HTTP/REST クライアント

API デバッグはバックエンド開発やフロントエンド・バックエンド連携で避けられない作業です。Postman は機能が充実していますが起動が遅く、cURL は軽量ですが操作が煩雑です。今回紹介する slumber はターミナル上で動作する HTTP/REST クライアントで、両者のバランスを取ろうとしています。

プロジェクト概要

属性詳細
GitHubLucasPickering/slumber
ホームページhttps://slumber.lucaspickering.me/
Stars883 ⭐
言語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 は軽量なテストツールとして使用可能:

  1. 設定ファイルをコードと同じ場所に配置
  2. 各種テストケースを定義(正常入力、境界値、エラーケース)
  3. ターミナル内で素早く切り替え実行

シーン 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設定ファイル駆動、チェーンリクエストチーム連携、バージョン管理
PostmanGUI機能充実、エコシステム豊富複雑なテスト、非技術者向け
InsomniaGUIオープンソース、軽量個人開発者向け
HTTPieCLIシンプルな構文一回限りのリクエスト
curlCLIどこでも利用可能スクリプト、シンプルなリクエスト
BrunoGUIオフライン優先、Git フレンドリーPostman の代替

制限と注意事項

  • 学習曲線 - 設定ファイルの構文に慣れる必要があります
  • 機能の境界 - テストアサーションや自動テストレポートなどの高度な機能は非対応
  • グラフィカルインターフェース - バイナリレスポンス(画像、PDF)は直接プレビュー不可

まとめ

slumber の価値は、API デバッグワークフローを開発者が最も慣れ親しんだ場所、つまりターミナルに持ち込んだ点にあります。cURL より使いやすく、Postman より軽量な選択肢を求めるコマンドラインツール愛好家の開発者に最適です。ニッチなツールとしては 883 スターは実用性を証明しています。

バージョン管理に組み込み、チームでの連携をサポートする HTTP クライアントをお探しの場合、slumber は試す価値があります。


参考リンク