dackdive's blog

新米webエンジニアによる技術ブログ。JavaScript(React), Salesforce, Python など

Salesforce Trailhead: Lightning Experience Developmentのメモ

これやってみた。

f:id:dackdive:20151106170218p:plain

気になったとこだけかいつまんでメモしておく。

(以下、Visualforce は VF、Lightning Experience は LEX と表記してます)

1. User Interface Development Considerations

LEX と従来のユーザーインターフェースSalesforce Classic)との違いについて。

Salesforce Classic は page-centric なアプリケーションモデル、LEX は app-centric なアプリケーションモデルという表現をしている。
app-centric という表現がわかりづらいけど JavaScript を利用してクライアントサイドで UI を描画するいま主流になっている web アプリケーションのことを指してる。

後半はどんなアプリケーションを開発している/したいか、に応じて VF と Lightning Components のどちらを選択すべきかという話や
組織における役割(SI、ISV Partner、社内シスアド、etc.)に応じてどちらを選択すべきかみたいな話。


2. Using Visualforce in Lightning Experience

既存の VF を LEX で使うときの注意点とか

だいたい動くけど注意や修正が必要なもの (What Works, But Needs Updating and Testing)
  • LEX 内の VF は iframe に埋め込まれた形になる
    • ので、window には直接アクセスできない
  • Force.com Canvas app を使った VF の場合:
    • Canvas app も iframe を使ってるため、(問題ないとは思うが) よくテストした方がいい
  • JS の Remote Objects や JavaScript remoting を使った VF の場合:
    • 他の Salesforce API を使っていなければうまく動くはず
    • 使ってる場合は cross-domain request を有効にするよう認証コードの update が必要 (?)
できないこと (What Doesn't Work)
  • オブジェクトのタブ、リスト -> オブジェクト ホームへ
    • オブジェクトのタブ、リスト表示はすべて左側メニューからオブジェクトを選択した時のリストに統合
    • リスト表示からのアクション(ボタンのこと?) は不可能
  • VF の showHeadershowSidebar は意味なし
  • LEX のサイドバーに VF を追加することは不可, ホームへの追加も不可
  • 関連リスト系タグがほとんど使えない?
  • LEX ページを pdf としてレンダリングするのは不可
見た目の話 (That Look-and-Feel Thing)
  • これまでに開発した VF ページは LEX でどういう見た目になるの?という話
  • ヘッダー、サイドバーがなくなる以外はこれまでと同じ


3 Using Lightning Components in Lightning Experience

あんまり重要な話はなかった。

Lightning Component のメリット

...同意できるものもそうでないものも。

Lightning Component はどこで使える? (Considerations for Use)
  • Standalone Apps
    • Lightning App Builder で Lightning ページを作る
  • Salesforce1
    • サーバーとの通信が少ない Lightning Component はモバイル向き
  • Visualforce Pages
    • VF 内にマークアップを書くことで簡単に Lightning Component を埋め込める
    • いきなり全部じゃなくても段階的に Lightning Component に置き換えることができる


4. ISVs, Packaging, and AppExchange

ISV パートナーが気にするべき点について。

ISV 向け機能で LEX 非対応のもの
  • 環境ハブ
  • Trialforce
  • LMA
  • Channel Order App (COA): 知らない
  • Usage Metrics Visualization App

要するにほとんど対応してないということです。

アプリケーションのパッケージング

パッケージングの方法についてはこれまで通り。ただし LEX でのパッケージ作成は非対応。

AppExchange と LEX

自分たちのパッケージが LEX 環境で正常に動くのかどうか、という一番気になるポイント。

結局のところはっきりとしたことは書いてなくて

Depending on the functionality of your apps, there’s a chance that they aren’t compatible with Lightning Experience.

要するに自分たちのアプリの機能によっては LEX と互換性ないよ、という当たり前のこと。
LEX でサポートしてない機能を使ってるアプリなどは要動作確認。

興味深いのは、

similar to the way that your app undergoes a security review when you list it on AppExchange, it’s also reviewed for Lightning Experience readiness. Apps supported in Lightning Experience get a “Lightning Ready” sash on their listing.

セキュリティレビューと同じように「LEX に対応しているかどうか」がチェックされ、
LEX 対応しているとみなされると AppExchange で "Lightning Ready" という帯がつくらしい。

実際、アメリカの方の AppExchange だと既にそういう帯がついたアプリが確認できた。

f:id:dackdive:20151106184109p:plain

Lightning Ready で検索するとこちらのブログ記事に行き着いて

Developer Blog | Salesforce Developers

そこの Resources にパートナー向けのリンクが記載されている(ログイン必要)。
http://p.force.com/lightningready

さらに、そこに貼ってあったスライドは SlideShare で公開されてたのでここに貼っておく。

スライド47あたりからが該当する部分。

f:id:dackdive:20151106184714p:plain f:id:dackdive:20151106184720p:plain

フォントが指定されてる。あとヘッダーとサイドバーは表示しないようにする。

f:id:dackdive:20151106184726p:plain

Lightning Ready 認定を受けるまでのステップ。

注)現在もこういった認定を受け付けているのかどうかは不明です。上記パートナー向けリンクなどを参照のこと。


5. Understanding Changes to Other Development Tools

Salesforce の様々な機能について、LEX の影響を受けるかどうか

  • インストールしたパッケージ (Installed Pacakges)
  • Apex
  • 認証・セキュリティ (Authentication and Security)
  • キャンバスアプリケーション (Canvas)
  • Salesforce1
  • Mobile SDK

全部「これまで通り動くよ!」とのことだったけど、気になった点いくつかメモ。

インストールしたパッケージ (Installed Pacakges)
  • たぶん(maybe) 問題なく動く
  • 本当に LEX に対応していると、AppExchange 上で "Lightning Ready" というタグがつく
    • 3章を参照
認証・セキュリティ (Authentication and Security)
  • LEX でもセキュリティが再優先事項(top priority) なのは変わらず
  • アプリケーションランチャーはアクセス権限に関わらず全ユーザーがアクセスできるので注意
    • どういう時に問題になるのかいまいちわからず
キャンバスアプリケーション (Canvas)
  • これまで通り Visualforce, Salesforce1, その他サポートされているところに埋め込むことは可能
  • Lightning Component に埋め込むことも可能
    • やり方どっかに書いてたっけ...?