Visual Studio Code拡張機能 SOQL ビルダー (ベータ)を試してみる

# はじめに
- Visual Studio Code拡張機能 SOQL ビルダー (ベータ)を試しに使ってみた記事です。
- Salesforce CLIやjavaのセットアップまでは記載しません。
- [公式ドキュメント](https://developer.salesforce.com/tools/vscode/ja/soql/soql-builder)を元に使ってみます

# SOQL ビルダー (ベータ)とは

https://developer.salesforce.com/tools/vscode/ja/soql/soql-builder

Visual Studio Code上で、SOQLを構築し
- 結果の取得
- CSV, JSONで保存

ができる 
Visual Studio Code拡張機能です。

![スクリーンショット 2022-12-09 2.10.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/c1b68b71-dae7-f4a1-a2a1-c50b7f04526d.png)

:::note warn
ベータ版なので作成できるSOQLに制限があります。
:::

>ベータ版の制限
サポートされない構文であるエラーメッセージが表示されますが、SOQL ビルダー内で複雑なクエリを実行することはできます。
WHERE 句は非常に複雑なこともあります。SOQL ビルダーはシンプルな WHERE 句をサポートします。AND または OR を使用して条件を組み合わせることができますが、両方を使用することはできません。

取引先責任者の親の項目をSELECTに加えようとしてもSOQL ビルダーでは出てこないので
その場合は自分でテキストエディタで記述しましょう。

![スクリーンショット 2022-12-09 3.15.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/8b7a6845-4b2c-499b-ae2e-06cc0f78a7c9.png)


# 必要なもの
- [Visual Studio Code](https://azure.microsoft.com/ja-jp/products/visual-studio-code/)
- [Salesforce CLI](https://developer.salesforce.com/tools/vscode/ja/vscode-desktop/install#salesforce-cli)
- [Salesforce Extension Pack 拡張機能](https://marketplace.visualstudio.com/items?itemName=salesforce.salesforcedx-vscode)
- **[SOQL ビルダー拡張機能](https://marketplace.visualstudio.com/items?itemName=salesforce.salesforcedx-vscode-soql)**
- [Java Platform, Standard Edition Development Kit](https://developer.salesforce.com/tools/vscode/ja/vscode-desktop/install#java-platform-standard-edition-development-kit)

# SOQLビルダーを使う

CLI等の準備ができて、
[SOQL ビルダー拡張機能](https://marketplace.visualstudio.com/items?itemName=salesforce.salesforcedx-vscode-soql)がインストールできたらSOQL作ってみましょう。

# 1. SOQLビルダーを起動する

https://developer.salesforce.com/tools/vscode/ja/soql/soql-builder#soql-%E3%83%93%E3%83%AB%E3%83%80%E3%83%BC%E3%81%AE%E8%B5%B7%E5%8B%95

## SOQLファイルから起動する場合

- （必要あれば）.soql ファイルを作成
- SOQLファイルを開く
- SOQLビルダーとテキストエディタを切り替えるをクリック

![スクリーンショット 2022-12-09 2.27.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/6eacf5a8-dca4-8398-75d4-c8d6d6a51f78.png)

>![soql-builder-open.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/88222e07-8904-07f4-1b6a-a0db48da8ed4.gif)

## コマンドパレットから起動する場合

- ［Command］＋［Shift］＋［P］（Windowsの場合は［Ctrl］＋［Shift］＋［P］）と押す
- `SOQL ビルダーでクエリを作成`と検索しクリック


![スクリーンショット 2022-12-09 2.32.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/8046c6d6-040d-d6f2-ec6d-07c2cbdd1d95.png)

起動できればOK

![スクリーンショット 2022-12-09 2.32.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/fbed4299-6646-c73c-cf1e-82fa7e35fdd7.png)

# クエリの構築

以下のクエリを作成してみます。

```sql
SELECT Id, Name
FROM Account
WHERE AccountSource = 'Web'
ORDER BY Id
LIMIT 200
```

- FROM部分 `FROM Account`
    - From> `Account`を選択

![スクリーンショット 2022-12-09 2.43.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/9d364b14-f5ef-ff59-ec44-40a7a1569b76.png)

- SELECT部分 `SELECT Id, Name`
    - Fields> `Id`を選択し、その後`Name`を選択する

![スクリーンショット 2022-12-09 2.46.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/b8df1d2d-7c58-3eff-9c2d-5cdf9748565b.png)

- WHERE部分 `WHERE AccountSource = 'Web'`
    - Filter> Field> `AccountSource`を選択
    - Filter> Field> Operator> `=`を選択
    - Filter> Field> Value> `Web`を入力

![スクリーンショット 2022-12-09 2.50.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/d8039ed5-7b0a-7534-c6ef-f796a4c71864.png)

OperatorはLIKE等の演算子も選択できます

![スクリーンショット 2022-12-09 2.58.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/39aeecd4-ded0-1e69-5383-d3e25d8f8603.png)

- ORDER BY部分 `ORDER BY Id`
    - Order By> `Id`を選択し Addをクリック

![スクリーンショット 2022-12-09 2.53.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/6116fe86-961c-6573-d559-47e9617f4fa3.png)

- LIMITの部分 `LIMIT 200`
    - Limit> `200`を入力

![スクリーンショット 2022-12-09 2.55.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/ec958f79-727b-7c20-ebcd-de59ff87e0d9.png)

## 完成したSOQLを見てみる

作ろうとしていたSOQLになりましたね、次は実行してみます。

```sql
SELECT Id, Name
  FROM Account
  WHERE AccountSource = 'Web'
  ORDER BY Id
  LIMIT 200
```

![スクリーンショット 2022-12-09 2.55.13のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/dcce7d18-f4ca-ee08-1b24-1a35fa956ae3.png)

完成したSOQLは.soqlファイルとして保存することができます。

![スクリーンショット 2022-12-09 3.06.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/8c4e82b1-633f-8d5a-0110-eb0a6dd3ac53.png)

# 実行する

## Visual Studio Codeで結果を見る

- Run Queryをクリック

![スクリーンショット 2022-12-09 3.01.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/aaa160f9-86ac-fd79-7b4a-b1d51b3fde6b.png)

結果が取得できましたね、今回はtrailheadのハンズオン環境のデモデータを2件
AccountSource を 'Web'にして使っています

![スクリーンショット 2022-12-09 3.02.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/8486ee71-b3cb-8a71-3d4a-77b4569eb6d4.png)


## CSV, JSONでダウンロードしてみる

- .csvもしくは.jsonをクリック


![スクリーンショット 2022-12-09 3.08.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/7dfd5ba0-1d91-b7be-cb7c-30be637fe365.png)

- 保存

![スクリーンショット 2022-12-09 3.09.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/1f703af1-6402-de4c-5060-2fb2365ee5f3.png)

- ファイルの確認

ファイルとして保存ができました！

```csvs
Id,Name
0012w000017ipeMAAQ,Edge Communications
0012w000017ipeQAAQ,Grand Hotels & Resorts Ltd
```

```json
[
  {
    "Id": "0012w000017ipeMAAQ",
    "Name": "Edge Communications"
  },
  {
    "Id": "0012w000017ipeQAAQ",
    "Name": "Grand Hotels & Resorts Ltd"
  }
]
```

# さいごに

今回は `SOQL ビルダー (ベータ)`を使ってみました。使ってみた感想としては
シンプルなSOQLであればVisual Studio Codeで作成できるので便利だなぁと思いましたが、

現在は複雑なSOQLがGUIで作れないので自分で書くか`LWC SOQL Builder`を使わせてもらうといいと思います。
あとは、Salesforce CLIのセットアップ等も必要ですので
チームメンバー全員でSOQLを楽に書いて実行したい！であれば`LWC SOQL Builder`それ以外は`SOQL ビルダー (ベータ)`という使い分けでもいいかもですね

https://qiita.com/atskimura/items/b06a5ad4dc9e1905c29f

https://lwc-soql-builder.github.io/


# 参考

https://developer.salesforce.com/tools/vscode/ja/soql/soql-builder

https://qiita.com/atskimura/items/b06a5ad4dc9e1905c29f

https://lwc-soql-builder.github.io/