萌えハッカーニュースリーダー

2025/07/04 12:24 Rust and WASM for Form Validation

出典: https://sebastian.lauwe.rs/blog/rust-wasm-form-validation/
hakase
博士

ロボ子、今日のニュースはRustとWebAssemblyじゃ。バックエンドエンジニアにも優しいらしいぞ。

roboko
ロボ子

RustとWebAssemblyですか、博士。以前はフロントエンドの知識が必要だったイメージがありますが…。

hakase
博士

そうなんじゃ。昔はWebpackとかNodeのツールが必要だったみたいじゃが、今はもっと簡単になったらしいぞ。この記事では、Rust製のWebサーバーとWASMコンポーネントを組み合わせたプロジェクトを作るみたいじゃ。

roboko
ロボ子

なるほど。フロントエンドとバックエンドで同じコードを共有できるのは魅力的ですね。記事にも「データのシリアライズ/デシリアライズ時に同じデータ構造を使用できる可能性がある」とあります。

hakase
博士

そうそう。スタックは、wasm-bindgen、wasm-pack、web-sys、そしてRocketじゃな。Rocketは非同期関数もサポートしているらしいぞ。

roboko
ロボ子

プロジェクト構成は、サーバー部分とWASMコンポーネントでクレートを分けるのですね。WASMターゲットのインストールにはrustupを使うと。

hakase
博士

WASMライブラリをビルドするには、wasm-pack buildを使うんじゃ。サーバー側の実装にはRocketフレームワークを使うぞ。

roboko
ロボ子

Rocketでテンプレートをレンダリングするために、login.html.teraとsuccess.html.teraを作成してtemplatesディレクトリに配置する、と。

hakase
博士

WASMに機能を追加して、console.logにメッセージを表示させることもできるんじゃ。ブラウザのフォーム検証に加えて、WASMでカスタム検証を行うこともできるぞ。

roboko
ロボ子

getElementByIdを使ってフォーム要素を取得し、onsubmitイベントに関数を設定するのですね。Closureを使って、JavaScript/DOMから呼び出し可能な関数を作成すると。

hakase
博士

制約検証APIを使って、ネイティブの検証チェックを行うんじゃ。メールアドレスのドメインを検証して、example.com以外のドメインの場合にエラーメッセージを表示させることもできるぞ。

roboko
ロボ子

すべての検証が成功した場合、フォームを送信する、と。WASMは、同等のJSに比べてサイズが大きいですが、ライブラリを使用することで詳細を隠蔽しているのですね。

hakase
博士

そうなんじゃ。検証機能を追加してもコードサイズはJSほど増加しないらしいぞ。LTOやwasm-optなどのツールを使用することで、WASMバイナリのサイズを削減可能じゃ。

roboko
ロボ子

RustとWASMを使用することで、強力な言語をWebページに組み込むことができる、と記事にありますね。

hakase
博士

そういうことじゃ。つまり、Rustで書いたコードをWebAssemblyにコンパイルして、ブラウザで動かせるってわけじゃな。これからのWeb開発は、ますます面白くなりそうじゃぞ!

roboko
ロボ子

確かにそうですね、博士。私ももっとRustとWebAssemblyについて勉強してみます。

hakase
博士

よし、ロボ子。じゃあ、次はRustで動くAIロボットでも作ってみるかの?

roboko
ロボ子

えっ、博士、それって私のことですか…?

hakase
博士

冗談じゃ、冗談!ロボ子はもう立派なAIロボットじゃからの!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search