- RustでWebを開発する際、Djangoのようなフレームワークがないため、多くの作業を自分で行わなければならないという問題がある
- Rustの強みである型システム、性能、ビルド時間を活かすには、Web開発を簡単にしてくれるフレームワークが必要である
必要な機能
- ルーティング/ハンドラ: リクエストを処理するハンドラへ接続する機能が必要
- テンプレート: HTMLやJSONのようなコンテンツを生成できる必要がある
- 静的ファイル配信: CSSファイルのようなアセットを配信する機能が必要
- ログイン: マルチユーザーアプリのためにログイン機能が必要
- 権限管理: ユーザーごとにアクセス権限を管理できる必要がある
- データベースインターフェース: データを保存・管理できる機能が必要
- 管理ツール: 基本的な管理作業を支援するツールが必要
- WebSocket: リアルタイムデータ転送のためのWebSocket機能が必要
- ホットリロード: コード変更時に即座に反映される機能が必要
追加で必要な機能
- バックグラウンドジョブ: スケジュールに従って作業を実行できる機能が必要
- モニタリング/オブザーバビリティ: システムの状態を監視できる機能が必要
- キャッシュ: 性能向上のためのキャッシュ機能が必要
- メールと通知: パスワード再設定のような機能を支える通知機能が必要
- デプロイツール: 一貫したデプロイ方法が必要
- CSS/JSバンドリング: CSSとJSファイルを効率的に管理できる機能が必要
既存のエコシステム
- Webフレームワーク: actix-web、axumのような最小限の機能を提供するフレームワークが存在する
- ライブラリ群: テンプレート、ログイン、権限管理などのためのさまざまなライブラリは存在するが、統合されたソリューションは不足している
新しいWebツールキット
- nicole's web toolkit (newt): さまざまな機能を統合したWebツールキットを開発中
- 目標: 新しいWebアプリをすばやく立ち上げられるよう支援すること
- 計画: 既存のビルディングブロックを使って統合ソリューションを提供する予定
GN⁺のまとめ
- RustでのWeb開発を容易にする統合Webフレームワークの必要性を強調している
- 既存のWebフレームワークやライブラリの限界を乗り越えようとする試みを紹介している
- nicole's web toolkit (newt) を通じて多様な機能を統合し、開発者体験を向上させようとしている
- Djangoのようなフレームワークの利点をRustエコシステムに持ち込もうとする試みは注目に値する
- 類似の機能を提供する他のプロジェクトとしては、actix-web、axumなどがある
1件のコメント
Hacker Newsの意見
Rustを使って最小限の労力で面白いものを作るのが好きな人の意見。Rustは効率性とメモリ管理に優れているが、Web開発にはGoやDjangoのほうが適しているという意見
Rustは安全性を提供し、開発者がミスを減らせるようにしてくれるほか、Notepadのような簡単なツールでもコードを書けるという利点があるという意見
Webフレームワークとして、Rocketは「怠惰な開発者」に適した最高のフレームワークだという意見
Rustのパターンマッチング機能を活用すればルーターは不要であり、認証は言語やフレームワークの問題ではないという意見
CSS/JSツールはRustフロントエンドフレームワークには適しておらず、RustはフロントエンドWebでも十分に成熟しているという意見
Rocketフレームワークが言及されていないことに驚いており、Rocketは「バッテリー同梱」フレームワークを目指しているという意見
RustでWeb開発をするのは問題ないが、並行性の問題があり、コンポーネントライブラリを選ぶのが難しいという意見
Flutterを使ってUXを改善しており、Rustとの統合が簡単で満足しているという意見
FlutterはDOMを尊重しないが、どこにでもデプロイできるUXを簡単に作れるため魅力的だという意見
PoemはFastAPIに似ているが、初期設定に多くのボイラープレートが必要だという意見
「怠惰」という表現は、Webフレームワークに一般的な作業を処理してほしいという意味で使われており、実際には多くの作業が必要だという意見
loco-rs、poem、rocketのようなプロジェクトは、すでに「バッテリー同梱」の体験を提供しており、CLIがそれを案内してくれるという意見
F#はRustに似た型システムとツールを提供するが、非同期処理とメモリ管理はそれほど複雑ではないという意見
筆者はRust向けのSpring Bootのようなフレームワークを望んでいるという意見