Advanced

Leveraging Edge Computing dengan Claude Code

Pelajari tentang leveraging edge computing menggunakan Claude Code. Dilengkapi tips praktis dan contoh kode.

エッジコンピューティング

エッジコンピューティング 、pengguna 地理的 近いserver pemrosesan 実行 技術.レイテンシ 大幅 削減し、cepatなresponse 実現 bisa dilakukan.Claude Code pemanfaatan 、エッジdukungan aplikasi pembangunanし.

Cloudflare Workers

// src/index.ts
export default {
  async fetch(
    request: Request,
    env: Env,
    ctx: ExecutionContext
  ): Promise<Response> {
    const url = new URL(request.url);

    // Routing
    switch (url.pathname) {
      case "/api/geo":
        return handleGeo(request);
      case "/api/cache":
        return handleCachedData(request, env, ctx);
      default:
        return new Response("Not Found", { status: 404 });
    }
  },
};

function handleGeo(request: Request): Response {
  // Cloudflare 自動 付与header
  const country = request.headers.get("cf-ipcountry") || "unknown";
  const city = request.cf?.city || "unknown";

  return Response.json({
    country,
    city,
    message: `こん ち !${city}から アクセス すね。`,
  });
}

async function handleCachedData(
  request: Request,
  env: Env,
  ctx: ExecutionContext
): Promise<Response> {
  const cacheKey = new URL(request.url).pathname;

  // KVstoreからcachepengambilan
  const cached = await env.MY_KV.get(cacheKey);
  if (cached) {
    return Response.json(JSON.parse(cached), {
      headers: { "X-Cache": "HIT" },
    });
  }

  // オリジンからデータpengambilan
  const data = await fetch("https://api.example.com/data").then(
    (r) => r.json()
  );

  // KV cache(TTL: 5分)
  ctx.waitUntil(
    env.MY_KV.put(cacheKey, JSON.stringify(data), {
      expirationTtl: 300,
    })
  );

  return Response.json(data, {
    headers: { "X-Cache": "MISS" },
  });
}

Vercel Edge Functions

// app/api/personalize/route.ts
import { NextRequest } from "next/server";

export const runtime = "edge";

export async function GET(request: NextRequest) {
  const country = request.geo?.country || "JP";
  const region = request.geo?.region || "unknown";

  // 地域 応じたkonten
  const content = await getLocalizedContent(country);

  // エッジcachepengaturan
  return Response.json(
    {
      content,
      servedFrom: region,
      timestamp: Date.now(),
    },
    {
      headers: {
        "Cache-Control": "public, s-maxage=60, stale-while-revalidate=300",
      },
    }
  );
}

async function getLocalizedContent(country: string) {
  const priceMultiplier: Record<string, number> = {
    JP: 1,
    US: 0.0067,
    EU: 0.0061,
  };

  return {
    currency: country === "JP" ? "USD" : country === "US" ? "USD" : "EUR",
    multiplier: priceMultiplier[country] || 1,
  };
}

認証pemrosesan エッジ

// middleware.ts(Vercel Edge Middleware)
import { NextRequest, NextResponse } from "next/server";
import { jwtVerify } from "jose";

const secret = new TextEncoder().encode(process.env.JWT_SECRET!);

export async function middleware(request: NextRequest) {
  // publikasiパス スキップ
  const publicPaths = ["/", "/login", "/api/auth"];
  if (publicPaths.some((p) => request.nextUrl.pathname.startsWith(p))) {
    return NextResponse.next();
  }

  const token = request.cookies.get("token")?.value;
  if (!token) {
    return NextResponse.redirect(new URL("/login", request.url));
  }

  try {
    const { payload } = await jwtVerify(token, secret);

    // requestheader pengguna情報 付与
    const response = NextResponse.next();
    response.headers.set("x-user-id", payload.sub as string);
    response.headers.set("x-user-role", payload.role as string);
    return response;
  } catch {
    return NextResponse.redirect(new URL("/login", request.url));
  }
}

export const config = {
  matcher: ["/dashboard/:path*", "/api/protected/:path*"],
};

A/Btest エッジ

export const runtime = "edge";

export async function middleware(request: NextRequest) {
  // 既存 variant割り当て konfirmasi
  const variant = request.cookies.get("ab-variant")?.value;

  if (!variant) {
    // Randomly assign to new users
    const newVariant = Math.random() < 0.5 ? "A" : "B";
    const response = NextResponse.next();
    response.cookies.set("ab-variant", newVariant, {
      maxAge: 60 * 60 * 24 * 30,
    });

    // variant 応じたhalaman リライト
    if (newVariant === "B") {
      return NextResponse.rewrite(
        new URL("/variants/b" + request.nextUrl.pathname, request.url)
      );
    }
    return response;
  }

  if (variant === "B") {
    return NextResponse.rewrite(
      new URL("/variants/b" + request.nextUrl.pathname, request.url)
    );
  }

  return NextResponse.next();
}

Pemanfaatan dengan Claude Code

エッジfungsi implementasi Claude Code 依頼 例.performaoptimasi SSR vs SSG比較、cache戦略 Rediscache設計 juga bisa dijadikan referensi.

Vercel Edge Functions dengan API implementasikan.
- 地域別 konten出し分け
- エッジ dengan JWTverifikasi
- KVstore dengan cache
- A/Btest middleware

Cloudflare Workers 詳細 Cloudflare Workers公式dokumen silakan lihat.Claude Code 使い方 公式dokumen konfirmasi bisa dilakukan.

Summary

エッジコンピューティング レイテンシ削減 dan スケーラビリティ 両立 実現.Claude Code 使えば、platform固有 APIやbest practices 理解 上 エッジdukunganコード efisien implementasi bisa dilakukan.

#Claude Code #edge computing #Cloudflare Workers #Vercel #performance