<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[makototさんのフィード]]></title><description><![CDATA[Zennのmakototさん（@makotot）のRSSフィードです]]></description><link>https://zenn.dev/makotot</link><image><url>https://static.zenn.studio/user-upload/avatar/42e8e6da30.jpeg</url><title>makototさんのフィード</title><link>https://zenn.dev/makotot</link></image><generator>zenn.dev</generator><lastBuildDate>Tue, 23 Jun 2026 08:28:14 GMT</lastBuildDate><atom:link href="https://zenn.dev/makotot/feed" rel="self" type="application/rss+xml"/><language><![CDATA[ja]]></language><item><title><![CDATA[React Hook FormはなぜReact Compilerのメモ化と噛み合わないのか]]></title><description><![CDATA[
 はじめに
React Hook Form を利用したアプリケーションで React Compiler を有効にすると意図しない動作になることがあります。たとえばformリセット後の再送信でバリデーションエラー表示されないという問題が起こりえます。このReact Compilerを有効化する上での問題はReact Hook Formのリポジトリーでも以下のissueで報告されています。
https://github.com/react-hook-form/react-hook-form/issues/12298
ここではなぜこのような問題が起きるのかを整理してみたいと思います。
!
こ...]]></description><link>https://zenn.dev/makotot/articles/dda21c75ff980a</link><guid isPermaLink="true">https://zenn.dev/makotot/articles/dda21c75ff980a</guid><pubDate>Thu, 09 Apr 2026 21:18:35 GMT</pubDate><enclosure url="https://res.cloudinary.com/zenn/image/upload/s--lc0uleOo--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:React%2520Hook%2520Form%25E3%2581%25AF%25E3%2581%25AA%25E3%2581%259CReact%2520Compiler%25E3%2581%25AE%25E3%2583%25A1%25E3%2583%25A2%25E5%258C%2596%25E3%2581%25A8%25E5%2599%259B%25E3%2581%25BF%25E5%2590%2588%25E3%2582%258F%25E3%2581%25AA%25E3%2581%2584%25E3%2581%25AE%25E3%2581%258B%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:makotot%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdGF0aWMuemVubi5zdHVkaW8vdXNlci11cGxvYWQvYXZhdGFyLzQyZThlNmRhMzAuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACMTiAE" length="0" type="false"/><dc:creator>makotot</dc:creator></item><item><title><![CDATA[React AriaのTableの挙動をData Gridパターンから理解する]]></title><description><![CDATA[この記事は、カオナビ Advent Calendar 2025（シリーズ1）11日目です。
https://qiita.com/advent-calendar/2025/kaonavi

 はじめに
