【サクッと読める:読了まで2分】
こんにちは!
代表の阿部です。
今日は、SalesforceのフローとApexの境界線について、書いていこうと思います!具体的な数値は、各組織によって異なる為、割愛しますが、観点についてです。
必要な知識ですが、意外と取り上げている人少ない気がするので。
目次
【サクッと読める:読了まで2分】
この知識がなぜ必要か?
具体的な判断基準(個人の感想です)
最後に
この知識がなぜ必要か?
結論、設計において重要だからです。
基本的にApexで構築する場合、フローで構築する場合の倍くらいの工数を頂きます。そしてその後の保守にも専門知識が必要になります。
Apex構築のメリット・デメリットは以下のような感じでしょうか。
- メリット
- 柔軟な処理が可能
- 大量の処理が可能
- 複雑な処理が可能
- 調査、Grepがしやすい
- 処理順や、処理内容のコントロールがしやすい
- デメリット
- 工数がかかる
- テストクラスが必要(メンテも)
- 設計書がほぼ確実に必要(メンテも)
- 何ならテスト仕様書もあった方がいい(メンテも)
- 専門性が必要
つまり、Apexで開発する事で、ほとんどの場合、顧客要望は満たせるものの、工数はかかるし、メンテも必ずお金がかかるよってことです。
そこで、中小規模だと、なるべく標準機能での構築が求められ、最悪Apexっていう感覚のプロジェクトが多いです。
そんな背景から、「じゃあ、フローとApexの境界線ってどこなの?」という切り分けスキルがあるといいかも知れませんです。
具体的な判断基準(個人の感想です)
もう、まとめちゃいます!
Apexが必要なパターンは以下です。(個人の感想)
- 要件が複雑
- 大量の値同士の突合がある
- 複雑なエラーハンドリングを行う
- 例外処理が多い
- 分岐のネストが深くなる
- 同じオブジェクトで大量のトリガー条件とそれぞれの処理がある
- フローだとわけわかんなくなります
- オブジェクト構成が複雑で、トリガーがたくさんある
- ガバナに抵触する可能性が高い
- 基本的にフローのガバナ制限の方が貧弱です
- データ量が多く、ガバナに抵触する可能性が高い
- ユーザー数が多くガバナに抵触する可能性が高い
- 再起処理がある
- カスタムの画面構築が必要
- トリガーでコールアウトを行う
- 非同期処理を行う
- Salesforceのファイルをトリガーとする処理を行う
らへんを僕は、Apexの境界線としています。他にもたくさんあるはずですが、ぱっと思い浮かびません。笑
フローでも頑張れば出来そうだけど、Apexの方が確実に構築が早く、保守性も高い場合も多々あります。
最後に
以上になります!
この知識って、地味ですが顧客に本当に喜ばれます。
小中規模であれば、大抵はフローで問題ないですが、顧客が求めているのは、フローで構築出来るという根拠と、見通しです。
最初はフローで問題なくても、1年後にすぐに大量のデータに育ち、Apexに移すリファクタリングが必要であれば、最初からApexで構築してあげた方が親切ですし、先方IT担当者の方のメンツも保てます。
てことで、Developer目指す方は、この辺勉強してみてくださいね!
ではでは!