blog.bouzuya.net

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/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 の追加

まだ Queryr#where に関連したインタフェースはまだ怪しいと思っている。 2.2 でこれらが一式追加される想定だけど、イマイチだと 3.0 として破壊的変更を入れることになるかもしれない。


今日のコミット。