React Ariaには、アクセシビリティに配慮した多くのコンポーネントが用意されていて、その1つにTableコンポーネントがあります。
https://react-spectrum.adobe.com/react-aria/Table.html
Tableコンポーネントによって高機能な表形式のUIを実現できますが、HTMLが持つ&lt;table&gt;要素 や一般的なウェブアプリケーショ...]]></description><link>https://zenn.dev/makotot/articles/react-aria-table-data-grid</link><guid isPermaLink="true">https://zenn.dev/makotot/articles/react-aria-table-data-grid</guid><pubDate>Wed, 10 Dec 2025 22:47:40 GMT</pubDate><enclosure url="https://res.cloudinary.com/zenn/image/upload/s--kc5u1_QM--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:React%2520Aria%25E3%2581%25AETable%25E3%2581%25AE%25E6%258C%2599%25E5%258B%2595%25E3%2582%2592Data%2520Grid%25E3%2583%2591%25E3%2582%25BF%25E3%2583%25BC%25E3%2583%25B3%25E3%2581%258B%25E3%2582%2589%25E7%2590%2586%25E8%25A7%25A3%25E3%2581%2599%25E3%2582%258B%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:makotot%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdGF0aWMuemVubi5zdHVkaW8vdXNlci11cGxvYWQvYXZhdGFyLzQyZThlNmRhMzAuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACMTiAE" length="0" type="false"/><dc:creator>makotot</dc:creator></item><item><title><![CDATA[Next.js App RouterのコンポーネントをVS Codeでサーバー・クライアント別に可視化する]]></title><description><![CDATA[Next.js v13でサーバーコンポーネントが導入されて以降、App Routerを用いた開発では、あるコードがサーバー側・クライアント側のどちらで実行されるのかを意識する必要が出てきました。この境界が識別しづらいことは、開発者にとって新たな課題となっていると思います。
実行される環境を見誤ると、クライアント専用のAPIをサーバーコンポーネントで呼び出してしまったり、反対にサーバーコンポーネントのみで行いたい処理をクライアントサイドへ露呈してまいセキュリティーリスクへ繋がったり、またバンドルサイズが気づいたら想定をはるかに上回る大きさへ膨れ上がっているかもしれません。
この記事ではこの...]]></description><link>https://zenn.dev/makotot/articles/ec6c631bc83e9e</link><guid isPermaLink="true">https://zenn.dev/makotot/articles/ec6c631bc83e9e</guid><pubDate>Mon, 09 Jun 2025 13:33:47 GMT</pubDate><enclosure url="https://res.cloudinary.com/zenn/image/upload/s--fVrgyo2a--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:Next.js%2520App%2520Router%25E3%2581%25AE%25E3%2582%25B3%25E3%2583%25B3%25E3%2583%259D%25E3%2583%25BC%25E3%2583%258D%25E3%2583%25B3%25E3%2583%2588%25E3%2582%2592VS%2520Code%25E3%2581%25A7%25E3%2582%25B5%25E3%2583%25BC%25E3%2583%2590%25E3%2583%25BC%25E3%2583%25BB%25E3%2582%25AF%25E3%2583%25A9%25E3%2582%25A4%25E3%2582%25A2%25E3%2583%25B3%25E3%2583%2588%25E5%2588%25A5%25E3%2581%25AB%25E5%258F%25AF%25E8%25A6%2596%25E5%258C%2596%25E3%2581%2599%25E3%2582%258B%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:makotot%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdGF0aWMuemVubi5zdHVkaW8vdXNlci11cGxvYWQvYXZhdGFyLzQyZThlNmRhMzAuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACMTiAE" length="0" type="false"/><dc:creator>makotot</dc:creator></item><item><title><![CDATA[なぜReact Ariaコンポーネントをサーバーコンポーネントにおいて利用するとNext.jsでビルドエラーになるのか]]></title><description><![CDATA[React Ariaのコンポーネントをサーバーコンポーネントで利用すると、Next.jsではビルドエラーとなる。
具体的には、
import { Link } from "react-aria-components";

export function FooLink() {
  return &lt;Link href="/foo"&gt;foo&lt;/Link&gt;;
}
このようなコンポーネントがあるだけで以下のメッセージとともにビルドエラーとなる。
'client-only' cannot be imported from a Server Component module....]]></description><link>https://zenn.dev/makotot/articles/6b7496747f4224</link><guid isPermaLink="true">https://zenn.dev/makotot/articles/6b7496747f4224</guid><pubDate>Wed, 15 Jan 2025 14:21:48 GMT</pubDate><enclosure url="https://res.cloudinary.com/zenn/image/upload/s--oc91B9pg--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:%25E3%2581%25AA%25E3%2581%259CReact%2520Aria%25E3%2582%25B3%25E3%2583%25B3%25E3%2583%259D%25E3%2583%25BC%25E3%2583%258D%25E3%2583%25B3%25E3%2583%2588%25E3%2582%2592%25E3%2582%25B5%25E3%2583%25BC%25E3%2583%2590%25E3%2583%25BC%25E3%2582%25B3%25E3%2583%25B3%25E3%2583%259D%25E3%2583%25BC%25E3%2583%258D%25E3%2583%25B3%25E3%2583%2588%25E3%2581%25AB%25E3%2581%258A%25E3%2581%2584%25E3%2581%25A6%25E5%2588%25A9%25E7%2594%25A8%25E3%2581%2599%25E3%2582%258B%25E3%2581%25A8Next.js%25E3%2581%25A7%25E3%2583%2593%25E3%2583%25AB%25E3%2583%2589%25E3%2582%25A8%25E3%2583%25A9%25E3%2583%25BC%25E3%2581%25AB%25E3%2581%25AA%25E3%2582%258B%25E3%2581%25AE%25E3%2581%258B%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:makotot%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdGF0aWMuemVubi5zdHVkaW8vdXNlci11cGxvYWQvYXZhdGFyLzQyZThlNmRhMzAuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACMTiAE" length="0" type="false"/><dc:creator>makotot</dc:creator></item><item><title><![CDATA[Redocly CLI Configurable rulesでOpenAPIドキュメントをLintする]]></title><description><![CDATA[この記事は、カオナビ Advent Calendar 2024（シリーズ1） 11日目です。
https://qiita.com/advent-calendar/2024/kaonavi

 はじめに
