Skip to main content
開発者向けドキュメントを表示しています
このドキュメントは、Base44 開発者プラットフォームで作業する開発者向けです。アプリエディタ内のバックエンド関数については、Using Integrationsを参照してください。
バックエンド関数を使用すると、安全で隔離された環境でカスタムバックエンドコードを実行できます。ブラウザで実行すべきでないビジネスロジックの実装、保護された認証情報でのサードパーティ API への接続、webhook の処理、カスタムエンドポイントでのアプリの拡張に関数を使用してください。 バックエンド関数はモダンな TypeScript ランタイムである Deno 上で実行されます。フロントエンドから SDK を使用して関数を呼び出すと、認証が自動的に処理されます。各関数には、webhook と外部インテグレーション用の独自の HTTP エンドポイントも提供されます。 関数は自動化を使用して自動的に実行することもできます。特定の時刻に実行されるように関数をスケジュールしたり、レコードの作成、更新、削除などのデータベースイベントに応じてトリガーしたりできます。
次の点に注意してください:
  • 関数を 1 つずつデプロイする場合、50 個の上限はありません。プロジェクト内のすべての関数を置き換える単一のリクエストは、引き続き 50 個が上限です。
  • バックエンド関数の最大実行時間は 5 分で、関数が直接呼び出されても、オートメーションによってトリガーされても、ワークフローステップとして呼び出されても、同じように適用されます。この制限を超えたリクエストは終了されます。

関数の作成

プロジェクトの functions ディレクトリに TypeScript ファイルとしてバックエンド関数を作成します。デフォルトでは functions ディレクトリは base44/functions/ ですが、プロジェクト構成でパスをカスタマイズできます。 各関数は、entry.ts または entry.js ファイルを持つ独自のサブディレクトリ内にあります:
functions
<function-name>
entry.ts
CLI は、関数ルートに対する相対ディレクトリパスを関数名として使用します。例えば、functions/sendWelcomeEmail/entry.ts は sendWelcomeEmail という名前の関数を作成します。整理のためにサブディレクトリに関数をネストすることもできます。functions/email/send/entry.ts は email/send という名前の関数を作成します。

構成ファイルの追加

カスタム関数名や自動化などの高度なニーズには、function.jsonc ファイルを追加します:
functions
<function-name>
entry.ts
function.jsonc
構成ファイルは、関数の名前とエントリーポイントを定義します:

entry.ts

コードファイルには関数のロジックが含まれます。関数は受信リクエストを処理し、Response オブジェクトを返します。ハンドラーはデフォルトエクスポートとしてエクスポートします:

関数ごとに複数のファイルを使う

関数は 1 つの entry.ts に限定されません。関数のディレクトリ内でロジックを複数のファイルに分割し、相対パスでインポートできます。関数ディレクトリ内のすべての .js、.ts、.json、.jsonc ファイルが関数と一緒にデプロイされます。
functions
process-order
entry.ts
validate.ts
types.ts
相対インポートはデプロイ時に解決されます。関数と一緒にデプロイされないファイル (別の関数のディレクトリ内のファイルなど) を指すインポートは、デプロイ時に失敗します。

関数間でコードを共有する

複数の関数でコードを再利用するには、base44/ フォルダー内の shared ディレクトリに配置します。 関数をデプロイすると、CLI は shared ディレクトリも一緒にアップロードします。サーバーは、その関数がインポートする共有ファイルのみをバンドルします。各関数は、使用する共有コードの独自のコピーと一緒にデプロイされます。つまり、次のようになります:
  • どの関数も相対パスで shared からインポートできます。
  • 関数ごとに、同じ共有ファイルの異なるバージョンが実行される場合があります。共有ファイルを変更して 1 つの関数だけをデプロイすると、その関数のコピーのみが更新されます。他の関数は再デプロイするまで古いバージョンのままです。共有ファイルの変更をすべてに適用するには、引数なしで base44 functions deploy を実行し、すべての関数を一度に再デプロイします。
base44
shared
response.ts
functions
greet
entry.ts
farewell
entry.ts
相対インポートは base44/shared/ には到達できますが、base44/ の外には出られません。base44/ の外にあるコードを使うには、base44/shared/ に移動するか、npm: または jsr: 指定子でインポートしてください。

ローカルでテスト

base44 dev を使用して関数をローカルで実行し、デプロイせずに変更をテストします。詳細はローカル開発を参照してください。

関数のデプロイ

すべてのプロジェクトリソースを一度にプッシュするには、functions deploy または deploy で関数をデプロイします。functions deploy <names...> で名前で特定の関数をデプロイしたり、--force を使用してローカルに見つからないリモート関数を削除したりできます。 デプロイされた関数をローカルプロジェクトにダウンロードするには、functions pull を使用してください。現在デプロイされているものを確認するには、functions list を使用してください。

