最終更新日: 2025年9月12日
‘HubSpotのCMS上で初めてのサーバーレス関数を作成し、レスポンスを受け取ります。’;
サーバーレス関数を使用すると、サーバーサイドでHubSpotを介してJavaScriptを実行することができ、JavaScriptがクライアントに公開されるのを防ぐことができます。これは、APIキーやその他の資格情報などのセンシティブ情報を含むAPIリクエストを行う場合に特に重要です。関数が呼び出されると、HubSpotのバックエンドで関数が実行されます。つまり、CMSウェブサイトへのリクエストを行うために、バックエンドサーバーを用意する必要はありません。HubSpotのサーバーレス関数はNodeJSランタイムを使用します。
このガイドでは、サードパーティーのサービスから見積もりを取得し、ウェブサイトページ上に表示する、シンプルなサーバーレス関数を作成する方法について説明します。サーバーレス関数をビルドしてアカウントにデプロイするには、HubSpot開発者プロジェクトを使用します。
サーバーレス関数の概要については、サーバーレス関数の概要をご確認ください。また、HubSpot DevelopersのYouTubeチャンネルでは、CMSプロジェクトでのサーバーレス関数の使用方法について説明しています。
前提条件
このチュートリアルを開始する前に、以下のものが必要です。- Content Hub Enterpriseのアカウント、またはCMS開発者サンドボックスアカウント。
- HubSpot CLI(最新バージョンを推奨)をインストールし、使用しているアカウントで認証する必要があります。どのアカウントが認証されているかを確認するには、
hs accounts list
を実行します。詳しくはローカル開発を開始するをご参照ください。
1. プロジェクトをローカルで作成する
まず、プロジェクトをローカルで作成し、ビルドしてアカウントにデプロイできるようにします。- ターミナルで、
cd
コマンドを使用してプロジェクトを保存するディレクトリーに移動します。
hs project create
を実行して新しいプロジェクトを作成します。
- ターミナルのプロンプトに従ってプロジェクトを作成します。テンプレートには**空のプロジェクトを作成(テンプレートなし)**を選択します。

cd
コマンドを使用して、新しいプロジェクトディレクトリーに移動します。プロジェクトに「my new project」という名前を付けた場合は以下のようになります。
2. プロジェクトにサーバーレス関数を追加する
プロジェクトが作成されたら、VS Codeなどの任意のエディターで開きます。空のsrc
ディレクトリーとhsproject.json
構成ファイルと共に、プロジェクトディレクトリーがHubSpotで自動的に作成されます。プロジェクトにサーバーレス関数を追加するには、src
ディレクトリー内にapp
ディレクトリーを作成し、その中に以下のディレクトリーとファイルを追加します。
app/app.json
:アプリ構成ファイル。app/app.functions
:サーバーレス関数ディレクトリー。.functions
で終わる任意の名前を付けることができます。app/app.functions/function.js
:関数が呼び出されたときに実行されるJavaScriptコード。app/app.functions/serverless.json
:サーバーレス関数の構成ファイル。app/app.functions/package.json
:必要な依存関係が含まれています。

- 以下のサンプルコードをローカルの
app.json
ファイル、function.js
ファイル、serverless.json
ファイル、package.json
ファイルにそれぞれコピーします。各.json
コードブロックの下には、フィールド定義を含むテーブルもあります。
フィールド | 型 | 説明 |
---|---|---|
name | 文字列 | HubSpotのUIに表示されるアプリの名前。 |
description | 文字列 | HubSpotのUIに表示されるアプリの説明。 |
scopes | 配列 | 非公開アプリのアクセストークンを使用してリクエストを認証するためにアプリがアクセスできるスコープ。上記の2つのスコープは、最低限必要なスコープです。このチュートリアルでは、リクエストに非公開アプリアクセストークンを使用する必要がないため、追加のスコープは追加しません。 |
uid | 文字列 | アプリ固有のID。任意の文字列を指定できますが、アプリを識別できる意味のある文字列である必要があります。HubSpotではこのIDでアプリが識別されるため、ログなどの履歴データやステートフルデータを削除することなく、アプリのname をローカルまたはHubSpotで変更できます。 |
public | 文字列 | 非公開アプリの場合はfalse に設定します。 |
- 上記のコードを追加した後、変更を保存します。
3. HubSpotにプロジェクトをアップロードする
変更を保存したら、プロジェクトをHubSpotにアップロードして、アプリとサーバーレス関数をビルドしてデプロイできます。- ターミナルで
hs project upload
を実行します。
- アカウントにプロジェクトを作成することを確認します。初回作成後に再度確認する必要はありません。ターミナルには、ビルドとデプロイのステップの進行状況が表示されます。
- アップロードが完了したら、
hs project open
を実行してプロジェクトをHubSpotで表示します。
4. 関数のテストを行う
サーバーレス関数がデプロイされたら、公開URLをクリックして呼び出すことができます。開発者プロジェクトを使用して作成されたサーバーレス関数の公開URL構造は、https://<domain>/hs/serverless/<endpoint-path-from-config>
のようになります。
<domain>
:アカウントに接続されている任意のドメインを使用できます。例えば、website.comとsubdomain.brand.comがアカウントに接続されている場合は、https://website.com/hs/serverless/<path>
またはhttps://subdomain.brand.com/hs/serverless/<path>
を使用して関数を呼び出すことができます。<endpoint-path-from-config>
:serverless.json
のpath
フィールドの値。
https://<domain>/hs/serverless/fetch-quote
になります。
関数の出力を表示するには、ブラウザーで該当URLに移動し、ドメインをHubSpotがホスティングするドメインのいずれかに置き換えます。カスタムドメインを接続していない場合は、HubSpotが提供するデフォルトのドメインである<hubId>.hs-sites.com
(例:123456.hs-sites.com
)を使用できます。ブラウザーには、Zen Quotes APIによって返されたデータが表示されます。