OpenAPIを用いたスキーマ駆動開発では、OpenAPIドキュメントが「Single Source of Truth（唯一の信頼できる情報源）」として重要な役割を担うと思います。
APIの仕様やデータ構造がこのドキュメントに集約されることで、クライアントとサーバーは同じ情報を共有し、整合性を保ちながらの開発がしやすくなるでしょう。
結果として、クライアント・サーバー双方の開発を非同期に進...]]></description><link>https://zenn.dev/makotot/articles/6bd35d6d83729a</link><guid isPermaLink="true">https://zenn.dev/makotot/articles/6bd35d6d83729a</guid><pubDate>Wed, 11 Dec 2024 12:44:49 GMT</pubDate><enclosure url="https://res.cloudinary.com/zenn/image/upload/s---B0eCZQ_--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:Redocly%2520CLI%2520Configurable%2520rules%25E3%2581%25A7OpenAPI%25E3%2583%2589%25E3%2582%25AD%25E3%2583%25A5%25E3%2583%25A1%25E3%2583%25B3%25E3%2583%2588%25E3%2582%2592Lint%25E3%2581%2599%25E3%2582%258B%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:makotot%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdGF0aWMuemVubi5zdHVkaW8vdXNlci11cGxvYWQvYXZhdGFyLzQyZThlNmRhMzAuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACMTiAE" length="0" type="false"/><dc:creator>makotot</dc:creator></item><item><title><![CDATA[RenovateでVoltaを検知対象から除外したい場合]]></title><description><![CDATA[Renovateを用いてNode.jsプロジェクトの依存ライブラリー更新を行う場合、package.jsonに以下のようなVoltaの設定が含まれていると、更新対象として検知される。

package.json
"volta": {
  "node": "20.11.1"
}

Node.jsのバージョンアップをRenovateの対象へ加えたい場合は特に問題ないけども、Node.jsに関してはRenovateの対象から除外して手動更新したいケースもある。
そのようなケースでvoltaの設定フィールドをどのように扱えるか、というメモ。
!
ここで言及しているRenovateのバージョンは、...]]></description><link>https://zenn.dev/makotot/articles/8c31c813059e38</link><guid isPermaLink="true">https://zenn.dev/makotot/articles/8c31c813059e38</guid><pubDate>Thu, 24 Oct 2024 15:40:20 GMT</pubDate><enclosure url="https://res.cloudinary.com/zenn/image/upload/s--eD-4_lu6--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:Renovate%25E3%2581%25A7Volta%25E3%2582%2592%25E6%25A4%259C%25E7%259F%25A5%25E5%25AF%25BE%25E8%25B1%25A1%25E3%2581%258B%25E3%2582%2589%25E9%2599%25A4%25E5%25A4%2596%25E3%2581%2597%25E3%2581%259F%25E3%2581%2584%25E5%25A0%25B4%25E5%2590%2588%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:makotot%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdGF0aWMuemVubi5zdHVkaW8vdXNlci11cGxvYWQvYXZhdGFyLzQyZThlNmRhMzAuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACMTiAE" length="0" type="false"/><dc:creator>makotot</dc:creator></item><item><title><![CDATA[デザインシステムのESLintプラグインから運用のヒントを学ぶ]]></title><description><![CDATA[
 はじめに
2021年のデザインシステムに関する調査によると、回答数があまり多くないものの、成功を収めているというデザインシステムは4割程度という結果が出ている。

But a majority of design systems ended up imploding. According to the 2021 Design Systems Survey, only 40% of the systems were successful.

https://storybook.js.org/blog/why-most-design-systems-implode
また、alexpate...]]></description><link>https://zenn.dev/makotot/articles/66e6a376a90349</link><guid isPermaLink="true">https://zenn.dev/makotot/articles/66e6a376a90349</guid><pubDate>Tue, 27 Feb 2024 16:55:03 GMT</pubDate><enclosure url="https://res.cloudinary.com/zenn/image/upload/s--IFchXx_8--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:%25E3%2583%2587%25E3%2582%25B6%25E3%2582%25A4%25E3%2583%25B3%25E3%2582%25B7%25E3%2582%25B9%25E3%2583%2586%25E3%2583%25A0%25E3%2581%25AEESLint%25E3%2583%2597%25E3%2583%25A9%25E3%2582%25B0%25E3%2582%25A4%25E3%2583%25B3%25E3%2581%258B%25E3%2582%2589%25E9%2581%258B%25E7%2594%25A8%25E3%2581%25AE%25E3%2583%2592%25E3%2583%25B3%25E3%2583%2588%25E3%2582%2592%25E5%25AD%25A6%25E3%2581%25B6%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:makotot%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdGF0aWMuemVubi5zdHVkaW8vdXNlci11cGxvYWQvYXZhdGFyLzQyZThlNmRhMzAuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACMTiAE" length="0" type="false"/><dc:creator>makotot</dc:creator></item><item><title><![CDATA[デザインシステムのUIプロトタイピング環境としてPlayroomを試す]]></title><description><![CDATA[
 はじめに
