logo
kmnky blog

Webアプリ開発で学ぶ Rust言語入門の読書日記

はじめに

2025年の目標でも掲げたように今年はRustを勉強しようと思っています。言語習得の方法は人それぞれですが、私は基礎学習よりもまずは作りたいものを作ってみて、だんだん慣れてきた後に基礎に戻って文法などを再学習する方法を好みます。文法などの基礎からの学習もチャレンジしたことがあるのですが、イメージできず理解が足りず挫折することが多かったり、ふーんでやり過ごして忘れてしまうと言ったことがよくあるからです。そのため、

  1. サンプルアプリでまずはやってみる
  2. サンプルアプリに機能追加 or その時やりたいアプリを作ってみる
  3. 基礎学習をして基礎固め

と言ったやり方で学習しています。今回も同じやり方で学習していきます。

どの言語でもTodoアプリを作るという記事があるため、サンプルアプリにTodoアプリを選ぶことが多いです。今回もTodoアプリを作りたいなあと思って参考になる記事や本を探していたところ、Webアプリ開発で学ぶ よくわかるRustプログラミング入門

  • データベースを使ってCRUDを実装している
  • フロントエンド・バックエンド・データベースとよくある構成で別の学習にも使えそう
  • メジャーなフレームワークについて説明してくれている

という点で良さそうと思い、購入しました。

Webアプリ開発で学ぶ よくわかるRustプログラミング入門 佐藤昭文 Webアプリ開発で学ぶ よくわかるRustプログラミング入門 2022/10/5

内容をざっくりかいつまんで

この本で作成するTodoアプリの構成は以下の通りです。

  • フロントエンド: React+Vite+TypeScript
  • API:Rust (axum, sqlx)
  • データベース:Postgresql (Docker)

このTodoアプリを作成するべく、

  1. Rustの開発環境をセットアップ
  2. Rustの文法など基礎を解説
  3. TodoのAPIをRustで実装(メモリ上)
  4. データベースのCRUDを実装
  5. フロントエンドで画面を作る
  6. 機能追加としてラベル機能を実装する

といったオーソドックスな流れで説明しています。各章で作成されるコードは著者のGithub上で公開されていますので途中迷ったりしても大丈夫なようになっています。 私の場合は、フロントエンドのバージョンを合わせて作成しなかったので、本通りのデザインに最初ならず苦戦しました。その際に公開されているコードを見て、不要なCSSスタイルが当たっていることがわかりました。 また、正誤表やサンプルコードのダウンロードはこちらからできます。合わせてご参照ください。

勉強メモ

Webフレームワーク

この本で紹介されているWebフレームワークは以下の通りです。

  • actix-web
    • 古参なので記事が多い
    • http2やWebsocketなどの対応範囲が広い
    • 高いパフォーマンス
  • Rocket
    • 古参なので記事が多い
    • シンプルな書き方
  • warp
    • フィルターという概念をもとに実装する独特なフレームワーク
  • axum
    • tokio開発チームが作っているフレームワーク
    • マクロを使わないように設計されている

最近はどうなっているのだろうと思いましたが、状況は変わってない様です。以下参考記事です。

SQLライブラリ

sqlのライブラリとして、dieselとsqlxが紹介されています。

  • diesel
    • RustのORマッパーかつクエリビルダー
    • 多機能故に複雑で学習コストが高い
    • 非同期処理に対応していない
  • sqlx
    • シンプルなSQLライブラリ
    • SQLのコンパイル時チェックやマイグレーションのみを行う
    • 非同期処理にも対応

この本では、sqlxを使用しています。がっつりSQLを書く感じだなと思いましたが、アプリケーションが複雑になるほど以外にメリットを享受できるのかなと思いました。

感想

RustでAPIを作るイメージを作る入門書としてはとても良かったです。 Rustの基礎を学習して使いこなすまでとはいきませんが、Todoアプリの作成を通して大まかなイメージを掴むことはできました。 自分の期待していた通りです。

今後自分がやっていきたいこととしては、

  1. もう1冊本などを通してアーキテクチャやフォルダ構成などを学びたい
  2. Todoアプリに機能を追加して、独力で実装できるようになる
    1. ログイン機能の実装
    2. ログやオブザーバビリティの実践
  3. Rustの文法や基礎固めをして使いこなせるようになる

です。やりたいことが多く、勉強時間が取れるかはわかりません。 でも今年中にやり切ると目標を決めて頑張って実装していきます! 暖かく見守ってください。

最後まで読んでいただき、ありがとうございました。