コンポーザブル - パッケージ化可能

連動関係管理パターン

適切に設計された適応性 → コンポーザブル → パッケージ化可能 → 連動関係管理の詳細

Where to look?
商品領域 | ロケーション
What does good look like? (良いものは?)
パターン
プラットフォーム | 設計標準 ✅ 連動関係の導入・変更基準が存在する
プラットフォーム | 設計標準 ✅ 連動関係の申告基準が存在する
プラットフォーム | パッケージ ✅ パッケージ間でメタデータが重複しない
プラットフォーム | パッケージ ✅ パッケージ開発では、初期段階の開発作業はすべてスクラッチ組織で実施
プラットフォーム | ソース管理 ✅ 開発者はソース管理からスクラッチ組織を作成し、パッケージメタデータを正常にリリースできます。
プラットフォーム | ソース管理 ✅ ロック解除済みパッケージのパッケージバージョンでは、別名 (LATEST) を使用してsfdx-project.jsonマニフェストで連動関係を宣言します。

疎結合パターン

適切に設計された適応性 → コンポーザブル → パッケージ化可能 → 疎結合

Where to look?
商品領域 | ロケーション
What does good look like? (良いものは?)
パターン
プラットフォーム | Apex ✅ 動的な実行時情報に依存するメソッドは、適切なカスタムメタデータ型を参照します。
プラットフォーム | Apex ✅ Common Services とボイラープレートコードは、抽象または仮想 Apex クラスを使用して定義
プラットフォーム | 設計標準 ✅ (省略可能) カスタム設定の承認済み使用事例がすべて明記されている (ある場合)
プラットフォーム | 設計標準 ✅ 命名規則では、パッケージ単位の表記方法について説明します。
プラットフォーム | 設計標準 ✅ 現在定義されているすべてのパッケージ単位 (および関連する命名規則) のリストを検索して見つけることができます。
プラットフォーム | 設計標準 ✅ パッケージ単位の追加・変更提案基準が存在する
プラットフォーム | 組織 ✅ カスタムメタデータ型は、コードや宣言型カスタマイズの動的で実行時の情報を提供します。
プラットフォーム | 組織 ✅ コードまたは宣言型カスタマイズの動的かつ実行時情報を提供するカスタムオブジェクトが存在しない
プラットフォーム | 組織 ✅ カスタム設定が存在しない、またはカスタム設定がほとんど存在せず、パッケージ化された機能に関連するものがない
プラットフォーム | パッケージ ✅ 本番または Sandbox で未管理パッケージが定義されていない
プラットフォーム | パッケージ ✅ 組織依存のロック解除済みパッケージは、初期段階または概念実証実験にのみ使用されます。
プラットフォーム | ソース管理 ✅ package.xmlファイルは、初期段階または概念実証プロジェクトのマニフェストにのみ表示されます。

連動関係管理アンチパターン

適切に設計された適応性 → コンポーザブル → パッケージ化可能 → 連動関係管理の詳細

Where to look?
商品領域 | ロケーション
What to avoid?
アンチパターン
プラットフォーム | 設計標準 ⚠️ 設計標準が存在しない、または連動関係の宣言方法を取り扱っていない
プラットフォーム | パッケージ ⚠️ 異なるパッケージでメタデータを複製することで連動関係を回避
プラットフォーム | パッケージ ⚠️ 早期パッケージ開発は Developer Sandbox で行われるか、早期パッケージ開発はスクラッチ組織では実行できません。
プラットフォーム | ソース管理 ⚠️ 開発者がソース管理を使用してスクラッチ組織で正常に作業できない
プラットフォーム | ソース管理 ⚠️ ロック解除済みパッケージのパッケージバージョンがsfdx-project.jsonマニフェストで明示的に宣言されている (LATESTの別名がない)

疎結合アンチパターン

適切に設計された適応性 → コンポーザブル → パッケージ化可能 → 疎結合

Where to look?
商品領域 | ロケーション
What to avoid?
アンチパターン
プラットフォーム | Apex ⚠️ 共通サービスとボイラープレートコードが他のクラスと容易に区別できない
プラットフォーム | Apex ⚠️ メソッドで動的で実行時の情報にアクセスするための一貫したアプローチが使用されていないか、メソッドがカスタムオブジェクトで実行時の動作情報を照会しているか、コードでカスタム設定を参照していない
プラットフォーム | Apex ⚠️ クラスやメソッド間の内部参照は追跡が難しく、コードベース全体で一貫性がありません。
プラットフォーム | 設計標準 ⚠️ 設計標準が存在しない、またはパッケージ単位と使用事例を扱っていない
プラットフォーム | 組織 ⚠️ カスタム設定が使用される
プラットフォーム | 組織 ⚠️ カスタムオブジェクトは、コードまたは宣言型カスタマイズの動的で実行時の情報を提供するために存在する
プラットフォーム | 組織 ⚠️ カスタムメタデータ型は、コードおよび宣言型カスタマイズの動的で実行時の情報を提供するのに使用されない (または一貫して使用されない)
プラットフォーム | パッケージ ⚠️ 未管理パッケージが本番または Sandbox で定義されている
プラットフォーム | パッケージ ⚠️ すべてのパッケージが組織依存のロック解除済みパッケージである
プラットフォーム | ソース管理 ⚠️ package.xml ファイルはメタデータリリースの制御に使用されます。