Chakra UIやTailwind CSSなど、人気のあるUIフレームワークが持つブラウザー上のPlayground環境は、ユーザーがローカルに環境を用意することなくUIフレームワークを試すことができる。
https://play.chakra-ui.com/playground
https://play.tailwindcss.com/
自身でデザインシステムのコンポーネントライブラリーを開発する場合にこのようなPlayground環境があると、そのコンポーネントを用いたプロトタイピングが可能になり良いかなと思うけど、
それを実現できるツールとしてPlayroomを試し...]]></description><link>https://zenn.dev/makotot/articles/54ca02dfa92c6d</link><guid isPermaLink="true">https://zenn.dev/makotot/articles/54ca02dfa92c6d</guid><pubDate>Sat, 10 Feb 2024 04:09:32 GMT</pubDate><enclosure url="https://res.cloudinary.com/zenn/image/upload/s--514BwNo_--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:%25E3%2583%2587%25E3%2582%25B6%25E3%2582%25A4%25E3%2583%25B3%25E3%2582%25B7%25E3%2582%25B9%25E3%2583%2586%25E3%2583%25A0%25E3%2581%25AEUI%25E3%2583%2597%25E3%2583%25AD%25E3%2583%2588%25E3%2582%25BF%25E3%2582%25A4%25E3%2583%2594%25E3%2583%25B3%25E3%2582%25B0%25E7%2592%25B0%25E5%25A2%2583%25E3%2581%25A8%25E3%2581%2597%25E3%2581%25A6Playroom%25E3%2582%2592%25E8%25A9%25A6%25E3%2581%2599%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:makotot%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdGF0aWMuemVubi5zdHVkaW8vdXNlci11cGxvYWQvYXZhdGFyLzQyZThlNmRhMzAuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACMTiAE" length="0" type="false"/><dc:creator>makotot</dc:creator></item><item><title><![CDATA[eslint-plugin-jsx-a11yのimg-redundant-altが日本語に対応していないことについて]]></title><description><![CDATA[
 はじめに
JSXにおけるアクセシビリティ観点のLintルールを持つESLintプラグインにeslint-plugin-jsx-a11yがある。
直近のメンテナンスがあまり活発ではない印象があるものの、主にReactアプリケーションのアクセシビリティ対応を静的解析でチェックするために広く利用されているプラグインだと思う。
このESLintプラグインの推奨設定であるrecommendedにはimg-redundant-altというルールが含まれているけど、このルールは現状日本語のようなマルチバイトの言語のJSXには対応していないと考えられるので、そのメモ。
!
ここで言及しているesli...]]></description><link>https://zenn.dev/makotot/articles/34d6c6f33a237e</link><guid isPermaLink="true">https://zenn.dev/makotot/articles/34d6c6f33a237e</guid><pubDate>Mon, 22 Jan 2024 16:31:44 GMT</pubDate><enclosure url="https://res.cloudinary.com/zenn/image/upload/s--jdUE6cFl--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:eslint-plugin-jsx-a11y%25E3%2581%25AEimg-redundant-alt%25E3%2581%258C%25E6%2597%25A5%25E6%259C%25AC%25E8%25AA%259E%25E3%2581%25AB%25E5%25AF%25BE%25E5%25BF%259C%25E3%2581%2597%25E3%2581%25A6%25E3%2581%2584%25E3%2581%25AA%25E3%2581%2584%25E3%2581%2593%25E3%2581%25A8%25E3%2581%25AB%25E3%2581%25A4%25E3%2581%2584%25E3%2581%25A6%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:makotot%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdGF0aWMuemVubi5zdHVkaW8vdXNlci11cGxvYWQvYXZhdGFyLzQyZThlNmRhMzAuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACMTiAE" length="0" type="false"/><dc:creator>makotot</dc:creator></item><item><title><![CDATA[Tailwind CSSのクラス属性長くなりがちな問題について]]></title><description><![CDATA[この記事は、カオナビ Advent Calendar 2023（シリーズ1） 11日目です。
https://qiita.com/advent-calendar/2023/kaonavi

 はじめに
