わりと迷わず買ったので、一通り写経含めてやってみた。
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どんなもんかなと思っていたところがあったので、ありがたかったですね。
とても内容が薄い読書録になってしまいましたが・・・。