Skip to content

データフェッチングのパターンをClaudeと選ぶ

まずClaudeにプロジェクトの状況を整理してもらう

Section titled “まずClaudeにプロジェクトの状況を整理してもらう”

データフェッチングのライブラリ選定は、プロジェクトの要件によって最適解が変わります。Claude Codeを使えば、自分のプロジェクトに合ったパターンを素早く選択・実装できます。

まずは現在の構成をClaudeに伝えてみましょう。次のようにプロンプトを入力するだけで、具体的な比較が得られます。

Next.js 14のApp Routerを使っています。
ユーザー一覧ページはSSR、ダッシュボードはリアルタイム更新が必要です。
SWR・React Query・Server Componentsのどれが適していますか?
要件ごとに比較表を出してください。

Claudeはキャッシュ戦略・バンドルサイズ・学習コストといった観点から整理した比較表を返してくれます。抽象的なドキュメントを読み漁る時間を大幅に削減できます。

キャッシュ: 一度取得したデータを一時的に保存しておき、同じリクエストへの応答を速くする仕組み。プロンプト: AIへの指示文。Claude Codeへの指示の質がそのまま出力の質に影響する。バンドル: 複数のJavaScript・CSSファイルをひとつにまとめてブラウザへの転送を最適化すること。SSR: Server-Side Rendering の略。HTMLをサーバー側で生成してブラウザに送る方式。SEOや初期表示速度に優れる。

Server Componentsでのデータ取得をそのまま実装してもらう

Section titled “Server Componentsでのデータ取得をそのまま実装してもらう”

方針が決まったら、実装もClaudeに任せましょう。たとえばApp RouterのServer Componentsパターンなら、次のように依頼します。

Next.js 14のServer ComponentsでREST APIからユーザー一覧を取得するコードを書いてください。
エラーハンドリングとローディング状態(loading.tsx)も含めてください。

すると以下のようなコードが生成されます。

app/users/page.tsx
export default async function UsersPage() {
const res = await fetch("https://api.example.com/users", {
next: { revalidate: 60 }, // 60秒ごとに再検証
});
if (!res.ok) throw new Error("ユーザーの取得に失敗しました");
const users: User[] = await res.json();
return (
<ul>
{users.map((user) => (
<li key={user.id}>{user.name}</li>
))}
</ul>
);
}

revalidateオプションの数値も要件に応じてClaudeが提案してくれるため、キャッシュ設計の迷いがなくなります。

REST API: Representational State Transfer の設計原則に基づくAPI。URLとHTTPメソッド(GET/POST/PUT/DELETE)でリソースを操作する。API: Application Programming Interface の略。外部サービスとプログラム間でデータをやりとりするための接続口。

SWRへの切り替えも差分で依頼する

Section titled “SWRへの切り替えも差分で依頼する”

クライアントサイドでリアルタイム更新が必要な箇所はSWRが適しています。既存コードをベースに切り替えたい場合は、こう依頼しましょう。

上記のUsersPageをSWRを使ったクライアントコンポーネントに書き直してください。
ポーリングは30秒ごとに設定してください。

ClaudeはuseSWRフックを使った実装に変換しつつ、refreshIntervalの設定まで含めたコードを返します。比較実装を並べてコードレビューの材料にすることもできます。ライブラリ選定から実装・リファクタリングまで、一連の作業をClaude Codeで一気に進めてみてください。

リファクタリング: 外部から見た動作を変えずに、コードの内部構造を整理・改善すること。