この記事の目次
SalesforceのAnnotationsとは?

よく利用するAnnotations5選

@AuraEnabled
@AuraEnabledはLightningコンポーネントからApexメソッドや、プロパティにアクセスできるようにするアノテーションです。主にクライアント側のLightningコンポーネントからサーバー側のApexメソッドを呼び出すときに利用します。 @AuraEnabledはstaticメソッドしか利用できません。また、APIバージョンが44.0以降から(cacheable=true)を指定することで、Apex メソッドから返されるデータをキャッシュできるようになりました。@AuraEnabled(cacheable=true)
public static String getUserName(String userId) {
// 処理を実装
}
@Future
@Futureは、メソッドの処理を非同期で処理できるようにするアノテーションです。 @futureを利用するメソッドは次の条件をすべて満たす必要があります。 ・staticメソッドであること ・メソッドは戻り値を返さないvoid型であることglobal class MyFutureClass {
@future
static void testAsynchronous(String str) {
// 非同期で実行する処理を実装
}
}
また、デフォルトではコールアウトが実行しないため、コールアウトを実行する場合は、次のように(callout=true)を指定する必要があります。
@future (callout=true)
static void testCalloutFromFuture(String str) {
// 非同期で実行する処理を実装
}
@IsTest
@IsTestは、テスト用のクラスやメソッドに付与するアノテーションです。@isTestで指定したクラスは、アクセス修飾子にprivateまたは、publicが宣言されている必要があります。なお、@isTestで指定したクラスは、Apexコードの組織内の上限である6MBには含まれません。 例)クラスのアクセス修飾子が「private」の場合@isTest
private class MyPrivateTest {
// テスト用メソッド
@isTest static void test1() {
// テスト用の処理を実装
}
}
例)クラスのアクセス修飾子が「public」の場合
@isTest
public class TesPublictUtil {
// テスト用メソッド
public static void test1() {
// テスト用の処理を実装
}
}
@IsTestで使用できるオプションを紹介します。
アノテーション | 概要 |
---|---|
@IsTest(SeeAllData=true) | テストクラスで組織のデータを使用する際に、指定する。Salesforce API バージョン 24.0以降から利用可能。 |
@IsTest(OnInstall=true) | パッケージのインストール時にテストクラスを実行する際に、指定する。 |
@IsTest(isParallel=true) | テストクラスを並列実行したい場合に指定する。同時テスト数のデフォルト上限には含まれない。@isTest(SeeAllData=true) と併用できないの注意。 |
@TestSetup
@testSetupは、テスト用メソッドを実行する前に実行したいメソッドに指定するアノテーションです。@isTestを宣言したクラス内でしか利用できません。主にテストクラス内のメソッドで共通して使用するデータを設定する目的で利用されます。@isTest
private class MyPrivateTest {
// テスト用情報を作成する
@testSetup static void setup() {
// テストで共通して使用するユーザー情報を設定します。
List testUsers = new List ();
for (Integer i = 0; i < 2; i++) {
testUsers.add(new User(Name = 'TestUser' + i));
}
insert testUsers;
}
// テスト用メソッド
@isTest static void test1() {
// テスト用の処理を実装
// ユーザー情報を取得する
User user = [SELECT Id, Name, Mail FROM User WHERE Name = 'TestUser0' LIMIT 1];
return user;
}
}
@RemoteAction
@RemoteActionは、VisualforceページのJavaScriptから呼び出したいApexのメソッドに付与するアノテーションです。 @RemoteActionを利用するメソッドは次の条件をすべて満たす必要があります。 ・staticメソッドであること ・メソッドのアクセス修飾子がglobalまたは、publicであること 例)Apexのコードglobal with sharing class UserRemoter {
public String userId { get; set; }
public static User user { get; set; }
public UserRemoter() {} // コンストラクタは空で宣言
@RemoteAction
global static User getgetUser(String userId) {
user = [SELECT Id, UserName, Mail FROM User WHERE Id = : userId];
return user;
}
}
例)Apexのメソッドを呼び出すVisualforce ページの処理
<apex:page controller=""UserRemoter"">
<script type=""text/javascript"">
function getRemoteUser() {
var userId = document.getElementById('userId').value;
Visualforce.remoting.Manager.invokeAction(
'{!$RemoteAction.UserRemoter.getUser}',
userId,
function(result, event){
if (event.status) {
// アラートでユーザー名を表示する
alert(""ユーザー名:"" + result.UserName);
} else if (event.type === 'exception') {
// Exceptionが発生した場合
alert(event.message);
} else {
// Exception以外のエラーが発生した場合
alert(event.message);
}
},
{escape: true}
);
}
</script>
~略~
Annotationsを使って、Salesforceのプログラムを開発してみよう!

この記事の監修者・著者

-
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