SvelteKitで作成したWebアプリを Azure Static Web Apps にデプロイする

# はじめに

[SvelteKit] で作成したアプリケーションを SSR (Server Side Rendering) を維持したまま、[Azure Static Web Apps][Static Web Apps] に簡単にデプロイできるので紹介します。

# ソースコードの準備

以下のサイトを参考に GitHub 上にアプリケーションを作成します。
ただし、`Which Svelte app template?` は `SvelteKit demo app` 選択してください。（そうしないとSSRが実行できていることを確認できないので）

https://qiita.com/fsd-tetsu/items/8017b66d24dddc53b052

# Static Web Apps 用アダプタの導入

[svelte-adapter-azure-swa]を導入して、ビルドを実行すると Static Web Apps 用にビルドしてくれます。

`README.md` に書いてある通りに実施すればOKです。早速やってみましょう。

```bash:ターミナル
npm install -D svelte-adapter-azure-swa
```

```diff_javascript:svelte.config.js
-import adapter from '@sveltejs/adapter-auto';
+import azure from 'svelte-adapter-azure-swa';
import { vitePreprocess } from '@sveltejs/kit/vite';

/** @type {import('@sveltejs/kit').Config} */
const config = {
	// Consult https://kit.svelte.dev/docs/integrations#preprocessors
	// for more information about preprocessors
	preprocess: vitePreprocess(),

	kit: {
-		adapter: adapter()
+		adapter: azure()
	}
};

export default config;
```

# ビルド

以下のコマンドを実行します。
```bash:ターミナル
npm run build
```
すると `build` ディレクトリが作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773745/5df975fa-4783-17eb-a4d3-fc5e37510404.png)
このディレクトリの中身が Static Web Apps に配備可能な形式となっています。

# コミット&プッシュ

ここまで出来たら変更内容をコミット&プッシュしておきましょう。

# Azure Static Web Apps の準備

Azure に Static Web Apps を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773745/6621082b-1a25-5dcf-f62e-97473a61a551.png)

こんな感じで入力します。`GitHub アカウントでサインイン` ボタンからサインインしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773745/95f5664f-1c0e-b6bd-473a-b0f0f76bde58.png)

以下のように GitHub のリポジトリ情報と `ビルドの詳細` を入力してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773745/16e5ebbf-3593-6e14-c6c6-c25b9b08ba99.png)

`確認および作成` ボタンをクリックし、以降、Static Web Apps の作成を完了させてください。

すると、GitHub のリポジトリに `.github/workflows/azure-static-web-apps-[ランダム文字列].yml` というファイルが作成されます。このファイルが [GitHub Actions] 用の設定ファイルになります。

# Static Web Apps にデプロイ

main リポジトリへのプッシュを検知して、自動的にデプロイ用の GitHub Actions が実行されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773745/429ffaad-05eb-c063-7c6a-a41c0e26b5dc.png)


# 動作確認

Static Web Apps のURLにアクセスしてみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773745/dd820f96-00c0-c549-92f6-157aabeed328.png)

こんな画面が表示されるはずです。`SVERDLE` で遊んでみてください、ちゃんと動くはずです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773745/1281627d-b224-b81b-f35f-c34162ba9dcb.png)

# まとめ

SvelteKit で作成した SSR アプリを Static Web Apps に簡単にデプロイできることが分かったと思います。
実は、現段階では Next.js と NuxtJS は静的サイトを生成してデプロイするのが正式な手順となっています。（他にやり方があるかもしれませんが、調べ切れてません...）

- https://learn.microsoft.com/ja-jp/azure/static-web-apps/deploy-nextjs-static-export
- https://learn.microsoft.com/ja-jp/azure/static-web-apps/deploy-nuxtjs

それと比較すると、SvelteKit は静的サイト生成せずに簡単に Static Web Apps にデプロイできます。
そして、GitHub と Static Web Apps の相性も抜群ですね。
記事を書きながらワクワクしてきました！😀

[Static Web Apps]:https://azure.microsoft.com/ja-jp/products/app-service/static/
[SvelteKit]:https://kit.svelte.dev/
[svelte-adapter-azure-swa]:https://github.com/geoffrich/svelte-adapter-azure-swa
[GitHub Actions]:https://github.co.jp/features/actions