次の点に注意してください:
- 関数を 1 つずつデプロイする場合、50 個の上限はありません。プロジェクト内のすべての関数を置き換える単一のリクエストは、引き続き 50 個が上限です。
- バックエンド関数の最大実行時間は 5 分で、関数が直接呼び出されても、オートメーションによってトリガーされても、ワークフローステップとして呼び出されても、同じように適用されます。この制限を超えたリクエストは終了されます。
関数の作成
プロジェクトの functions ディレクトリに TypeScript ファイルとしてバックエンド関数を作成します。デフォルトでは functions ディレクトリはbase44/functions/ ですが、プロジェクト構成でパスをカスタマイズできます。
各関数は、entry.ts または entry.js ファイルを持つ独自のサブディレクトリ内にあります:
functions
<function-name>
entry.ts
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 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 モジュールを提供しています。インストール不要で、直接インポートできます:
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: 関数をスケジュールするか、データベースイベントでトリガー
functionsmodule: 関数を呼び出すための SDK リファレンスcreateClientFromRequest: バックエンド関数でクライアントを作成functions deploy: ローカル関数を Base44 にデプロイfunctions pull: デプロイされた関数をローカルプロジェクトにダウンロードfunctions list: すべてのデプロイされた関数をリストfunctions delete: デプロイされた関数を削除logs: 関数ログを表示exec: スタンドアロンスクリプトから分離して関数をテスト
このページは AI によって翻訳されました。最も正確で最新の情報については、英語版 を参照してください。