Today I Learned

日々の仕事と学びの振り返りです。何をして、何を学んだかを記録します。

20267

2026-07-22

無限リスト機能をコードなしで移す — クリーンルーム契約と keyset ページネーション

仮想化された無限リスト+スクロール復元機能を別スタックへ移しながら学んだこと — 実装コードではなく見た目の振る舞いを契約として書くクリーンルーム方式、そして無限スクロールの安定性を左右する offset と keyset ページネーション

  • 機能を移す文書は「使ったライブラリ」ではなく「外からどう振る舞い、失敗時に何を保証するか」を契約として書く
  • 無限スクロールリストの安定性は大半がページネーション方式で決まる — offset は挿入/削除で重複・欠落、keyset は値基準なので安定
2026-07-09

階層型ドキュメントナビと viewer バンドル分離

page push/peek navigator と read-only viewer entry の分離で、ポートフォリオのデモ深度とバンドルを同時に合わせた一日

  • ドキュメントグラフは page ブロック + push/peek navigator 契約で flat editor と分離するほうがよい
  • peek·embed は editor と DOM は同じでも import graph が違ってこそ viewer バンドルが小さくなる

20266

2026-06-29

サーバーレス環境での検索バックエンドの選択

サーバーレスで何を関数の内側/外側に置くか、そして差し替え可能な検索を provider 契約で隠す方法

  • 常駐が必要な検索エンジンはサーバーレス関数には載せられず、事前ビルドしたインメモリインデックスで代替できる。
  • ランタイムで読み込むビルド成果物はバンドルのファイルトレースに明示しないと、コールドスタートで欠落する。