--- title: "ジョブファンクション" url: https://docs.catalyst.zoho.com/ja/serverless/help/functions/job-functions/ description: "Catalyst Functionsは、アプリケーションの高度なビジネスロジックを含む、クラウドベースのカスタムビルドされたサーバーレスコーディング構造です" last_updated: 2026-08-17T12:16:04Z service: Serverless type: general related_links: - name: "Job Pool Documentation" url: /ja/job-scheduling/help/jobpool/introduction/ - name: "Create Job Pool" url: /ja/job-scheduling/help/implementation/create-jobpool/ - name: "Submit Job to Function Job Pool" url: /ja/job-scheduling/help/implementation/submit-instant-job/ - name: "Avoid Dispatch Delays When Executing Jobs" url: /ja/job-scheduling/help/jobpool/key-concepts/#ideal-memory-allocation-to-avoid-dispatch-delay - name: "Java SDK" url: /ja/sdk/java/v1/job-scheduling/overview/ - name: "Node.js SDK" url: /ja/sdk/nodejs/v2/job-scheduling/overview/ - name: "Python SDK" url: /ja/sdk/python/v1/job-scheduling/overview/ - name: "Job Scheduling REST APIs" url: /ja/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools --- # Job Functions ### はじめに Job Functionsは、[Function Job Pool](https://docs.catalyst.zoho.com/ja/job-scheduling/help/implementation/submit-instant-job/)で[ジョブ](https://docs.catalyst.zoho.com/ja/job-scheduling/help/job/introduction/)が実行される際に呼び出すことができるFunctionタイプです。このFunctionにカスタムビジネスロジックをコーディングし、[ジョブプール](https://docs.catalyst.zoho.com/ja/job-scheduling/help/jobpool/introduction/)でFunctionをトリガーするジョブがスケジュールされた時間に実行されます。 Job Functionは、[Event Functions](https://docs.catalyst.zoho.com/ja/serverless/help/functions/event-functions/)と同様に非HTTPS Functionです。このFunctionにはエンドポイントがなく、Function Job Poolでこの特定のJob Functionをターゲットタイプとしてジョブが実行された場合にのみ呼び出されます。 Job Functionは以下のランタイムでコーディングできます: * [Java](https://docs.catalyst.zoho.com/ja/sdk/java/v1/job-scheduling/overview/) - `v7`、`v11`、`v17` * [Node.js](https://docs.catalyst.zoho.com/ja/sdk/nodejs/v2/job-scheduling/overview/) - `v18` * [Python](https://docs.catalyst.zoho.com/ja/sdk/python/v1/job-scheduling/overview/) - `v3.9` 他の*Serverless Functions*と同様に、CLIからJob Functionsを作成、初期化、デプロイできます。また、Job FunctionをZIPファイルとしてコンソールにアップロードすることもできます。 ただし、Job Functionsは非HTTPS Functionであるため、そのURLは[Basic I/O](https://docs.catalyst.zoho.com/ja/serverless/help/functions/basic-io/)や[Advanced I/O Functions](https://docs.catalyst.zoho.com/ja/serverless/help/functions/advanced-io/)のようにアクセスできません。Job Functionをテストするには、以下のCLIコマンドを使用し、[Functionシェル](https://docs.catalyst.zoho.com/ja/cli/v1/working-with-functions/functions-shell/)を使用してください。 ```sh catalyst functions:shell ``` Job Functionは、Function実行の**成功**または**失敗**の判定以外のレスポンスを返しません。 また、以下の[Catalyst DevOps](https://docs.catalyst.zoho.com/ja/devops/)コンポーネントを使用して、Job Functionのパフォーマンスを表示・監視できます: * [Logs](https://docs.catalyst.zoho.com/ja/devops/help/logs/introduction/): Job Functionsに関するすべての実行を表示、管理、監視できます。 * [Application Performance Monitoring](https://docs.catalyst.zoho.com/ja/devops/help/apm/introduction/): このコンポーネントを使用して、Job Functionのパフォーマンスに関する詳細なインサイトを収集できます。 > **注意:** *Job Function*をディスパッチ遅延なく正常に実行するには、**Job Functionの割り当てメモリ**が**ジョブプールの割り当てメモリ**よりも**少ない**ことを常に確認してください。ディスパッチ遅延の防止の詳細については、[こちらのヘルプセクション](https://docs.catalyst.zoho.com/ja/job-scheduling/help/jobpool/key-concepts/#ideal-memory-allocation-to-avoid-dispatch-delay)を参照してください。 ### メリット * Job FunctionはCatalystの堅牢なCLIを使用して作成、初期化、デプロイできます。これにより、[CLIを通じてFunctionを初期化](https://docs.catalyst.zoho.com/ja/cli/v1/initialize-resources/initialize-functions/)する際に、Functionのデプロイに必要なすべての依存関係が自動的にインストールされます。 * Job FunctionsはCatalystのServerlessコンソールの[エディタ](https://docs.catalyst.zoho.com/ja/serverless/help/functions/implementation/#create-a-function)でも作成できます。 * Job Functionsには、あらゆるカスタムビジネスロジックをコーディングできる理想的なボイラープレートコードが含まれており、残りのバックエンド要件はCatalystによって処理されます。 ### Functionボイラープレートコード コンソールで作成するか、CLIを使用して初期化する際にJob Functionに含まれるボイラープレートコードを以下に示します: **Java** **Java Job Function Boilerplate** ```java import java.util.logging.Level; import java.util.logging.Logger; import com.catalyst.Context; import com.catalyst.job.JOB_STATUS; import com.catalyst.job.JobRequest; import com.catalyst.job.CatalystJobHandler; import com.zc.common.ZCProject; import com.zc.component.cache.ZCCache; public class Sample implements CatalystJobHandler { private static final Logger LOGGER = Logger.getLogger(Sample.class.getName()); @Override public JOB_STATUS handleJobExecute(JobRequest request, Context arg1) throws Exception { try { ZCProject.initProject(); Object eventData = request.getAllJobParams(); if (eventData != null) { LOGGER.log(Level.SEVERE, "Data is" + eventData.toString()); } LOGGER.log(Level.SEVERE, "Project Details " + request.getProjectDetails().toString()); ZCCache.getInstance().putCacheValue("JobSample", "Working", 1 l); LOGGER.log(Level.SEVERE, "Inserted SucessFully:)"); } catch (Exception e) { LOGGER.log(Level.SEVERE, "Exception in Job Function", e); return JOB_STATUS.FAILURE; } return JOB_STATUS.SUCCESS; } } ``` **Node.js** **Node.js Job Function Boilerplate** ```javascript /** * * @param {import("./types/job").JobRequest} jobRequest * @param {import("./types/job").Context} context */ module.exports = (jobRequest, context) => { console.log('Hello from index.js'); // function input: { job_details: { job_meta_details: { params: { key: 'value' } } } } /** * JOB REQUEST FUNCTIONALITIES */ const projectDetails = jobRequest.getProjectDetails(); // 現在のプロジェクト詳細を取得する const jobDetails = jobRequest.getJobDetails(); // 現在のジョブ詳細を取得する const jobMetaDetails = jobRequest.getJobMetaDetails(); // 現在のジョブのメタデータ詳細を取得する const jobpoolDetails = jobRequest.getJobpoolDetails(); // 現在のFunctionジョブプールの詳細を取得する const getJobCapacityAttributes = jobRequest.getJobCapacityAttributes(); // 現在のジョブのキャパシティを取得する const allJobParams = jobRequest.getAllJobParams(); // ジョブ関数に渡されたすべてのパラメータを取得する const jobParam = jobRequest.getJobParam('key'); // ジョブ関数に渡された特定のパラメータの値を取得する /** * CONTEXT FUNCTIONALITIES */ context.closeWithSuccess(); //end of application with success // context.closeWithFailure(); //end of application with failure }; ``` **Python** **Python Job Function Boilerplate** ```python import logging def handler(job_request, context): logger = logging.getLogger() logger.info('Hello from main.py') # function input: { job_details: { job_meta_details: { params: { key: 'value' } } } } '''JobRequest Functionalities''' job_details = job_request.get_job_details() # 現在のジョブの詳細を取得する project_details = job_request.get_project_details() # 現在のプロジェクトの詳細を取得する job_meta_details = job_request.get_job_meta_details() # 現在のジョブのメタデータを取得する job_pool_details = job_request.get_job_pool_details() # 現在のFunctionジョブプールの詳細を取得する job_capacity_attributes = job_request.get_job_capacity_attributes() # 現在のジョブのキャパシティを取得する all_job_params = job_request.get_all_job_params() # ジョブ関数に渡されたすべてのパラメータを取得する job_param = job_request.get_job_param('key') # ジョブ関数に渡された特定のパラメータの値を取得する '''Context Functionalities''' remaining_execution_time_ms = context.get_remaining_execution_time_ms() # ジョブ関数の最大許容実行時間を取得する max_execution_time_ms = context.get_max_execution_time_ms() # このジョブ関数の残り実行時間を取得する # context.close_with_failure() # 失敗レスポンスで関数の実行を終了する context.close_with_success() # 成功レスポンスで関数の実行を終了する ``` ### Catalyst CLIを使用したJob Functionsのテスト Job Functionsは[Event](https://docs.catalyst.zoho.com/ja/serverless/help/functions/event-functions/)および[Integration](https://docs.catalyst.zoho.com/ja/serverless/help/functions/integration-functions/) Functionsと同様に非HTTPS Functionsです。Job Functionを手動で呼び出したり、コンソールでテストしたりすることはできません。ただし、[Catalyst CLI](https://docs.catalyst.zoho.com/ja/cli/v1/cli-command-reference/)の[Functionシェル](https://docs.catalyst.zoho.com/ja/cli/v1/working-with-functions/functions-shell/#functions-shell-command-execution)を使用してサンプルペイロードを生成し、Functionをテストできます。 以下のCLIコマンドでサンプルペイロードが生成され、ローカル環境でFunctionをテストするために使用できます。 ```sh catalyst event:generate:job 10108000007982015 // 必要なJob Pool IDに置き換えてください ``` ![catalyst_job_scheduling_job_functions_sample_payload](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_job_functions_sample_payload.webp) このペイロードを必要なJob Functionの実行時に入力し、出力を検証できます。 ### Job Function引数 **Java** Catalyst Job Functionは、**Java**で2つの引数をサポートしています:`JobRequest`と`Context`。 `JobRequest`引数には、以下の組み込みメソッドが含まれています: * `JobRequest.getProjectDetails()`: プロジェクトIDやプロジェクト名などのプロジェクト詳細を取得するために使用されます。 * `JobRequest.getJobDetails()`: [ジョブID](https://docs.catalyst.zoho.com/ja/job-scheduling/help/job/key-concepts/#job-id)、関連するJob Pool、ジョブ名を含むジョブのすべての詳細を取得するために使用されます。 * `JobRequest.getJobMetaDetails()`: 実行時間、ディスパッチ遅延、リトライ試行の詳細を含むジョブのすべてのメタ詳細を取得するために使用されます。 * `JobRequest.getJobpoolDetails()`: Job Poolのすべての詳細を取得するために使用されます。詳細には[Job Pool ID](https://docs.catalyst.zoho.com/ja/job-scheduling/help/jobpool/key-concepts/#job-pool-id)、Job Pool名、Job Poolタイプが含まれます。 * `JobRequest.getJobCapacityAttributes()`: Function Job Poolに割り当てられたメモリに関するすべての詳細を取得するために使用されます。 * `JobRequest.getAllJobParams()`: Functionに渡されたすべてのパラメータ(キーと値のペア)を取得するために使用されます。 * `JobRequest.getJobParam(String key)`: キーを文字列としてFunctionに渡してパラメータの値を取得するために使用されます。 `Context`引数には、以下の組み込みメソッドが含まれています: * `Context.getRemainingExecutionTimeMs()`: Job Functionの残りの実行時間を取得するために使用できます。 * `Context.getMaxExecutionTimeMs()`: このメソッドは、Job Functionの最大実行時間を取得するために使用でき、**15分**の定数値です。 **Node.js** Catalyst Job Functionは、**Node.js**で2つの引数をサポートしています:`jobDetails`と`context`。 `jobDetails`引数には、以下の組み込みメソッドが含まれています: * `jobDetails.getJobDetails()`: ジョブID、関連するJob Pool、ジョブ名を含むジョブのすべての詳細を取得するために使用されます。 * `jobDetails.getJobMetaDetails()`: 実行時間、ディスパッチ遅延、リトライ試行の詳細を含むジョブのすべてのメタ詳細を取得するために使用されます。 * `jobDetails.getJobPoolDetails()`: Job Poolのすべての詳細を取得するために使用されます。詳細にはJob Pool ID、Job Pool名、Job Poolタイプが含まれます。 * `jobDetails.getProjectDetails()`: プロジェクトIDやプロジェクト名などのプロジェクト詳細を取得するために使用されます。 * `jobDetails.getJobCapacityAttributes()`: Function Job Poolに割り当てられたメモリに関するすべての詳細を取得するために使用されます。 * `jobDetails.getAllJobParams()`: Functionに渡されたすべてのパラメータ(キーと値のペア)を取得するために使用されます。 * `jobDetails.getJobParam(key)`: キーを文字列としてFunctionに渡してパラメータの値を取得するために使用されます。 `context`引数には、以下の組み込みメソッドが含まれています: * `context.getRemainingExecutionTimeMs()`: Job Functionの残りの実行時間を取得するために使用できます。 * `context.getMaxExecutionTimeMs()`: このメソッドは、Job Functionの最大実行時間を取得するために使用でき、15分の定数値です。 * `context.closeWithSuccess()`: このメソッドは、ジョブの実行が成功したことを示すために使用できます。 * `context.closeWithFailure()`: このメソッドは、ジョブの実行が失敗したことを示すために使用できます。 **Python** Catalyst Job Functionは、**Python**で2つの引数をサポートしています:`job_details`と`context`。 `job_details`引数には、以下の組み込みメソッドが含まれています: * `job_details.get_job_details()`: ジョブID、関連するJob Pool、ジョブ名を含むジョブのすべての詳細を取得するために使用されます。 * `job_details.get_job_meta_details()`: 実行時間、ディスパッチ遅延、リトライ試行の詳細を含むジョブのすべてのメタ詳細を取得するために使用されます。 * `job_details.get_job_pool_details()`: Job Poolのすべての詳細を取得するために使用されます。詳細にはJob Pool ID、Job Pool名、Job Poolタイプが含まれます。 * `job_details.get_project_details()`: プロジェクトIDやプロジェクト名などのプロジェクト詳細を取得するために使用されます。 * `job_details.get_job_capacity_attributes()`: Function Job Poolに割り当てられたメモリに関するすべての詳細を取得するために使用されます。 * `job_details.get_all_job_params()`: Functionに渡されたすべてのパラメータ(キーと値のペア)を取得するために使用されます。 * `job_details.get_job_param(key)`: キーを文字列としてFunctionに渡してパラメータの値を取得するために使用されます。 `context`引数には、以下の組み込みメソッドが含まれています: * `context.get_remaining_execution_time_ms()`: Job Functionの残りの実行時間を取得するために使用できます。 * `context.get_max_execution_time_ms()`: このメソッドは、Job Functionの最大実行時間を取得するために使用でき、15分の定数値です。 * `context.close_with_success()`: このメソッドは、ジョブの実行が成功したことを示すために使用できます。 * `context.close_with_failure()`: このメソッドは、ジョブの実行が失敗したことを示すために使用できます。