5. ウェブサイトページから関数を呼び出す
サーバーレス関数を作成し、この関数でデータが返されることを確認したら、この関数をページに実装して、返されるデータを現実に即したコンテキストで確認しましょう。このチュートリアルでは、関数を実行して応答データを表示するためのカスタムJavaScriptとHTMLを含むページテンプレートを作成します。 まず、新規ページテンプレートを作成します。-
ローカル環境で、ページテンプレートを格納する新しいディレクトリーを作成します。このチュートリアルでは、
hs project create
によって作成されたプロジェクトディレクトリーの外にこのディレクトリーを作成します。 -
ターミナルで、
cd
コマンドを使用してそのディレクトリーに移動します。
hs create template "serverless-template"
を実行して、serverless-template
という名前の新しいテンプレートを作成します。
- テンプレートタイプとしてページを選択します。
- 新しく作成したページテンプレートのファイルをエディターで開き、ボイラープレートコードを以下のコードに置き換えます。関数エンドポイントURL(
fetch('http://<domain>/hs/serverless/fetch-quote')
)の<domain>
は、HubSpotアカウントに接続されているドメインに置き換えてください。
- ファイルを保存し、
hs upload
を実行してHubSpotにアップロードします。ターミナルのプロンプトに従って、ローカルのソースとアップロード先のパスを選択します。このチュートリアルでは、各プロンプトでEnterキーを押してデフォルトのパスを使用します。
hs open website-pages
を実行して、HubSpotアカウントのウェブサイトページのダッシュボードに移動します。
- ブラウザーで、右上の[作成]をクリックして新しいページを作成します。
- ダイアログボックスで、使用するドメインを選択し、次にページ名を割り当てます。クロスオリジン(CORS)エラーを回避するには、ページのドメインがサーバーレス関数の呼び出しに使用しているドメインに一致する必要があります。ドロップダウンメニューからそのドメインを選択するか、ページテンプレートのコード(
fetch('http://<domain>/hs/serverless/fetch-quote')
)でエンドポイントURLを更新して、このステップで選択したドメインを使用することができます。 - [ページを作成]をクリックします。
- テンプレート選択画面で、新しいテンプレートを検索します。ラベルまたはファイル名を使用してテンプレートを検索できます(例:「サーバーレス関数サンプルページ」)。テンプレートはテーマの一部ではないため、[他のテンプレート]に表示されます。
![新しく作成されたページテンプレートを表示する[他のテンプレート]セクション](https://www.hubspot.jp/hubfs/Knowledge_Base_2023-24-25/select-new-template.png)
- [テンプレートを選択]をクリックします。
- ページエディターで、右上の[プレビュー]をクリックします。

- [新しいタブで開く]をクリックします。

次のステップ
サードパーティーAPIとやりとりするサーバーレス関数の作成と実装が完了しました。次は、以下に挙げる方法でサーバーレス関数の使用を継続的に積み上げていきます。- HubSpot APIまたはその他のサードパーティー認証APIを呼び出すためのリクエストに認証を含める。
- ボタンとJavaScriptコードをページテンプレートにハードコーディングするのではなく、モジュールに実装する。これにより、移植性の高いオプションが提供され、モジュールが追加されている任意のページから関数を呼び出すことができます。このためには、モジュールを作成し、HTMLをモジュールの
module.html
ファイルに追加してJavaScriptをmodule.js
ファイルに追加します。