Lightning Experience で使用を避けるべき機能について

学習の目的

この単元を完了すると、次のことができるようになります。
  • Lightning Experience で実行するページには極力使用しないコンポーネントを 2 つ以上挙げる。
  • Visualforce のページやコンポーネントを使用できない Lightning Experience の機能を 3 つ挙げる。

Lightning Experience で避けるべき機能の把握

一部の Visualforce コンポーネントについては、Lightning Experience で実行するページで極力使用しないことをお勧めします。また、Visualforce のいくつかの機能は、Lightning Experience で使用した場合に動作が異なります。最後に、Lightning Experience には少数ながら Visualforce ページやアプリケーションが使用できない場所や、確実に機能しない可能性のある場所があります。

Lightning Experience は依然として発展途中であり、いずれこうした問題が解消されていくものと考えています。

Lightning Experience のヘッダーとナビゲーションメニューは抑制できない

Visualforce ページを Lightning Experience で実行するときは、常に標準の Lightning Experience ユーザインターフェースが表示されます。Lightning Experience のヘッダーやサイドバーを抑制したり変更したりする方法はありません。特に、Lightning Experience に表示される Visualforce ページには、<apex:page> の showHeader および sidebar 属性が適用されません

これは意図的なものです。Lightning Experience に表示されるアプリケーションは、Lightning Experience アプリケーションです。アプリケーションに完全カスタムのインターフェースが必要な場合は、Salesforce Classic で実行する必要があります。

Salesforce Classic のヘッダーとサイドバーは常に抑制

ページを Lightning Experience に表示する場合、Salesforce Classic の標準のヘッダーとサイドバーは常に抑制されます。特に、Lightning Experience に表示される Visualforce ページには、<apex:page> の showHeader および sidebar 属性が適用されません。
ページは、あたかも <apex:page> の showHeader および sidebar 属性が false に設定されているかのように動作します。
メモ

メモ

Salesforce Classic の標準スタイルシートを含めるか抑制するかを決定する <apex:page> の standardStylesheets 属性は、Lightning Experience の影響を受けません。つまり、Lightning Experience ではデフォルトの true に設定されますが、変更可能です。

Lightning Experience では多数の関連リストがサポートされません。これらの関連リストは「ブロックリストに登録」され、その使用が明示的に阻止されます。ご想像どおり、これらの関連リストは Visualforce でブロックリストに登録され、<apex:relatedList> タグが付けられます。

Lightning Experience でサポートされない関連リストについての詳細は、オンラインヘルプの「データアクセスおよびビュー: Lightning Experience で使用できない機能とその新機能」を参照してください。

<apex:iframe> の回避

Lightning Experience の Visualforce ページでも <apex:iframe> を使用できないわけではありませんが、極力使用しないことをお勧めします。

Visualforce ページは、Lightning Experience に表示されるときに独自の iframe でラップされます。「Visualforce アプリケーションのコンテナの探索」で詳述しているとおり、このタグはページの動作に多くの顕著な影響を及ぼします。iframe スタックにもう一層追加すれば、環境がさらに複雑になります。

iframe とその DOM および JavaScript への影響を掌握していれば、こうした複雑性にも対処できます。けれども、現時点でネストされた iframe を使用しているのであれば、問題のデバッグに手間取るかもしれません。そのため、Lightning Experience で使用するページには極力このタグを使用しないことをお勧めします。

window.location は直接設定できない

前にもお伝えしましたが、重要事項のためもう一度繰り返します。ページの JavaScript コードで直接 window.location 変数を設定している場合、Lightning Experience にページを表示したときにこの変数が機能しません。ページのこのコードを Lightning Experience でも機能するように変更する必要があります

詳細は、「ナビゲーションの管理」を参照してください。

sforce.one は Salesforce モバイルとは限らない

sforce.one JavaScript ユーティリティオブジェクトが、Salesforce アプリケーションと Lightning Experience の両方の Visualforce ページで使用できるようになりました。ページのコンテキストがモバイルなのかデスクトップなのかを sforce.one オブジェクトの有無で判断している場合は、コードを変更する必要があります。

Salesforce Classic、Salesforce アプリケーション、Lightning Experience 環境を区別するには、ドキュメントで説明されている方法のいずれかを使用します。Visualforce、Apex、および JavaScript でサポートされている方法があります。

詳細は、「Classic と Lightning Experience 間の Visualforce ページの共有」単元を参照してください。

override アクションに関する変更

おそらく、回避するのが難しいという点で、最も大きな変更は、Visualforce による標準アクションの上書きが、Lightning Experience と Salesforce Classic でわずかに異なることです。オブジェクトリストアクションの上書きは、Lightning Experience では使用できません。
具体的には、Salesforce Classic の大半の標準オブジェクトおよびすべてのカスタムオブジェクトに対して上書きできる標準アクションは 6 つあります。
  • オブジェクトタブ
  • オブジェクトリスト
  • レコードビュー
  • レコード編集
  • レコード作成
  • レコード削除
Lightning Experience では、最初の 2 つのアクションは、1 つのページに統合され、オブジェクトホームになりました。オブジェクトホームは、オブジェクトリストに似ていますが、[最近使ったデータ] など、オブジェクトタブの要素がいくつか追加されています。[レポート] や [ツール] などのその他の要素は、ユーザインターフェースの別の部分に移動しました。

組織のユーザインターフェース設定に関わらず、オブジェクトタブとオブジェクトリストの両方を [設定] で上書きできます。オブジェクトタブアクションを上書きすると、Lightning Experience では期待どおりにオブジェクトのホームページが上書きされます。

ただし、Lightning Experience では、ユーザインターフェースでオブジェクトリストアクションにアクセスできないため、起動する手段がありません。組織で、いずれかのオブジェクトのオブジェクトリストアクションが上書きされている場合、その機能はユーザが Lightning Experience を使用しているときには利用できません。その上書きの中に重要な機能がある場合、その機能を使用する別の方法を見つける必要があります。

次の表は、[設定] で上書き可能なオブジェクトの標準アクションと、3 種類のユーザエクスペリエンスで上書きされているアクションの一覧です。
[設定] で上書き Salesforce Classic Lightning Experience Salesforce アプリケーション
タブ オブジェクトタブ オブジェクトホーム 検索
リスト オブジェクトリスト N/A オブジェクトホーム
表示 レコードビュー レコードホーム レコードホーム
編集 レコード編集 レコード編集 レコード編集
新規 レコードの作成 レコードの作成 レコードの作成
削除 レコード削除 レコード削除 レコード削除
メモ

メモ

「N/A」は、標準の動作にアクセスできないわけでも、標準の動作を上書きできないわけでもありません。上書きにアクセスできないということです。使用できないのは上書きの機能です。