Svelte/SvelteKit を使った Web アプリケーションでは、src/routes 以下のサーバーモジュール (+server.ts) で GET や POST 関数をエクスポートするだけで、API ルートとして動作させることができます(Web API のエンドポイントとして動作します)。
import{error,json}from'@sveltejs/kit';// API route のグローバル変数はサーバーが起動している間のみ保持される
letmessages: string[]=[];/** /api/messages への GET リクエストを処理する */exportasyncfunctionGET() {returnjson({messages});}/** /api/messages への POST リクエストを処理する */exportasyncfunctionPOST({request}){constmsg=(awaitrequest.text()).trim();if(!msg){error(400,'Text is required in the request body');}// 最新の 5 つのメッセージを保持
messages=[...messages.slice(-4),msg];returnjson({messages},{status: 201});}
ページコンポーネントからこの API ルートにアクセスするコードは以下のようになります。
テキストボックスに入力したメッセージを送信すると、API ルート側で保持しているメッセージリストが更新され、その内容が画面上に表示されます。
src/routes/+page.svelte
<scriptlang="ts">import{onMount}from'svelte';/** サーバーから取得したメッセージのリスト */letreceivedMessages: string[]=$state([]);/** ユーザーが入力したメッセージ */letuserInput=$state('');asyncfunctionfetchMessages() {constres=awaitfetch('/api/messages');constjsonData=awaitres.json();receivedMessages=jsonData.messages;}asyncfunctionhandleSubmit(e: Event){e.preventDefault();constnewMessage=userInput.trim();userInput='';// 入力欄が空の場合は何もしない
if(newMessage===''){return;}// API エンドポイントに新しいメッセージを POST で送信
constres=awaitfetch('/api/messages',{method:'POST',headers:{'Content-Type':'application/json'},body: newMessage});// 新しいデータで表示を更新
constjsonData=awaitres.json();receivedMessages=jsonData.messages;}// ページが読み込まれたときにメッセージを取得
onMount(fetchMessages);</script><main><form><inputbind:value={userInput}placeholder="メッセージを入力"/><buttontype="submit"onclick={handleSubmit}>送信</button></form><ul>{#eachreceivedMessages.toReversed()asmessage}<li>{message}</li>{/each}</ul></main>
SvelteKit のサーバーを起動して Web ブラウザーでアクセスすると、次のように最大 5 件のメッセージが表示されます。
サーバーが起動している間はこのメッセージリストは保持されており、別のブラウザーからアクセスしても同じメッセージが表示されます。
alias venv-kaggle="source ~/.venv/kaggle/bin/activate"
venv の検索パスを追加
前述のように、プロジェクトの外に venv 環境を作成した場合は、VS Code の Python 拡張が見つけられるように検索パスを追加しておく必要があります。
Ctrl/Cmd + Shift + P ⇨ Preferences: Open User Settings (JSON) で設定ファイルを開いて、次のような行を追加しておきます(参考: Where the extension looks for environment)。
これは VS Code とは直接関係ありませんが、Kaggle 公式の kaggle コマンドをインストールしておくと、コマンドラインからコンペティションのデータセットのダウンロードや、解答の提出ができて便利です。
簡単にセットアップできるので入れておきましょう。
Kaggle CLI のインストール
$ pip install kaggle
kaggle コマンドを実行するには、Kaggle のサイトで API トークンを取得して、~/.kaggle/kaggle.json に保存しておく必要があります。
Kaggle のアカウント設定 を開き、Create New Token ボタンをクリックすると、kaggle.json ファイルをダウンロードできます。
OS によって保存先が異なるので注意してください(kaggle コマンドのエラー表示を見て確認するのでもよいです)。
OS
保存先
Windows
C:\Users\<ユーザー名>\.kaggle\kaggle.json
Linux
~/.config/kaggle/kaggle.json
macOS / その他
~/.kaggle/kaggle.json
kaggle コマンドの使い方
開催中のコンペティションの一覧 (kaggle competitions list)
現在開催中のコンペの情報を調べるには、kaggle competitions list コマンドを使います。
ここで表示された URL 情報は、後述のコマンドでデータセットをダウンロードする際などに必要になります。
$ kaggle c list # 基本的な使い方$ kaggle c list --help # ヘルプ$ kaggle c list --search titanic # 検索 (Titanic)$ kaggle c list --category gettingStarted # カテゴリ (Getting Started)$ kaggle c list --category playground # カテゴリ (Playground)$ kaggle c list --sort-by recentlyCreated # ソート (Recently Created)
$ kaggle c list --sort-by recentlyCreated
ref deadline category reward teamCount userHasEntered
--------------------------------------------------------------------------------- ------------------- --------------- ------------- --------- --------------
https://www.kaggle.com/competitions/playground-series-s5e2 2025-02-28 23:59:00 Playground Swag 1363 False
https://www.kaggle.com/competitions/konwinski-prize 2025-03-12 23:59:00 Featured 1,225,000 Usd 306 False
https://www.kaggle.com/competitions/lux-ai-season-3 2025-03-10 23:59:00 Featured 50,000 Usd 463 False
https://www.kaggle.com/competitions/equity-post-HCT-survival-predictions 2025-03-05 23:59:41 Research 50,000 Usd 2459 False
https://www.kaggle.com/competitions/llms-you-cant-please-them-all 2025-03-04 23:59:00 Featured 50,000 Usd 1317 False
https://www.kaggle.com/competitions/fide-google-efficiency-chess-ai-challenge 2025-02-11 23:59:00 Featured 50,000 Usd 1120 False
https://www.kaggle.com/competitions/wsdm-cup-multilingual-chatbot-arena 2025-03-10 23:59:00 Featured 50,000 Usd 950 False
https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-2 2025-04-01 23:59:00 Featured 2,117,152 Usd 1356 False
https://www.kaggle.com/competitions/llm-classification-finetuning 2030-07-01 23:59:00 Getting Started Knowledge 125 False
https://www.kaggle.com/competitions/jane-street-real-time-market-data-forecasting 2025-07-12 23:59:00 Featured 120,000 Usd 3757 False
https://www.kaggle.com/competitions/spaceship-titanic 2030-01-01 00:00:00 Getting Started Knowledge 1962 False
https://www.kaggle.com/competitions/store-sales-time-series-forecasting 2030-06-30 23:59:00 Getting Started Knowledge 676 False
https://www.kaggle.com/competitions/gan-getting-started 2030-07-01 23:59:00 Getting Started Knowledge 139 False
https://www.kaggle.com/competitions/contradictory-my-dear-watson 2030-07-01 23:59:00 Getting Started Knowledge 32 False
https://www.kaggle.com/competitions/tpu-getting-started 2030-06-03 23:59:00 Getting Started Knowledge 49 False
https://www.kaggle.com/competitions/connectx 2030-01-01 00:00:00 Getting Started Knowledge 176 False
https://www.kaggle.com/competitions/nlp-getting-started 2030-01-01 00:00:00 Getting Started Knowledge 553 False
https://www.kaggle.com/competitions/home-data-for-ml-course 2030-01-01 23:59:00 Getting Started Knowledge 5897 False
https://www.kaggle.com/competitions/house-prices-advanced-regression-techniques 2030-01-01 00:00:00 Getting Started Knowledge 3506 False
https://www.kaggle.com/competitions/titanic 2030-01-01 00:00:00 Getting Started Knowledge 12781 True