2026.09.28
【初心者向け】「この設計書からSalesforceを作って」 は実現できるのか?Antigravity × Salesforce CLIで試してみた
1. はじめに:Salesforce開発における設計〜構築の課題
従来のSalesforce開発では、
ヒアリング
↓
業務整理
↓
業務フロー作成
↓
ER図作成
↓
オブジェクト設計
↓
項目定義書作成
↓
Salesforce設定
という流れがある程度パターン化しているかと思います。
しかし実際には、
・設計書を作る
・Salesforce設定画面を開く
・オブジェクトを作成する
・項目を1つずつ登録する
という作業量が多く、特に大量項目を持つシステムでは負荷になります。
そこで今回は、
・AIに設計内容を理解させ、そのままSalesforce構築までつなげられるか
・新米エンジニア(3年目)の私でも難なく実行できるか
を検証しました。
2. 今回作成するシステム概要
今回Geminiに、【CariTerrace Inc.】という疑似人材紹介事業(転職エージェント)を作成してもらいました。
業務概要は以下の通りです。
事業内容
求職者と求人企業のマッチングを行うサービスを提供しています。
社内の主な役割
- CA(キャリアアドバイザー) 求職者を担当し、キャリア面談、求人の紹介、面接対策、内定フォローなどを行います。
- RA(リクルーティングアドバイザー) 企業を担当し、新規開拓、求人票の作成、候補者の推薦、面接日程の調整などを行います。
- BO(バックオフィス) 事務および請求管理を担当します。
- 経営 経営陣やマネージャーとして、数値分析や目標管理を行います。
ビジネスモデル(収益構造)
- 成功報酬型 求職者の入社が決定した際に、企業から紹介手数料を受け取るビジネスモデルです。
- 手数料の算出 紹介手数料は、入社日を基準に「理論年収 × 契約手数料率(基本35%など)」で算出されます。
- 返戻金規定 入社後1ヶ月以内などに短期離職が発生した場合には、一部を企業へ返金する「返戻金」の規定(1ヶ月以内80%など)も設けています。
これらをインプットとして、今回は【Antigravity】を用いて様々な開発フェーズを進めていきたいと思います。
【Antigravity】はAIエージェント型の統合開発環境(IDE)および開発支援ツールです。
2025年11月にGoogleが発表し、開発者の指示に基づいてAI(Geminiモデル)が自律的にエディタでコードを書き、ターミナルでコマンドを実行し、ブラウザで動作確認を行うことができる強力な機能を備えています。
添付画像のように右サイドのエージェントに依頼事項を送信することができます。


