みなさん、こんにちは!
Salesforceエンジニアの森川です。
今回のテーマは、Salesforceの「SOSL」です。
SOSLの概要から、その重要性、そして設定方法まで、実践的な視点を交えて解説していきます。
SOSLとは?
1. SOSLの定義
SOSLとは、Salesforceのオブジェクト検索言語(Salesforce Object Search Language)のことです。レコード内のテキストをキーワードで検索するためのクエリ言語で、一度の検索で複数のオブジェクトを横断して結果を取得できる点が特徴です。また、Salesforceのグローバル検索と同様に検索インデックスを利用しており、テキストを迅速に検索できます。なお、標準オブジェクトだけでなくカスタムオブジェクトも検索対象に含めることができます。
2. SOSLの主要なメリット
複数オブジェクトの同時検索:
SOSLでは、一度のクエリで複数のオブジェクトを同時に検索できるため、複数のデータベースを別々に検索する必要がなく、管理者やユーザーの作業負荷を大幅に軽減できます。特に曖昧な情報しかない場合や、どのオブジェクトに情報が存在するか不明な状況で効果を発揮します。
柔軟な検索基準
完全な項目値が分からなくても、一部のキーワードやフレーズだけで関連する全てのレコードを検索できます。たとえば「Technology」というキーワードを入力すると、「Technology Partners」や「Advanced Technology」など、キーワードを含む様々なレコードを抽出でき、柔軟かつ効果的な情報収集が可能になります。
検索インデックスによる高速検索
SOSLはSalesforceの検索インデックスを利用するため、大規模な組織の大量データに対しても高速に検索結果を取得できます。データ量が増えても検索速度が大きく低下しないため、リアルタイムでのデータ抽出や迅速なユーザーサポート、業務効率の維持・向上に役立ちます。
3. SOSLの基本的な使用方法3選
管理者が日々の業務で直面しやすいユースケースを念頭に、SOSLの具体的な活用方法を3つピックアップして紹介します。ここでは、実際の業務シナリオを意識し、開発者コンソールを使用した基本的なSOSLクエリの実行、複数オブジェクトを横断した効率的な検索方法、さらにはApexコード内での実践的な活用方法まで、それぞれの操作手順やポイントを詳しく解説します。初心者から中級者までが無理なく実践できるよう、段階的に説明を進めていきます。
1. 開発者コンソールで取引先をSOSL検索
開発者コンソールを使うことで、初心者でも簡単にSOSLクエリを直接実行し、素早く結果を確認することができます。今回は「取引先(Account)オブジェクト内で特定のキーワードを含むレコードを検索する」というシンプルな例で手順を詳しく見ていきましょう。
開発者コンソールをクリック
Salesforceにログインした状態で、画面右上にある歯車アイコンをクリックします。表示されるメニューから「開発者コンソール」をクリックして起動してください。開発者コンソールがブラウザ上の別ウィンドウで表示されます。

クエリエディタにSOSLを入力
画面下部の「Query Editor」タブを選択します。テキストエリアにSOSLクエリを入力します。
FIND {Test} IN ALL FIELDS RETURNING Account(Id, Name, Industry)

クエリを実行して結果確認
クエリを実行すると、画面の上部にある「Search Results(検索結果)」というペインに検索結果が表示されます。ここには、指定したキーワード(今回の例では「Test」)を含む取引先レコードが一覧として表示されます。各レコードのID、名前、業種など、クエリで指定した項目が確認できます。

ポイント
大文字小文字を区別しない検索 SOSLのキーワード検索は、大文字と小文字の区別を行いません。
たとえば、「TEST」と検索しても「test」「Test」などが含まれたレコードがヒットします。そのため、ユーザーが入力するキーワードの正確な文字ケースを知らなくても適切に検索できます。
2. 複数オブジェクトを対象にしたSOSL検索
SOSLによる複数オブジェクト横断検索の例を紹介します。例えばカスタマーサポートの場面で、お客様から「Edge」という名前を聞き取ったが、それが会社名(取引先)なのか担当者名(取引先責任者)なのか分からない場合を考えてみます。このようなケースでSOSLを使えば、1回の検索で両方のオブジェクトを調べることができます。次のSOSLクエリは、取引先と取引先責任者の両方から「Edge」を含むレコードを検索します。
クエリエディタにSOSLを入力
画面下部の「Query Editor」タブを選択します。テキストエリアにSOSLクエリを入力します。
FIND {Edge} IN ALL FIELDS RETURNING Account(Name), Contact(FirstName, LastName)

