LINEUP & SCHEDULE

かにさんタワーバトル

  • 14:00 - 14:25 (JST)

    • 発表言語: 日本語

RustのWebフレームワークにおいて、後発であるaxumの人気が上がり続けています。axum はtokio-rs チームによりメンテナンスされており、tokioがベースとなっている Webフレームワークです。

axum は後発のフレームワークなこともあり、actix-web のようにハンドラーがResultや文字列を返すだけでちょうどいい感じのHTTPステータスをセットして返せたり、レスポンスをカスタマイズするためにはそれらに trait を実装するだけで実現できます。またhyper のように共通処理をサービスとして定義してレイヤーを重ねることで、トレーシングのような横断的な機能を追加する仕組みもあります。

axum ではこれらの機能の裏側には tower というライブラリが使われています。tower は async fn(Request) -> Result<Response, Error> と説明されており、そのような抽象化レイヤーを提供してくれます。そのため axum に向けて作った tower のミドルウェアは tower に依存する別のフレームワークでも利用しやすく、towerのサービス概念は汎用的なパターンにもなっており、towerを使わないフレームワークにも移植しやすいです。このように tower は Rust の Webフレームワークにおいてちょうどいい抽象化層を提供してくれます。

筆者はサーバーサイド開発の技術選定を行う際に、メンテナビリティを重視するようにオーダーを受け、Rustとaxumを導入しました。しかし選定最中はエコシステムが安定しているかという点を気にしており、採用は少し後ろ向きに考えていました。しかしaxum を選定すれば tower のような抽象化層のおかげでFWが乗り換え可能であることに気づいたことが後押しとなって選定しました。

このトークでは axum や tower の実装を読み解きながら Rust での HTTP サーバーの構築の方法を解説します。また、Rustでサーバーを書き始めた初学者にとってはただ文字列やResultを返すだけでレスポンスがHTTPのフォーマットに従うことも不思議に感じると思うので、その仕組みを読み解きながらその裏にもtowerがいることに触れて、towerについて解説します。

シェアしましょう!


プロフィール

日本経済新聞社のWebエンジニアとして、日経電子版の基盤改善をしています。最近はオブザーバビリティの改善に関心があります。


Copyright © Rust.Tokyo 2023 all rights reserved.


特定商取引法に基づく表示

ぜひフォローしてください! @rustlang_tokyo

お問い合わせ: rust-tokyo-staff@googlegroups.com

過去の開催