2025.10.12 覚書 / 2025.10.12 memo's
自分が参考になったブログの紹介します。 / Here are some blogs that I found helpful.
Angular
- Angular Signals(シグナル)というリアクティブ・ステート管理の新しい仕組みを紹介
- 従来の Zone ベースの変更検知より、より細粒度・効率的な更新が可能になる点を強調
- カウントダウンタイマーのサンプルを通じて以下を解説:
- Writable signals(状態を直接更新できる信号)
- Computed signals(他のシグナルから導出される値)
- Effects(副作用的処理。シグナル変化時に実行)
- シグナルの導入におけるベストプラクティス(読み取り専用公開、複雑なロジックを避ける、クリーンアップ処理など)を提示
- シグナルは既存の RxJS や observable と共存可能で、徐々に移行する方式が推奨されている
- 古い Angular アプリケーションのマイグレーションでの課題(API 廃止、テンプレート修正、モジュール変換など)を述べる
- 著者が AI を使って Angular のマイグレーションを「数分」で自動化した実験を紹介
- Angular v19.2 でのテンプレート構文改善(
@if,@for,@switchなど)を強調 - 将来的な方向性として、AI を使ったスキャフォールディング、リファクタリング、エラー修正などの自動化を予測
- 結論として、Angular は AI と融合しながら進化し、開発者は「コードを書く人」から「設計・ロジックを考える人」にシフトする可能性を示唆
- Angular 20 で導入された “selectorless components”(セレクタなしコンポーネント)を紹介
- 通常、Angular コンポーネントには
selector(HTML タグ名など)が必要だが、selectorless コンポーネントは表示要素を持たず、テンプレートやホスト要素も持たない - このコンセプトはコンポーネントを UI 表示よりもアーキテクチャ的な役割(サービス的・ロジック的な層)として使う発想を可能にする
- テンプレート内に直接 “見えるコンポーネント” として使うのではなく、内部処理や組織構造を整理する道具として利用していくという観点
- Angular の設計思想の幅を広げる可能性を示唆
- Angular 19 で導入された
httpResource(リソース API)と従来のHttpClientとの関係を検討 httpResourceは signal ベースでリモートデータ取得を簡潔に扱える抽象レイヤーを提供- 例として TODO アプリを構築し、検索クエリに応じて自動で HTTP リクエストを再実行する仕組みを示す
httpResourceにはisLoading(),error(),reload()などの補助的なシグナルが備わっている- ただし、mutation(POST, PUT, DELETE 等)処理は想定外で、また入力変化時の再取得戦略(キャンセル&再実行)はカスタマイズ性に制限あり
- 結論としては、
httpResourceはHttpClientを置き換えるものではなく、取得処理に特化した補助レイヤーと見るべき、というスタンス
React
- React と React Native を Meta から「React Foundation(独立財団)」へ移管する計画を発表
- 独立した技術ガバナンス体制を導入し、一企業に依存しない運営を目指す
- React Foundation の役割として、GitHub・CI・商標管理、React エコシステム支援(助成金、プログラム)、コミュニティ運営などを挙げる
- 初期の出資・参加企業には Amazon, Callstack, Expo, Meta, Microsoft, Software Mansion, Vercel など
- 技術方針決定は貢献者主体とし、一企業の影響力を抑える設計を意図
- この移行により、React の将来の持続性、透明性、公平性を高めたいというビジョン
Rust
- C 言語出身者の視点で、Rust を使い始める際に知っておきたかったポイントをまとめる
- 所有権 (ownership), 借用 (borrowing), ライフタイム (lifetimes) の概念の重要性と、その落とし穴
- 安全性 (safety) を確保するための設計思想と、C では典型だったエラー源(ヌルポインタ、ダングリングポインタ等)への回避策
- マクロ(macro_rules!)やジェネリクス (generics) の扱い方、トレイト (trait) の設計など
- パフォーマンスと抽象化のトレードオフについての考察
- 開発生産性を高めるためのツール、コンパイラのメッセージ活用、デバッグ技法なども触れている
- Rust を使って複数言語対応の実行環境(マルチ言語実行ランナー)およびスマート REPL(Read-Eval-Print Loop)を実装したプロジェクト紹介
- 各言語(Python, JavaScript, Rust 等)を統一的に扱える抽象レベルを設計
- コマンドライン引数、入力データ、標準入出力のラッピング、時間制限やメモリ制限などの制約制御機構を備える
- 内部で言語固有の処理系を起動・管理し、結果の収集とエラー処理を整理
- REPL モードでは補完(autocomplete)、履歴、入力支援機能などを備え、インタラクティブな実行体験を提供
- Rust の安全性、高速性、ツールエコシステムを活用しつつ、複数言語実行基盤を統合するアーキテクチャを示す