3 ポイント 投稿者 GN⁺ 2024-10-07 | 1件のコメント | WhatsAppで共有
  • 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件のコメント

 
GN⁺ 2024-10-07
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のようなフレームワークを望んでいるという意見