コンテンツにスキップ

カスタムオブジェクト

ほかに 28 言語で読めます

English · Español · Português (Brasil) · Français · Deutsch · Italiano · 한국어 · 简体中文 · Português (Portugal) · 繁體中文 · Bahasa Indonesia · Türkçe · Polski · Tiếng Việt · ไทย · Nederlands · العربية · עברית · Українська · हिन्दी · Русский · Svenska · Dansk · Norsk bokmål · Suomi · Español (México) · Français (Canada) · Deutsch (Schweiz)

In a truck body shop, a custom white box body hangs on chains above a standard truck chassis, already fitted with its doors, lights and mud flaps.
AI で生成した画像

モジュール3/10:Data Architectコース第3章「Salesforceのデータアーキテクチャ」。各モジュールは単独でも読めます。 前へ:母船を見よ:標準データモデル · 次へ:このデータはどこにあるのか?

このモジュールが答える問い: Salesforceにないとき、自分でオブジェクトを作ると実際には何が手に入るのか?

前のモジュールでは、Salesforceがすでに作ったものを見ました。必要なものがないこともあります。Steve Truckingはトラックを走らせていますが、標準のトラック(Truck)オブジェクトはありません。そこで自分で作ります。カスタムオブジェクトです。

このモジュールで見てほしいのはこういうことです。カスタムオブジェクトは、モジュール1のほかのすべてのものと同じようにメタデータとして作られ、存在した瞬間から一連の標準機能がついてきます。空のテーブルではありません。そして、それを作るために入力する画面は、気づいているかどうかにかかわらず、アーキテクチャ上の問いを投げかけています。

新規カスタムオブジェクトの画面

Section titled “新規カスタムオブジェクトの画面 ”

設定 → オブジェクトマネージャー → 作成 → カスタムオブジェクトに進むと、長いフォームが1つ表示されます。たいていの人は最初の2つの欄を埋めて保存をクリックします。ペースを落として、読んでみましょう。

表示ラベルと表示ラベル(複数形)。 「Truck」と「Trucks」。これらはユーザーがタブ、ページレイアウト、レポートで目にするものです。後から変えても、それほど痛みはありません。

オブジェクト名。 これは違います。これはAPI参照名で、コード、連携、レポート、そして今ではエージェントが使う名前です。「Truck」と入力すると、SalesforceはそれをTruck__cにします。後から変えるということは、それを参照しているものをすべて見つけ出すということであり、またしても第1章の可逆性テストです。これは最初に正しく決めましょう。

説明。 埋めてください。毎回です。モジュール1で、メタデータはもう飾りではないと言いました。次の管理者がこれを読み、あなたの組織を理解しようとするすべてのAIツールも読みます。説明が空のカスタムオブジェクトは、ラベルの付いていない箱です。

レコード名。 すべてのカスタムオブジェクトにはName項目があり、それが何かをここで決めます。「Truck 117」のようなテキストの名前か、Salesforceが自動で埋めてくれるT-000184のような自動採番か。その画面の警告を読んでください。APIを通じて大量のレコードを挿入する予定なら、テキストを使うようにとSalesforceは言っています。レコードを1件も作る前に、プラットフォームが規模について何かを教えてくれているのです。

新規カスタムオブジェクトの画面のレコード名セクション:レコード名の欄、データ型「テキスト」、そしてAPIを通じて大量のレコードを挿入する予定ならテキストのデータ型を使うようにという警告

Salesforceの設定、新規カスタムオブジェクト:警告付きのレコード名セクション(スクリーンショット、2026-10-12)。 原寸で表示

任意の機能。 レポートを許可、活動を許可、項目履歴管理、Chatterグループで許可。デフォルトではオフです。どれもこのオブジェクトでオンにする機能なので、意図して決めましょう。

