Developer

Salesforceの@(アノテーション)まとめ【セールスフォース】

Developer
この記事は約5分で読めます。

こんにちは、アンダーソンです。
今回はセールスフォース、Apex内で使用する、アノテーションについてまとめました。

スポンサーリンク

アノテーションは全部で17個

全部で17個あり、そのうちよく目にするものやどこで使うんだこれ。。。
ってものもありますが、上級デベロッパーを目指す以上知っておくべきかと思ったので
そこまで細かくはないですがざっくりみていきます。
ちなみに下記に用意しました。

  • @AuraEnabled
  • @Deprecated
  • @Future
  • @InvocableMethod
  • @InvocableVariable
  • @IsTest
  • @NamespaceAccessible
  • @ReadOnly
  • @RemoteAction
  • @SuppressWarnings
  • @TestSetup
  • @TestVisible
    Apex REST アノテーション:
  • @RestResource(urlMapping=’/yourUrl’)
  • @HttpDelete
  • @HttpGet
  • @HttpPost
  • @HttpPut

@AuraEnabled

Lightningコンポーネントからの呼び出しを可能にするアノテーションです。
Auraから呼び出す際はコントローラ側から、c.メソッド名をつけて呼び出す。→以前やりました
LWCの場合はJavaScriptのimportで宣言してから呼び出します。
もちろん引数を設定することも可能。
(cacheable=true)をつけることでメソッドの結果をキャッシュしてパフォーマンスをあげることもできます。

@Deprecated

管理パッケージに含まれるけど、参照されないメソッドやクラスなどを指定します。
管理パッケージ内のコードのリファクタリング時に役立つそうです。
非推奨という意味だそうで、既存顧客へは起動し続けるものの、新しくインストールする顧客への表示を制限できるアノテーションです。

@Future

非同期処理をしたいメソッドに対して付与するアノテーションです。
非同期処理内でコールアウトをしたい際には(callout=true)を宣言しておきます。
このアノテーションがついたメソッドへの引数でオブジェクト型を渡すことはできないので
注意しましょう。→詳しくはこちら

@InvocableMethod

フローやプロセスビルダーからのメソッドの呼び出しが可能になるアノテーションです。
labelやdescriptionの設定も可能です。
引数にはプリミティブ型のリストもしくは、リストのリストしか渡せないので注意です。
また1つのクラスに1つしか設定することができないのも要注意です。

@InvocableVariable

InvocableMethodで呼び出されるクラスメンバー変数につけることでメソッドでの使用が可能になります。
(required=true)の指定で必須項目のような使い方もできます。
詳しくはこちら

@IsTest

説明不要のアノテーションかと思います。
開発者でこれを知らない人はいないと思いますがあえていうなら、
テストクラス及びテストメソッドへ付与することでコンテキストがテストとしての
トランザクションで実行することができます。
testMethodキーワードもありますが、こちらは現在非推奨なのでもう忘れましょう。

@NamespaceAccessible

パッケージされているApexに対して影響があるアノテーションです。
これをつけていれば公開もしくは保護されているApexを同じ名前空間の他のパッケージで使用可能になります。
ちなみにグローバル宣言されているクラスは関係なく全ての名前空間での使用ができるようです。

@ReadOnly

WebサービスおよびSchedulableが実装されたクラスで使用できます。
ただし、DML操作やfutureメソッドのコールに制限がかかるなど、様々な制約がつきまとうようです。ちょっと今度詳しく記事にします。

@RemoteAction

JavaScriptを介したApexメソッドのコールができるアノテーションです。
JavaScript Remotingと呼ばれており、この言葉が出てきたら、このアノテーションを思い出してください。
必ずstaticでglobalもしくはpublicである必要があります。

@SuppressWarnings

@SuppressWarnings アノテーションは Apex では何も行いませんが、サードパーティツールに情報を提供するために使用できます。

まんまガイドを写しました。というかこれ以上の情報が載っていなかった。。。。
また詳しく調べて記事にします。

@testSetup

こちらはテストデータの作成などに使うアノテーションです。
この中で作成されたレコードはテストクラス内にある全てのメソッドからアクセスできます。
さらにテストメソッドが複数ある場合は毎回次のメソッドが始まる前にロールバックされるため、
テストメソッド内でどれだけレコードを変更してもOKです。

@TestVisible

こちらもテスト関連ですが、このアノテーションはテストクラス側ではなく、クラスやコントローラ側のメソッドや変数に付与します。
非公開や保護されているメソッドなどはそのままだとテストクラスから参照することができないため、このアノテーションをつけることで直接の呼び出しや参照が可能になります。

@RestResource 

Apex クラスを RESTful Web サービスとして公開できるようにするアノテーションです。
クラスに付与する点と、(urlMapping=’/yourUrl’)でURLパスを指定できます。

  • @HttpDelete
  • @HttpGet
  • @HttpPatch
  • @HttpPost
  • @HttpPut

それぞれ公開されたサービスにたいしてメソッドレベルで付与します。
要求が送信されるとそれぞれ対応したアノテーションがついたメソッドがコールされます。

まとめ

なじみのあるものからないものまで一通り簡単にまとめてみました。
また機会をみてひとつづつ詳しくやっていきたいと思います。

その他の開発に関する記事はこちらです。

Developerも含めた試験問題にチャレンジしてみましょう。