SalesforceからZoho CRMへの移行では、最初に「今のSalesforceに何があるのか」を洗い出す棚卸しを行います。
このとき最大の壁になるのが物量です。数千の項目、100を超える自動化処理を設定画面から1つずつ確認するのは現実的ではありません。
この記事では、棚卸しを自動化するためのSalesforce CLIの環境構築と、実際に使うコマンドをまとめます。
Salesforce CLIとは
Salesforce CLI(sfコマンド)は、Salesforceが公式提供しているコマンドラインツールです。本来は開発者向けのツールですが、移行の棚卸しでは次の用途で強力に機能します。
- オブジェクト・項目の定義を一括ダウンロードする
- 自動化(Apexクラス・Apexトリガー・Flow・ワークフロールール)の定義を処理内容ごと一括ダウンロードする
- 取得したファイルをAIに渡して、一覧表やドキュメントに自動変換する
設定画面での目視確認と違い、取得結果がテキストファイルとして手元に残るのが重要です。ファイルになっていれば、AIに解析させることも、Gitで管理することも、移行後の突き合わせに使うこともできます。
前提条件
| 必要なもの | 補足 |
|---|---|
| Node.js | LTS版でOK。インストール済みか node -v で確認 |
| Salesforceのユーザー | メタデータを取得できる権限(実務上はシステム管理者が確実) |
| ターミナル | Windowsならコマンドプロンプト/PowerShell、Macならターミナル |
インストールとログイン
ターミナルで次の2つを実行します。
# 1. Salesforce CLIをインストール
npm install -g @salesforce/cli
# インストール確認(バージョンが表示されればOK)
sf --version
# 2. 対象の組織にログイン(ブラウザが開くので通常通りログインする)
sf org login web --alias my-org --set-default
--alias は組織の呼び名です(何でも構いません)。--set-default を付けておくと、以降のコマンドで組織指定を省略できます。
メタデータを一括取得する
取得コマンドはプロジェクトフォルダの中で実行する必要があるため、まず作業用のフォルダを作ります。
# プロジェクト(作業フォルダ)を作成して移動
sf project generate --name sf-audit
cd sf-audit
項目定義(オブジェクト)を取得する
オブジェクトの定義(項目・入力規則・レイアウトへの参照など)は、メタデータタイプ CustomObject で取得します。名前に反して、標準オブジェクトもこのタイプで取得できます。
# 主要オブジェクトの定義を取得(対象は自社で使っているものに合わせて追加)
sf project retrieve start \
-m "CustomObject:Account" \
-m "CustomObject:Contact" \
-m "CustomObject:Lead" \
-m "CustomObject:Opportunity"
自動化(Apex・Flow・ワークフロー)を取得する
# 自動化系のメタデータを一括取得
sf project retrieve start \
-m "ApexClass" -m "ApexTrigger" -m "Flow" -m "Workflow"
ワークフロールールのメタデータタイプ名は Workflow です(WorkflowRuleではない点に注意)。入力規則も棚卸ししたい場合は -m "ValidationRule" を足してください。
取得結果はどこにあるか
取得したファイルは force-app/main/default/ 配下に、種類ごとのフォルダで保存されます。
force-app/main/default/
├── classes/ # Apexクラス(.cls)
├── triggers/ # Apexトリガー(.trigger)
├── flows/ # Flow(.flow-meta.xml)
├── workflows/ # ワークフロールール(.workflow-meta.xml)
└── objects/
└── Account/
└── fields/ # 項目定義(1項目=1ファイル)
項目は「1項目=1つのXMLファイル」で保存されるので、objects/Account/fields/ のファイル数を見るだけで、そのオブジェクトの項目数が分かります。
AIに解析させてドキュメント化する
取得できるのはXMLやApexコードなので、そのままでは現場の人に読ませられません。ここからはAI(筆者はClaude Codeを使用)の出番です。取得したフォルダを開いて、次のように指示します。
項目一覧を作らせる例:
force-app/main/default/objects/ 配下の項目定義を読み、オブジェクトごとに「ラベル/API名/型/数式・自動入力の有無」の一覧表(スプレッドシートに貼れるTSV形式)を作ってください。
自動化をドキュメント化させる例:
classes・triggers・flows・workflows 配下の定義を1つずつ読み、それぞれについて「処理名/何をトリガーに動くか/何をする処理か/関係するオブジェクト」を表にまとめてください。読み手はエンジニアではないので、専門用語を避けて業務で使う言葉で書いてください。
ドキュメントの読み手は、必要/不要を判断する現場の担当者(非エンジニア)です。「読み手はエンジニアではない」と指示に明記しておくと、技術用語を業務の言葉に置き換えたドキュメントになります。
つまずきやすいポイント
sfコマンドが見つからない — インストール後にターミナルを開き直してください。それでも駄目ならNode.jsのグローバルbinにPATHが通っていません(エラーメッセージをAIに貼れば解決手順を教えてくれます)- 取得対象が多すぎてエラーになる — 一度に取得するメタデータが多いと失敗することがあります。コマンドを分割して数回に分けてください
- どんなメタデータがあるか分からない —
sf org list metadata --metadata-type Flowのように打つと、組織内のFlow一覧が確認できます。取得前の確認に便利です
まとめ
- Salesforce CLIを使うと、項目定義も自動化もテキストファイルとして一括取得できる
- 取得は読み取り専用(retrieve)なので本番組織でも安全
- ファイル化してしまえば、AIによる一覧化・ドキュメント化で棚卸しが一気に加速する
CLIで取得できるのは項目やコードの「定義」です。レコードそのもの(データ本体)の抽出にはSOQLというクエリ言語を使います。