Svelte入門:リファレンス Types -Vol.10-

スポンサーリンク
Svelte入門:リファレンス Types -Vol.10- 用語解説
Svelte入門:リファレンス Types -Vol.10-
この記事は約5分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、SvelteKitのリファレンスについて解説して います。

スポンサーリンク

背景

SvelteKitのリファレンスについて調査する機会がありましたので、その時の内容を備忘として記事に残しました。

Types

Platform

アダプターが event.platform を通じてプラットフォーム固有のコンテキストを提供する場合、ここで指定できます。

interface Platform {}

解説

このセクションは、Svelteのアダプター機能についての説明です。具体的には:

  1. Platform(プラットフォーム)とは: アダプターが提供するプラットフォーム固有の情報を指定するための設定項目です。
  2. event.platform: アダプターが実行環境(プラットフォーム)に関する特定の情報を提供する際に使用される値です。
  3. Interface定義: コード例として示されている interface Platform {} は、TypeScriptのインターフェース定義で、現時点では具体的なプロパティが定義されていない空のインターフェースが示されています。これは拡張可能であることを意味しています。

実際の使用例としては、SvelteKitのアダプターがAWS Lambda、Vercel、Netlifyなどの異なるホスティングプラットフォームで動作する際に、それぞれのプラットフォーム固有の情報やAPIにアクセスするための仕組みを提供するのに使われます。この Platform インターフェースを通じて、開発者はホスティング環境固有の機能にアクセスできるようになります。

例1: AWS Lambdaプラットフォーム情報へのアクセス

AWS Lambdaでホストされているアプリケーションで、Lambdaのコンテキスト情報にアクセスしたい場合:

// src/hooks.server.ts
import type { Handle } from '@sveltejs/kit';

export const handle: Handle = async ({ event, resolve }) => {
  // Lambda固有のコンテキスト情報にアクセス
  if (event.platform?.aws) {
    // AWS Lambdaコンテキスト情報を使用
    console.log('AWS Lambda 関数名:', event.platform.aws.functionName);
    console.log('Lambda残り実行時間:', event.platform.aws.getRemainingTimeInMillis());
  }

  return resolve(event);
};

例2: Vercelプラットフォーム固有の情報へのアクセス

Vercelでデプロイされたアプリケーションで、Vercel固有の環境変数や情報にアクセスする場合:

// src/routes/api/status/+server.ts
import { json } from '@sveltejs/kit';
import type { RequestHandler } from './$types';

export const GET: RequestHandler = async ({ platform }) => {
  // Vercel固有の情報を取得
  const deploymentInfo = platform?.vercel ? {
    deploymentId: platform.vercel.deploymentId,
    region: platform.vercel.region,
    environment: platform.vercel.environment // 'production', 'preview', 'development'など
  } : null;

  return json({
    status: 'ok',
    deployment: deploymentInfo
  });
};

例3: Cloudflare Workersプラットフォーム機能へのアクセス

Cloudflare Workersでホストされたアプリケーションで、Cloudflare固有のAPIにアクセスする場合:

// src/routes/api/geo/+server.ts
import { json } from '@sveltejs/kit';
import type { RequestHandler } from './$types';

export const GET: RequestHandler = async ({ platform, request }) => {
  // Cloudflare固有のAPIにアクセス
  if (platform?.env) {
    // KVストレージへのアクセス例
    const value = await platform.env.MY_KV_NAMESPACE.get('some-key');
    
    // リクエスト元の地理情報取得例
    const country = request.cf?.country || 'unknown';
    
    return json({
      country,
      storedValue: value
    });
  }
  
  return json({ error: 'Cloudflare固有の情報は利用できません' });
};

これらの例で示したように、Platformインターフェースはホスティング環境固有の機能やAPIにアクセスするための共通の仕組みを提供します。各アダプター(AWS、Vercel、Cloudflareなど)は、それぞれの環境に合わせた情報をevent.platformオブジェクトとして提供し、開発者はそれを活用してプラットフォーム固有の機能を利用できるようになります。

おわりに 

今日は、 SvelteKitのリファレンスについて解説しました。

よっしー
よっしー

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました