Skip to content

4.2 - コードを定着させるための初期設定について知る

コードを定着させるための初期設定について知る

このセクションでは、第2章「RustでWebアプリケーションを設計する」と第3章「HTTPリクエストを処理する」で構築した2つの融合コードの初期設定について説明します。この融合により、以下のような構造になります。

図4.1 - 私たちのアプリの構造とそのモジュール

ここでは、メインファイルにすべてのモジュールを登録し、これらのモジュールをすべてビューに引き入れて使用することにします。第2章「RustでWebアプリケーションをデザインする」のコマンドラインインターフェイスを、実質的にWebビューに置き換えているのです。これらのモジュールを組み合わせることで、コードベースには以下のようなファイルができあがります。

├── main.rs
├── processes.rs
├── state.rs

そして、to_doモジュールをmain.rsファイルの同じディレクトリにボルトで固定するのです。第2章「RustでWebアプリケーションをデザインする」を読んでto_doモジュールをビルドした場合、to_doモジュールは以下の構造になっているはずです。

├── to_do
│   ├── enums.rs
│   ├── mod.rs
│   ├── structs
│   │   ├── base.rs
│   │   ├── done.rs
│   │   ├── mod.rs
│   │   └── pending.rs
│   └── traits
│       ├── create.rs
│       ├── delete.rs
│       ├── edit.rs
│       ├── get.rs
│       └── mod.rs

さて、前章で紹介したviewsモジュールのボルトには、以下のようなものが入っているはずです。

└── views
    ├── auth
    │   ├── login.rs
    │   ├── logout.rs
    │   └── mod.rs
    ├── mod.rs
    ├── path.rs

すべてのコードを含む完全な構成は、以下のGitHubレポに掲載されています。

https://github/PacktPublishing/Rust-for-Web-Developers/tree/master/chapter04/getting_to_know_the_initial_setup

さて、前の章のモジュールをプロジェクトに追加したので、プログラムの中でそれらを結合することができます。これを行うには、新しい src/main.rs ファイルを作成する必要があります。まず、構築したモジュールをインポートし、次のコードを使って基本的なサーバーを定義しなければなりません。

use actix_web::{App, HttpServer};

mod views;
mod to_do;
mod state;
mod processes;

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    HttpServer::new(|| {
        let app = App::new().configure(views::views_factory);
        return app
    })
    .bind("127.0.0.1:8000")?
    .run()
    .await
}

前のコードでは、モジュールを定義し、次にサーバーを定義しました。サーバーは views_factory を利用しているので、この章の残りの部分では、このファイルを変更する必要はありません。その代わり、views_factory関数で呼び出されるファクトリー関数を連鎖させることにします。

この時点で、私たちは腰を落ち着けて、前の章で行ったすべてのハードワークの配当を評価することができます。原理の分離とよく定義されたモジュールのおかげで、最小限の労力でコマンドラインプログラムのロジックをサーバーインターフェースに取り込むことができました。あとは、ビューモジュールに接続し、ビューにパラメータを渡すだけです。しかし、次のセクションに進む前に、サーバーを確実に実行できるようにするために、いくつかの細かい手入れをしなければなりません。まず、Cargo.tomlファイルの依存関係には、以下の要件があります。

[dependencies]
actix-web = "4.0.1"
serde_json = "1.0.59"

そして、cargo runコマンドを実行し、ブラウザ上でログインとログアウトのビューが動作することを確認します。これで、ビューにパラメータを渡す作業を開始することができます。