LockerService とは?
LockerService は、Lightning コンポーネントのための強力なセキュリティアーキテクチャです。LockerService では、個々の Lightning コンポーネントが各自の名前空間で分離されるためセキュリティが向上します。また、LockerService では、コードのサポート機能が向上するベストプラクティスが促進されます。これは、サポートされる API へのアクセスのみを許可し、公開されていないフレームワーク内部へのアクセスを排除することで実現します。
LockerService は、いくつかのセキュリティ機能を適用し、サポート範囲が拡大されたコードを作成するベストプラクティスを促進します。
- JavaScript ES5 の厳格モードの適用
- JavaScript ES5 の厳格モードが暗黙的に有効になります。コードで "use strict" を指定する必要がありません。
- JavaScript の厳格モードにより、コードの堅牢性とサポート範囲が拡大されます。たとえば、このモードでない場合は抑制される一部のエラーを発生させることができます。
- 厳格モードを使用する場合のいくつかの考慮事項を次に示します。
- var キーワードを使用して変数を宣言する必要があります。
- ライブラリ外で使用可能な変数を作成するには、window オブジェクトにその変数を明示的に関連付ける必要があります。詳細は、「コンポーネント間の JavaScript コードの共有」を参照してください。
- コンポーネントが使用するライブラリも厳格モードで動作する必要があります。
- JavaScript の厳格モードについての詳細は、Mozilla Developer Networkの記事を参照してください。
- DOM のアクセスコンテインメント
- コンポーネントは、DOM をトラバースして、同じ名前空間内のコンポーネントで作成された要素にアクセスすることしかできません。この動作により、他の名前空間内のコンポーネントで所有される DOM 要素にアクセスするアンチパターンを回避できます。
- 詳細は、「DOM のアクセスコンテインメント」を参照してください。
- グローバル参照の制限
- LockerService はグローバル参照に制限を適用します。Array など、組み込みオブジェクトにはアクセスできます。window など、組み込み以外のオブジェクトは LockerService がセキュアなバージョンを用意します。たとえば、window のセキュアなバージョンは SecureWindow です。オブジェクトのこのセキュアなバージョンが、オブジェクトおよびそのプロパティへのアクセスを自動的かつシームレスに制御します。
- LockerService によって公開される DOM API を確認するには、LockerService API Viewer を使用します。API Viewer アプリケーションには、SecureDocument、SecureElement、および SecureWindow の API が表示されます。
- API Viewer の現在の UI はまだ完璧ではありません。改善されるまでしばらくお待ちください。多くの情報がありますが、重要なポイントは緑色の背景は DOM メソッドがサポートされていることを示すということです。
- Salesforce Lightning CLI ツールを使用して、コードをスキャンし、Lightning 固有の問題がないか調べます。
- サポートされている JavaScript API フレームワークのメソッドのみへのアクセス
- サポートされている公開済みの JavaScript API フレームワークのメソッドにのみアクセスできます。これらのメソッドは、https://yourDomain.lightning.force.com/auradocs/reference.app にあるリファレンスドキュメントアプリケーションで公開されています。以前はサポートされていないメソッドにアクセスできたため、サポートされていないメソッドが変更または削除されたときにコードが破損するおそれがありました。