Javascript

Deno Deploy GAリリースとサーバーレスデプロイ完全ガイド

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

Deno Deploy の概要と最新情報

Deno Deploy は、JavaScript/TypeScript アプリをエッジ上でサーバーレス実行できる公式クラウドサービスです。2024 年 3 月時点では GA(General Availability)版はまだ公開されていません が、ベータ版が Deno 2.0 を基盤に提供されています。ベータ版では V8 エンジンが 12 系に近いバージョンへ更新され、Fresh の公式サポートが追加されたことがリリースノートで確認できます(※Next.js・Astro は「実験的」または「カスタムアダプタ経由」の対応です)。本稿では、現在利用可能な機能を前提に安全かつスムーズにデプロイする手順を解説します。


前提環境の準備とプロジェクト構成

この章ではローカル開発環境の整備からリポジトリ構造まで、実装を始めるために最低限必要な項目を順に説明します。
**ポイントは「公式 CLI のインストール」「GitHub アカウントで無料枠を確保」そして「デプロイ設定ファイルを正しく配置する」ことです。

Deno CLI のインストール

公式サイトが提供しているシェルスクリプト/PowerShell を使うと、OS に依存せず最新の Deno 2.x が取得できます。インストール後はバージョン確認で deno 2. 系が表示されることを必ずチェックしてください。

注意:ベータ版でも deno --version は「v2.x」 と表示されますが、正式 GA がリリースされた際はバージョン番号が変わる可能性があります。

GitHub アカウントと無料プランの概要

Deno Deploy へのサインアップは GitHub アカウント経由のみです。無料プランで利用できる主なクオータは以下の通りです(2024 年 3 月時点)。

項目 上限
月間リクエスト数 1,000,000 回
エッジロケーション 世界 20 カ所 (自動負荷分散)
永続ストレージ 5 GB
KV ストア 5 GB 相当

ディレクトリ構成と設定ファイル

以下は最小構成の例です。TypeScript を使う場合でも同じ形で問題ありません。

import_map.json

deno.jsonc

ポイント-A(全権限)はローカルデバッグ用です。実際に Deno Deploy にデプロイする際は、ランタイムが自動で必要最小限の権限だけを付与します。


デプロイ手順:GitHub 連携・CI/CD・CLI

この章では「コードをプッシュしたら自動で Edge に届く」フローと、手動デプロイ用 CLI の両方を網羅的に紹介します。
結論としては、継続的デリバリーが必要な場合は GitHub Actions 経由、単発テストやローカルスクリプトからの呼び出しには CLI が便利です。

GitHub リポジトリ作成と Deno Deploy への接続

  1. GitHub 上で新規リポジトリを作成し、先ほどの my-deno-app ディレクトリをプッシュ。
  2. Deno Deploy のダッシュボードで 「New Project」 → 「GitHub」 を選択。
  3. 連携したいリポジトリとデプロイ対象ブランチ(通常は main)を指定すると、プッシュごとに自動ビルド・デプロイが有効化されます。

補足:GitHub 連携時に生成された Deploy Token は後述のシークレット管理で GitHub Secrets に保存しておく必要があります。

GitHub Actions を利用した自動デプロイ設定例

現在(2024 年 3 月)公式ドキュメントが推奨するコマンドは deployctl です。deno deploy --project が存在しない環境もあるため、以下のように deployctl を使用します。

項目 説明
deployctl Deno Deploy 用公式 CLI。deno install -A でグローバルにインストールします。
--project ダッシュボードで作成したプロジェクト名(必須)。
--prod 本番環境としてデプロイするフラグ。ステージングは省略可能です。

注意DEPLOY_TOKEN はダッシュボードの「Settings → Tokens」から取得し、GitHub の Secrets に登録してください。

CLI (deployctl) での直接デプロイ手順

ローカル環境で動作確認が済んだら、次のコマンドで即座に本番へ反映できます。deno deploy が利用できない場合は deployctl を代替してください。

オプション 意味
--project ダッシュボードに登録したプロジェクト名。
--token 認証トークン(環境変数で管理)。
--prod 本番モードでのデプロイを指示。

結論:GitHub Actions が最も自動化に優れますが、CLI はローカルスクリプトや緊急リリース時に有用です。


環境変数・シークレット管理とデプロイ後の確認

本節では、本番環境で機密情報を安全に扱う方法と、デプロイ完了後に実際に動作しているかどうかを確認する手順を解説します。
**ポイントは「ダッシュボード UI だけで暗号化保存」し、「コード側では Deno.env.get のみを呼び出す」ことです。

ダッシュボードからシークレットを登録

  1. プロジェクトの左メニュー → Settings → Secrets を開く。
  2. Add Secret ボタンでキー名(例:API_KEY)と値を入力し、保存する。
  3. 保存されたシークレットは自動的に環境変数としてランタイムに注入されます。

補足:GitHub Actions でも同様の名前で secrets.API_KEY を参照すれば、ビルド時に露出しません。

コード側での取得例

--allow-env フラグは不要です。Deno Deploy のランタイムはシークレットに対して自動的に読み取り権限を付与します。

ロギング・ヘルスチェックの実装

  • ロギングconsole.log / console.error は即座にダッシュボードの「Logs」ビューへ送られます。
  • ヘルスチェックエンドポイント:軽量な /healthz を用意すると、外部モニタリングツールや自動ウォームアップに便利です。


フレームワーク別実装例と Classic vs GA の比較

この章では、現在 Deno Deploy が「公式に」サポートしている Fresh と、実験的・カスタムアダプタで利用できる Astro、および Next.js (Edge Runtime) の 3 パターンを具体例とともに紹介します。
さらに、旧環境(Deploy Classic)との主な違いを表形式でまとめます。

