0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Apexにおける主なアノテーション

Posted at

Salesforce Apexにおけるアノテーションとは?

Apexのアノテーション(Annotation)は、@ 記号で始まる特別なマークで、クラスやメソッド、プロパティの振る舞いを制御するために使用されます。主に以下の目的で使われます。

  • メソッドの実行権限の指定
  • 特定の処理を有効化
  • 設定の簡略化

Javaのアノテーションと似ていますが、Salesforce特有のものも多くあります。


主なアノテーション一覧

できるだけ多くのアノテーションを紹介し、それぞれの意味とコード例を示します。


@AuraEnabled

意味:
Lightningコンポーネント(Aura・LWC)からApexメソッドを呼び出せるようにする。

使い方:

  • @AuraEnabled だけ: フロントエンド(Aura/LWC)から参照可能なメソッド・プロパティ
  • @AuraEnabled(cacheable=true): メソッドの結果をキャッシュ可能にし、パフォーマンスを向上させる

コード例:

public with sharing class AccountController {
    @AuraEnabled(cacheable=true)
    public static List<Account> getAccounts() {
        return [SELECT Id, Name FROM Account LIMIT 10];
    }
}

この getAccounts メソッドは、LWC から呼び出してアカウント情報を取得できます。


@Future

意味:
時間のかかる処理を非同期(バックグラウンド)で実行する。

ポイント:

  • @future を付けたメソッドは static でなければならない。
  • DML操作や外部APIコールに適している。

コード例:

public class FutureExample {
    @future
    public static void updateAccounts() {
        List<Account> accs = [SELECT Id, Name FROM Account];
        for (Account acc : accs) {
            acc.Name += ' (Updated)';
        }
        update accs;
    }
}

このメソッドを実行すると、Apex の非同期キューに入れられ、すぐには実行されません。処理負荷の分散に役立ちます。


@InvocableMethod

意味:
フローやプロセスビルダーから実行可能なメソッドを定義する。

ポイント:

  • static メソッドに適用する必要がある。
  • List<T> 型のパラメータを受け取ることが多い。

コード例:

public class AccountHelper {
    @InvocableMethod(label='Update Account Names' description='Updates account names')
    public static void updateAccountNames(List<String> accountIds) {
        List<Account> accs = [SELECT Id, Name FROM Account WHERE Id IN :accountIds];
        for (Account acc : accs) {
            acc.Name += ' (Processed)';
        }
        update accs;
    }
}

これをフローから呼び出せば、指定したアカウント名を一括更新できます。


@InvocableVariable

意味:
フローやプロセスビルダーで参照できるクラス変数を定義する。

コード例:

public class AccountWrapper {
    @InvocableVariable
    public String accountId;
    
    @InvocableVariable
    public String accountName;
}

このクラスをフローで利用し、データをやりとりできます。


@TestMethod (または @isTest)

意味:
テストメソッドやテストクラスを定義する。

ポイント:

  • @isTest はクラス・メソッドのどちらにも使える。
  • @TestMethod はメソッド専用(推奨されていない)。

コード例:

@isTest
private class AccountTest {
    @isTest
    static void testAccountCreation() {
        Account acc = new Account(Name='Test Account');
        insert acc;
        
        System.assert(acc.Id != null);
    }
}

Salesforce ではコードカバレッジのためにテストを書くことが必須です。


@ReadOnly

意味:
SOQL のクエリ制限を一時的に緩和し、50,000行以上のレコードを取得可能にする。

コード例:

public class ReadOnlyExample {
    @ReadOnly
    public static void fetchLargeData() {
        List<Account> accounts = [SELECT Id, Name FROM Account];
        System.debug('Total Accounts: ' + accounts.size());
    }
}

バッチ処理や大規模データ分析に使われます。


@RemoteAction

意味:
Visualforce(VFページ)から JavaScript 経由で Apex メソッドを呼び出す。

コード例:

public class AccountRemoteController {
    @RemoteAction
    public static List<Account> getAccounts() {
        return [SELECT Id, Name FROM Account LIMIT 10];
    }
}

Visualforce から sforce.apex.execute() を使って呼び出します。


@NamespaceAccessible

意味:
パッケージ開発時に、異なる名前空間のクラスやメソッドを呼び出し可能にする。

コード例:

@NamespaceAccessible
public class PublicUtility {
    public static String getMessage() {
        return 'Hello from Managed Package!';
    }
}

このクラスは、パッケージ外からも利用できます。


@Deprecated

意味:
将来的に削除される可能性があるメソッドやクラスをマークする。

コード例:

public class SampleClass {
    @Deprecated
    public static void oldMethod() {
        System.debug('This method is deprecated.');
    }
}

将来削除予定のメソッドに使い、新しいメソッドを用意しておく。


まとめ

アノテーション 用途
@AuraEnabled LWC/Aura から呼び出し可能にする
@Future 非同期処理を実行する
@InvocableMethod フローやプロセスビルダーから実行可能にする
@InvocableVariable フローで使用するクラス変数を定義
@isTest Apex テストクラス・メソッドを定義
@ReadOnly SOQL のレコード取得上限を緩和
@RemoteAction Visualforce から JavaScript 経由で呼び出す
@NamespaceAccessible パッケージ外からアクセス可能にする
@Deprecated 非推奨メソッドを示す

Apex のアノテーションを適切に使うことで、パフォーマンスの最適化や開発効率の向上ができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?