Tailwind CSSというと、ユーティリティーファーストのCSSフレームワークとして非常に人気がありますが、一方で、批判的な意見を度々目にすることもあるフレームワークです。
批判的な意見の中でもよく目にするのは、クラス属性に膨大な量のクラスが指定されることでHTMLが読みづらいという類の指摘だと思います。
ここでは、Tailwind CSSを利用しているプロジェクトにおけるクラスが長す...]]></description><link>https://zenn.dev/makotot/articles/781b09850b4e6c</link><guid isPermaLink="true">https://zenn.dev/makotot/articles/781b09850b4e6c</guid><pubDate>Mon, 11 Dec 2023 12:05:05 GMT</pubDate><enclosure url="https://res.cloudinary.com/zenn/image/upload/s--EVab9D42--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:Tailwind%2520CSS%25E3%2581%25AE%25E3%2582%25AF%25E3%2583%25A9%25E3%2582%25B9%25E5%25B1%259E%25E6%2580%25A7%25E9%2595%25B7%25E3%2581%258F%25E3%2581%25AA%25E3%2582%258A%25E3%2581%258C%25E3%2581%25A1%25E3%2581%25AA%25E5%2595%258F%25E9%25A1%258C%25E3%2581%25AB%25E3%2581%25A4%25E3%2581%2584%25E3%2581%25A6%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:makotot%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdGF0aWMuemVubi5zdHVkaW8vdXNlci11cGxvYWQvYXZhdGFyLzQyZThlNmRhMzAuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACMTiAE" length="0" type="false"/><dc:creator>makotot</dc:creator></item><item><title><![CDATA[Edgeの3DビューでDOM要素の重なり順を可視化する]]></title><description><![CDATA[
 はじめに
CSSを書いていると、DOM要素の数が多かったり、そのネスト構造が深かったり、画面の特性上どうしてもz-indexなどによる優先順位の管理に苦労するケースは多々あると思う。
重なり方が意図通りではないとき、画面全体の要素の重なり順を可視化して調査する手段があると良いかなと思うけど、Edgeブラウザの3Dビューがそれに適していそう。
https://twitter.com/EdgeDevTools/status/1158485601798119424
3Dビュー自体は2020年ぐらいには正式な機能としてEdgeに入っているもの。もともとFirefoxに同じような機能があって、...]]></description><link>https://zenn.dev/makotot/articles/2ad3060cdd315b</link><guid isPermaLink="true">https://zenn.dev/makotot/articles/2ad3060cdd315b</guid><pubDate>Thu, 03 Aug 2023 18:30:34 GMT</pubDate><enclosure url="https://res.cloudinary.com/zenn/image/upload/s--QcVzvr2r--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:Edge%25E3%2581%25AE3D%25E3%2583%2593%25E3%2583%25A5%25E3%2583%25BC%25E3%2581%25A7DOM%25E8%25A6%2581%25E7%25B4%25A0%25E3%2581%25AE%25E9%2587%258D%25E3%2581%25AA%25E3%2582%258A%25E9%25A0%2586%25E3%2582%2592%25E5%258F%25AF%25E8%25A6%2596%25E5%258C%2596%25E3%2581%2599%25E3%2582%258B%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:makotot%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdGF0aWMuemVubi5zdHVkaW8vdXNlci11cGxvYWQvYXZhdGFyLzQyZThlNmRhMzAuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACMTiAE" length="0" type="false"/><dc:creator>makotot</dc:creator></item><item><title><![CDATA[大規模コードベース向けASTツールのast-grepについて]]></title><description><![CDATA[大規模なコードベース向けの高速なASTツールとしてast-grepというものがある。これについての調査メモ。
主に以下の公式ドキュメントを読み進めて、利用方法、パターンやルールの詳細などについて理解を深める。
https://ast-grep.github.io/

 ast-grepとは
公式ドキュメントでは、コードの検索からLint、codemodに至るまでASTツールとして網羅的にカバーできるツールであることが以下のように表現されている。

Think ast-grep as an hybrid of grep, eslint and codemod.

