Salesforceのカスタム項目大掃除を捗らせろ！FieldProをためしてみる

# はじめに

みなさんは、Salesforceを運用していて不要な項目を削除しようと思っても
消していんだっけ？を確認するのが少し手間だったりで結局やらなかったり...

そんな状態を解消するべく、普段から項目の掃除を意識させてくれるいいAppExchangeないかな？と探していたところ
[**FieldPro**](https://appexchange.salesforce.com/listingDetail?listingId=a0N3A00000EcsCZUAZ&tab=e)を見つけたので検証してみようと思います。


`Field1__c`みたいな項目撲滅し隊

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/99a17e0b-5b15-f57a-6b0a-952f498b8d44.png)


:::note
検証に使う環境は、Trailheadのハンズオン組織です。
データに関してもデモデータになります
:::

# FieldProて？

https://appexchange.salesforce.com/listingDetail?listingId=a0N3A00000EcsCZUAZ&tab=e

項目の入力率、項目の作成日/作成者、項目の型等をダッシュボード形式などでオブジェクト単位で確認できる**無料**のAppExchangeです。

>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/952cb3d2-97f3-8a98-1af8-cc317dfb14d6.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/39357cba-0351-26b9-6676-f7aab9bd19d0.png)
>


`定期的にFieldProをみる→削除対象項目のピックアップ→削除`このサイクルが回せるようになる！

さっそくハンズオン組織にインストールして試してみようと思います

# インストール

https://appexchange.salesforce.com/listingDetail?listingId=a0N3A00000EcsCZUAZ&tab=e

