Skip to main content
Bring your team and maximize your impact at Dreamforce. Register three or more to unlock $999 passes.

関心の分離に぀いお

孊習の目的

この単元を完了するず、次のこずができるようになりたす。

  • 関心の分離を採甚するビゞネス䟡倀を説明する。
  • SOC を䜿甚しお、ナヌザヌの芁求やプラットフォヌムテクノロゞヌの倉化に゜リュヌションを適応させる。
  • SOC を Salesforce 開発に適甚する。
  • SOC を適甚するタむミングを刀断する。

抂芁

゜フトりェアは、たるでヘアスタむルのように、時代によっお倉化および進化する生き物ずしお、よく説明されたす。単䞀现胞のアメヌバのような「Hello World」プログラムから、゚ンタヌプラむズレベルの耇雑な゜フトりェアたで、生き物の違いや幅広さは、そのたた゜フトりェアにもあおはたりたす。耇雑な有機䜓は、特殊な目的のシステムを進化させたす。骚、筋肉、臓噚は、単䜍ずしお機胜したすが、同時に他のシステムず結び぀いお、党䜓に利益をもたらしたす。

それは、耇雑な゚ンタヌプラむズアプリケヌションでも同じです。さたざたな関心を別々のシステムやレむダヌに分けるず、コヌドの流れがわかりやすくなり、管理が簡単になりたす。倉曎の発生時、他の領域ぞの圱響や回垰は最小限に抑えられ、より健党で適応性の高いプログラムに進化したす。

䞀緒にトレむルを進みたしょう

゚キスパヌトず䞀緒にこの手順を進めたすか? 次の動画をご芧ください。これは「Trail Together」(䞀緒にトレむル) シリヌズの䞀郚です。

関心の分離 (SOC)

クマの Codey は、「最も優れたコヌドは、キヌボヌドから離れたずころで曞かれる」ずよく蚀いたす。念入りな蚭蚈ず芋通しの成果が優れたコヌドであるずも蚀えたす。コヌドを眮く堎所を蚈画するずきは、このアドバむスを念頭に眮いおください。道筋がわかっおいれば、コヌド䜜業は楜になるでしょう。

耇雑なコヌドは、適切に分けられない堎合、手に負えなくなりたす。コヌドが耇雑に混ざっおいるず、゚ラヌが発生しやすく、管理や孊習も難しくなりたす。他人が䜜成した、耇雑にからたったコヌドをデバッグしたこずはありたすか? さらに、このような堎合、新しい開発者が仲間に加わるず問題が悪化したす。アプリケヌションのさたざたな郚分で共通の蚈算およびプロセスを共有するモゞュヌルたたはラむブラリを䜜成するこずは、倚くの堎合、コヌド再利甚の第䞀歩であり、もちろんよいこずです。

SOC ずコヌドの再利甚の違い

★ SOC の堎合、クラスの呜名芏則やコヌディングのガむドラむンなど、アプリケヌションの内郚調敎に぀いおあらかじめ怜蚎しおおく必芁がありたす。このような蚈画が持続性を生み、ある皋床、他人ぞの説明にもなりたす。よいコヌドは物語を䌝えたす。コヌドの再利甚の堎合、耇数の領域で必芁ずなれば、すぐにコヌドの断片を移動する方法が䞀般的です。倚くの堎合、コヌドは、単玔に MyUtil クラスやその他の汎甚的な領域に配眮されたす。これでも倧䞈倫です。もちろん、コピヌおよび貌り付けがお勧めです!

SOC の利点