クエリを実行して結果確認
このクエリを実行すると、取引先オブジェクトと取引先責任者オブジェクトのそれぞれについて、該当するレコードが検索結果に表示されます。つまり、取引先名に「Edge」という文字列を含む会社(例: 「Edge Communications」)があれば取引先の結果に表示され、氏名に「Edge」を含む取引先責任者がいれば取引先責任者の結果に表示されます。SOSLを使用すれば、このように複数のオブジェクトをまたいだ情報も一度に検索でき、個別に検索する手間を省けます。


ポイント
SOSLでは、一度に最大20種類のオブジェクトを対象として検索できます。一回のApexトランザクション内で実行できるSOSLクエリ数は最大20回で、検索結果として取得できるレコード数は最大2,000件に制限されています。そのため、特に多数のオブジェクトや大量のデータを扱う組織では、頻繁に検索するオブジェクトをあらかじめ絞り込んだり、キーワードを具体的に設定したり、場合によっては複数回に分けて検索するなど、適切な検索設計を行うことが効率的かつ確実なデータ取得につながります。
3. ApexによるSOSL活用
Apex(プログラム)からSOSLを利用する例を見てみます。管理者が簡単な自動化やカスタム検索機能を実装する際にも、SOSLを活用できます。例えば、新しい取引先レコードを作成する前に、同じ名前を含む既存の取引先がないかチェックする処理を考えてみましょう。SOSLを使えば、キーワードに基づいて既存の取引先名を検索し、重複の可能性を検知できます。
Execute Anonymousウィンドウの起動
開発者コンソールのメニューバーから「Debug(デバッグ)」を開き、「Open Execute Anonymous Window」をクリックします。すると「Enter Apex Code」と書かれた入力用の小ウィンドウがポップアップ表示されます。

コードの記述と実行
実行したいApexコードをウィンドウ内に記述します。このコードは、新しい取引先レコードを作成する前に、同じ名前を含む既存の取引先がないかチェックする処理を行います。
List<List<SObject>> results = [FIND 'Acme' IN ALL FIELDS RETURNING Account(Id, Name)];
List<Account> foundAccounts = (List<Account>) results[0];
System.debug('見つかった取引先: ' + foundAccounts);
コード入力後、「Execute」ボタンをクリックして実行します。

結果の確認
SOSL検索の結果が List<List<SObject>>
という入れ子のリストで返されています。最初のリスト (results[0]
) が取引先オブジェクトのヒット結果で、これを Account 型のリストにキャストして取得しています。SOSLでは複数オブジェクトを同時に検索できるため、オブジェクトごとに結果のリストが分かれて返される点に注意してください。

ポイント
SOSLをApexから実行する際には、検索結果が必ずList<List<SObject>>
という入れ子型のリスト構造で返されるため、各オブジェクトの結果を取り出すには適切なインデックス指定や型の明示的なキャストが必要です。
4. まとめ
いかがでしたでしょうか。
本記事では、SalesforceのSOSL(Salesforce Object Search Language)の基本的な特徴やメリット、実践的な使用方法について、初心者および中級者向けに解説しました。
SOSLは、キーワードに基づいた柔軟な検索が可能であり、1回のクエリで複数のオブジェクトを横断的に検索できるという優れた特徴を持っています。そのため、顧客から曖昧な情報しか得られない場面や、対象オブジェクトが明確でない状況でも、効率よく必要な情報を探し出せます。また、SOQLとの違いを理解した上で、適切に使い分けることにより、より効果的なデータ抽出が実現可能です。
初心者の方は、まず開発者コンソールを利用して、基本的なSOSLクエリの実行方法を学ぶところから始めてください。実際の結果を確認しながら、SOSLの仕組みや挙動を理解できます。また中級者の方は、ApexからSOSLを活用した実用的な検索機能や業務自動化に挑戦することで、さらに高度なデータ管理や運用効率化を目指せます。
ぜひ、この記事を参考に、実際の業務にSOSLを取り入れ、Salesforceのデータ活用をより一層充実させてください。
5. お問い合わせ
現在Salesforceを効果的に活用できていない企業様や、これからSalesforceの導入を検討している企業様で、設定や運用、保守に関するサポートが必要な場合は、ぜひお気軽にご相談くださいませ!