ハンズオン組織にインストールする場合は、ハンズオン組織のユーザ名・パスワードが必要なので[Trailhead Playground のユーザ名とパスワードの取得](https://trailhead.salesforce.com/ja/content/learn/modules/trailhead_playground_management/get-your-trailhead-playground-username-and-password)を確認して準備してください。

![FieldPro.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/698d325f-8aa8-2c12-4f54-a67f6406dd17.png)

すべてのユーザにインストールでインストールしました。

![インストール済みパッケージ-Salesforce.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/3093b284-c198-4a42-eb9f-3a4565577504.png)

# 特定の項目の入力率等を調べる

FieldPro Appを開きます。画面左の要素で見たい項目を絞っていきます。

![Custom-Fields-FieldPro-Salesforce.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/727e18ff-86b8-610d-e235-bf2a11eb33d7.png)

検証のために、よくあるダメ項目の例である`Field1__c`という項目を作成しておきました。

検索項目については以下の通りです。

|項目|説明|
|---|---|
|By Name|項目のAPI参照名で検索|
|By Object|選択リスト式で取引先名から検索|
|By Type|選択リスト式で項目の型から検索|
|Quick Reports|事前定義された条件のフィルターから選択可能。リファクタリング対象とかになりそうな説明がないフィールドとかもフィルターにある。![スクリーンショット 2022-12-15 23.50.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/532f49e0-3029-7dba-4512-b08da441e1cf.png)|

いくつか左画面でのフィルター操作がありますが、`By Name` `By Object` `By Type` `Quick Reports`はどれか一個しか利用できず併用できませんでした。

その代わり左で絞り込んだ後さらに、絞りこみたい場合は右上の検索エリアからさらに絞り込むことができます。
ざっくり検索→絞りこみ　のような使い方になりそう。

![Lightning-Experience-Salesforce.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/c80c1ee7-c810-c6bc-5404-8dd7a3083fa8.png)

表示された内容を見ていくと、入力率が表示されていないので`Run Service`を押します。

![Lightning-Experience-Salesforce (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/fdfcaba3-6f19-ff0b-861c-36b47dcf97bb.png)

入力率計算のようなものは組織によっては時間がかかるので単純に全データを読み込んで入力率計算をするのではなく、ある程度の期間を区切って計算とかもできそうでいい感じです。

![スクリーンショット 2022-12-16 0.05.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/845eb823-2f5c-a18c-d2bc-b3499c6d4550.png)

計算が完了しました！

![スクリーンショット 2022-12-16 0.07.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/f2d8a134-d57a-d9d6-7621-72bab1f1475c.png)

表示項目の説明

|項目|説明|
|---|---|
|Field Name|　項目のラベルと、API参照名|
|Object Name|オブジェクトの　ラベルと、API参照名|
|Field Type|項目の型|
|CreatedBy / LastModifiedBy|項目を作成した日、更新した日|
|Populate %| 項目の入力完了率 |
|References|レイアウト等の依存関係があるかないかを表現しています|
|Field Score|項目の情報等が充実しているかどうか スコアの数字と色で表現、赤に近づくほど悪い<br />緑(100-50)<br /> ブルー（50～20）<br /> 赤(0-20)|

FieldProオブジェクトの`fpro__Field_Score__c`の数式にField Scoreを出すための数式が書いてあります。

<details><summary>`fpro__Field_Score__c`の数式</summary><div>

```
IF(ISNULL(fpro__Last_Refresh_Date_MCD__c), -1,
(
IF(fpro__Populate_Percentage__c < (10/100), 0, 30)
+
IF(fpro__References_Apex_Class_Count__c = 0, 0, 5)
+
IF(fpro__References_Apex_Trigger_Count__c = 0, 0, 5)
+
IF(fpro__References_Visualforce_Page_Count__c = 0, 0, 5)
+
IF(fpro__References_Visualforce_Components_Count__c = 0, 0, 5)
+
IF(fpro__References_Formula_Fields_Count__c = 0, 0, 5)
+
IF(fpro__References_Page_Layouts_Count__c = 0, 0, 5)
+
IF(fpro__References_Profile_Visibility_Count__c = 0, 0, 5)
+
IF(fpro__References_Permission_Sets_Count__c = 0, 0, 5)
+
IF(fpro__References_Validation_Rules_Count__c = 0, 0, 5)
+
IF(fpro__References_Workflow_Field_Updates_Count__c = 0, 0, 5)
+
IF(fpro__References_Workflow_Rules_Count__c = 0, 0, 5)
+
IF(fpro__References_Flow_Count__c = 0, 0, 5)
+
IF(fpro__References_Reports_Count__c = 0, 0, 5)
+
IF(fpro__References_ReportType_Count__c = 0, 0, 5)
+
IF(fpro__References_Others_Count__c = 0, 0, 5)
))
```

</div></details>

項目ごとの詳細の情報をさらに見ることができます。

![Lightning-Experience-Salesforce (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/71a6dfb3-6a6e-f68e-d83b-4c6f8dbad552.png)

どのこのレイアウトで使われているか？プロファイルで設定されているか等が確認できます。

![スクリーンショット 2022-12-16 0.34.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/53e1a4c2-cb39-d64d-d65d-e9f4a6033429.png)

# ダッシュボードで確認する

絞りこみ等を使わず全オブジェクトの項目の健康状態を見れるのはいいですね！`Tech Debt - Low Score (Delete Potential)`という削除してもいいかもね！な項目をリストで出してくれるので判断がしやすいです。

![FieldPro-Dashboard-Salesforce (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200812/0655ce7b-e88b-b4c7-322d-8006c43791af.png)


# リストビューで確認する

こっちは、自分でフィルター条件を追加して調査したりできるのでいいですね。既に用意されているリストビューも`FieldPro App`での`Quick Reports`よりも選択肢が多いです。

![Custom-Fields-FieldPro-Salesforce (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200812/ac84ac6a-ae89-4b0d-2318-ee2ad015146c.png)

# さいごに

実際運用しているSalesforceの組織にインストールして利用するイメージがつきましたでしょうか？
今回試してみて普段削除項目の洗い出しのために自分で入力率を出していた作業も緩和されますし、アプリケーション自体の画面も軽くストレスなく情報が見れるので自分が実際に関わっている組織にインストールしてみて
カスタム項目大掃除を捗らせていこうと思います。

# 参考

https://appexchange.salesforce.com/listingDetail?listingId=a0N3A00000EcsCZUAZ&tab=e