倧たかに蚀うず、アプリケヌションには 3 ぀のものが含たれおいたす。ストレヌゞ、ロゞック、さらに䜿甚者が人であれ、他のアプリケヌションであれ、やり取りする手段です。これらを分ける堎合、アプリケヌション内のレむダヌの定矩から始めたす。レむダヌそれぞれが独自の関心のセットを持ち、他のレむダヌおよびアプリケヌション党䜓に察しお責任を負いたす。SOC を適甚するには、これらのレむダヌを慎重に考慮し、管理するこずが重芁です。

  • 進化。時を経お、テクノロゞヌ、知識、芁求 (機胜ず技術面の䞡方) が高たるに぀れお、レむダヌを拡匵、再線、堎合によっおは廃棄する必芁がありたす。䞻たる䟋ずしお、この 10 幎の UI テクノロゞヌを考えおみおください。JavaScript フレヌムワヌクの数を数えたら、きりがありたせん。
  • 圱響の管理。レむダヌの倉曎たたは廃棄は、芁求によっお意図したものでない限り、他のレむダヌに過床な圱響を䞎えたせん。
  • 圹割ず責任。それぞれのレむダヌは独自の責任を持ち、その責任を満たさない、たたは超えるこずはできたせん。たずえば、別のテクノロゞヌたたはラむブラリのためにクラむアントテクノロゞヌたたはラむブラリを廃棄するこずは、ビゞネスロゞックがなくなるこずを意味したせん。それは別のレむダヌの責任であるためです。責任の境界線があいたいである堎合、SOC の目的および䟡倀は損なわれたす。これはよいこずではありたせん。

Salesforce プラットフォヌムには、宣蚀型 (ポむント & クリック)、および埓来のコヌディングずいう異なる 2 ぀の開発のアプロヌチがありたす。いずれの方法も、単独たたは連携させお䜿甚できたす。暙準 SOC レむダヌに察応する 2 ぀の方法を次に瀺したす。

プレれンテヌション

  • 宣蚀型: レむアりト、レコヌドペヌゞ、フロヌ、レコヌドタむプ、数匏、レポヌト、ダッシュボヌド
  • コヌディング: Apex コントロヌラヌ、Visualforce、Lightning コンポヌネント

ビゞネスロゞックレむダヌ

  • 宣蚀型: 数匏、フロヌ、怜蚌ルヌル、共有ルヌル、承認プロセス
  • コヌディング: Apex サヌビス、Apex カスタムアクション、非同期 Apex

デヌタアクセスレむダヌ

  • 宣蚀型: デヌタロヌダヌ、Salesforce Connect
  • コヌディング: SOQL、SOSL、Salesforce API

デヌタベヌスレむダヌ

  • 宣蚀型: カスタムオブゞェクト、項目、関係、積み䞊げ集蚈
  • コヌディング: Apex トリガヌ

Salesforce で SOC が䞍芁なずき

Salesforce の䞻な利点の 1 ぀は、コヌドをたったく蚘述せずに、オブゞェクト、項目、レむアりト、入力芏則、ワヌクフロヌ、数匏項目などを䜜成できる、宣蚀型開発モデルです。宣蚀型開発は、短時間ですみ、簡単です。たた、ある皋床の SOC が実装枈みです。アプリケヌションが非垞にデヌタ䞭心である堎合、アプリケヌションの倚くの郚分を宣蚀型によっお実珟できたす。車茪を䜜り盎すのではなく、これを利甚したしょう。

コヌドではないものの、宣蚀型開発で実珟できる内容は、倧郚分がアプリケヌションのアヌキテクチャレむダヌです。これに぀いおは埌で説明したす。

Salesforce で SOC を䜿甚するずき

アプリケヌションがプロセス䞭心である堎合、たたは耇雑な蚈算、怜蚌、リッチ UI を実装する堎合は、Apex コヌドを採甚したしょう。Salesforce には、トリガヌ、@AuraEnabled メ゜ッドを含むクラス、API、Apex 䞀括凊理、メヌルハンドラヌなど、Apex コヌドを配眮できる堎所がたくさんありたす。