結果に精度が求められる場面...]]></description><link>https://zenn.dev/makotot/articles/ea823805582e5c</link><guid isPermaLink="true">https://zenn.dev/makotot/articles/ea823805582e5c</guid><pubDate>Wed, 05 Jul 2023 15:08:54 GMT</pubDate><enclosure url="https://res.cloudinary.com/zenn/image/upload/s--noVqhfsF--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:%25E5%25A4%25A7%25E8%25A6%258F%25E6%25A8%25A1%25E3%2582%25B3%25E3%2583%25BC%25E3%2583%2589%25E3%2583%2599%25E3%2583%25BC%25E3%2582%25B9%25E5%2590%2591%25E3%2581%2591AST%25E3%2583%2584%25E3%2583%25BC%25E3%2583%25AB%25E3%2581%25AEast-grep%25E3%2581%25AB%25E3%2581%25A4%25E3%2581%2584%25E3%2581%25A6%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:makotot%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdGF0aWMuemVubi5zdHVkaW8vdXNlci11cGxvYWQvYXZhdGFyLzQyZThlNmRhMzAuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACMTiAE" length="0" type="false"/><dc:creator>makotot</dc:creator></item><item><title><![CDATA[TypeScriptのエラーメッセージの読み方について]]></title><description><![CDATA[TypeScriptのエラーメッセージは、型が複雑になればなるほどエラー発生時にその理解を難しくするエラーメッセージとなる傾向があると思うけど、どのようにエラーメッセージを読むと理解が捗るのか確認するメモ。
!
ここでのTypeScriptは5.1.3のバージョンを利用したもの。エラーメッセージはtscコマンドの実行結果で表示されるものを利用している。


 エラーメッセージ
例えば、以下のような型エラーが起きるTypeScriptのコードがあった場合、
type Func = () =&gt; {
  foo: {
    bar: string;
    baz: number;
 ...]]></description><link>https://zenn.dev/makotot/articles/52bc81fdc58d05</link><guid isPermaLink="true">https://zenn.dev/makotot/articles/52bc81fdc58d05</guid><pubDate>Sat, 17 Jun 2023 17:59:28 GMT</pubDate><enclosure url="https://res.cloudinary.com/zenn/image/upload/s--zF-7o7_V--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:TypeScript%25E3%2581%25AE%25E3%2582%25A8%25E3%2583%25A9%25E3%2583%25BC%25E3%2583%25A1%25E3%2583%2583%25E3%2582%25BB%25E3%2583%25BC%25E3%2582%25B8%25E3%2581%25AE%25E8%25AA%25AD%25E3%2581%25BF%25E6%2596%25B9%25E3%2581%25AB%25E3%2581%25A4%25E3%2581%2584%25E3%2581%25A6%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:makotot%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdGF0aWMuemVubi5zdHVkaW8vdXNlci11cGxvYWQvYXZhdGFyLzQyZThlNmRhMzAuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACMTiAE" length="0" type="false"/><dc:creator>makotot</dc:creator></item><item><title><![CDATA[Atomic CSS-in-JSとは何か]]></title><description><![CDATA[
 はじめに
Atomic CSSとCSS-in-JSの両方を取り入れた概念であろうものとして「Atomic CSS-in-JS」というワードがある。これが具体的に何を指しているのか不明瞭なので、整理してみる。
https://sebastienlorber.com/atomic-css-in-js

 Atomic CSSとは何か？
まずはAtomic CSSが何かを整理する。
Atomic CSSとは何か。それはOOCSSやSMACSSといったCSSの設計手法の1つになるけど、CSS-TricksのAtomic CSSについての記事によると、以下のように

Atomic CSS is...]]></description><link>https://zenn.dev/makotot/articles/dcb6e6456fb6e4</link><guid isPermaLink="true">https://zenn.dev/makotot/articles/dcb6e6456fb6e4</guid><pubDate>Mon, 05 Jun 2023 14:54:41 GMT</pubDate><enclosure url="https://res.cloudinary.com/zenn/image/upload/s--L-iOY_uQ--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:Atomic%2520CSS-in-JS%25E3%2581%25A8%25E3%2581%25AF%25E4%25BD%2595%25E3%2581%258B%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:makotot%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdGF0aWMuemVubi5zdHVkaW8vdXNlci11cGxvYWQvYXZhdGFyLzQyZThlNmRhMzAuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACMTiAE" length="0" type="false"/><dc:creator>makotot</dc:creator></item><item><title><![CDATA[Excess Property Checkingとは何か]]></title><description><![CDATA[
 はじめに
Excess Property Checking（日本語だと「過剰な（ or 余計な）プロパティのチェック」だろうか？）というものが何か、理解が曖昧なので整理してみる。
!
Playgroundでの確認等は、これを書いている時点でのTypeScriptの最新バージョンである5.0.4で行っている。


 Excess Property Checking
