Actix

Actix Web入門: Rustで非同期Webアプリ開発の基礎

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

Actix Webとは?なぜ学ぶべきか

Rust言語でWebアプリケーションを開発する際、非同期処理を簡単に実装できるActix Webフレームワークは強力な選択肢です。特にパフォーマンスにこだわりたい開発者や、アシンクロニティの恩恵を受けたい新規学習者にとって、導入が比較的容易で柔軟性が高い点が魅力です。

Actix WebはTokioランタイムに基づいて構築されており、非同期処理を効率的に実装できます。また、シンプルなAPIと明快なコード構造により、学習コストを抑えることが可能です。この記事では、そんなActix Webの基本的な使い方をステップバイステップで紹介します。


環境構築とプロジェクト初期化

Rust新規学習者向けに、Actix Webを導入するための手順を解説します。以下では、Cargo.tomlへの依存関係追加と基本的なプロジェクト構造について説明します。

Cargo.tomlへの依存関係追加

Actix Webを使用するには、まずCargo.tomlに以下のように依存関係を追加します。

  • actix-webは主なフレームワーク。
  • serdeはJSONのシリアライズ/デシリアライズに使用します。

基本的なプロジェクト構造

初期化されたプロジェクトでは、src/main.rsに以下のようにコードを記述することで、基本的なWebサーバーが起動できます。

このコードでは、GET /リクエストに応じて「Hello, Actix Web!」というレスポンスを返します。


ルーティング設定の基礎

Actix Webでは、ルートとHTTPメソッドに基づいてハンドラ関数を定義できます。以下にGETリクエストとPOSTリクエストの処理方法を紹介します。

GETリクエストハンドラの作成

#[get]属性を使って、指定されたルートへのGETリクエストを処理する関数を定義できます。

このコードでは/getにアクセスすると、定義されたメッセージが返されます。

POSTリクエストハンドラとJSON処理

POSTリクエストは#[post]属性で定義し、web::Json<T>を使ってJSONボディをパースできます。以下はユーザー情報を受け取る例です。

このコードでは、/postにPOSTリクエストを送信するとJSONボディが解析され、ユーザー情報を返します。


リクエストとレスポンスの扱い方

Actix WebではRequest構造体を使ってリクエスト情報(クエリパラメータやヘッダーなど)を取得できます。また、カスタム応答はResponseBuilderで構築します。

クエリパラメータの取得

クエリパラメータはRequest::query()を使って抽出できます。以下はその例です。

この関数では/query?name=太郎とアクセスすると「こんにちは、太郎さん!」という応答が返されます。

セキュリティ対策: XSS防止の注意点

クエリパラメータやユーザー入力値をレスポンスに直接使用する場合、クロスサイトスクリプティング(XSS)への脆弱性がある可能性があります。
HTMLエスケープを行うなど、安全な出力処理を必須とします。

ヘッダーやボディーへのアクセス

ヘッダー情報はRequest::headers()で取得でき、ボディーはweb::Payloadから読み取れます。以下はヘッダーとボディーの取得例です。

このコードでは、リクエストのヘッダーやボディー情報を取得して応答します。


ミドルウェアによる共通処理の実装

ミドルウェアは、ルーティングやハンドラ処理の前後に実行される共通処理です。以下に標準ミドルウェアと自作ミドルウェアの導入例を紹介します。

標準ミドルウェアの導入例

Actix Webには、ログ出力やクロスドメインリクエスト対応(CORS)など、標準で利用可能なミドルウェアが用意されています。以下はログミドルウェアの例です。

このコードでは、Logger::default()を使用して、リクエストごとにログ出力を行います。

自作ミドルウェアの書き方

自作ミドルウェアは、MiddlewareTraitを実装した構造体で定義できます。以下は簡単な認証チェックの例です。

このミドルウェアは、Authorizationヘッダーが「Bearer secret_key」でない場合にアクセスを拒否します。

注意点: MiddlewareTraitactix_web::dev::Middlewareから導入し、ServiceRequestServiceResponseを適切にハンドリングする必要があります。トレイトの実装にはcall()関数が必須です。


簡単なAPIの実装例

Actix WebではRESTful APIとして動作する簡易的なCRUD操作を実現できます。以下はユーザー情報を一覧表示し、作成できる簡単なAPIです。

CRUD操作の最小限なモデル

以下のコードは、User構造体とその処理を定義した例です。

エンドポイント間の連携

この処理をルーティングに追加します。以下は/users/users/createへのルート設定です。

このコードでは、GET /usersでユーザー一覧を取得し、POST /users/createで新しいユーザーを作成できます。


学習の次のステップ

本記事ではActix Webの基本的な使い方を中心に解説しましたが、実際の開発には公式ドキュメントと併せてコードを実際に書くことが大切です。以下に進むべき学習ステップをまとめます。

学習ステップの整理(テーブルで比較)

項目 内容 補足
公式ドキュメント確認 Actix Web公式サイトを参照する 最新情報やAPI仕様が記載されている
複数のHTTPメソッド実装 GET、POST以外にPUT/DELETEを試す RESTful API設計に応用可能
セキュリティ対策学習 CSRF/CORS/XSS対策を確認する ミドルウェアと組み合わせて導入

重要なポイント

エラーハンドリングの補強:
unwrap()expect()は非推奨です。代わりに.ok_or(...).flatten().and_then()を使って安全な処理を実装してください。

セキュリティベストプラクス
ユーザー入力値は常にエスケープ処理を行ってください。actix-web::html_escapeライブラリなどを利用すると良いです。

おすすめの学習方法

  1. 実際のプロジェクトにActix Webを導入し、エンドポイントを試してみる
  2. カスタムミドルウェアを作成し、ログやセキュリティチェック機能を実装する
  3. レスポンス処理でHTMLエスケープを必ず行い、XSSを防ぐ

公式ドキュメントと併用しながら実際にコードを書いてみましょう。実践することで理解が深まりますので、ぜひチャレンジしてください。


スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Actix