OSS探訪GitHubでログイン

ServiceとLayerで再利用可能なミドルウェアを組み合わせるRustネットワーク基盤

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
4,315
主要言語
Rust
ライセンス
MIT
リポジトリ最終更新
2026/06/22
ページ内ナビ

概要

TowerはRustで堅牢なnetwork client/serverを構築するための再利用可能な部品群です。requestを受けてresponseまたはerrorを返すService traitを中心に、LayerとServiceBuilderでtimeout・rate limit・load balancingなどのmiddlewareを合成します。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

Service traitでrequest/response処理を共通化する

Towerは非同期関数に相当するService traitをclient/server双方の共通接点として使います。protocol実装、application logic、middlewareを同じ抽象化で接続できるため、network stackの部品を分離して再利用できます。

出典:[2]

LayerとServiceBuilderでmiddlewareを積み重ねる

timeout、rate limiting、load balancingなどをinner Serviceを包むmiddlewareとして表現し、LayerとServiceBuilderで順序を保って合成できます。必要なmiddlewareはCargo featureで選択できます。

出典:[2]

向いている用途

Axum・Hyper・Tonicなど複数のnetwork libraryで横断利用したい場合に向く

HTTPやgRPCなどの上位libraryがTowerのServiceをintegration pointとして採用しているため、共通のmiddlewareやapplication behaviorをnetwork implementationから切り離したいRust backendに適します。

出典:[2]

導入前の確認

stream主体のprotocolとMSRV・no_std要件を確認する

Towerはrequest/response patternを前提としており、完全にstream主体のprotocolには適さない場合があります。0.5.3のREADMEではMSRVはRust 1.64.0で、tower本体はno_std非対応ですがtower-layerとtower-serviceはno_std対応です。

出典:[2][3]

参考にした公式資料

  1. [1]tower-rs/tower — GitHub repository(2026-10-06)
  2. [2]Tower 0.5.3 — README(2026-10-06)
  3. [3]Tower 0.5.3 release(2026-10-06)
編集部からの補足

TowerはHTTP専用ではなく、request/response型のnetwork client/serverへ共通のmiddlewareを差し込むための抽象化です。Axum・Hyper・Tonicの下で使う場合は、どの層がServiceを所有するかを先に決めると構成を整理しやすくなります。

3ステップで試す

  1. 1

    確認済みのTowerを取得する

    確認対象のTower 0.5.3を固定して取得します。Rust toolchainとCargoが必要です。

    git clone --depth 1 --branch tower-0.5.3 https://github.com/tower-rs/tower.git && cd tower
  2. 2

    公式CIと同じ全feature testを実行する

    Tower repositoryのCIで使われるtest commandを実行し、Service・Layer・middlewareを含むworkspace全体を確認します。

    cargo test --workspace --all-features
  3. 3

    API文書を生成する

    全featureを有効にしたworkspaceのAPI文書を生成します。Towerは単体でnetwork serverを提供するlibraryではないため、ServiceとLayerのAPIを確認して利用するmiddlewareを選びます。

    cargo doc --workspace --no-deps --all-features
公式READMEで確認

成長

成長の推移 · 直近30日

4,315 Stars

推移データを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • middleware
  • rust
  • tower
Stars
4,315
Forks
346
Watchers
48
Open Issues
101
Contributors
106
所有者種別
Organization
主要言語
Rust
ライセンス
MIT
リポジトリ最終更新
2026/06/22

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?