
こんにちは。よっしーです(^^)
今日は、SvelteKitのリファレンスについて解説して います。
背景
SvelteKitのリファレンスについて調査する機会がありましたので、その時の内容を備忘として記事に残しました。
Types
Platform
アダプターが event.platform
を通じてプラットフォーム固有のコンテキストを提供する場合、ここで指定できます。
interface Platform {}
解説
このセクションは、Svelteのアダプター機能についての説明です。具体的には:
- Platform(プラットフォーム)とは: アダプターが提供するプラットフォーム固有の情報を指定するための設定項目です。
event.platform
: アダプターが実行環境(プラットフォーム)に関する特定の情報を提供する際に使用される値です。- 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のリファレンスについて解説しました。

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