Lightning Aura Components Developer Guide (Lightning Aura コンポーネント開発者ガイド)
Winter '25 (API version 62.0)
Spring '24 (API version 60.0)
Winter '22 (API version 53.0)
Summer '21 (API version 52.0)
Summer '19 (API version 46.0)
Spring '19 (API version 45.0)
Winter '19 (API version 44.0)
Summer '18 (API version 43.0)
Spring '18 (API version 42.0)
Winter '18 (API version 41.0)
Summer '17 (API version 40.0)
Spring '17 (API version 39.0)
Winter '17 (API version 38.0)
Summer '16 (API version 37.0)
Spring '16 (API version 36.0)
Winter '16 (API version 35.0)
Summer '15 (API version 34.0)
Spring '15 (API version 33.0)
Winter '15 (API version 32.0)
JavaScript の厳格モードの適用
セキュアなラッパー
Lightning Locker による eval() 関数の制限
許可される MIME タイプ
サポートされている JavaScript API フレームワークのメソッドのみへのアクセス
Lightning Locker による影響
コンポーネントの Lightning Locker の無効化
コンポーネントの API バージョンを混在させない
サポートされていないブラウザで無効化される Lightning Locker
JavaScript プロトタイプの凍結
Lightning Locker とは?
Lightning Locker は、Lightning コンポーネントのための強力なセキュリティアーキテクチャです。Lightning Locker では、Lightning コンポーネントがそれぞれが属する名前空間ごとに分離されるため、セキュリティが向上します。また、Lightning Locker では、コードのサポート機能が向上するベストプラクティスが促進されます。これは、サポートされる API へのアクセスのみを許可し、公開されていないフレームワーク内部へのアクセスを排除することで実現します。
-
JavaScript の厳格モードの適用
Lightning Locker では JavaScript の厳格モードが暗黙的に有効になります。コードで "use strict" を指定する必要がありません。JavaScript の厳格モードにより、コードの安全性、堅牢性、サポート範囲が拡大されます。 -
DOM のアクセスコンテインメント
コンポーネントは、DOM をトラバースして、同じ名前空間内のコンポーネントで作成された要素にアクセスすることしかできません。この動作により、他の名前空間内のコンポーネントで所有される DOM 要素にアクセスするアンチパターンを回避できます。 -
セキュアなラッパー
セキュリティ上の理由で、Lightning Locker は、オブジェクトを非表示にしたり、オブジェクトのセキュアなバージョンでオブジェクトをラップしたりして、グローバルオブジェクトの使用を制限します。たとえば、window のセキュアなバージョンは SecureWindow です。Locker は window へのコールをインターセプトし、代わりに SecureWindow を使用します。メソッドやプロパティによっては、動作が異なるものや、セキュアなオブジェクトで使用できないものがあります。 -
Lightning Locker による eval() 関数の制限
Lightning Locker では、コードを動的に評価するサードパーティライブラリを使用できるように eval() 関数の使用がサポートされます。ただし、これは名前空間のグローバル範囲でのみ適用されるように制限されます。eval() 関数は、コールされた範囲内のローカル変数にアクセスできません。 -
許可される MIME タイプ
Lightning Locker は、ブラウザから送信された MIME タイプのファイルを分析します。Locker は一部の MIME タイプを許可し、一部の MIME タイプをサニタイズし、残りをブロックします。 -
サポートされている JavaScript API フレームワークのメソッドのみへのアクセス
サポートされている公開済みの JavaScript API フレームワークのメソッドにのみアクセスできます。これらのメソッドは、https://<myDomain>.lightning.force.com/docs/component-library (<myDomain> はカスタム Salesforce ドメインの名前) にあるリファレンスドキュメントアプリケーションで公開されています。以前はサポートされていないメソッドにアクセスできたため、サポートされていないメソッドが変更または削除されたときにコードが破損するおそれがありました。 -
Lightning Locker による影響
Lightning Locker の影響を受けるものと、受けないものについて見てみましょう。 -
Lightning Locker ツール
Lightning Locker ツールを使用すると、Lightning Locker と互換性があり、Lightning Locker と共に効率的に実行される安全なコードを開発できます。 -
コンポーネントの Lightning Locker の無効化
コンポーネントの API バージョンを 39.0 以下に設定すると、コンポーネントの Lightning Locker を無効にできます。コンポーネントが API バージョン 40.0 以上に設定されている場合は、Lightning Locker が有効になります。API バージョン 40.0 は、Lightning Locker がすべての組織で有効化された Summer '17 に相当します。 -
コンポーネントの API バージョンを混在させない
一貫性を保ちデバッグを容易にするため、アプリケーション、コンテインメント階層 (コンポーネント内のコンポーネント)、または拡張階層 (コンポーネントを拡張するコンポーネント) のすべてのコンポーネントに同じ API バージョンを設定することをお勧めします。 -
サポートされていないブラウザで無効化される Lightning Locker
Lightning Locker は、ブラウザの JavaScript 機能である厳格モード、Map オブジェクト、Proxy オブジェクトのサポートに依存します。ブラウザが要件を満たしていない場合、Lightning Locker はそのすべてのセキュリティ機能を適用できず、無効になります。