【ITニュース解説】モダンフレームワークSvelteKitでのコロケーションができるようになったので紹介する
2025年09月17日に「Zenn」が公開したITニュース「モダンフレームワークSvelteKitでのコロケーションができるようになったので紹介する」について初心者にもわかりやすく解説しています。
ITニュース概要
WebフレームワークSvelteKitに新機能「RemoteFunction」が追加された。これにより、Webページの部品からサーバーの機能を直接呼び出せるようになり、関連するコードを近くにまとめる「コロケーション」が実現。開発効率が向上する。
ITニュース解説
SvelteKitは、ウェブアプリケーションを開発するための人気のあるフレームワークである。このSvelteKitに最近導入された新機能「RemoteFunction」が、開発のあり方を大きく変え、「コロケーション」と呼ばれる開発手法をより手軽に実現できるようになったことが注目されている。
ウェブアプリケーションは、ユーザーが直接目にする部分と、その裏側で動く部分に大きく分けられる。ユーザーインターフェースやウェブページの見た目を担当するのが「フロントエンド」と呼ばれる領域で、ユーザーの操作に応じてデータを処理したり、データベースに保存したりするのが「バックエンド」や「サーバサイド」と呼ばれる領域だ。コロケーションとは、このフロントエンドのコードと、それに関連するバックエンドのコードを物理的に近い場所に配置することを指す。例えば、ウェブページ上の「データを保存する」ボタンの見た目を作るコードと、そのボタンが押されたときに実際にデータをデータベースに保存するサーバサイドの処理コードを、同じファイルや同じディレクトリの中にまとめておくような考え方である。
このコロケーションにはいくつかのメリットがある。まず、特定の機能に関連するコードが探しやすくなるため、全体のコードの見通しが非常に良くなる。例えば、ある機能に修正が必要になった場合、関連するフロントエンドとバックエンドのコードが近くにあるため、修正漏れを防ぎやすくなる。また、開発者が機能単位で集中して作業できるようになり、開発効率の向上にもつながる。デバッグ(プログラムの誤りを見つけて修正する作業)も、関連コードがまとまっている方が格段にしやすくなるだろう。
SvelteKitではこれまで、フロントエンドのコードからサーバサイドの処理を呼び出す場合、「エンドポイント」という仕組みを使うのが一般的だった。エンドポイントとは、サーバサイドの特定の機能にアクセスするための「窓口」のようなもので、例えば /api/save-data のような専用のURLを設定し、フロントエンドからそのURLに向けてデータ(リクエスト)を送り、サーバサイドで処理を実行させていた。この方法は問題なく機能するものの、フロントエンドのコンポーネント(ウェブページを構成する部品)のコードと、サーバサイドのエンドポイントのコードが、それぞれ別のファイルやディレクトリに書かれることが多かった。結果として、一つの機能を実現するために複数のファイルを行き来する必要があり、コードの全体像を把握しづらくなるという課題があった。
そこで登場したのが、2025年8月にSvelteKit v2.27でリリースされた「RemoteFunction」である。RemoteFunctionは、この従来のやり方を大きく改善し、より自然な形でコロケーションを実現可能にした。簡単に言えば、RemoteFunctionを使うことで、フロントエンドのコンポーネントを定義するファイルや、その近くのファイルの中に、サーバサイドで実行したい関数を直接記述できるようになる。そして、フロントエンドのコードから、あたかも通常のJavaScript関数を呼び出すかのように、そのサーバサイドの関数を直接呼び出すことができるようになるのだ。
具体的な仕組みは、SvelteKitのページファイル(例えば +page.svelte)やレイアウトファイル(+layout.svelte)の中に、export const actions = { ... } という形式で関数を定義する。これらの関数は、ファイルとしてはフロントエンドのコードと一緒に存在するが、実際に実行されるのはサーバサイドとなる。フロントエンドのスクリプトからは、@sveltejs/kit/server というSvelteKitの特別なモジュールを使って、これらのサーバサイド関数をインポートし、実行する。これにより、わざわざエンドポイントを別途作成したり、HTTPリクエストを送るための複雑なコードを書いたりする必要がなくなる。開発者は、特定のユーザーインターフェース(UI)の操作が、どのサーバサイド関数を呼び出すのかを、同じファイルの中で明確に把握できるようになる。
RemoteFunctionとして定義された関数は、非同期処理(時間のかかる処理を待たずに次の処理に進める仕組み)にも対応しており、データの保存や取得といった様々なサーバサイド操作に利用できる。また、これらの関数は、認証されたユーザーのみが実行できる run 関数を経由して実行されるため、セキュリティ面も考慮されている。万が一、複数のファイルで同じ名前のRemoteFunctionが定義された場合はエラーとなり、名前の衝突を避けるための仕組みも備わっている。
このRemoteFunctionの導入は、SvelteKitでのコロケーションを非常に強力に推進する。ウェブページの見た目(フロントエンド)と、その見た目から呼び出される裏側の処理(バックエンド)を、機能単位で密接に連携させ、同じファイルやフォルダにまとめることができるようになるからだ。例えば、「商品のカート追加」という機能であれば、カートに追加するボタンの見た目のコード、ボタンが押されたときにサーバサイドでカートに商品を追加する処理のコード、そしてその処理に関連するデータのバリデーション(入力値の検証)やデータベース操作のコードが、すべて一つのまとまった場所で管理されるようになる。
これにより、開発者は特定の機能全体を一つのまとまりとして捉えやすくなり、コードの変更が必要になった際も、関連するすべての要素がすぐに確認できるため、手戻りやバグの発生リスクを低減できる。結果として、ウェブアプリケーションの開発効率と保守性が大幅に向上し、より高品質なアプリケーションを迅速に提供できるようになることが期待される。SvelteKitのRemoteFunctionは、現代のウェブ開発において、より直感的で効率的な開発体験をもたらす重要な進化だと言えるだろう。