3. Antigravityで設計成果物を作成する
① 業務フロー図
以下のようなプロンプトで指示を出してみました。
【業務フロー図作成プロンプト】 recruitment_agency_requirements.md および recruitment_agency_diagrams.md をインプットとして読み込んでください。 全体の業務フローが一目でわかるように、また1つの図が大きくなりすぎないように、あなた(AI)の判断で業務プロセスを適切かつ自然なフェーズ(目安として3〜4つ程度)に自動的に分割し、それぞれのフェーズごとに独立した業務フロー図を作成してください。 1. 共通のスタイルルール 形式: スイムレーン形式(Swimlane)。 接続線: ノード間を繋ぐ線はすべてまっすぐな直線(Straight lines)にしてください。 配置方向: 左から右(横方向)のフロー。 2. 登場するスイムレーン 各フェーズの図は、以下の登場人物(レーン)に役割を整理して配置してください: • Candidate(求職者) • Client(求人企業) • CA(キャリアアドバイザー) • RA(リクルーティングアドバイザー) • BO(バックオフィス) • System(システム) 3. 分割のアプローチ 求職者の登録からキャリア面談、求人紹介、選考、内定、そして入社後の請求処理に至るまでの全体プロセスを分析し、ステップ数が多すぎず少なすぎない、キリの良いタイミングで図を切り分けてください。
【①AIに自動で3〜4フェーズに分割させる条件を設定している点】
人材紹介のプロセス(登録〜面談〜推薦〜面接〜内定〜請求)を1枚の図に詰め込むと、線が交錯して読めない巨大な図(スパゲティ図)になりがちです。「1枚あたりのステップ数を適切に保つ」というゴールを与えることで、パッと見て理解できるサイズ感を担保しています。
【②スイムレーン 直線(Straight lines) 左から右 を明記している点】
直線指定: AIが図を描く際、曲線や折り返し線が交差して見づらくなるのを防ぎます。
横方向(左から右): 人間の視線移動の自然な流れに合致させ、時系列の理解をスムーズにします。
【③AIの「文脈理解力」を活用した柔軟な境界設定】
仕様書(.mdファイル)の全体のボリュームや流れを見て、最もバランスが良い区切り方をAI自身に判断させています。ガチガチに縛りすぎず、AIの得意な「要約・構造化能力」を上手に引き出す指示になっています。
このプロンプトを用いて、実際に作成してもらった業務フロー図は以下の通りです。(一部抜粋)
このように、Antigravityが業務の内容を理解し、比較的綺麗かつ実用的な業務フロー図を描いてくれます。
実際の業務で成果物として納品することは難しいですが、たたき台としてはじゅうぶんに活用できそうな気がします。
さあ、どんどん次に行ってみましょう。
② システム構成図
【システム構成図作成プロンプト】 業務フロー図(recruitment_agency_workflow.md)および要求定義書(recruitment_agency_requirements.md)をインプットとして読み込んでください。 これらに登場するシステムや外部サービスをAI側で自律的に抽出し、極めてスッキリして見やすい「システム構成図(連携図)」を作成してください。 1. 視認性を高める「配置・レイアウト」ルール • データの流れに沿った配置(左から右): データの川上から川下へ流れるように、AIの判断で要素を以下のように左から右へと配置してください。 【左側(入力層)】: データの発生源、インプット元、外部アクター。 【中央(コア層)】: 業務の中心となるメインシステム(DB等もここに内包)。 【右側(出力・外部連携層)】: メインシステムから連携される外部システムや、アウトプット先。 • 直線の使用: 接続線はすべてまっすぐな直線(Straight lines)を使用してください。 • 交差の最小化: 線同士が複雑に交差しないよう、ノードの上下位置を自律的に整理してください。 2. 視覚的なノードの「引き算」ルール • 箱(ノード)は最大7〜8個に厳選: 画面や機能ごとに細分化せず、「1つの大きなシステム・サービス」単位でノードをまとめて、図全体をスッキリさせてください。 • 線の使い分け: • 主要なデータ連携(API、データ同期など)は 実線 • 補助的な連携(メール送信、リマインド、通知など)は 点線(Dashed) • ラベルは最短にする: 接続線の上に表示するラベルは長文を避け、5文字以内の簡潔なキーワード(例: API、CSV、同期、通知 など)に厳しく制限してください。
このプロンプトを用いて、実際に作成してもらったシステム構成図は以下の通りです。
③ ER図
【ER図作成プロンプト】 4つのドキュメント(recruitment_agency_requirements.md、recruitment_agency_diagrams.md、recruitment_agency_workflow.md、recruitment_agency_system_architecture.md)をインプットとして読み込んでください。 これらの資料に記載されているデータ定義、業務フロー、およびシステム構成から、裏側で管理すべきデータ(エンティティ・テーブル)と、それらの関係性(1対1、1対多、多対多など)を表す「ER図(論理データモデル)」を作成してください。 1. エンティティと関係性の自律的な抽出 具体的なテーブル設計(テーブル名やカラム名)はあなたの判断に一任します。資料を読み解き、人材紹介システムの中核となるエンティティ(例:求職者、求人企業、求人票、応募履歴、面接など)を抽出してください。 各エンティティ間の関係性を推測し、鳥の足記法(Crow's foot notation)を用いてカーディナリティ(1:N、N:Mなど)を正確に表現してください。 多対多(N:M)の関係になる部分(例:求職者と求人票のマッチングや応募など)は、必要に応じて自律的に「中間テーブル(交差エンティティ)」を配置して解消してください。 2. 見やすさ(視認性)を高めるための「引き算」ルール ER図が複雑で読みにくくなるのを防ぐため、以下の描画ルールを厳守してください。 属性(カラム)の表示制限: 1つのエンティティの箱が縦に長くなりすぎないよう、すべての項目を列挙しないでください。表示するのは「主キー(PK)」「外部キー(FK)」「ステータス」「その他、業務連携上重要な項目」のみとし、最大でも1テーブルあたり5〜7項目程度に厳選してください。 レイアウトの最適化(中心と周辺): 線(リレーション)の交差を最小限にするため、トランザクションデータ(応募、面接、紹介履歴など)を図の中央に配置し、マスタデータ(求職者、企業、CA/RAユーザーなど)をその外側に配置するよう工夫してください。 接続線のスタイル: 接続線は、要素を避けてスッキリ配置される直角の折れ線(Orthogonal lines)またはまっすぐな直線(Straight lines)を使用してください。
4. AIに渡す設計資料を作成する
① Salesforceオブジェクト設計
【Salesforceオブジェクト設計作成プロンプト】 5つのドキュメント(recruitment_agency_requirements.md、recruitment_agency_diagrams.md、recruitment_agency_workflow.md、recruitment_agency_system_architecture.md、recruitment_agency_er_diagram.md)をインプットとして読み込んでください。 これまでの要件および論理データモデル(ER図)を元に、このシステムをSalesforce(Sales Cloud 等)で構築する場合の「オブジェクト一覧(標準・カスタム対応表)」を作成し、Markdown(.md)ファイルとして出力してください。 1. オブジェクト抽出とマッピングの自律的判断 具体的なSalesforceオブジェクトへのマッピングは、あなたのSalesforceアーキテクチャの知識に基づいて自律的に判断してください。 標準オブジェクトの積極利用: ER図のエンティティのうち、Salesforceの標準オブジェクト(Account, Contact, Lead, Opportunity, Task, Event など)で代用・拡張できるものは、極力標準オブジェクトにマッピングしてください。 カスタムオブジェクトの定義: 人材紹介特有のデータ(求人票、応募履歴、面接、マッチングなど)で、標準でカバーしきれないものについては、適切なカスタムオブジェクト(__c)として定義してください。 2. リレーション(関係性)の定義 ER図で示されたリレーションを、Salesforceのリレーションに翻訳してください。 親レコードの削除権限やセキュリティ要件(要件定義から推測)を考慮し、「参照関係(Lookup)」と「主従関係(Master-Detail)」のどちらが適切かを判断して記載してください。 多対多の関係(交差エンティティ)を実装するための連結オブジェクト(Junction Object)も明確にしてください。 3. 出力形式(Markdownテーブル) 視認性を高くするため、以下のような列を持つMarkdownテーブル形式で一覧表を出力してください。項目が多すぎず、全体像がパッと見てわかる粒度にしてください。 【出力指定カラム】 論理名 (Label): 画面に表示されるオブジェクト名 物理名 (API Name): API参照名(標準はそのまま、カスタムは 〜__c) 種別: 標準 または カスタム 役割・概要: このオブジェクトで何を管理するか(簡潔な1文) 主要なリレーション: どのオブジェクトと親・子(主従・参照)の関係にあるか
人材紹介システム:Salesforceオブジェクトマッピング(標準・カスタム対応表)
本ドキュメントは、人材紹介システムの要件定義書およびER図(論理データモデル)を基に、Salesforce(Sales Cloud)で本システムを構築する場合のオブジェクト構造を定義したものです。
1. オブジェクト設計方針
- 標準オブジェクトの積極活用
Salesforceの標準機能(リードコンバート、商談パイプライン管理、活動管理など)を最大限に活かすため、企業(
Account)、求職者(Contact・Lead)、請求・売上(Opportunity)、活動(Task/Event)は標準オブジェクトにマッピングしています。 - 多対多リレーションの解消(連結オブジェクト)
求職者(C)と求人(B)の「多対多」の複雑な関係を解消するため、交差エンティティとしてカスタムオブジェクト
Application__c(応募・選考)を定義し、ここに選考プロセスやステータスを集約します。 - セキュリティと連動削除(リレーションの使い分け) データの独立性が高いマスタ(求職者、企業)は独立させつつ、トランザクションデータ(求人、応募、面接)については、親レコード削除時に連動して削除され、セキュリティ設定を親から引き継げる「主従関係」を積極的に採用しています。
2. オブジェクト一覧(標準・カスタム対応表)
| 論理名 (Label) | 物理名 (API Name) | 種別 | 役割・概要 | 主要なリレーション |
|---|---|---|---|---|
| ユーザ | User |
標準 | システムを利用する社員(CA, RA, BO, 経営層)のアカウント情報・権限を管理。 | 各オブジェクトの所有者(Owner)。求職者・企業の「担当CA/RA」として参照(Lookup)。 |
| リード(見込求職者) | Lead |
標準 | Web登録直後や媒体取込時の、未面談・未登録の「見込求職者」を管理。 | - (面談実施・本登録後に Contact へコンバートする) |
| 取引先(求人企業) | Account |
標準 | 企業の基本情報、契約ステータス、紹介手数料率などを管理。 | Job__c(求人)の親(主従)。Opportunity(請求)の親(参照)。 |
| 取引先責任者(求職者/企業担当) | Contact |
標準 | 面談済み・本登録済みの「求職者」情報、および「企業の採用担当者」を管理(レコードタイプで分離)。 | Application__c(応募)の親(主従 または 参照)。Account の子(企業の担当者の場合)。 |
| 求人票 | Job__c |
カスタム | 企業から依頼された募集職種、必須要件、想定年収等のジョブディスクリプション(JD)を管理。 | Account(企業)と 主従関係(子)。Application__c(応募)の親(主従)。 |
| 応募・選考 | Application__c |
カスタム | 【連結オブジェクト】求職者と求人を紐付け、打診・書類選考・内定までの各ステータスを管理。 | Contact と 主従関係(子)。Job__c と 主従関係(子)。※ |
| 面接 | Interview__c |
カスタム | 各応募(選考)に紐づく、面接日時、合否結果、評価(CA/RAのヒアリング内容)を管理。 | Application__c(応募)と 主従関係(子)。 |
| 商談(請求・売上) | Opportunity |
標準 | 入社決定による紹介手数料の請求予定、金額、返戻金フラグ、目標に対する売上予実を管理。 | Account(企業)と 参照関係(標準)。Application__c と 参照関係。 |
| 活動(ToDo / 行動) | Task / Event |
標準 | キャリア面談、面接日程のカレンダー表示、メール送信履歴、面接前日リマインドなどを管理。 | Contact や Application__c、Interview__c などと 参照関係(関連先)。 |
(※) Application__c については、Salesforceの仕様上、標準オブジェクト(Contact)とカスタムオブジェクト(Job__c)の双方を主とする主従関係(Junction Object)を構築可能です。これにより、求職者・求人のいずれかが削除された際に紐づく選考データもクリーンアップされます。
3. リレーションシップ(関係性)の詳細定義
ER図で定義された関係性をSalesforceのデータモデルに翻訳した詳細は以下の通りです。
1. マスタとトランザクションの関係(主従関係の適用)
- 企業 (
Account) 対 求人 (Job__c) = 1 : N 【主従関係】 企業レコードが削除された場合、その企業が募集している求人票も一括で削除(連動削除)されるべきであるため、主従関係が適切です。 - 応募 (
Application__c) 対 面接 (Interview__c) = 1 : N 【主従関係】 選考プロセス自体が取り消し・削除された場合、そこに紐付いていた1次面接・最終面接の評価レコードも不要となるため、主従関係で設定します。
2. 交差エンティティの実現(連結オブジェクト)
- 求職者 (
Contact) ⇔ 応募 (Application__c) ⇔ 求人 (Job__c) 一人の求職者は複数の求人に応募でき、一つの求人には複数の求職者が応募します(多対多)。 この関係を解決するため、Application__cを Junction Object(連結オブジェクト) として定義し、ContactおよびJob__cの両方に対して 主従関係 を持ちます。
3. 売上・請求管理への接続
- 応募 (
Application__c) 対 請求・売上 (Opportunity) = 1 : 1 または N 【参照関係】 応募ステータスが「入社決定」となったタイミングで、請求処理および売上計上のためのOpportunityレコードを自動/手動で作成します。商談は標準でAccountに紐づきますが、発生源を追跡するためにApplication__cに対して 参照関係(Lookup) を持たせます。
4. 担当者のアサイン
- ユーザ (
User) 対 求職者 (Contact) / 企業 (Account) 【参照関係】 CA(求職者担当)やRA(企業担当)は、標準の「所有者(Owner)」項目で表現可能ですが、両面型対応や引き継ぎを考慮し、明示的に「担当CA」「担当RA」という 参照関係 項目を設けることで、ダッシュボードでの集計(CA別決定数など)が容易になります。
② 項目定義
【項目定義書作成プロンプト】 ドキュメント群(salesforce_object_mapping.md、およびこれまでの要件定義書 recruitment_agency_requirements.md やER図など)をインプットとして読み込んでください。 これらの資料を元に、システムに実装する各オブジェクト(テーブル)の詳細な「項目定義書」をMarkdown形式(.md)で作成してください。 1. 項目の自律的な抽出・補完 各オブジェクトに具体的にどのような項目(フィールド)が必要か、およびそれらがどのようなリレーション(参照関係・主従関係など)を持つかは、資料に記載されている「業務要件」や「データ定義」からAI側で自律的に読み解き、網羅的に抽出してください。 要件定義に明記されていなくても、人材紹介システムやSFAの標準的な機能として当然必要になる項目(例:ステータス、作成日、メモ欄など)があれば、適宜補完して定義してください。 2. フォーマットと見やすさのルール 出力するMarkdownファイルは、視認性を極限まで高めるため、以下のフォーマット規則を厳守してください。 • オブジェクトごとの分割: ## オブジェクト名(物理名) の見出しでオブジェクトごとにセクションを区切ってください。 • Markdownテーブルの利用: 項目一覧は、スッキリとしたMarkdownの表(Table)形式で記述してください。 • テーブルの列定義: 表の列は多すぎると見づらくなるため、以下の5列に厳選してください。 項目名(画面に表示される論理名) API名(システム上の物理名・英語) データ型(テキスト、数値、日付、選択リスト、参照関係 など) リレーション先 / 選択肢(参照型の場合は「親オブジェクト名」、選択リスト型の場合は「具体的な選択肢の値」を簡潔に記載) 備考 / 必須(必須項目の明記や、業務上の特別なルールを短く記載) 3. 出力時の注意事項 文章による冗長な解説は最小限にし、テーブル(表)を中心とした「設計書としてそのまま使えるクリーンなドキュメント」に仕上げてください。
人材紹介システム:オブジェクト項目定義書
本ドキュメントは、人材紹介(転職エージェント)システムをSalesforce上で構築するための各オブジェクトの主要な項目(フィールド)定義をまとめたものです。 要件定義に基づき、SFA/CRMとして標準的に求められる項目やステータスを網羅・補完しています。
リード(Lead)
Web登録直後や外部媒体から取り込んだ、未面談の「見込求職者」を管理します。
| 項目名 | API名 | データ型 | リレーション先 / 選択肢 | 備考 / 必須 |
|---|---|---|---|---|
| 氏名 | LastName / FirstName |
テキスト | - | 必須 |
| メールアドレス | Email |
メール | - | 重複チェックのキーとして利用 |
| 電話番号 | Phone |
電話 | - | 重複チェックのキーとして利用 |
| 登録ソース | LeadSource |
選択リスト | 自社Web, リクナビ, ビズリーチ, 紹介, その他 | - |
| ステータス | Status |
選択リスト | 新規, 未対応, 面談調整中, 面談済, 見送り | 必須。「面談済」で取引先責任者へコンバート |
| 希望条件メモ | Description |
テキスト(長文) | - | Web登録時のフリーテキスト等 |
| 担当CA | OwnerId |
参照関係 | User (親) |
新規登録時に自動/手動で割り当て |
取引先(Account)
求人企業の基本情報、契約状況、紹介手数料などの法人マスタ情報を管理します。
| 項目名 | API名 | データ型 | リレーション先 / 選択肢 | 備考 / 必須 |
|---|---|---|---|---|
| 企業名 | Name |
テキスト | - | 必須 |
| 業界 | Industry |
選択リスト | IT・通信, メーカー, 商社, 金融, サービス, その他 | - |
| 従業員数 | NumberOfEmployees |
数値 | - | - |
| 資本金 | Capital__c |
通貨 | - | - |
| 企業URL | Website |
URL | - | - |
| 担当RA | OwnerId |
参照関係 | User (親) |
法人営業担当者 |
| 契約ステータス | ContractStatus__c |
選択リスト | 未契約, 契約手続中, 契約済, 取引停止 | 必須 |
| 紹介手数料率 | FeeRate__c |
パーセント | - | 基本35%など、企業個別の設定値 |
| 返戻金規定 | RefundPolicy__c |
テキスト(長文) | - | 例:1ヶ月以内80%返金、など |
| 企業メモ | Description |
テキスト(長文) | - | 社内共有用の特記事項 |
取引先責任者(Contact)
「求職者」と「企業の採用担当者」の両方を管理します。レコードタイプ(RecordType)を用いて画面レイアウトや選択肢を切り替えます。
| 項目名 | API名 | データ型 | リレーション先 / 選択肢 | 備考 / 必須 |
|---|---|---|---|---|
| レコードタイプ | RecordTypeId |
レコードタイプ | 求職者, 企業担当者 | 必須。用途によってレイアウトを切り替え |
| 氏名 | LastName / FirstName |
テキスト | - | 必須 |
| 取引先(企業) | AccountId |
参照関係 | Account (親) |
企業担当者の場合は必須 |
| 生年月日 | Birthdate |
日付 | - | 求職者用 |
| 年齢 | Age__c |
数式(数値) | - | 生年月日から自動計算 |
| メールアドレス | Email |
メール | - | 必須 |
| 電話番号 | Phone |
電話 | - | 必須 |
| 担当CA | OwnerId |
参照関係 | User (親) |
求職者のキャリアアドバイザー |
| ステータス | CandidateStatus__c |
選択リスト | 未対応, 面談調整中, 面談済, 応募中, 内定, 入社済, 休止, 退会 | 求職者用 |
| 最終学歴 | EducationLevel__c |
選択リスト | 大学院卒, 大卒, 専門・短大卒, 高卒, その他 | 求職者用 |
| 現職企業名 | CurrentCompany__c |
テキスト | - | 求職者用 |
| 現職業種 | CurrentIndustry__c |
選択リスト | IT・通信, メーカー, 商社, 金融, サービス, マスコミ, 等 | 求職者用 |
| 現職職種 | CurrentJobType__c |
選択リスト | 営業, 企画, エンジニア, 管理部門, 販売, 等 | 求職者用 |
| 現在の年収 | CurrentSalary__c |
通貨 | - | 求職者用 |
| 希望勤務地 | DesiredLocation__c |
複数選択リスト | 全国47都道府県 | 求職者用 |
| 希望年収(下限) | DesiredMinSalary__c |
通貨 | - | 求職者用 |
| 転職希望時期 | DesiredTiming__c |
選択リスト | すぐにでも, 3ヶ月以内, 半年以内, 良い求人があれば | 求職者用 |
| 転職重視点 | Priority__c |
複数選択リスト | 給与, 休日・残業, 仕事内容, 勤務地, 会社の将来性 | 求職者用 |
| 部署・役職 | Title |
テキスト | - | 企業担当者用 |
| 決裁権の有無 | IsDecisionMaker__c |
チェックボックス | - | 企業担当者用 |
| 退会理由 | WithdrawReason__c |
選択リスト | 弊社決定, 他社決定, 自力決定, 現職残留, 一時休止, その他 | 退会時に必須 |
| 履歴書ファイル | ResumeFileId__c |
参照関係 | (標準Filesへのリンク) | 添付ファイルへのアクセスポインタ |
求人票(Job__c)
企業から依頼された募集職種ごとのジョブディスクリプション(JD)を管理します。
| 項目名 | API名 | データ型 | リレーション先 / 選択肢 | 備考 / 必須 |
|---|---|---|---|---|
| 求人ID | Name |
自動採番 | JOB-{00000} | レコード名として自動発番 |
| 求人企業 | Client__c |
主従関係 | Account (親) |
必須。企業削除時に求人も連動削除 |
| 求人タイトル | JobTitle__c |
テキスト | - | 必須 |
| 募集職種 | JobType__c |
選択リスト | 営業, 企画, エンジニア, 管理部門, 販売, 等 | - |
| 業務内容 | JobDescription__c |
リッチテキスト | - | 必須 |
| 必須要件 | MustRequirements__c |
リッチテキスト | - | 必須 |
| 歓迎要件 | WantRequirements__c |
リッチテキスト | - | - |
| 想定年収(下限) | MinSalary__c |
通貨 | - | 必須 |
| 想定年収(上限) | MaxSalary__c |
通貨 | - | - |
| 勤務地 | Location__c |
テキスト | - | 必須 |
| 募集背景 | Background__c |
選択リスト | 欠員補充, 増員, 新規事業 | - |
| 選考フロー | SelectionFlow__c |
テキスト(長文) | - | 書類選考 → 1次面接 → 最終面接 など |
| ステータス | Status__c |
選択リスト | オープン, クローズ, 充足 | 必須。デフォルト「オープン」 |
応募・選考(Application__c)
求職者と求人票を紐づける連結オブジェクト。打診、応募から内定・入社までのプロセスの中心となります。
| 項目名 | API名 | データ型 | リレーション先 / 選択肢 | 備考 / 必須 |
|---|---|---|---|---|
| 応募ID | Name |
自動採番 | APP-{00000} | レコード名として自動発番 |
| 求職者 | Candidate__c |
主従関係 | Contact (親) |
必須 |
| 求人票 | Job__c |
主従関係 | Job__c (親) |
必須 |
| ステータス | Status__c |
選択リスト | 打診中, 応募見送り, 書類選考, 面接, 内定提示, 承諾(入社決定), 辞退 | 必須。選考状況を管理 |
| 応募日 | AppliedDate__c |
日付 | - | デフォルト「今日」 |
| 見送り・辞退理由 | DeclineReason__c |
選択リスト | 年収, 勤務地, 仕事内容, 他社決定, スキルアンマッチ, その他 | ステータスが「見送り」「辞退」時に必須 |
| 詳細メモ | Memo__c |
テキスト(長文) | - | - |
面接(Interview__c)
選考プロセスの中で発生する面接スケジュール、評価、結果を管理します。
| 項目名 | API名 | データ型 | リレーション先 / 選択肢 | 備考 / 必須 |
|---|---|---|---|---|
| 面接ID | Name |
自動採番 | IVW-{00000} | レコード名として自動発番 |
| 応募・選考 | Application__c |
主従関係 | Application__c (親) |
必須。選考データに紐付け |
| 面接フェーズ | Phase__c |
選択リスト | カジュアル面談, 1次面接, 2次面接, 最終面接 | 必須 |
| 面接日時 | InterviewDate__c |
日付/時間 | - | 必須。標準の行動(Event)と連携・同期 |
| 合否結果 | Result__c |
選択リスト | 結果待ち, 通過, 内定, お見送り, 辞退 | - |
| 企業側評価 | ClientEvaluation__c |
テキスト(長文) | - | 面接後のRAからのヒアリング内容 |
| 求職者志望度 | CandidateIntent__c |
選択リスト | 高, 中, 低 | 面接後のCAからのヒアリング内容 |
| 面接URL・場所 | Location__c |
テキスト | - | Zoom URLや対面の住所など |
商談・請求(Opportunity)
求職者が内定を承諾し、「入社決定」となった際に、売上計上と紹介手数料の請求、および返戻金管理を行うために使用します。
| 項目名 | API名 | データ型 | リレーション先 / 選択肢 | 備考 / 必須 |
|---|---|---|---|---|
| 請求(商談)名 | Name |
テキスト | - | 必須。例:「【入社】〇〇様 - 株式会社△△」 |
| 求人企業 | AccountId |
参照関係 | Account (親) |
必須。請求先企業 |
| 応募・選考 | Application__c |
参照関係 | Application__c (親) |
必須。どの選考から発生した売上か |
| フェーズ | StageName |
選択リスト | 未請求, 請求書発行済, 入金済, 返戻金発生 | 必須 |
| 入社日 | CloseDate |
日付 | - | 必須。売上計上日として扱う |
| 決定年収 | DecidedSalary__c |
通貨 | - | 必須。手数料計算のベース金額 |
| 請求金額 | Amount |
通貨 | - | 決定年収 × Accountの手数料率で自動算出 |
| 短期離職フラグ | IsRefunded__c |
チェックボックス | - | 入社後の早期退職が発生した場合にTrue |
| 返戻金額 | RefundAmount__c |
通貨 | - | 返戻金規定に基づき計算された返金額 |
ユーザ(User)
システムを利用する社員(CA、RA、BO、経営層)のアカウント情報です。標準機能をそのまま活用しますが、役割・権限管理のための主要な項目を定義します。
| 項目名 | API名 | データ型 | リレーション先 / 選択肢 | 備考 / 必須 |
|---|---|---|---|---|
| 氏名 | LastName / FirstName |
テキスト | - | 必須 |
| メールアドレス | Email |
メール | - | 必須 |
| ユーザ名 | Username |
形式(メール) | - | 必須。ログインIDとして使用 |
| 役割/役職 | Title |
テキスト | - | CA, RAなどの職位・役割 |
| 部署 | Department |
テキスト | - | 第1営業課など |
| プロファイル | ProfileId |
参照関係 | Profile (親) |
必須。CA/RA/BO/経営などの権限を制御 |
| マネージャー | ManagerId |
参照関係 | User (親) |
承認プロセスや階層(ロール)構造用 |
| 有効 | IsActive |
チェックボックス | - | 退職・異動時のアクセス権制御 |
活動:ToDo / 行動(Task / Event)
キャリア面談、面接などのスケジュール(行動)や、電話・メールなどのコミュニケーション履歴(ToDo)を管理する標準オブジェクトです。
| 項目名 | API名 | データ型 | リレーション先 / 選択肢 | 備考 / 必須 |
|---|---|---|---|---|
| 件名 | Subject |
テキスト/選択 | 面談, 面接, 電話, メール送信, その他 | 必須 |
| 名前(Who) | WhoId |
参照関係 | Contact / Lead |
求職者や企業の採用担当者との紐付け |
| 関連先(What) | WhatId |
参照関係 | Application__c, Job__c, Account, Opportunity |
選考(応募)、求人、企業への紐付け |
| 担当者 | OwnerId |
参照関係 | User (親) |
必須。この活動を行う(行った)CA / RA |
| 期日 / 活動日 | ActivityDate |
日付 | - | 必須(ToDoの場合) |
| 開始日時 | StartDateTime |
日付/時間 | - | 必須(行動の場合)。面談・面接の開始時間 |
| 終了日時 | EndDateTime |
日付/時間 | - | 必須(行動の場合) |
| 種別 | Type |
選択リスト | 電話, メール, Web会議, 対面, その他 | - |
| ステータス | Status |
選択リスト | 未着手, 進行中, 完了, 待機中 | 必須(ToDoのみ)。行動の場合は不要 |
| コメント | Description |
テキスト(長文) | - | 面談や電話のメモ、議事録 |
5. AIのターミナル操作(CLI実行)を利用してSalesforce構築へ接続
・業務フロー図
・システム構成図
・ER図
・オブジェクト設計書
・項目定義書
しかし、設計資料を作成するだけでは、実際のSalesforce環境には反映されません。
通常であれば、この後Salesforceの設定画面から、
・カスタムオブジェクト作成
・カスタム項目作成
・選択リスト設定
・リレーション設定
などを手作業で行います。
今回は、この「設計からSalesforce構築まで」の部分をAIとシームレスに接続するために、Antigravityのターミナル操作能力(コマンド自動実行)を利用しました。
構成イメージは以下の通りです。
Antigravity(AIエージェント)
↓
ターミナル(Salesforce CLIを自動実行)
↓
Salesforce環境
例えば、Antigravity上で、
「Job__cオブジェクトを作成してください」
「この項目を追加してください」
と指示すると、AIがその内容をもとにSalesforceメタデータ(XML等)を自動生成し、ターミナル上でsf project deploy startなどのSalesforce CLIコマンドを実行して、環境へ反映します。
これにより、手作業で設定画面をポチポチすることなく、プロンプトベースで直接Salesforceへのデプロイまでを繋ぐことができました。
6. 実際にAIとの会話で作成してみる
先ほど作成した「項目定義」から、以下を抜粋して、作成してもらおうと思います。
salesforce_field_definitions.mdをもとに、 応募・選考管理用のSalesforceカスタムオブジェクトを作成してください。 対象: Application__c(応募・選考) 以下を実施してください。 ・Application__cオブジェクト作成 ・設計書に定義された項目作成 ・項目のデータ型設定 ・選択リスト値設定 ・リレーション設定 作成後、SalesforceへDeployしてください。
設計書 salesforce_field_definitions.md に基づき、応募・選考オブジェクト Application__c とその関連カスタム項目、検証規則、およびカスタムタブを作成し、Salesforceのターゲット組織へデプロイしました。
作成・デプロイ内容
1. オブジェクト定義: Application__c (応募・選考)
- オブジェクト名:
Application__c(表示ラベル: 応募・選考) - 名前項目:
Name(表示ラベル: 応募ID, 自動採番:APP-{00000}) - 共有モデル:
ControlledByParent(主従関係のため)
2. 定義された項目群
- 求職者 (
Candidate__c):- データ型: 主従関係 (
MasterDetail) - 関連先: 取引先責任者 (
Contact)
- データ型: 主従関係 (
- 求人票 (
Job__c):- データ型: 主従関係 (
MasterDetail) - 関連先: 求人票 (
Job__c)
- データ型: 主従関係 (
- ステータス (
Status__c):- データ型: 選択リスト (
Picklist) - 選択肢: 打診中(デフォルト値), 応募見送り, 書類選考, 面接, 内定提示, 承諾(入社決定), 辞退
- 必須: はい
- データ型: 選択リスト (
- 応募日 (
AppliedDate__c):- データ型: 日付 (
Date) - デフォルト値:
TODAY()(本日)
- データ型: 日付 (
- 見送り・辞退理由 (
DeclineReason__c):- データ型: 選択リスト (
Picklist) - 選択肢: 年収, 勤務地, 仕事内容, 他社決定, スキルアンマッチ, その他
- データ型: 選択リスト (
- 詳細メモ (
Memo__c):- データ型: テキストエリア(長文) (
LongTextArea, 文字数制限: 32,768文字)
- データ型: テキストエリア(長文) (
3. 入力規則 (Decline_Reason_Required)
- 内容: ステータスが「応募見送り」または「辞退」の場合に、「見送り・辞退理由」の入力を必須化する検証ルールを追加。
- エラー条件数式:
xml AND( OR( ISPICKVAL(Status__c, "応募見送り"), ISPICKVAL(Status__c, "辞退") ), ISBLANK(TEXT(DeclineReason__c)) )
4. カスタムタブの作成
- オブジェクトタブ:
Application__c用のタブを作成し、モチーフに「ビジネスバッグ (Briefcase)」を設定しました。
デプロイ結果
Salesforce CLI (sf project deploy start) を使用し、以下のメタデータをターゲット組織(CariTerraceInc)へ正常にデプロイしました。
- CustomObject:
Application__c - CustomFields:
Candidate__cJob__cStatus__cAppliedDate__cDeclineReason__cMemo__c
- ValidationRule:
Decline_Reason_Required - CustomTab:
Application__c
入力規則にいたっては、エラーメッセージまで考えて設定してくれています。
7. 最後に
その結果、必要な要件や設計資料(業務フロー図、ER図、項目定義など)をしっかりとAIにインプットすることで、AIが自律的にメタデータを生成し、CLIを経由してSalesforce環境へデプロイできることが確認できました。AI活用においては「AIにすべてを任せる」のではなく、「AIが正確に判断できる設計材料を整えて渡す」ことの重要性を実感しました。
【今後の展望:公式「Salesforce DX MCP Server」の活用】
今回は「AIにターミナルでCLIコマンドを叩かせる」というアプローチをとりましたが、より高度で安定したAI開発環境を構築するためには、MCP(Model Context Protocol)の活用が鍵になってくると学びました。
実はSalesforceには公式の「Salesforce DX MCP Server」が存在します。CLIのテキスト出力(画面ログ)をAIに読ませるのではなく、この公式MCPを利用することで以下のようなメリットが得られます。
・組織メタデータの正確な把握:AIがスキーマ情報を構造化データとして直接読み取るため、ハルシネーション(AIの嘘)を防止できる。
・SOQLのシームレスな実行:AI自身がSOQLを発行し、結果をJSON等で正確に受け取ってデータ分析やエラー調査が可能に。
・Apexコード・テスト結果の正確な解釈:ログの揺らぎに惑わされず、エラーの根本原因を的確に特定できる。
・テキスト依存からの脱却:画面の標準出力を読んで判断するCLI操作と異なり、APIのような共通言語でシステム通信するため、誤動作が減り安定した開発支援が可能になる。
AIとSalesforce開発の融合は、まだまだ始まったばかりです。これまで開発者が時間をかけていた設定作業を自動化しつつ、今後は公式MCP等も活用しながら、Flow自動生成、Apexクラス生成、テストコード作成など、より高度な開発プロセスへの適用を検証していきたいと思います。
新米(3年目)エンジニアの私ですが、時代の進化に置いて行かれないよう、まずは手を動かして触れてみることを継続していきます!


ポスト

