2025.11.13 覚書 / 2025.11.13 memo's
自分が参考になったブログの紹介します。 / Here are some blogs that I found helpful.
Angular
- Angular における新しいプルリク「Resource Composition(リソース合成)」が紹介されている。
- 従来、
Resource<T>型から派生させたい場合、computed()を使ってマッピングする手法があったが、型的にResource<ProjectedUser|undefined>を満たさず将来的な拡張に脆弱という指摘。 - プルリク提案内容:「
ResourceSnapshot<T>」型を定義し、Resource<T>→Signal<ResourceSnapshot<T>>→ 派生 →resourceFromSnapshots()によってResourceを再構成できるようにする。これによりリソースの合成が容易になる。 - 例として「前の値を保持しながら新しい値を取得」 (
withPreviousValue<T>) のようなユーティリティ関数が提示されており、ロード中も以前の値を残したまま表示するといった UX 改善が可能になる。 - また、記事内では他のトピックも簡単に紹介されており、例えば:
- 「Signal Forms」機能の公式ドキュメント公開。
rxResourceの設計上の決定(例えばロード中/再ロード時の振る舞い)に関する解説リンク。- “ゾーンレス(zoneless)”アプリケーションにおけるエラー処理の変化、バックエンドの性能がフロントエンドに与える影響など、Angular エコシステムにおける実践的/運用的な話題も触れられている。
- 要点としては、「非同期データ管理用の
ResourceAPI が、信号(Signals)およびスナップショットを介した派生可能な設計へと進化しつつある」という潮流が読み取れる内容です。
- Angular Signals(信号)を使った状態管理(state management)の刷新事例を紹介。
- 「シグナルとは何か」「なぜ従来手法(Observables/NgRx 等)より優れているか」「どう使い始めるか」を順に解説。
- 主なポイント:
- Signal は「データを保持する箱」のようなもので、値を読み取った時に Angular がその参照を追跡し、変化時に UI を更新する。
- 従来の多重 Observable、Subject、NgRx のような複雑な設定を軽減できる。
- 実例として自身のアプリで Signals を導入した結果、可読性/保守性が向上したという著者の体験。
- サービスから渡された 読み取り専用(read-only)Signal を、コンポーネント内で「編集可能」にする手法を解説。
- 主な内容:
- 実践的な場面で「サービスから渡された read-only をどう扱うか」の課題がある場合、参考になります。
- NgRx を使っていたコンポーネントを、あえて NgRx を使わずに書き直し、さらに Signals / Signal Store による構成に移行した体験記事。
- 主な内容:
- 元々 NgRx で構築していたコンポーネントを、冗長性・ボイラープレートを減らすために信号ベースの仕組みに変えた。
- 結果、ファイル数が減り(リデューサー・アクション・エフェクトなどの定義が不要になった)、構成が簡素化された。
- ただし、完全に NgRx を不要とするには注意点もある(例えば複雑な非同期処理・大規模ストア設計など)。
- ※ユーザーのコンテキスト(あなたが NgRx + Signals を使っておられる)にかなり近く、実践的な比較観点として有益です。
- Signal の基本概念:変化可能な値を保持し、その値が変わると自動でその値を使っている箇所(UI 等)が更新される。プリミティブにも複雑な構造体にも使える。
- 基本的な使い方:
signal(initialValue)で Signal を作成。- テンプレート内で読み取るときは
{{ count() }}のように関数呼び出しで値を得る。 - 値の更新には
.set()または.update()を用い、.update()は現在値を基に新しい値を計算する。
- 派生 Signal(
computed)の説明:- 他の Signal に依存し、読み取り専用。値が変わったときのみ再計算されキャッシュされる。
- 例として、オブジェクト Signal から名前+年齢を結合した文字列を
computedで取得するコードあり。
- 副作用の監視(
effect)の説明: - よく使われる API のまとめ:
signal(初期値)、signal()(読み取り)、signal.set()、signal.update()、computed()、effect()など。
- 初心者向けにコード例付きで丁寧に解説されており、Angular における Signal 利用の「入り口」として非常に分かりやすい内容です。
Develop
- Playwright による E2E / UI テストで「たまに失敗する」いわゆる “flaky test(不安定なテスト)” をどう修正・防止するかのガイド。
- 概要としては:
- Firefox バージョン 145 で、プライベートブラウジング / 強化追跡保護モード(ETP Strict)において、ユーザー識別可能な情報を大幅にマスク・ノイズ混入する仕組みを強化。
- 結果として、これまで 60 % 以上のユーザーが識別可能だったデバイスが、「特定困難」な20 % 程度に低下したとの報告あり。
- プライバシー保護の観点で大きな前進であると評価。
Node
- nvm(Node Version Manager)を使って、Windows環境で Angular と Node.js のバージョン不整合を解消する方法を紹介。
- 主な内容:
- Node.js v25.2.0 において、TypeScript の型アノテーション等を事前トランスパイルなしに実行可能とする「Type Stripping」機能が安定版になったという技術解説。
- 主な内容:
Rust
- Rust 言語のバージョン 1.91.1 リリース告知。
- 主な更新内容(概要):バグ修正・安全性改善・既存機能の安定化。
- Rust を使ったデスクトップ / バックエンド構築を検討されているあなたにとって、バージョン上の選定・互換性確認に役立つ情報です。
- Debian をはじめとする主要 Linux ディストリビューションが、将来的に一部パッケージの構築に Rust を利用する方針を打ち出している記事。
- 主なポイント:
- 安全性・性能・メンテナンス性の観点から、C/C++ だけでなく Rust を用いたパッケージ構築が増えている。
- Ubuntu 等の派生ディストリビューションにも影響が及び、Rust がインフラ / ディストリビューションレベルでの採用を受け始めている。
- あなたが Rust を使ったバックエンド API(例:actix-web)を計画されているので、この動向は将来の環境選定・運用にも関わってきそうです.
- Rust における並行処理 / コンカレンシー設計を、Go 開発者視点で解説した記事。
- 主な内容:
- Go の goroutine / channel 型の並行処理モデルと、Rust のスレッド / async / await / ownership モデルの比較。
- Rust の「全てがコンパイル時に検証される安全性(compile-time safety)」という特徴を強調。
- Go の読者がスムーズに Rust に移行するための思考パターン・コード例提示。
- あなたが Rust に関心があるということで、Go からの移行 / 設計思想比較という観点で大変役立つでしょう。