通常、構造的な型システムを採用するTypeScriptにおいて、必須のプロパティさえ満たされていればその他のプロパティについては問題とならない。
ただし、オブジェクトリテラルを変数へ代入するときと関数の引数へ渡すときに限って...]]></description><link>https://zenn.dev/makotot/articles/8c78cd4dd857c0</link><guid isPermaLink="true">https://zenn.dev/makotot/articles/8c78cd4dd857c0</guid><pubDate>Thu, 25 May 2023 15:42:01 GMT</pubDate><enclosure url="https://res.cloudinary.com/zenn/image/upload/s--FfMnzZsS--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:Excess%2520Property%2520Checking%25E3%2581%25A8%25E3%2581%25AF%25E4%25BD%2595%25E3%2581%258B%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:makotot%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdGF0aWMuemVubi5zdHVkaW8vdXNlci11cGxvYWQvYXZhdGFyLzQyZThlNmRhMzAuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACMTiAE" length="0" type="false"/><dc:creator>makotot</dc:creator></item><item><title><![CDATA[ESLintのconfigがどのように変わり得るか（flat configとは何か）]]></title><description><![CDATA[
 はじめに
https://eslint.org/blog/2022/08/new-config-system-part-2/
ESLint v8.21.0のリリースでこれまでとは異なるconfigシステム（flat config）が持ち込まれた。
以下の通り、新しいconfigシステムへの一歩というように言及があり、ESLintを利用する上で無視できない影響を受ける変更となりそうなので、どのようなものか確認しておきたい。

We took a big step toward ESLint’s new config system! The new FlatESLint class is...]]></description><link>https://zenn.dev/makotot/articles/0d9184f3dde858</link><guid isPermaLink="true">https://zenn.dev/makotot/articles/0d9184f3dde858</guid><pubDate>Thu, 11 Aug 2022 16:46:49 GMT</pubDate><enclosure url="https://res.cloudinary.com/zenn/image/upload/s--dK0PB6aO--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:ESLint%25E3%2581%25AEconfig%25E3%2581%258C%25E3%2581%25A9%25E3%2581%25AE%25E3%2582%2588%25E3%2581%2586%25E3%2581%25AB%25E5%25A4%2589%25E3%2582%258F%25E3%2582%258A%25E5%25BE%2597%25E3%2582%258B%25E3%2581%258B%25EF%25BC%2588flat%2520config%25E3%2581%25A8%25E3%2581%25AF%25E4%25BD%2595%25E3%2581%258B%25EF%25BC%2589%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:makotot%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdGF0aWMuemVubi5zdHVkaW8vdXNlci11cGxvYWQvYXZhdGFyLzQyZThlNmRhMzAuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACMTiAE" length="0" type="false"/><dc:creator>makotot</dc:creator></item><item><title><![CDATA[jestにおけるアサーション数の制限について]]></title><description><![CDATA[
 jest/max-expects

eslint-plugin-jestに、テスト毎にexpectの回数を制限するmax-expectsのルールを提案して、Pull Requestを出して、v26.6.0でリリースしてもらった。
https://github.com/jest-community/eslint-plugin-jest/releases/tag/v26.6.0
なのでeslint-plugin-jestのv26.6.0からjest/max-expectsをrulesに追加すると

.eslintrc.json
{
  ...,
  "rules": {
      .....]]></description><link>https://zenn.dev/makotot/articles/7397286cd26eb5</link><guid isPermaLink="true">https://zenn.dev/makotot/articles/7397286cd26eb5</guid><pubDate>Sun, 17 Jul 2022 16:09:59 GMT</pubDate><enclosure url="https://res.cloudinary.com/zenn/image/upload/s--hffVr9kJ--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:jest%25E3%2581%25AB%25E3%2581%258A%25E3%2581%2591%25E3%2582%258B%25E3%2582%25A2%25E3%2582%25B5%25E3%2583%25BC%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%25B3%25E6%2595%25B0%25E3%2581%25AE%25E5%2588%25B6%25E9%2599%2590%25E3%2581%25AB%25E3%2581%25A4%25E3%2581%2584%25E3%2581%25A6%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:makotot%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdGF0aWMuemVubi5zdHVkaW8vdXNlci11cGxvYWQvYXZhdGFyLzQyZThlNmRhMzAuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACMTiAE" length="0" type="false"/><dc:creator>makotot</dc:creator></item><item><title><![CDATA[フロントエンドに関連するRustのOSSや学習リソース調査メモ]]></title><description><![CDATA[近年、フロントエンド関連のRustで実装されているOSSや学習する上での情報が増えてきている印象があって、そういうOSSおよび学習リソースのリンクを収集したメモ。
フロントエンド開発に少しでも関連してそうなものは主観で判断してリストに入れているので、フロントエンドとは言えないのでは？というものも含まれていると思う。
!
特に基準を明確に設けずにただリストアップしてカテゴリ分けしていることは明記しておく。


 OSS
