思い出いっぱい、夢いっぱい、荷物もいっぱいで途方に暮れている讃岐です。
私は現在、サンフランシスコで開催されているSalesforceのイベントであるTrailheaDXに参加しています。
サンフランシスコでのSalesforceのイベントといえばDreamforceという年次カンファレンスが有名ですが、TrailheaDXは主にラーニングを目的としており、様々な機能の使い方を学べるイベントとなっております。
テラスカイブログではカンファレンスの1日目について他メンバーが記事にしてくれておりますので、私は早くも最終日となる2日目についてレポートさせて頂きます。
通常弊社のブログ記事は特定の機能やテーマに絞って記載していくことが多いのですが、今回は参加レポートとして様々な情報を雑多な状態のままお伝えすることで、皆様にもイベントでの臨場感を味わって頂ければと思います。
決して1つのテーマに絞るとネタが薄いとか大人の事情ではありませんので、予めご了承ください。。
なお、今回記載する情報の中にはSalesforceの将来的な機能もございます。新機能については正式なリリースノートへの記載や実際にリリースされてから、改めてご確認ください。
私は現在、サンフランシスコで開催されているSalesforceのイベントであるTrailheaDXに参加しています。
サンフランシスコでのSalesforceのイベントといえばDreamforceという年次カンファレンスが有名ですが、TrailheaDXは主にラーニングを目的としており、様々な機能の使い方を学べるイベントとなっております。
テラスカイブログではカンファレンスの1日目について他メンバーが記事にしてくれておりますので、私は早くも最終日となる2日目についてレポートさせて頂きます。
通常弊社のブログ記事は特定の機能やテーマに絞って記載していくことが多いのですが、今回は参加レポートとして様々な情報を雑多な状態のままお伝えすることで、皆様にもイベントでの臨場感を味わって頂ければと思います。
決して1つのテーマに絞るとネタが薄いとか大人の事情ではありませんので、予めご了承ください。。
なお、今回記載する情報の中にはSalesforceの将来的な機能もございます。新機能については正式なリリースノートへの記載や実際にリリースされてから、改めてご確認ください。
Integration Cloud
Integration CloudはSalesforceと他のアプリケーションを繋ぐための新しいサービスです。
1日目のブログ記事にも書かれていますが、やはり今回の大きな発表はコレなので、ここでも改めて触れておきましょう。
ただし、既に本家ブログに紹介されているので、詳しくは下記をご覧ください!
1日目のブログ記事にも書かれていますが、やはり今回の大きな発表はコレなので、ここでも改めて触れておきましょう。
ただし、既に本家ブログに紹介されているので、詳しくは下記をご覧ください!
Salesforce Integration Cloud発表 | Developer Force Blog
Salesforce 本家ブログ
現地ならではの情報として、デモブースで担当者に話しを聞いてみたところ、カスタムオブジェクトなどを接続先として使うこともできるけれども、リリース時期や価格、タイミング、接続先が社内ネットワークにある場合のファイアーウォールの越え方など、様々な部分がまだ未定とのことでした。
項目同士をマッピングする画面なども見せてもらいましたが、これ自体も完全にデモ用のアプリとのことで、まだまだリリースまで時間はかかるのかなといった印象です。
秋のDreamforceくらいにはもう少し詳しい発表があるかもしれませんね。
項目同士をマッピングする画面なども見せてもらいましたが、これ自体も完全にデモ用のアプリとのことで、まだまだリリースまで時間はかかるのかなといった印象です。
秋のDreamforceくらいにはもう少し詳しい発表があるかもしれませんね。
Switching It Up with Apex
ここからは細かいセッション系の内容についてお伝えしていきます。
こちらはタイトルの通り、みんな大好きApexコードに関するセッションでした。
実はApexのコンパイラが新しいものになる(なった?)そうで、それによりいくつかの改善がされるそうです。
・みんなお待たせ?Switch文による判定が使えるようになるよ~
・SOQLのcount()は今まで取得したレコード件数だったけどsingle row queryになる!
・API参照名からRecordTypeInfoを取得できるように!
・デプロイ、コンパイル、テスト周りの改善でパフォーマンス向上!
・Query Builderの実装。FLSもチェックしてくれる!下記はサンプル
こちらはタイトルの通り、みんな大好きApexコードに関するセッションでした。
実はApexのコンパイラが新しいものになる(なった?)そうで、それによりいくつかの改善がされるそうです。
・みんなお待たせ?Switch文による判定が使えるようになるよ~
・SOQLのcount()は今まで取得したレコード件数だったけどsingle row queryになる!
・API参照名からRecordTypeInfoを取得できるように!
・デプロイ、コンパイル、テスト周りの改善でパフォーマンス向上!
・Query Builderの実装。FLSもチェックしてくれる!下記はサンプル
fflib_QueryFactory qf = new fflib_QueryFactory(Contact.SObject.Type) .assertIsAccesible() // CRUD check on Contact .setEnforceFLS(true) .selectField('Description'); // FLS check List<Contact> results = Database.query(qf.toSOQL()); // レコード取得
query builders sample
LightningだEinsteinだと言われていますが、Apexさんもちゃんと進化しています!
Apex Testing Deep Dive
こちらはApexのテストに関するセッションでした。テストを書く時に心がけておきたいことなどを紹介しています。
まずはテストのためのプロダクションコードとして
・小さいメソッドにしよう
・メソッドを20行以下に保とう
・メソッドの引数を最小限にしよう(4つを越えてはならぬ)
・Visualforceのコントローラーは単一のラッパーオブジェクトを使用するように
・メソッド名を分かりやすく
テストコードの書き方として
・基本の流れは、テストデータ準備⇒テスト実行⇒結果の検証
・seeAllData=trueは使うな!テストデータは自分で用意しろ
・テストデータの準備にはTestFactory使うといい( http://bit.ly/1c5exnV )
・結果の検証はAssertsで
・startTest()でDML,CPU Timeなど様々なガバナ累計値をリセットできる
・stopTest()で非同期コードを終了させる
・つまりテスト実行の前後にstartTestとstopTestを入れろ
・結果が期待されるポジティブなテストをする
・例外やエラーなどネガティブなテストをする
・プロファイルや権限セットなどを変えたセキュリティモデルのテストをする
またそれ以外にはテストに便利なツールとしてVS CodeのExtensionであるApex Debugger( https://goo.gl/JdsYfs )も紹介されていました。
余談ですがTrailheaDXのプレゼンターの方達を見ていると、VS Codeを使っている人がかなり多かった印象です。7割がVS Code、残りがDeveloper Consoleな感じでしょうか。
まずはテストのためのプロダクションコードとして
・小さいメソッドにしよう
・メソッドを20行以下に保とう
・メソッドの引数を最小限にしよう(4つを越えてはならぬ)
・Visualforceのコントローラーは単一のラッパーオブジェクトを使用するように
・メソッド名を分かりやすく
テストコードの書き方として
・基本の流れは、テストデータ準備⇒テスト実行⇒結果の検証
・seeAllData=trueは使うな!テストデータは自分で用意しろ
・テストデータの準備にはTestFactory使うといい( http://bit.ly/1c5exnV )
・結果の検証はAssertsで
・startTest()でDML,CPU Timeなど様々なガバナ累計値をリセットできる
・stopTest()で非同期コードを終了させる
・つまりテスト実行の前後にstartTestとstopTestを入れろ
・結果が期待されるポジティブなテストをする
・例外やエラーなどネガティブなテストをする
・プロファイルや権限セットなどを変えたセキュリティモデルのテストをする
またそれ以外にはテストに便利なツールとしてVS CodeのExtensionであるApex Debugger( https://goo.gl/JdsYfs )も紹介されていました。
余談ですがTrailheaDXのプレゼンターの方達を見ていると、VS Codeを使っている人がかなり多かった印象です。7割がVS Code、残りがDeveloper Consoleな感じでしょうか。
Switch with Style! Lightning Stylesheets for Visualforce
UIをClassicからLightning Experienceに切り替えたものの、既存のVisualforceのデザインがClassicのままとなっており、統一感が出ていないなんてことはないでしょうか。
こちらのセッションでは<apex:page lightningStylesheets="true">にすることで、既存のVisualforce画面が簡単にLightningなデザインに切り替わりますよ、というご紹介がされていました。
これを使うことで多くのVF標準コンポーネントの外観を切り替えることができます。
ただし、一部のコンポーネントや標準コンポーネント以外に関しては対応していないので、その場合は<apex:slds />タグを使い(常に最新の!)Lightning Design Systemを使ってデザインすることができます。
また以下のようにして、ユーザがLEXのテーマを使っている時だけ適用するようにしましょう。
こちらのセッションでは<apex:page lightningStylesheets="true">にすることで、既存のVisualforce画面が簡単にLightningなデザインに切り替わりますよ、というご紹介がされていました。
これを使うことで多くのVF標準コンポーネントの外観を切り替えることができます。
ただし、一部のコンポーネントや標準コンポーネント以外に関しては対応していないので、その場合は<apex:slds />タグを使い(常に最新の!)Lightning Design Systemを使ってデザインすることができます。
また以下のようにして、ユーザがLEXのテーマを使っている時だけ適用するようにしましょう。
<apex:slds rendered="{! $User.UITeme == 'Theme4d' }" />
SLDS rendered
なお、Theme4dはLEXを使っている場合の名称です。
Advanced Lightning Components
こちらのセッションでは基本的なLightning Component開発を理解している方向けに、もう少し高度な内容を話していました。
まずはパフォーマンスに関する話し。
Lightningでサーバ側の処理を呼び出す場合、actionをキューに入れて実行させますが、このactionをaction.setStorable();という風に保存可能と定義することでキャッシュに保存され、次に実行する場合にクライアント側のストレージから値を取得してくれ、パフォーマンスが向上するということです。
まずはパフォーマンスに関する話し。
Lightningでサーバ側の処理を呼び出す場合、actionをキューに入れて実行させますが、このactionをaction.setStorable();という風に保存可能と定義することでキャッシュに保存され、次に実行する場合にクライアント側のストレージから値を取得してくれ、パフォーマンスが向上するということです。
action.setStrable()について、詳しくはリファンレンスをご確認ください。https://goo.gl/obgozg
また、Lightning Data Service(force:recordData)を使った場合もクライアント側にキャッシュ化され、複数コンポーネントで同じレコードにアクセスする場合などにパフォーマンスの向上が見込まれるということでした。
続いてデータバインディングについて。
通常のバインディングの書き方は {!xxxxx} とすることで、このxxxxxの中身の値に変更がある場合、参照先に波及しますが、バインディングしたくない時は {#xxxxx} とすることで、保持している値を変更した時に自動的に波及しなくなるという話しもありました。ちょっとしたテクニックですね。
また、Lightning Data Service(force:recordData)を使った場合もクライアント側にキャッシュ化され、複数コンポーネントで同じレコードにアクセスする場合などにパフォーマンスの向上が見込まれるということでした。
続いてデータバインディングについて。
通常のバインディングの書き方は {!xxxxx} とすることで、このxxxxxの中身の値に変更がある場合、参照先に波及しますが、バインディングしたくない時は {#xxxxx} とすることで、保持している値を変更した時に自動的に波及しなくなるという話しもありました。ちょっとしたテクニックですね。
まとめ
本当は他にもLightning Testing ServiceやUnlocked Packagesなど、おそらく皆さんの興味を惹きそうなセッションも参加したのですが、わりと緩めの話しの内容というのと、あまりコードが出てこず私の英語ヒアリング力能力では怪しさ満点になりそうだったので割愛させて頂きました・・!
ということで、TrailheaDXでの様々な情報を雑多にお伝えさせて頂きました。
今年のTrailheaDXはテラスカイからは3人、日本全体でも私が把握している限りでは15名の参加ということで、Dreamforceと比べるとまだまだ日本での認知度は低いかもしれません。
しかし、Dreamforceよりもワークショップやハンズオンなどが多く開催しており、まさにSalesforceを学ぶためのイベントと言えます。
ぜひとも来年は、日本からより多くの方に参加して頂き、多くのアストロ人形・・・もとい多くの情報を持ち帰ってきて頂き、みんなでSalesforceを活用するための材料としたいものです。
そのためには私自身も今回こうしてブログを書いたり、あるいは様々な社外コミュニティで今回の体験を共有するつもりでいますので、楽しみに待っていてください。
それでは、日本でお会いしましょう!
ということで、TrailheaDXでの様々な情報を雑多にお伝えさせて頂きました。
今年のTrailheaDXはテラスカイからは3人、日本全体でも私が把握している限りでは15名の参加ということで、Dreamforceと比べるとまだまだ日本での認知度は低いかもしれません。
しかし、Dreamforceよりもワークショップやハンズオンなどが多く開催しており、まさにSalesforceを学ぶためのイベントと言えます。
ぜひとも来年は、日本からより多くの方に参加して頂き、多くのアストロ人形・・・もとい多くの情報を持ち帰ってきて頂き、みんなでSalesforceを活用するための材料としたいものです。
そのためには私自身も今回こうしてブログを書いたり、あるいは様々な社外コミュニティで今回の体験を共有するつもりでいますので、楽しみに待っていてください。
それでは、日本でお会いしましょう!
25 件