Visualforce とは?
Visualforce は、Lightning プラットフォームでネイティブにホストできるカスタムユーザインターフェースを、開発者が作成できるようにするフレームワークです。Visualforce フレームワークには、HTML に似たタグベースのマークアップ言語が含まれています。また、クエリや保存など、基本的なデータベース操作を非常に簡単に実行できるサーバ側の「標準コントローラ」のセットが含まれています。
カスタム機能を構築する場合には、Visualforce よりも Lightning Web コンポーネントを使用することをお勧めします。Lightning Web コンポーネントは軽量であり、アプリケーションやサイトで卓越したパフォーマンスを発揮します。Visualforce ではなく、Lightning Web Components を使用すべき理由について確認するには、ここをクリックしてください。
Visualforce マークアップ言語では、Visualforce タグのそれぞれが、ページセクション、関連リスト、項目などの概略的または詳細なユーザインターフェースコンポーネントに対応しています。Visualforce コンポーネントの動作は、標準の Salesforce ページと同じロジックを使用して制御できます。また、開発者が独自のロジックを Apex で記述されたコントローラクラスと関連付けることもできます。
- Visualforce マークアップ
- Visualforce コントローラ
Visualforce マークアップ
Visualforce マークアップは、Visualforce タグ、HTML、Javascript、または 1 つの <apex:page> タグ内に埋め込まれているその他の Web 対応コードで構成されています。マークアップでは、ページに含めるユーザインターフェースコンポーネントとその表示方法を定義します。
Visualforce コントローラ
Visualforce コントローラは命令セットの一種であり、関連する Visualforce マークアップに指定されたコンポーネントをユーザが操作したときの動作を制御します。操作の 1 つに、ユーザによるボタンまたはリンクのクリックがあります。コントローラを使用すると、ページに表示されるデータにアクセスでき、また、コンポーネントの動作を変更できます。
-
標準コントローラは、標準の Salesforce ページで使用されているものと同じ機能およびロジックで構成されます。たとえば、標準取引先コントローラを使用する場合、Visualforce ページで [保存] ボタンをクリックした場合、標準の取引先編集ページで [保存] をクリックした場合と同じ動作が行われます。
ページで標準コントローラを使用した場合に、ユーザにそのオブジェクトへのアクセス権がないと、アクセス権がないというエラーメッセージがページに表示されます。このエラーは、オブジェクトへのユーザのアクセシビリティを確認し、コンポーネントを適切に表示することで解決できます。
- 標準リストコントローラでは、一連のレコードを表示または操作できる Visualforce ページを作成できます。レコードセットを使用する既存の Salesforce ページの例として、リストページ、関連リスト、一括アクションページなどがあります。
-
カスタムコントローラは Apex で記述されるクラスで、標準コントローラを使用せずにすべてのページのロジックを実装します。カスタムコントローラを使用する場合、新しいナビゲーション要素または動作を定義できますが、標準コントローラにすでに定義された機能も再実装する必要があります。
その他の Apex クラスと同様に、カスタムコントローラ全体はシステムモードで実行されます。このモードでは現在のユーザのオブジェクトと項目レベルの権限は無視されます。カスタムコントローラ内で、ユーザプロファイルを用いてアクセスするか否かを独自に決定することができます。
-
コントローラ拡張は、Apex で記述されるクラスで、標準コントローラまたはカスタムコントローラの動作を追加するか、動作を上書きします。拡張を使用すれば、独自のカスタムロジックを追加するだけでなく、別のコントローラの機能も使用できます。
標準コントローラは、ユーザモードで実行されます。このモードでは現在のユーザの権限、項目レベルのセキュリティ、共有ルールが適用されます。標準のコントローラを拡張することで、ユーザ権限が適用される Visualforce ページを作成できます。拡張クラスはシステムモードで実行しますが、標準コントローラはユーザモードで実行します。カスタムコントローラと同様、ユーザプロファイルを参照してプログラムでアクセスさせるか否かを指定できます。
