2026-05-02 2026-05 は tsukota-web を 2 にする
2026-05 は bouzuya/tsukota-web を 1 から 2 にしようと思う。
いきなりメタな話だが、先月は 2026-04-04 に 2026-04 の目標として bouzuya/shiori-web に取り組むことを書いた。月ごとの目標を設定している。 tsukota-web 2 は 2026-05 の目標設定だ。
tsukota-web は 2026-01 に 1 にしたもので 2026-01 の目標の対象 (2026-01-06) でもある。自作の家計簿アプリ bouzuya/tsukota の Web 版だ。
以前の Android アプリの tsukota の (実験的な) コンセプトは、処理をアプリ側にもたせること。データも差分のみを取得して……が前提にしていた。それもあって単純に Web 化した tsukota-web はとても遅い。毎回すべての履歴情報を転送しているので。
あとは認証まわりもしがらみもあって、中途半端な実装になってしまった。bouzuya/shiori-web では Google を IdP とする OIDC 認証を使っていて、悪くないので、そちらに切り替える。
あとは bouzuya/bouzuya-firestore-client (2026-03 目標 2026-03-07) を適用したのだけど、 collection query などに対応したものを試用したい。
まとめると今回 2 にするにあたってやりたいことは……。
- 参照系処理の最適化
- bouzuya/shiori-web 同様の Google OIDC 認証化
- bouzuya/bouzuya-firestore-client の試用
やっていこう。
bouzuya/bouzuya-firestore-client の Query の実装を進めた。 bouzuya-firestore-client は Rust で書かれた Node.js Firestore SDK に近いインタフェースを持つ Firestore Client 。
変更点は以下。
CollectionReference::r#whereの変更 (Filterと(..., ..., ...)の両対応)CollectionReference::selectの追加CollectionReference::start_atの追加Filter::andの追加Filter::orの追加Firestore::database_idの追加Query::firestoreの追加Query::r#whereの変更 (Filterと(..., ..., ...)の両対応)Query::selectの追加Query::start_atの追加
まだ Query の r#where に関連したインタフェースはまだ怪しいと思っている。 2.2 でこれらが一式追加される想定だけど、イマイチだと 3.0 として破壊的変更を入れることになるかもしれない。
今日のコミット。
- bouzuya-firestore-client 23 commits
- Add tests for {CollectionReference,Query}::r#where
- Fix Query::r#where to use IntoFilter
- Add impl IntoFilter for (...)
- Add IntoFilter trait
- Add Filter::or
- Add Filter::and
- Merge pull request #16 from bouzuya/claude/add-firestore-database-id-6feTg
- Add Firestore::database_id
- Add CollectionReference::start_at
- Add Query::start_at
- Fix to use FieldPath::into_structured_query_field_path
- Add pub(crate) FieldPath::into_structured_query_field
- Update README
- Fix to use
use crate::... - cargo +nightly fmt
- Add CollectionReference::select
- Add comments
- Rename variables # doc_ref -> document_reference
- Rename variables # doc -> query_document_snapshot
- Add Query::select
- Add Query::firestore
- Fix tests to use impl IntoFieldPath for &str
- Add impl IntoFieldPath for &str