ブログ · 13 ページ目
開発とデザイン、あとは雑記。
Rust の Result:コンテキストは失敗した行に付ける
`?` はエラーをそのまま上へ投げ、どの段階で失敗したかを伝えません。中核は照合できる構造化エラー、アプリ層は Context で「何をしていたか」と入力を添える。
crate を workspace に分けるべきとき
分割の引き金はビルド時間と依存の境界で、ディレクトリの見た目ではありません。3 つの条件が揃ったときに分け、揃わなければ 1 回のビルドを複数パッケージの管理と引き換えにするだけです。
構造化ログは println を tracing::info に置き換えることではない
文字列を連結したログは人間しか読めません。フィールドがあって初めて検索と集計ができます。フィールド、span、レベル、そして整形しない判断の 4 つが本題です。
Islands は Web Components ではない:似て見えて別物の「必要なときだけ読み込む」
Islands はビルド時にどこに JS が要るか・いつハイドレートするかを決めます。Web Components は実行時にブラウザへ自立した要素を渡します。混同すると道具を選び間違えます。
静的サイトのキャッシュヘッダー:ハッシュ付きは永久、HTML は毎回確認
キャッシュ方針を決めるのはファイル名が内容で変わるかどうかで、サイズではありません。HTML を長くキャッシュすると、削除済みチャンクを指す古い入口を配ることになります。
WebAssembly が効く場面は、宣伝よりずっと少ない
WASM の利得は重い計算、まとまったデータ、少ない境界越えが揃ったときに出ます。O(n) の JavaScript ループを書き直しても、遅い読み込みと追いにくいスタックが残るだけです。
