Lightning移行のTips 

こんにちは、富士通の佐藤と申します。
この記事は[Salesforce Platform Advent Calendar 2018](https://qiita.com/advent-calendar/2018/salesforce-platform)の4日目の投稿になります。

#はじめに

今年に入ってからClassicからLEXへの移行案件がポツポツと増えてきたような気がします。現在は比較的プログラムによる作り込みが少ない環境の移行を優先してご対応させて頂いておりますが、今後はゴリゴリな環境も移行していくのかと思うと、なかなか悩ましいところです。

そんな中、先日 [Lightning App Dev Champion](https://www.salesforce.com/campaign/lightning-champions/) という米国SF主催のLightningエバンジェリストプログラムに応募しまして、僭越ながら認定をいただくことができました。

折角Championに認定頂いたのですから、本日は最近携わったLEX移行案件の中で得られたTipsを、雑多ではありますがいくつか紹介したいと思います。

#移行の基礎を学ぶには？

さて、いきなりLEXに移行しろと言われても、何から手を付けてよいかわかりません。

私が初めてLEX移行を検討始めた際はなかなか情報がなくて苦労しました。ですが最近ではLightningの概要や移行の進め方については定期的にウェビナーが開催されており、過去のウェビナー動画や資料等は下記のSalesforceの公式コンテンツで既にかなりまとまっております。

まずは下記ヘルプを一通り確認いただき、また合わせてTrailheadでハンズオンを実施いただければある程度つかめるはずです。

ヘルプ - Classic から Lightning Experience への切り替え　ポイント集
https://help.salesforce.com/articleView?id=000270153&language=ja&type=1

Trailhead - トレイル Lightning Experience への移行
https://trailhead.salesforce.com/ja/content/learn/trails/lex_admin_migration

#Lightningの今後のロードマップを確認したい

Lightningは年3回のリリースで着々と機能追加されています。なので仮にもし今欲しい機能が無いからといって、安易に例えばLightningコンポーネントを作ってしまっても、そのあと直ぐに公式機能としてリリースされると丸損ですよね。

今後のロードマップについてはヘルプページに掲載されています。日本語だと情報が古かったりするので、ヘルプページ右下から言語をEnglishに切り替えて確認することを推奨します。

ヘルプ - Lightning Experience ロードマップ
https://help.salesforce.com/articleView?id=lex_roadmap.htm&type=5

#LEXの実装サンプル例は無いの？

LEXはClassicに比べて拡張性が高くできることが多い分、どのように実装するのがベストプラクティスなのか、なかなかイメージが沸かないところです。

例えば、アプリケーションビルダーのレイアウト配置ひとつとってもどこにどう置くのが最適なのか迷ったり、Lightningコンポーネントはどのように作るのが汎用性が高かったりより良いコンポーネントなのか、等悩ましいポイントがたくさんあります。そこで参考になるのがSample Gallaryです。

**trailhead - Sample Gallery**
https://trailhead.salesforce.com/ja/sample-gallery
![](https://res.cloudinary.com/hy4kyit2a/image/upload/dreamhouse_sa.jpg)

上記サイトでは、公式のデモでよく見る「DreamHouse」や「Northern Trail Outfitters」など架空の会社のアプリを題材としたリファレンスアプリを、お手持ちのDev環境などにインストールできます。Lightningの技術を上手に使っているので参考になるかと思います。

#設定をすぐに反映させる方法 （キャッシュ無効化）

LEXでページレイアウトを変更したときなど、リロードしてもすぐに反映されないという経験がないでしょうか？

Lightningフレームワークでは、描画のレスポンスを高速にするために、デフォルトではキャッシュ機能が働いています。何度かリロードすると反映が確認できるのですが、それでも開発中はかなり邪魔です。

このキャッシュ機能は以下の設定によって無効化できますので、必要に応じて無効化しましょう。ただし無効化するとレスポンスは遅くなりますのでその点は注意して設定してください。

>設定 > セキュリティ > セッションの設定
>「パフォーマンスを向上させるためにブラウザの安全で永続的なキャッシュを有効にする」を外す

#レポートにパラメータを付与して遷移させるには？

Classicではカスタムボタンを作ってレポートに遷移させる際に、遷移元レコードの情報をパラメータとして付与することで、レポートを絞り込んだ状態で表示ができました。

LEXではClassicと同様のURL定義では動作しません。ですが、Classicで「pv0=」と定義していたところを「fv0=」と定義することでパラメータを渡すことができます。

**help - Lightning Experience での URL パラメータを介したレポートの絞り込み**
https://help.salesforce.com/articleView?id=reports_filter_url.htm&type=5
![](https://resources.help.salesforce.com/images/05776b31d5a51cf1efcc9755a7fc9f32.png)

#ゴミ箱が無いんだけど？

現時点ではLEXではゴミ箱がありません。故にLEXから初めてSalesforceをお使いになられたユーザ様の中には、ゴミ箱の存在すら認知されてない（もしくは認知させてない？）ということもあります。

また、Classicから切り替えて頂いたユーザ様におきましては、通常のご案内としては、ゴミ箱を使いたいときだけClassicに切り替えていただくようご案内しています。

ただし、どうしてもClassicに切り替えるのが嫌だといった場合、グローバル版AppExchangeの以下のアプリを導入することでLEXでもゴミ箱の操作ができるようになります。

**Recycle Bin Manager By Kandisa Technologies**
https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3A00000EJrJuUAL
![](https://appexchange.salesforce.com/servlet/servlet.FileDownload?file=00P3A00000bjq8cUAA)

無料のアプリではありますが、UIが英語だということと、公式サポート対象外という点はご留意の上ご使用ください。

（しかしなぜ標準で実装しないのでしょうか...）

#共有ボタンがないんだけど？

ゴミ箱と同じく現時点ではLEXでは共有ボタンがありません。
こちらについてもグローバル版AppExchangeにてSalesforce Labsより代替アプリが提供されています。

**Lightning Sharing By Salesforce Labs**
https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3A00000EFp0ZUAT

同じく無料のアプリではありますが、UIが英語だということと、公式サポート対象外という点はご留意の上ご使用ください。

（しかしなぜ標準で...）

#任意のメッセージを表示したい

Classicでは、画面上でアラートのような形で強調してユーザに気づきを与えたいといった際に、Visualforceページを作成して、標準レイアウトの中に埋め込んだりして対応してした方もいらっしゃるかと思います。

こちらについてもグローバル版AppExchangeにて、設定でアラートを表示させるコンポーネントが提供されています。Visualforceと違い表示する内容や表示条件を設定ですぐに変更できるのがとてもよいですね。

**Alert Message on any object By CT Consulting**
https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3A00000EOHWbUAP
![](https://appexchange.salesforce.com/servlet/servlet.FileDownload?file=00P3A00000Z9JerUAF)

ちなみにこのコンポーネントは最近まで知らなくて、先日の[匠に聞け!TRAILBLAZERウェブセミナー](http://salesforce.vidyard.com/watch/DjHFJeRSqkMMStgNCZrtyh)を聞いて知りました。このウェビナーは毎回とても為になりますのでおすすめです。

#関連リストを絞り込みたい

Classicでは、レコードタイプ別に関連リストを出したいときなど関連リストのカスタマイズをしたいとき、こちらもやはりVisualforceページを作成して標準レイアウトの中に埋め込んだりしてましたよね。

以下のコンポーネントを利用することで、絞り込み条件やソートの設定を追加した関連リストがおけるようになります。

**Enhanced Lightning Grid By Salesforce Labs**
https://appexchange.salesforce.com/listingDetail?listingId=a0N3A00000EVK8iUAH
![](https://appexchange.salesforce.com/servlet/servlet.FileDownload?file=00P3A00000VkU6CUAV)

#Classicと同じようにダッシュボードを切り替えたい

できればLEXそのままのUIに慣れて頂くに越したことはないですが、ダッシュボードをClassicみたいにクイックに切り替えたいというご利用者はいらっしゃるかと思います。そんな方には以下のコンポーネントが使えるかもしれません。

**Dashboard Pal By Salesforce Labs**
https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3A00000Ecs3hUAB
![](https://appexchange.salesforce.com/servlet/servlet.FileDownload?file=00P3A00000aguMkUAI)


#設定だけで検索画面を構築したい

日本では特に検索画面の文化が根強く、Salesforce導入において検索画面をVisualforceで構築することがよくあります。最近ではグローバル検索に加えて、リストビューでも絞り込みができるようになったので、大分検索性は増したとは思いますが、今後も専用検索画面の需要は尽きないかと考えています。

そんなときに、一からコンポーネントを開発するのではなく、[hrk623さん](https://twitter.com/hrk623)のRecord Hunterというコンポーネントを参考にしてみてください。

**Record Hunter**
https://github.com/hrk623/record-hunter
![Record Hunter](https://github.com/hrk623/record-hunter/blob/master/images/recordhunter.gif?raw=true)

Record Hunterでは検索用コンポーネントと結果一覧のコンポーネントから構成されており、Lightning App Builderで設定するだけで検索画面として利用ができます。

更にLightning Flowと組み合わせることで、検索結果リストの中から複数レコードにチェックを入れて、Flowで処理をさせるようなことも設定だけで可能になります。

こちらに関しても、公式サポート対象外であることをご留意ください。

#おわりに

ざっと書き出してみましたが、気づけばAppExchangeのご紹介が比較的多くなってしまいました。
車輪の再発明は避けるに越したことはないので、ぜひご参考の上、Lightning移行に取り組んでみてください。