Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Salesforce 大規模開発で留意するトピック集

CLB
April 19, 2021
1.1k

Salesforce 大規模開発で留意するトピック集

【オンライン開催】Salesforce Developers Meetup #25 でのスライド資料です。

CLB

April 19, 2021
Tweet

Transcript

  1. 自己紹介 Sato Ryo です。 仕事: チームスピリット で チームスピリット EX を開発しています。

    バックエンド(業務処理の開発担当)です。 Salesforce歴 2 年くらいの初心者です。 趣味: ネコ、サバゲー、キャンプなどなど。
  2. パッケージ分 割を最初から 行う 理由 – Apex コードの文字数は6MB までの制限がある。 – パッケージのアップグレードに失敗する恐れがある。

    – パッケージ の アップグレードインストール時にインス トール時のバックアップ領域が不足することがあり、 「 Dependent class is invalid and needs recompilation」など のエラーが発生する。 – こうなると時の運でインストールができるかできないか が決まる。 – 経験的に、3MBを超えたあたりからパッケージの分割を考え た方が良い。
  3. テストコード でSFオブジェ クトは利用し ない方が良 い? – テストコードでこのようなコードを書く例はありませんか? @isTest static void

    fooTest() { TestData__c data = new TestData__c(); data.value = 'test val 1’; insert data; String actual = getfoo(); System.assertEquals(data.value, actual); }
  4. テストコード でSFオブジェ クトは利用し ない方が良 い? – SFのテストオブジェクトは他のテストと共用です。 – その為、前述のテストは並列実行時にエラーが発生すること があります。

    – 並列実行は解除することができますが、直列実行となる為、 その分時間がかかります。 https://developer.salesforce.com/docs/atlas.ja- jp.apexcode.meta/apexcode/apex_testing_best_practices.htm
  5. テストコード でSFオブジェ クトは利用し ない方が良 い? – isTest(isParallel=true)を利用するとそのテストクラスは並列実行 が有効になります。 – リポジトリパターンを利用してテスト時はMockのリポジトリを

    利用するなど、SFオブジェクトに依存しないテストを作ること も大切です。 @isTest(isParallel=true) private class fooTest { @isTest static void fooTest() { MockedData data = new MockedData(); data.value = 'test val 1’; String actual = getfoo(); System.assertEquals(data.value, actual); } }
  6. 20万件のワナ セレクティブSOQLの条件(公式ドキュメントから抜粋) – セレクティブ SOQL クエリ条件クエリ検索条件の 1 つがイン デックス付き項目にあり、そのクエリ検索条件によって結果 となる行数がシステム定義のしきい値より少なくなる場合、

    そのクエリはセレクティブです。SOQL クエリのパフォーマ ンスは、WHERE 句に使用される 2 つ以上の検索条件がその 条件を満たす場合に改善されます。 – 選択度しきい値は、初めの 100 万件のレコードの 10%、それ 以降のレコードの 5% 未満の、最大 333,333 件です。インデッ クス付き標準項目であるクエリ検索条件がある場合など一部 の状況では、しきい値が高くなる場合があります。また、選 択度しきい値は変化します。 https://developer.salesforce.com/docs/atlas.ja- jp.apexcode.meta/apexcode/langCon_apex_SOQL_VLSQ.htm
  7. 20万件のワナ – SOQL 実行計画 を確認して、フルスキャンになる物がないか 確認しよう。 やり方 1. Help >

    Preferences で Enable Query Plan を有効化 2. Query タブの Query Plan をクリック