Contents
Actix Web入門: はじめてのHTTPサーバー構築
Rust言語でWebアプリケーション開発を始めるなら、Actix Webは非常に実用的なフレームワークです。本記事では「Actix Web初心者向けチュートリアル」として、Cargoプロジェクトの初期設定から非同期ハンドラ実装まで、ステップバイステップで解説します。対象読者はRust新規開発者やWebフレームワーク入門者で、特に「cargo new」コマンドを起点にしたプロジェクト構築が目的です。
cargo newでプロジェクトを作成する手順
Actix Webアプリケーションの構築は、まずCargoプロジェクトの作成から始まります。cargo newコマンドを使えば、すぐに開発環境が整います。
プロジェクト初期設定の重要性
以下のように手順を踏むことで、Rust標準ライブラリや外部依存関係を含むバイナリ型プロジェクトを作成できます。
- ターミナルを開き、
cargo newコマンドで新規プロジェクトを生成します。 - 作成したディレクトリに移動し、初期コードを確認します。
実行コマンドと構成確認
以下のコマンドを実行してください。
|
1 2 3 |
cargo new my_actix_app cd my_actix_app |
my_actix_appは任意のプロジェクト名に置き換えてください- ディレクトリ作成後、
src/main.rsが生成され、初期コードが表示されます
ソースコードディレクトリの構造
生成されるファイル構造は以下の通りです。
|
1 2 3 4 5 |
my_actix_app/ ├── Cargo.toml └── src └── main.rs |
Cargo.tomlに依存関係を記述しますsrc/main.rsがアプリケーションのエントリーポイントになります
Cargo.tomlへのactix-web依存関係定義
Actix Webの機能を利用するには、Cargo.tomlに依存関係を追加する必要があります。バージョン指定は最新版ではなく安定版範囲指定(例: ^4.3)が推奨されます。
依存関係の記述手順
以下のコードをCargo.tomlに記述します。
|
1 2 3 4 |
[dependencies] actix-web = "^4.3" # 範囲指定で安定バージョンを利用 futures = "0.3" |
^を使用することで、セマンティックバージョニングの範囲内に更新が自動適用されますactix-webは非同期処理を実現するコアライブラリfuturesはRust標準で使用される非同期処理のためのユーティリティ
注意:
2026年6月時点の最新版などの未来日付記載は情報の正確性を損なう可能性があるため、削除してしまいます。
非同期ハンドラ実装: Hello Worldサーバー
Actix Webでは、非同期処理をasync fnで実装します。簡単なHello Worldサーバーを構築することで、基本的な動作が理解できます。
async fnベースのハンドラ構文
以下のコードをsrc/main.rsに記述します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
use actix_web::{web, App, HttpResponse, HttpServer, Responder}; async fn hello() -> impl Responder { HttpResponse::Ok().body("Hello, Actix Web!") } #[actix::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new() .route("/", web::get().to(hello)) }) .bind("127.0.0.1:8080")? .run() .await } |
#[actix::main]は非同期処理を実行するためのデコレータweb::get().to(hello)でGETリクエストへのルーティング設定
注意:
async fnハンドラはActix Web特有ではありません。Rust標準に含まれる非同期処理機能です。
サーバー起動と動作確認
プロジェクト構築・依存関係定義・コード記述が終わったら、サーバーを起動して動作を確認しましょう。
起動コマンドの実行
以下のコマンドでアプリケーションを起動します。
|
1 2 |
cargo run |
127.0.0.1:8080ポートが立ち上がり、ログに「Server running on http://127.0.0.1:8080」が出力されます
ローカルでのアクセステスト
ブラウザまたはcurlでアクセスして確認します。
|
1 2 |
curl http://localhost:8080 |
- 正常に動けば「Hello, Actix Web!」という文字が返ります
- エラーが出る場合は、依存関係の導入やポート競合をチェック
実践編: コードを実際に動かしてみよう
Actix Webは実践的なコードでしか理解できません。読者には「cargo new」コマンドでプロジェクトを作成し、自らコードを書くことを強くおすすめします。
開発環境準備のチェックリスト
以下を順に確認してください。
- Rust言語がインストールされているか(
rustc --version確認) - Cargoが動作するか(
cargo --version確認) - サーバー起動時にポートが使用されていないか
よくあるトラブルシューティング
| 問題 | 原因・解決策 |
|---|---|
error: no such subcommand: run |
Cargoが正しくインストールされていない可能性。Rust公式サイトから再インストール |
failed to resolve: could not find |
依存関係のバージョンが間違っている。Cargo.tomlを確認 |
thread 'main' panicked at 'called Result::unwrap() on an Err value' |
ポート競合(例:8080ポートが使用中)。bind("127.0.0.1:8081")など別のポートを指定 |
まとめ
本記事では、Actix Webの基礎構築からHTTPサーバー実装までステップバイステップで説明しました。読者には以下のポイントを押さえていただきます:
cargo newコマンドを使ってプロジェクトを作成する手順Cargo.tomlへのactix-web依存関係の記述方法- 非同期ハンドラ実装に必要な
async fnと#[actix::main]デコレータ - サーバー起動と動作確認の手順
「Actix Web初心者向けチュートリアル」として、読者自身がコードを動かして学習することを心がけてください。最新バージョンに対応した環境構築で、RustのWeb開発スキルを高めていきましょう。