🦀

100日後にRustをちょっと知ってる人になる: [Day 99]書籍: Rust Web Development

2023/01/13に公開

Day 99 のテーマ

記事を毎日書いていたわけではないですが、この約 100 日の間 Rust でコードを書いてみたり、本や Web の記事を読んでみたりしていると Rust を完全に理解したという領域には程遠いものの、ある程度は追いかけられるようになってきているという実感はあります。少なくとも、Rust 固有の専門用語だったりコードのサンプルなどを見たときに追いかけることができるようになっているのは確かだと思います。

しかし、理解をさらにすすめるためには、どんなプログラム言語も同じだと思いますが、机上での学習だけではなくて実践が必要、つまりコードの打ち込み、そしてアプリケーションを作ってみるという事が十二分に行う必要があると感じています。

先日まで読みながらコードを書いていた、Webアプリ開発で学ぶ Rust言語入門もありますが、これだけではなくもっとコードを打ち込む量を増やしていく必要があると思い、別の本にも手を出してみることにしました。

Rust Web Development

読み始めたのは Manning から出版されている次の本です。

12 月にセールをやっていて 50% オフになっていたので買ったのがこの本なのでした。

この本の内容を写経のように追いかけることは、Day 100 までの間にはさすがに無理だと思うので、各章の内容を見ていくのは別の形で行いたいかなと思います。今回は、もしこの本を気に入る方がいそうならな手にとってみて欲しいかなと思っていて、全体概要について紹介してみたいと思っています。

Rust Web Development の概要

この本の対象読者は、別の言語 (Java, Node, Go など) で Web アプリケーション開発をしたことがある開発者の方たちです。Web アプリケーションの開発を通して Rust の概念を学んでいくというコンセプトになっています。先日まで見ていた Webアプリ開発で学ぶ Rust言語入門 とも似通っているコンセプトですよね。

実は、僕はこの本は既に 3 分の 2 くらいは先月読んでみたのですが、たしかに Rust の言語仕様を解説しているタイプの本と言うよりは、Web アプリケーションを作るために必要な考え方を随時教えてくれるような作りになっていました。全般的に Rust を理解するのであれば、プログラミングRust 第2版 がいいかなと思います。

Rust Web Development の構成

この Rust Web Development は全部で次のような 3 章構成になっています。

  • 1 章: Rust の紹介
  • 2 章: Rust 入門
  • 3 章: 本番導入

1 章: Rust の紹介

1 章では、なぜ Rust の人気が高まり、今 Rust を利用して Web アプリケーションを開発していくメリットがあるのかというような事が紹介されています。また、先日少し紹介していたような Rust の特徴について説明があります。

そして、簡潔にではありますが、Rust の学習の進め方についても著者の考えが紹介されていました。学習の仕方は平たくいうと、この 100
日を通して、僕が Rust をどのように学習してきていたかのようなことを簡潔にまとめて書かれているような感じです。

Webアプリ開発で学ぶ Rust言語入門 より読みやすかったのポイントが、早めの段階で Rust の言語仕様のうち借用についての解説があったので後続のサンプルコードなども読み易さを感じました。

2 章: Rust 入門

2 章では、Web アプリケーションを Rust を用いての開発を行います。Rust 自体には Web サーバとしての機能提供がないため、別途 クレートを使用する必要があるのですが、こちらの書籍の中では warp をフレームワークとして使用しています。

warp もシンプルな Web アプリケーションフレームワークになっていて、基本形は次のように記述することができるようになっています。

use warp::Filter;

#[tokio::main]
async fn main() {
    let hello = warp::path!("hello" / String)
        .map(|name| format!("Hello, {}!", name));

    warp::serve(hello)
        .run(([127, 0, 0, 1], 3030))
        .await;
}

また、最初は単一のコードベースで開発をすすめていますが、その後にモジュールを分割していったり、そのためのリファクタリングのコツに関することにも触れられています。実際の開発であったり、修正に近いような流れが取り入られている点があるので、アプリケーション開発の経験がある人にとっては流れを追いかけやすい構成になっていると思いました。

  • 関数を異なるモジュールにグループ化
  • モジュールを異なるファイルに分割
  • Rust プロジェクト内にフォルダー構造の作成
  • clippy を使用してコードをリント
  • cargo を使用してコードベースをフォーマット

また、データベースへの接続・操作の実装については、Webアプリ開発で学ぶ Rust言語入門 でも使用していた sqlx を用いた実装になっています。同じような流れにはなっているので、以前に体験した内容の復習のような感じですすめることができました。また、

3 章: 本番導入

3 章では認証に関する実装が行われています。まだ、この章については全然追いきれていないのですが、自前で認証・認可の仕組みを作っているように見えました。それを踏まえて、Rust ではどのような認証認可に関するフレームワークがあるのだろうかということが気になりました。この章を通したあと、認証についてはまた改めて調べてみたいと思いました。

Day 99 のまとめ

というわけで、今月は Rust Web Development を読みながら勉強してみようと思っています。こちらの書籍のを通して理解できる点は以下のような内容になっています。

  • 非同期環境での処理
  • Web APIの構築とJSONの処理
  • 非同期 Rust 開発のための技術スタックの構成
  • エラー処理
  • テスト、トレース、ログ、デバッグ
  • Rustアプリケーションの複数環境へのデプロイ

また、この本を扱っている Manning の本は結構頻繁にセールをしているので、安くなっている時を狙って買うのがおすすめですよ。

GitHubで編集を提案

Discussion