Fresh の最小構成

Fresh は Deno Deploy がネイティブサポートしている唯一のフレームワークです。以下は「Hello, World」だけを返す最小プロジェクトです。

routes/index.ts

deno.jsonc$fresh/ の import map を追加すれば、GA(ベータ)環境でもそのままデプロイできます。

Astro のビルド → 静的配信設定

Astro は「静的サイト」出力が前提です。Deno Deploy では public/ ディレクトリ以下のファイルを自動で配信します。そのため、ビルド後に生成物(dist/)を public/ にコピーするステップが必要です。

  1. プロジェクト作成
    bash
    npm create astro@latest my-astro-app
    cd my-astro-app

  2. 静的出力ビルド
    bash
    npm run build -- --output static # デフォルトで dist/ が生成される

  3. Deno 用タスク追加deno.jsonc

  1. デプロイ
    bash
    deployctl deploy --project my-astro-app --token $DEPLOY_TOKEN --prod

ポイントpublic/ 配下に配置された HTML、CSS、画像はエッジで自動的にキャッシュされ、高速配信が実現します。

Next.js (Edge Runtime) の簡易セットアップ

Next.js は公式には「ネイティブサポート」対象外ですが、@vercel/edge-runtime を利用すれば Edge で動作させられます。以下は最小構成です。

pages/index.tsx

next.config.mjs

deno.jsonctasks.build を追加し、npm run build && deno run -A https://deno.land/std@0.225.0/fs/copy.ts .next ./public とすれば、ビルド成果物が public/ 配下にコピーされ Deno Deploy で配信できます。

注意:この手法は「実験的」扱いです。公式のサポートが出るまで本番利用は自己責任で行ってください。

Classic vs GA(ベータ)比較表

項目 Deploy Classic (2023‑12) Deno 2.0 ベータ(GA 未リリース)
使用 V8 バージョン 9.4 系 12.0 系(V8 12.x に近い)
コールドスタート 約200‑300 ms 約80‑120 ms(最適化済み)
フレームワークサポート Fresh のみ(公式) Fresh + Astro (実験的) + Next.js (Edge Runtime)
KV ストア 実験的機能のみ 安定版 Deno KV が利用可能
デプロイ方式 手動アップロード、GitHub 連携なし GitHub Actions・CLI(deployctl)で自動化

結論:ベータ版は V8 の高速化と複数フレームワークの実験的サポートが最大の利点です。GA が正式にリリースされるまでは、機能の安定性を考慮して「Fresh」中心の構成で開発することを推奨します。


トラブルシューティング Q&A

以下は実際の運用で頻出するエラーとその対処法です。各項目は 原因 → 解決策 の形で記載しています。

質問 現象 原因・解決策
権限エラー (PermissionDenied) が出る Deno.env.getundefined、またはファイル読み込みが失敗 環境変数は UI の Secrets に登録し、コード側では Deno.env.get のみ使用。ローカルで -A フラグを付けても、本番デプロイ時には自動で必要権限だけが付与されます。
ビルド後に 404 エラーになる 静的ファイルが Edge に届かない Astro・Next.js の場合は必ず dist/(または .next/) を public/ 配下へコピーしたことを確認してください。deployctl deploy 前にローカルで ls public/ が期待通りのファイル構造になっているか検証します。
Cold start が想定以上に遅い 初回リクエストで 500 ms 超える deployctl warmup --project <name> コマンド(ベータ)で事前ウォームアップするか、/healthz エンドポイントを Cloudflare Workers のスケジューラから定期的に叩くことでキャッシュ保持が可能です。
V8 バージョン不一致エラー ローカルでは動作するが Deploy でモジュールロード失敗 deno.jsonc"compat" フィールドは削除し、最新 API(例:fetch のストリーミング)に合わせてコードを書き直す。ベータ版のランタイムは V8 12 系なので、古いシンタックスは利用できません。
Deploy Token が無効 deployctl deploy が認証エラーで失敗 ダッシュボードの「Settings → Tokens」から新しいトークンを作成し、GitHub Secrets の DENO_DEPLOY_TOKEN を更新してください。古いトークンは自動で無効化されます。

まとめ

  1. 現在提供中のベータ版 は Deno 2.0 ベースで V8 12 系を搭載し、Fresh が公式サポート対象です。Astro と Next.js は実験的・カスタムアダプタ方式で利用可能です。
  2. 環境構築 は公式 CLI のインストール → GitHub アカウント作成 → deno.jsoncimport_map.json を正しく配置するだけで完了します。
  3. デプロイ方法 は「GitHub Actions + deployctl が最も自動化に優れる」一方、CLI (deployctl deploy) は単発テストや緊急リリースに便利です。
  4. シークレット管理 はダッシュボード UI で暗号化保存し、コード側は Deno.env.get のみで取得します。-A フラグはローカルデバッグ専用です。
  5. フレームワーク別実装例 を参考に、Fresh はそのまま、Astro はビルド後に public/ へコピー、Next.js は Edge Runtime 用設定を行うことで Deno Deploy に適応できます。
  6. Classic とベータの比較 では V8 の高速化・KV の安定提供が主な利点です。GA が正式リリースされた際は、公式ドキュメントでサポート状況とバージョン情報を再確認してください。

本ガイドに沿って環境構築からデプロイ、運用までを実施すれば、最新の Deno Deploy エッジプラットフォーム上で安全かつ高速なサーバーレスアプリケーションが提供できます。まずは無料アカウントを作成し、**Fresh の「Hello World」から試してみることをおすすめします。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Javascript