オブジェクト分類。 共有を許可、Bulk APIアクセスを許可、ストリーミングAPIアクセスを許可。デフォルトではすべてオンです。画面ははっきりこう書いています。これらがオンなら、そのオブジェクトはEnterprise Applicationオブジェクトであり、オフならLight Applicationオブジェクトです。これらの名前は、Salesforceのアプリサブスクリプションのライセンスに対応しています。Lightning Platform Light Appにはレコードレベルの共有がなく、Bulk APIもストリーミングAPIも使えません。Enterprise Appは使えます。私の助言は、オフにする理由を正確にわかっているのでない限り、オンのままにしておくことです。後で大量にロードすることになるオブジェクトでBulk APIアクセスをオフにすれば、なぜそれが大事だったのかを思い知ることになります。

リリース状況と検索。 「開発中」にすると、作っている間はユーザーからオブジェクトが見えません。「リリース済み」にすると公開されます。そして検索を許可はデフォルトでオフなので、オンにするまで、ユーザーはグローバル検索でこれらのレコードを見つけられません。これには毎回誰かが引っかかります。

オブジェクト分類、リリース状況、検索状況のセクション:共有を許可、Bulk APIアクセスを許可、ストリーミングAPIアクセスを許可にチェック。リリース済みを選択。検索を許可はチェックなし

デフォルト:3つのAPI設定はオン、リリース済み、検索を許可はオフ(スクリーンショット、2026-10-12)。 原寸で表示

保存をクリックすると、オブジェクトマネージャーにそのオブジェクトが表示されます。API参照名Truck__c、カスタムのチェック、表示ラベル、リリース状況。でも左側を見てください。項目とリレーション、ページレイアウト、Lightningレコードページ、レコードタイプ、入力規則、トリガー、フロートリガー、オブジェクトアクセス、項目アクセス。この一覧は、モジュール1を目に見える形にしたものです。オブジェクトはただの保存場所ではありません。そうした振る舞いのすべてがぶら下がる場所なのです。

トラックオブジェクトを表示したオブジェクトマネージャー:API参照名Truck__c、カスタムにチェック、単数形と複数形の表示ラベル、そして項目とリレーションから入力規則までの左側の一覧

オブジェクトマネージャー、トラック:API参照名Truck__c、カスタム、そしてオブジェクトにぶら下がるすべてのもの(スクリーンショット、2026-10-12)。 原寸で表示

作ったばかりのカスタムオブジェクトで項目とリレーションを開くと、すでに項目があります。すべてのカスタムオブジェクトには、標準の項目一式がついてきます。

  • Name:さきほど選んだレコード名。ページレイアウト、関連リスト、参照、検索結果で使われます。
  • 所有者:レコードを所有するユーザーまたはキュー。
  • 作成者と最終更新者:レコードを作成したユーザーと、最後に変更したユーザー。
  • 通貨(マルチ通貨が有効な場合)、そしてディビジョン(組織がディビジョンを使っている場合)。

そしてその下には、モジュール1のレコードID、作成日と更新日があります。データローダで数件のレコードをエクスポートすれば、すべて確認できます。

このうちの1つは消えることがあります。カスタムオブジェクトを主従関係の従側にすると、所有者項目がなくなります。所有権は代わりに主レコードから来るのです。これは聞こえる以上に大きなことで、モジュール7と8で戻ってきます。

接頭辞と接尾辞:何を見ているのか

Section titled “接頭辞と接尾辞:何を見ているのか ”

前のモジュールで、標準オブジェクトには接頭辞も接尾辞もないと言いました。それ以外のものにはすべてあり、それが読めるようになれば、項目の一覧を見るだけで、自分が何を見ているのかが正確にわかります。

見た目それが何か
Account、Case標準のオブジェクトまたは項目:接頭辞も接尾辞もない
Truck__cカスタムオブジェクト、またはUnit_Number__cのようなカスタム項目
abc__Inspection__c管理パッケージのカスタムオブジェクト:abcはベンダーの名前空間
Delivery_History__bBig Object(モジュール4)
Shipment__x外部オブジェクト:データは別のシステムにある(モジュール4)
Allergies__pc個人取引先の取引先責任者のカスタム項目(モジュール2)
Truck__rクエリでたどるときの、カスタム参照関係の背後にあるリレーション

いくつか注目してほしいことがあります。

ここまでは一覧です。私はこれを層として教えています。オブジェクトには3つの種類、標準、カスタム、管理パッケージがあり、どれにも同じ種類の項目を置くことができます。最初からついてきた標準項目と、誰かが追加したカスタム項目です。

