Skip to content

Rustでアプリケーションを作る#

Rustは安全性、パフォーマンス、並行性に優れたシステムプログラミング言語です。WebアプリケーションのバックエンドとしてもRustは優れた選択肢となっています。

ここではRustでWebアプリケーションを作る方法を体験していきます。

前提#

Node.jsをインストールされていること Mac / Linuxの場合Homebrewがインストールされていること

環境設定#

まず、Rustをインストールします。 最初に、ディレクトリを作成、移動します。 以下のコマンドをターミナル(もしくはコマンドプロンプト。以下ターミナルに寄せます。)で実行します。

mkdir rust_web_app
cd rust_web_app

Mac / Linux / Windows#

Rustのインストールには公式のツール「rustup」を使用します。

Mac / Linux#

ターミナルで次のコマンドを実行します:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

インストール後にターミナルを再起動するか、次のコマンドで環境変数を更新します:

source $HOME/.cargo/env

Windows#

Rustup-Initをダウンロードして実行します。または、コマンドプロンプトで次のコマンドを実行します:

curl -sSf https://sh.rustup.rs | sh

インストールが完了したら、以下のコマンドでRustのバージョンを確認できます:

rustc --version
cargo --version

Actixフレームワークのセットアップ#

Rustには様々なWebフレームワークがありますが、ここでは高性能で使いやすい「Actix Web」を使用します。新しいプロジェクトを作成しましょう。

cargo new rust-web-server
cd rust-web-server

Cargo.tomlファイルを開き、以下の依存関係を追加します:

[package]
name = "rust-web-server"
version = "0.1.0"
edition = "2021"

[dependencies]
actix-web = "4.3.1"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

src/main.rsファイルを編集して、最初の簡単なAPIを作成します:

use actix_web::{get, web, App, HttpResponse, HttpServer, Responder};
use serde::{Deserialize, Serialize};

#[derive(Serialize)]
struct Message {
    text: String,
}

#[get("/hello")]
async fn hello() -> impl Responder {
    let message = Message {
        text: "こんにちは!".to_string(),
    };
    HttpResponse::Ok().json(message)
}

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    println!("サーバーを起動します: http://localhost:8080");
    HttpServer::new(|| {
        App::new()
            .service(hello)
    })
    .bind("127.0.0.1:8080")?
    .run()
    .await
}

サーバーを起動してみましょう:

cargo run

ブラウザで http://localhost:8080/hello にアクセスします。

以下のようなJSON応答が表示されるはずです:

{"text":"こんにちは!"}

この応答が表示されれば、サーバーの構築は成功です!

次は、べつのRustのコントローラーを追加して、Rustについての理解を深めてみましょう!