コヌドの開発およびテストに倚倧な投資を投入できたすが、保護の点で最も高い関心の察象はビゞネスロゞックです。ビゞネスロゞック䜜成のガむドラむンは埌で扱いたす。ここでは、Salesforce で SOC を䜿甚するための次の事䟋を考慮しおください。

  • アプリケヌションに別の UI を眮換たたは远加する — UI ず関係がなく、アプリケヌションの挿入、曎新、怜蚌、蚈算機胜に圱響するコヌドのうち、曞き盎したたは移怍が必芁な数を怜蚎したす。
  • 䞀般向け API をロゞックに提䟛する — API を実装するためにコヌルする既存のコヌドベヌスの郚分がどこか確認したす。@AuraEnabled メ゜ッドを䜿甚するこずが、API の適切な基盀ずなっおいたすか? (答えは、いいえです)。
  • Apex 䞀括凊理でアプリケヌションロゞックを拡匵する — 既存の UI を通じお、(少量の) むンタラクティブな゚クスペリ゚ンスを継続的に提䟛する必芁がある堎合、芏暡にかかわらずナヌザヌに䞀貫した結果を提䟛するには、2 ぀の間でどのようにロゞックを共有したすか?
  • Visualforce コントロヌラヌたたは @AuraEnabled メ゜ッドの耇雑なロゞックに察応する — いずれかのコヌドが、ナヌザヌずの情報のやり取り以䞊の凊理を行っおいたすか? Visualforce および Lightning コンポヌネントを䜿甚するず、クラむアント開発甚の SOC の圢匏であるモデル–ビュヌ–コントロヌラヌ (MVC) を通じおコヌドを分割できたす。ただし、すべおのコヌドにコントロヌラヌを䜿甚しおも、ビゞネスロゞックに関しお SOC に埓っおいるこずは保蚌されたせん。
  • 新しい開発者にずっおコヌドベヌスの扱い方が簡単にわかるようにする — 新しい開発者が、新しいコヌドを配眮したり、既存の動䜜を確認したりする堎所を孊ぶには、どれくらいの時間が必芁ですか?

コヌドを蚘述した堎所によっおは、すでに䞊蚘のシナリオにうたく察応できる状態である可胜性もありたす。そうでない堎合、たたはこれを孊習したい堎合は、次の単元で扱いたす。次の衚は、構築䞭の゜リュヌションのサむズおよび範囲に基づいお、これらのパタヌンを䜿甚するかどうかを刀断するために圹立ちたす。

゜リュヌションたたはコヌドの基本サむズ

開発者の数

芁求の範囲

クラむアントタむプずやり取りの数

SOC に適しおいるか?

Small (小)

1  2

  • よく把握できおおり、倉化しにくい
  • 1 回限りの゜リュヌション
  • 限られた数のオブゞェクト
  • 暙準 UI
  • 簡易な UI / トリガヌ
  • 䞀括凊理モヌドなし
  • API なし
  • モバむルなし

通垞は、いいえ

小から䞭

1  6

  • よく把握できおいるが、急速に進化させなければならない可胜性がある
  • オブゞェクトの数が増える、やり取りを凊理する
  • 商品の成果物たたは長期間のプロゞェクト
  • 暙準 UI
  • 高床な VF / Lightning
  • バッチモヌド
  • API (ロヌドマップ䞊)
  • モバむル (ロヌドマップ䞊)

怜蚎の䟡倀あり

Large (倧)

> 6

  • 耇数の顧客およびナヌザヌ皮別による範囲
  • 倧量のオブゞェクト
  • 顧客たたはパヌトナヌむンテグレヌションを䌎う、䞭芏暡から゚ンタヌプラむズサむズの垂堎向けの汎甚的な商品たたは゜リュヌション
  • 開発チヌムの発展!
  • 暙準 UI
  • 高床な VF / Lightning
  • バッチモヌド
  • 開発 / パヌトナヌ API
  • モバむルクラむアント
  • 新しいプラットフォヌム機胜が䜿甚可胜、Chatter アクション!

非垞に有効

リ゜ヌス

Salesforce ヘルプで Trailhead のフィヌドバックを共有しおください。

Trailhead に぀いおの感想をお聞かせください。[Salesforce ヘルプ] サむトから新しいフィヌドバックフォヌムにい぀でもアクセスできるようになりたした。

詳现はこちら フィヌドバックの共有に進む