わりと迷わず買ったので、一通り写経含めてやってみた。
1〜4章
環境構築から、周辺の説明。 今回のアーキテクチャとか。
本の中だと、APIを作成してフロントエンドから扱う感じなので、普通にテンプレートエンジン使うなら? とかはちょっと寄り道してみたりはした。
askama
を使えばいいっぽい。
axum
のexamplesにもaskama
を使ったサンプルがあるので、そこからコードを拝借してみたはいいものの、そのままだと動かないかも。
プロジェクトルートにtemplates
ディレクトリを作って、その中にHTMLを置けば良い。
cargo add askama
let app = Router::new().route("/greet/{name}", get(greet)); // ↓ let app = Router::new().route("/greet/:name", get(greet));
でいけるはず。
5章以降
ここから実装本番。
sqlx
コマンドを扱うところでは、 cargo install sqlx-cli
の必要はありそう?
https://crates.io/crates/sqlx-cli
と思ったけど、Makefile.toml
には書いてあるから大丈夫そう?
BookRepository
実装で、出くわしたやつ。
set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache Related information: * mod.rs#332,9: Actual error occurred here * mod.rs#332,9: Error originated from macro call here (rustc)
本にも書いてあるけど、.cargo/config.toml
にDATABASE_URL
を設定すればOK。
で、ここからもひたすら写経を進めていきましたが、5章の分量がとても多く、結構しんどかったですね。
ただ、実際に不慣れな言語でアプリケーションが出来上がっていくのはとても楽しく進められました。
実際にレイヤードアーキテクチャで組んでいけるところも個人的にはよかったです。
実際問題、main.rs
一本でちまちま書いていたようなレベルだったので、ファイル分割から、ワークスペース。
あとは便利な知らないクレートなども一緒に学ぶことができてとても良かったです。
anyhowとか良さそうでした。
さらに言うと、フロントエンドのコードもNext.jsで書かれているのがあるのでそれも。
丁度Nextどんなもんかなと思っていたところがあったので、ありがたかったですね。
とても内容が薄い読書録になってしまいましたが・・・。