Salesforceの開発でtblsを使ってみよう

# はじめに
先日私は、様々なRDBMSやDWHからテーブル定義やER図のドキュメントを生成するコマンドラインツールである[tbls](https://github.com/k1LoW/tbls)のSalesforceソース形式メタデータ用「[外部データベースドライバー](https://github.com/k1LoW/tbls?tab=readme-ov-file#external-database-driver)」をリリースしました。

https://github.com/shellyln/tbls-driver-sf-cli-meta

Salesforce CLIやVS CodeのSalesforce機能拡張から取得したメタデータをデータソースとして扱うためのものです。

# これまでの開発でのオブジェクト定義ドキュメント
オブジェクト定義書の作成・メンテナンスは手間が掛かるため、環境の定義から自動生成することが多いと思います。Chromeの機能拡張としてサードパーティーからフリーで提供されている「[Salesforce DevTools](https://chromewebstore.google.com/detail/salesforce-devtools/ehgmhinnhggigkogkbhnbodhbfjgncjf?pli=1)」を使っている方が多いのではないかと思います。もちろん、私も大変便利に使わせていただいています。
このツールは様々な機能を持っていますが、オブジェクト定義書の生成では毎回手動で含めたいオブジェクトに✓を入れExcel形式でダウンロードするようになっています。✓を入れるにはオブジェクト名の一部を入力して検索し一覧に出さなければならず、毎回必要なオブジェクトを揃えるのが手間でした。
また、Chromeの機能拡張であるということは、CIからの自動的な最新化も出来ないということです。
さらに言えばExcelで出力されるということは、LLMにそのまま読ませるのが難しいということであり(もちろん、専用のMCPを作ればその限りではありませんが)、将来ドキュメントと会話することの妨げになっていくでしょう。
~~※Salesforce公式のAgentforce dev assistantで接続している組織の全てのメタデータと会話できるようになれば文句は無いんですがね……。将来もし出来るようになってもライセンス高そう。~~

# tblsを使おう
そこで、[tbls](https://github.com/k1LoW/tbls)の登場です。tblsはDBのスキーマ、テーブル定義とER図を複数のフォーマットで生成することができるコマンドラインツールです。Markdown+Mermaidを選ぶことで、全てテキストベースで管理できます。
tblsはSalesforceのドライバーを標準では持っていませんので、今回、[ソース形式メタデータ用の外部データベースドライバー](https://github.com/shellyln/tbls-driver-sf-cli-meta)を作成した次第です。
導入については以下の記事を参照してください。

https://zenn.dev/shellyln/articles/e1d5eecc0dbed1#%E4%BD%BF%E3%81%84%E6%96%B9

セットアップ後、プロジェクトのルートで以下のコマンドを実行すると、このようなMarkdown+Mermaidのドキュメントが生成されます。
flows・globalValueSets・restrictionRules・triggers・objects(fields・validationRules)を読み込んでいます。
オブジェクト定義の表では、一般的なDBには持っていないSalesforce固有の情報を`Extra Definition`や`Comment`列に表示しています。項目のカスタム表示ラベルは`Comment`列に表示します。

```bash
tbls doc
```

![d9e5a4b41ab2-20250417.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185253/b0e38e79-7a52-4987-9189-8c71bd8a2e6d.png)

![b48ad59fc497-20250417.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185253/14c7bdd4-0ecb-4694-8af9-18fad50be8a8.png)

![a94e217ff08b-20250417.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185253/c1305479-ecf7-43a4-8ed2-cae363837cf6.jpeg)

より綺麗なER図が欲しいときは、上記で一緒に出力される`schema.json`を入力としてLiam ERDを使うこともできます。

https://liambx.com/

https://zenn.dev/route06/articles/liam-erd-introduction

https://qiita.com/rummy_p/items/b3f7c4c4ef60d36a39d4

# Excelへの出力もできるので安心?
検討段階初期では、まだサンドボックス組織に項目追加せず、事前にレビューを受けるということもあるかと思います。その場合はやはりExcelに出力したいですね。
また、顧客に出す場合もExcelの方が都合か良いかもしれません。
以下のコマンドでExcel形式にエクスポートできます。
```bash
tbls out -t xlsx -o schema.xlsx
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185253/905ba3f2-d393-44d0-bcef-fde16b696bde.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185253/cabaad80-cc4e-4107-bfd3-aa044195850a.png)


# CIで使おう
tbls自体のGitHub Actionsは[こちら](https://github.com/k1LoW/tbls#:~:text=k1low/tbls%3Alatest-,On%20GitHub%20Actions,-%3A)を参照してください。
外部データベースドライバーのCIでのGitHub Actionsは現時点ではありません。[actions/setup-go](https://github.com/actions/setup-go)を使用してGoをインストールし、以下のコマンドでインストールすることによって利用可能です。
```bash
go install github.com/shellyln/tbls-driver-sf-cli-meta@latest
```
実際の設定方法については[こちら](https://github.com/shellyln/tbls-driver-ci-test/blob/master/.github/workflows/test.yml)を参考にしてください。

# さいごに
ドキュメントのCIでの最新化は、これから更に重要になっていくと思います。
本外部データベースドライバーがその一助になれば幸いです。

(2025-04-30追記)
以下の記事で、Salesforce + tbls 活用のtipsを記載しています。
併せてご一読ください。

https://qiita.com/shellyln/items/94281bc4dd6ee44a5677