標準オブジェクト。 Accountには接頭辞も接尾辞もなく、その標準項目も同様です。Name、Industry、OwnerId。ほとんどの標準オブジェクトにはカスタム項目を追加でき、追加したものはすべて__cで終わります。Region__cのように(Custom Fields (opens in a new tab)、英語)。この接尾辞があなたを守ってくれます。Salesforceはリリースのたびに取引先に新しい標準項目を追加しますが、あなたの項目は常に__cで終わり、Salesforceの項目は決してそうならないので、将来の標準項目が既存の項目と衝突することは決してありません。

カスタムオブジェクト。 自分のオブジェクトは__cで終わり、Truck__c(Custom Objects (opens in a new tab)、英語)、そこに置くカスタム項目も同じです。Unit_Number__c。しかし、生まれたときから持っている項目、つまり前のセクションの項目は標準項目です。Name、OwnerId、CreatedDate、接尾辞なし。ですから自分のオブジェクトの上でも、接尾辞を見れば、それぞれの項目を誰が作ったのかがわかります。

管理パッケージのオブジェクト。 AppExchangeから管理パッケージをインストールすると、そのオブジェクトと項目にはベンダーの名前空間プレフィックスが付いてきます。abc__Inspection__c、そしてabc__Result__cのような項目です。このプレフィックスはベンダーごとに一意で、変わりません(Namespace Prefix (opens in a new tab)、英語)。Salesforce自身の言葉では、プレフィックスは各コンポーネントを一意にするために付けられ、name__cはprefix__name__cになります(AppExchange Object Prefixes and the API (opens in a new tab)、英語)。ですから2つのベンダーがどちらもInvoice__cというオブジェクトを出荷しても、互いに衝突することも、あなたと衝突することもありません。パッケージのオブジェクトにも標準項目、NameとOwnerIdがあり、プレフィックスは付きません。パッケージは標準オブジェクトに独自のプレフィックス付きの項目を追加することもあります。取引先のabc__Score__cのように。そしてあなたもパッケージのオブジェクトに独自のカスタム項目を追加できます。abc__Inspection__c上のDepot__cにはあなたの__c接尾辞が付きますが、ベンダーのプレフィックスは決して付きません。作ったのはベンダーではなく、あなただからです(Known Issue: unmanaged custom field on a managed package object (opens in a new tab)、英語)。

名前を読む 3種類のオブジェクトを、同じ4つの層で読みます。標準オブジェクト(Salesforceが作ったもの):Account。Name、OwnerId、Industryなどの標準項目には接尾辞がありません。管理パッケージはabc__Score__cのような独自の項目を追加できます。自分のカスタム項目はRegion__cのように__cで終わります。カスタムオブジェクト(自分で作ったもの):Truck__c。標準項目のName、OwnerId、CreatedDateには接尾辞がありません。オブジェクトは自分のものなので、パッケージの項目はありません。自分のカスタム項目はUnit_Number__cのように__cで終わります。管理パッケージのオブジェクト(ベンダーabcからインストール):abc__Inspection__c。標準項目にはプレフィックスがありません。パッケージ自身の項目にはabc__Result__cのようにプレフィックスが付きます。そして自分で追加する項目は、Depot__cのように自分の__c接尾辞は付きますが、ベンダーのプレフィックスは決して付きません。その下に:接尾辞なしはSalesforceのもの、__cはカスタム、abc__はベンダーのもので、決して変わりません。 標準オブジェクト Salesforceが作ったもの オブジェクト Account その標準項目 Name、OwnerId、Industry:接尾辞なし パッケージの項目 abc__Score__c(パッケージが追加した場合) 自分のカスタム項目 Region__c カスタムオブジェクト 自分で作ったもの オブジェクト Truck__c その標準項目 Name、OwnerId、CreatedDate:接尾辞なし パッケージの項目 なし:オブジェクトは自分のもの 自分のカスタム項目 Unit_Number__c 管理パッケージのオブジェクト ベンダーabcからインストール オブジェクト abc__Inspection__c その標準項目 Name、OwnerId、CreatedDate:プレフィックスなし パッケージの項目 abc__Result__c 自分のカスタム項目 Depot__c:自分の接尾辞、相手のプレフィックスは付かない 接尾辞なし:Salesforceのもの。__c:カスタム。abc__:ベンダーのもので、決して変わらない。 © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

