#
58
2024/7/3
今日のトレンド

ReactのuseEffectとuseMediaQuery など

おはようございます!今日は2024年7月4日、木曜日です。Zennで今日トレンドの記事を紹介していきます。前回は、OpenSSHの脆弱性、LLMを使ったレコメンドエンジン、そして暗号化に対応したdotenvツールについてお伝えしましたね。

さて、今日も盛りだくさんでお届けします!まずは今日紹介する記事の本数ですが、今日は5本の素晴らしい記事を紹介します。それでは早速、1つ目の記事から始めましょう。

。。。。

1つ目の記事は「【React】useMediaQuery は最終手段にしよう」です。この記事では、Reactにおける`useMediaQuery`の使用を推奨しない理由とその代替手段について説明しています。`useMediaQuery`は`window.matchMedia`を使い、CSSのメディアクエリをJavaScriptで判定するカスタムフックですが、サーバーサイドレンダリング(SSR)環境では正しく動作しないため、問題が発生することがあります。

具体的には、SSRでは`window`オブジェクトが存在しないため、固定値を返すかエラーを投げるしかありません。これにより、hydrationエラーやレイアウトシフトが発生することがあります。解決策としては、まずCSSのメディアクエリでスタイリングを実装することを検討すべきです。また、イベントハンドラー内での画面幅の取得などは、その関数内で直接計算すればよいです。

ただし、SSRを使用しない場面やクライアントサイドでのみ使用されるコンポーネントでは`useMediaQuery`を使用しても問題ありません。まとめとして、`useMediaQuery`は最終手段とし、まずはCSSのメディアクエリでの実装を検討することが重要です。

。。。。

2つ目の記事は「useEffectの基本的なアンチパターン」です。こちらの記事では、ReactのuseEffectフックの基本的な使い方とそのアンチパターンについて解説しています。useEffectは副作用を管理するために使用され、コンポーネントのレンダリング後に特定の関数を実行します。しかし、不適切に使用すると不要な再レンダリングが発生し、パフォーマンスが低下することがあります。

例えば、親コンポーネントで入力された値を子コンポーネントに渡し、子コンポーネントでuseEffectを使用してデータをフィルタリングする場合、親コンポーネントの再レンダリングが発生するたびに子コンポーネントも再レンダリングされます。フィルタリング処理はuseEffect内ではなく、直接レンダー内で行うべきです。

また、ユーザーイベントを起点にリクエストを送信する際にuseEffectを使用すると、クリックごとに不要な再レンダリングが発生します。イベントハンドラー内でリクエストを送信することで再レンダリングを防ぎます。このように、useEffectの利用には注意が必要です。

。。。。

3つ目の記事は「レスポンシブ対応ってむずい。。レスポンシブを簡単に確認できるおすすめのchrome拡張機能2選」です。この記事では、レスポンシブデザインの確認が難しいという課題に対して、便利なChrome拡張機能を2つ紹介しています。

1つ目は「モバイルシミュレーター」。これはモバイルデバイスに特化したレスポンシブ確認ツールで、ほぼすべてのデバイスを無料でチェック可能です。2つ目は「Responsive Viewer」。こちらは幅広いデバイスでのレスポンシブ確認が可能で、複数画面のシームレスな確認やスクリーンサイズのカスタマイズができます。

記事後半では、著者が開発したフリー素材サイトでの経験を通じて、レスポンシブ対応の難しさを具体例を交えて説明しています。特に、コードに不要なheight指定があったために発生した問題とその対処法について詳しく述べています。

。。。。

4つ目の記事は「GraphQL APIを開発するときに気をつけるべき点をまとめたドキュメントを公開します」です。この記事では、GraphQL APIの設計において注意すべきポイントをまとめています。

GraphQLの利点を最大限に活かすためには、REST的発想を捨てることが重要です。REST APIのアンダーフェッチ問題やオーバーフェッチ問題を解決するために、GraphQLは部分フェッチとグラフ構造を活用します。また、フロントエンドの複雑なロジックをバックエンドに寄せることで、単一のステータスフィールドで表示分岐を完結させることが理想的です。

記事では、命名規則やQueryの引数設定、過負荷対策、N+1問題の解決方法についても詳しく解説しています。このドキュメントを参考に、GraphQLの導入や設計を進めてください。

。。。。

5つ目の記事は「Cloudflare Workers AIを使って画像生成機能を製品の機能として組んだ時に考えたこと」です。この記事では、Cloudflare Workers AIを利用して画像生成機能を導入する際の考察と技術的なポイントについて紹介しています。

高齢者向けのマッチングアプリにおいて、ユーザーのプロフィール画像をデフォルメすることで、より良い体験を提供することを目指しました。Cloudflare Workers AIの利用料金は無料で、今回は「Stable Diffusion v1.5 img2img」モデルを使用しました。技術的なポイントとしては、プロンプトの設定や出力の安定性、メモリ管理などが挙げられます。

具体的な実装例も紹介されており、画像生成の結果をR2に保存し、生成失敗を判定する方法などが記載されています。Cloudflare Workers AIを利用して製品機能を構築するのは非常に面白い経験だったそうです。興味のあるエンジニアはぜひ試してみてください。

。。。。

さて、今日は以上の5つの記事を紹介しました。どれも非常に興味深い内容でしたね。詳しい内容はショーノートに記載していますので、ぜひチェックしてみてください。また、番組への感想も募集していますので、どしどしお便りお待ちしています。

次回も素晴らしい記事を紹介できるのを楽しみにしています。それでは、またお会いしましょう!マイクでした。

Related episodes

内容の近いエピソードを推薦しています