関数の呼び出し

SDK を使用してフロントエンドからバックエンド関数を呼び出すか、webhook と外部インテグレーション用に HTTP 経由で呼び出します。

SDK 経由

フロントエンドから関数を呼び出すには base44.functions.invoke() を使用してください。SDK は認証を自動的に処理し、現在のユーザーの認証情報を関数に渡します。

HTTP 経由

デプロイされた各関数には、以下に HTTP エンドポイントが提供されます:
これは以下に便利です:
  • Webhook: Stripe や GitHub などの外部サービスからのコールバックを受信。
  • 外部インテグレーション: 他のシステムがアプリと対話できるようにします。
  • テスト: cURL や Postman などのツールで関数を直接呼び出し。
使用例
直接 HTTP (cURL や webhook など) で関数を呼び出す場合、認証済みのユーザーコンテキストはありません。これらの場合、すべての操作に asServiceRole を使用してください。

関数内で SDK を使用する

バックエンド関数内では、Base44 SDK を介してアプリのデータ、認証、インテグレーションにアクセスできます。受信リクエストからクライアントを作成するには createClientFromRequest() を使用してください。 認証コンテキストは関数の呼び出し方法によって異なります:
  • フロントエンドから SDK 経由で呼び出されたとき: ユーザーの認証が自動的に渡されます。base44.auth.me() で現在のユーザーにアクセスし、その権限で操作を実行できます。エンティティのアクセスルールを適用せずにデータを読み書きするには、asServiceRole を使用してください。
  • 直接 HTTP (cURL、webhook、外部サービス) 経由で呼び出されたとき: 認証済みユーザーはないため、すべての操作に asServiceRole を使用してください。

Runtime API

Base44 は、関数向けのプラットフォームユーティリティを備えた組み込みの base44:runtime モジュールを提供しています。インストール不要で、直接インポートできます:
このモジュールは 2 つのユーティリティをエクスポートします:
  • waitUntil(): レスポンスを返した後も関数を維持し、バックグラウンド処理を完了させます。
  • secrets: secrets.get() で実行時にアプリのシークレットを読み取ります。

レスポンス後にバックグラウンド処理を実行する

waitUntil() を使うと、レスポンスを返した後もバックグラウンド処理のために関数を維持できます。Promise を渡すと、その Promise が完了するまで関数は実行を続けます。これにより、すばやく応答し、ログ記録、通知、外部への webhook などの処理を後で完了できます。
waitUntil() は渡したものと同じ Promise を返します。そのため、同じハンドラー内で後から組み合わせたり await したりできます。
バックグラウンド処理はベストエフォートです。完了や再試行は保証されません。失われてはならない重要な操作には使用しないでください。

シークレットを読み取る

secrets.get() を使うと、実行時にアプリの環境変数を読み取れます。値は文字列として返されます。シークレットが設定されていない場合は undefined を返します:
secrets.get() はモジュールのトップレベルではなく、ハンドラー内で呼び出してください。シークレットはリクエストごとに解決されます。リクエスト実行前のモジュール読み込み時に読み取ると undefined が返されます。 CLI からシークレットを設定するには secrets set を使用してください。

サードパーティ API に接続

バックエンド関数は、サードパーティ API に接続するいくつかの方法の 1 つです。リクエストを完全に制御する必要がある場合、または API キーを環境変数として安全に保存したい場合に最適です。CLI から環境変数を設定するには secrets set を使用してください。

ログの表示

ローカル開発中、関数の出力は logs コマンドを必要とせずに直接ターミナルに出力されます。 デプロイされた関数については、logs コマンドでログを表示してください。ログにはコンソール出力、エラー、タイミング情報が含まれます。関数名または時間範囲でフィルタリングできます。AI コーディングエージェントを使用している場合、base44-troubleshooter skill がこれらのログを自動的に取得して分析できます。

TypeScript 型

関数構成から TypeScript 型を生成して、SDK コード内の関数名に対する型安全性とオートコンプリートを取得します。ダイナミック型について詳しく学んでください。

関連項目

  • Automations: 関数をスケジュールするか、データベースイベントでトリガー
  • functions module: 関数を呼び出すための SDK リファレンス
  • createClientFromRequest: バックエンド関数でクライアントを作成
  • functions deploy: ローカル関数を Base44 にデプロイ
  • functions pull: デプロイされた関数をローカルプロジェクトにダウンロード
  • functions list: すべてのデプロイされた関数をリスト
  • functions delete: デプロイされた関数を削除
  • logs: 関数ログを表示
  • exec: スタンドアロンスクリプトから分離して関数をテスト
このページは AI によって翻訳されました。最も正確で最新の情報については、英語版 を参照してください。