どのAPI参照名でも、読めば誰が作ったのかがわかります。接尾辞なし:Salesforce。プレフィックスなしの__c:あなたの組織。先頭にabc__:ベンダー。これは変更を計画するたびに重要になります。自分のものは変えられます。Salesforceのものは、設定して拡張します。ベンダーのものはほとんど固定されています。ページレイアウトやヘルプテキストのようにいくつかは編集できますが、パッケージの大部分とすべてのAPI参照名はベンダーのものであり、ベンダーのアップグレードがベンダーの変更を持ち込みます(Editable Properties After Package Promotion or Installation (opens in a new tab)、英語)。

非管理パッケージには付きません。 非管理パッケージをインストールすると、そのオブジェクトはまるで自分で作ったかのように、プレフィックスなしで組織に入ってきます。それがTruck__cを持ち込み、すでに同じものがあれば、名前が衝突します。インストールする前に確認しましょう。

カスタムオブジェクトを作るのは簡単です。だからこそ、私たちはそれを作りすぎていると思うのです。新規カスタムオブジェクトの画面は、すでに取引先がある組織でも、喜んでCustomer__cを作ってくれます。ですからクリックする前に、前のモジュールの問いを立てましょう。母船にはすでにこれがあるか? あるなら、それを使います。ないなら作ります。そしてアーキテクトとして、画面全体を埋めましょう。

次のモジュールでは、さらに手前の問いを立てます。このデータは、そもそもSalesforceに置くべきなのか?

ここでアーキテクトが決めること

Section titled “ここでアーキテクトが決めること ”
  • カスタムオブジェクトを作る前に、Salesforceにすでにそのための標準オブジェクトがあるかどうか。
  • 一度だけ選ぶAPI参照名、そして人と機械のために書く説明。
  • レコード名:想定するボリュームを念頭に置いて、テキストか自動採番か。
  • どの任意の機能、APIアクセス、検索を、意図してオンにするか。
  • 組織の中の接尾辞が何を教えてくれるか:カスタム、管理パッケージ、Big Object、外部オブジェクト、個人取引先。
  • これからインストールしようとしているパッケージが、自分で作ったものと衝突し得るかどうか。
  • Custom Objects (opens in a new tab)とCustom Fields (opens in a new tab)、Object Reference(英語、2026-10-13確認):「カスタムオブジェクトの名前には、2つのアンダースコアと小文字の『c』からなる接尾辞が付く」。カスタム項目も同様。そしてカスタム項目をサポートする標準オブジェクトの表。
  • AppExchange Object Prefixes and the API (opens in a new tab)、Object Reference(英語、2026-10-13確認):名前空間プレフィックスは、パッケージ化された各コンポーネントを一意にする。「name__cはprefix__name__cになる」。
  • Namespace Prefix (opens in a new tab)、Apex Developer Guide(英語、2026-10-13確認):名前空間プレフィックスは、管理パッケージのオブジェクト名と項目名をほかの組織のものと区別する。
  • Editable Properties After Package Promotion or Installation (opens in a new tab)、Second-Generation Managed Packaging Developer Guide(英語、2026-10-13確認):パッケージのコンポーネントのどのプロパティを、開発者、登録者、その両方、あるいはどちらも編集できない、か。
  • Custom Object Standard Fields (opens in a new tab)、Salesforceヘルプ(英語、2026-10-12確認):すべてのカスタムオブジェクトが持つ標準項目(Name、所有者、作成者、最終更新者、通貨、ディビジョン)と、主従関係の従側で所有者が削除される理由。
  • Standard User Licenses (opens in a new tab)、Salesforceヘルプ(英語、2026-10-12確認):Lightning Platform Light Appは「Bulk APIもストリーミングAPIも使えない」。Enterprise Appは「レコードレベルの共有をサポートし、Bulk APIとストリーミングAPIを使える」。