タグ

ブックマーク / zenn.dev/takepepe (5)

  • 私のフロントエンドディレクトリ構成・テスト観点 2022

    近日連投していた Next.js 記事のサンプルコードを公開しました。このサンプルコードを元に、私のフロントエンドディレクトリ構成・テスト観点を紹介します(あくまで執筆現在の脳内アウトプットになりますのでご了承ください) フロントエンドディレクトリ構成の事情 タイトルの「フロントエンドディレクトリ構成」をさす「Components」のディレクトリ構成は、いつも悩みのタネです。このモジュールシステムは「デザインシステム観点・アクセシビリティ観点・フロントエンド実装観点」の 3 つの観点が混在するため事情が複雑です。どうせ作るのなら「デザイナー・フロントエンド」どちらの開発基盤にもなりえる、盤石なモジュールシステムを目指したいですよね。 "AtomicDesign やめました"という声をたまに聞くのですが「デザインシステム的に捨てていいの?」と思うこともあるので、とくに要望がなければ、筆者は「

    私のフロントエンドディレクトリ構成・テスト観点 2022
  • a11yとテストを同時に改善する話

    これまで、a11y 改善・テスト拡充にあたり「どのように改善すべきか?どのように書くべきか?」という点がハードルだと感じていました。Chrome で a11y tree を確認するには、dev tools の隅の隅をつつく必要があり、あまり体験の良いものではなく、気に入ったエクステンションもありませんでした。 Testing Library は「誰もがアクセスできるクエリー」を優先的に使用することを推奨していますが、アプリケーションがはじめから a11y に考慮された作りになっているとは限りません。これらの背景から「data-testid」のような、テスト向け属性に頼るワークアラウンドで乗り切ることも少なくありませんでした。 Full page accessibility tree 今年 1 月にリリースされたChrome98 の新機能として「Full page accessibility

    a11yとテストを同時に改善する話
  • データ取得で try...catch しない理由

    try { const data = await fetchSomething(); // 正常系レスポンスの処理 } catch (err) { if (isAxiosError(err)) { // 異常系レスポンスの処理 } } 動機はつぎの 3 つです。 データ取得も宣言的に書きたいから データ取得に関係ない例外も catch してしまうから HttpError の集計に不便だから データ取得も宣言的に書きたいから 要約すると、データ取得時は常にこのように書きたい、という話です。useSWR・useQuery や apollo/client でお馴染みのインターフェイスです。 const { data, err, status } = await fetchSomething(); if (data) // 正常系レスポンスの処理 if (err) // 異常系レスポンスの処理

    データ取得で try...catch しない理由
  • atoms で活用したい CSS 隣接セレクタ

    CSS 隣接セレクタ(隣接兄弟結合子)を活用すると、JavaScript のみで制御するよりもスマートな atoms を作ることができます。また、JavaScript の処理を削減することが出来ます。 【稿サンプル】https://github.com/takefumi-yoshii/atoms-example 装飾は「状態管理」に依存させない 以下は関連記事をベースに作った Component です。ref forwarding が何故必要かは、そちらの記事を参照してください。 label 要素に囲まれており、状態をもたない input 要素を保持しているが、type は決まっていない Props で「3種の形状切り替え」が可能("checkbox" | "radio" | "toggle") import React from "react"; import styles from

    atoms で活用したい CSS 隣接セレクタ
  • 原子の再定義 - Atomic ReDesign -

    Atomic ReDesign とは 「Atomic ReDesign」 は、かの有名な「Atomic Design」の拡張概念です。ReactVue.js を用いたコンポーネント設計において、私たちはしばしば頭を抱えることがありました。UI 粒度の分類制約は、コンポーネント設計最適化を阻むことがあるからです。 「この粒度のコンポーネントはどこに属するものなのか?」という疑問に対し統一された解はなく、プロダクト毎の性質によって定める必要がありました。また、文脈が散在することにより、コードに対する集中力低下を招きました。 Atomic ReDesign は顕在化した 「Atomic Design とアプリケーション設計の乖離」 をとらえ、現実的な設計指針となることを目指します。 Atomic Design とアプリケーション設計の乖離 家 Atomic Design はデザインシステ

    原子の再定義 - Atomic ReDesign -
  • 1