以下、OSSのGithubリポジトリへのリンク。
内容を精査しているわけではなくて見つけたものをリストにひとまず追加し続けて、主観でカテゴリ分けしたもの。
調査時点でRus...]]></description><link>https://zenn.dev/makotot/articles/frontend-related-rust-resources</link><guid isPermaLink="true">https://zenn.dev/makotot/articles/frontend-related-rust-resources</guid><pubDate>Mon, 27 Jun 2022 16:50:13 GMT</pubDate><enclosure url="https://res.cloudinary.com/zenn/image/upload/s--uZ8mCFFz--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:%25E3%2583%2595%25E3%2583%25AD%25E3%2583%25B3%25E3%2583%2588%25E3%2582%25A8%25E3%2583%25B3%25E3%2583%2589%25E3%2581%25AB%25E9%2596%25A2%25E9%2580%25A3%25E3%2581%2599%25E3%2582%258BRust%25E3%2581%25AEOSS%25E3%2582%2584%25E5%25AD%25A6%25E7%25BF%2592%25E3%2583%25AA%25E3%2582%25BD%25E3%2583%25BC%25E3%2582%25B9%25E8%25AA%25BF%25E6%259F%25BB%25E3%2583%25A1%25E3%2583%25A2%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:makotot%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdGF0aWMuemVubi5zdHVkaW8vdXNlci11cGxvYWQvYXZhdGFyLzQyZThlNmRhMzAuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACMTiAE" length="0" type="false"/><dc:creator>makotot</dc:creator></item><item><title><![CDATA[React v17の破壊的変更について改めて確認]]></title><description><![CDATA[v17.0.0のリリースはもう2年近く前のことだし、v18もリリースされてv17はもう最新メジャーバージョンでもないので今更感が強いけども、改めてv17での破壊的変更を確認する。
以下のReact公式の記事で破壊的変更について確認しつつ、必要に応じてStackBlitzで挙動をv16とv17で比較する。
https://ja.reactjs.org/blog/2020/10/20/react-v17.html
https://ja.reactjs.org/blog/2020/08/10/react-v17-rc.html#other-breaking-changes
なお、StackBl...]]></description><link>https://zenn.dev/makotot/articles/111f2718ff65a7</link><guid isPermaLink="true">https://zenn.dev/makotot/articles/111f2718ff65a7</guid><pubDate>Tue, 21 Jun 2022 16:57:23 GMT</pubDate><enclosure url="https://res.cloudinary.com/zenn/image/upload/s--hOFonFPr--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:React%2520v17%25E3%2581%25AE%25E7%25A0%25B4%25E5%25A3%258A%25E7%259A%2584%25E5%25A4%2589%25E6%259B%25B4%25E3%2581%25AB%25E3%2581%25A4%25E3%2581%2584%25E3%2581%25A6%25E6%2594%25B9%25E3%2582%2581%25E3%2581%25A6%25E7%25A2%25BA%25E8%25AA%258D%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:makotot%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdGF0aWMuemVubi5zdHVkaW8vdXNlci11cGxvYWQvYXZhdGFyLzQyZThlNmRhMzAuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACMTiAE" length="0" type="false"/><dc:creator>makotot</dc:creator></item><item><title><![CDATA[Storybookのテストランナー]]></title><description><![CDATA[
 はじめに

Storybook test runner turns all of your stories into executable tests.
https://github.com/storybookjs/test-runner

Storybookの全てのStoryをテスト可能にする@storybook/test-runnerについてのメモ。
Storybookの公式ドキュメントではv6.5からテストランナーについてのページが設けられている。

 何をテストするものか
テスト対象についてはplay関数の有無によって異なる。


For those without a pl...]]></description><link>https://zenn.dev/makotot/articles/b0729488282148</link><guid isPermaLink="true">https://zenn.dev/makotot/articles/b0729488282148</guid><pubDate>Sun, 29 May 2022 06:31:19 GMT</pubDate><enclosure url="https://res.cloudinary.com/zenn/image/upload/s--PsrP9wtp--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:Storybook%25E3%2581%25AE%25E3%2583%2586%25E3%2582%25B9%25E3%2583%2588%25E3%2583%25A9%25E3%2583%25B3%25E3%2583%258A%25E3%2583%25BC%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:makotot%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdGF0aWMuemVubi5zdHVkaW8vdXNlci11cGxvYWQvYXZhdGFyLzQyZThlNmRhMzAuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACMTiAE" length="0" type="false"/><dc:creator>makotot</dc:creator></item></channel></rss>