Salesforce Code Builder (Beta) てなに？検証してみた

# はじめに

Salesforce Code Builder (Beta)というものを今回はやってみます。
どうやらSalesforceDXの開発環境をSalesforce上でポチポチ作成できて、SalesforceにログインさえすればどこでもSalesforceDXで開発できるそんな未来が？？

というわけで、Salesforce Code Builder (Beta)で開発環境セットアップできているのか？使えるのか？をみていきます。

# Code Builder (Beta)とは
現在SalesforceがBeta版として提供している機能で、 WebベースのSalesforceDX開発環境を用意できるものです。
SalesforceDXを使おうと思うと
JavaとかSalesforce CLIのセットアップが手間ですよね。開発環境部分をSalesforceに任せちゃおう！というものになります。

家ではデスクトップ、外ではノートPCというときにSalesforceにログインさえすれば開発環境が手に入るのは魅力ですね。

https://help.salesforce.com/s/articleView?id=release-notes.develop_from_anywhere_using_salesforce_code_builder.htm&language=ja&r=https%3A%2F%2Fwww.google.com%2F&type=5


# インストール

AppExchangeからインストール

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

# 結論

Q. 環境構築を頑張ることなくSalesforce CLIとGitを用いて開発ができるようになるのか？
A. できるようになる。

自分達でやらないといけないこと

- Gitのusername emailの設定
- Gitのremote URLの設定
    - ただし、GitHubからインポートした場合は不要

- CI/CDを使ってリリースする場合は、自分で設定が必要

CI/CDの部分は、DevOps Center（Beta）が今後リリースされて変更セットに置き換わるので
特に気にしなくてもいいのかもしれません。

DevOps Center（Beta）と Code Builder (Beta)がBetaじゃなくなったら
ローコードを基本としている部隊は変更セットの代わりにDevOps Centerを
開発者はDevOps Center と Code Builderを併用してハッピーな世界がくるかもですね。

DevOps Center（Beta）については別途記事を書きます。

https://help.salesforce.com/s/articleView?id=release-notes.rn_devops_center_beta.htm&type=5&language=ja&release=238

# セットアップ

## 1. アプリケーションの起動

Code Builder (Beta)を起動します。

![個人情報 _ Salesforce](https://user-images.githubusercontent.com/39574826/208242657-3e745232-24d0-42e9-886a-e48c075aa0e4.png)

## 2. プロジェクトの作成

無事アプリケーションを開くことができたら、`Get Started`を押します。

![Lightning Experience _ Salesforce (4)](https://user-images.githubusercontent.com/39574826/208242604-9d7ea9c0-98b0-4011-8511-ad392c172f23.png)

SalesforceDXのプロジェクトを作成します。
GitHubからインポートできますが、今回は環境構築してない前提なので`New Project`を選択します。

![Lightning Experience _ Salesforce (5)](https://user-images.githubusercontent.com/39574826/208242611-d78128a4-0a96-4d9b-abe1-5277a7d4633d.png)

Project Name: code-builer
Project Type: Standard

にしました。

![Lightning Experience _ Salesforce (6)](https://user-images.githubusercontent.com/39574826/208242614-a153bedd-c42d-4050-b9d5-131de91b292c.png)

## 3. 開発環境への接続

開発環境組織に接続します。
今回は、Trailheadのハンズオン組織に接続しました。
実際の運用では、sandboxやscratch組織を使うことになると思います。

![Lightning Experience _ Salesforce (7)](https://user-images.githubusercontent.com/39574826/208242621-d75b4b7c-7854-4ddd-8410-a242db245294.png)

環境のエイリアスを設定します。
今回は、`development`にしました。

![Lightning Experience _ Salesforce (8)](https://user-images.githubusercontent.com/39574826/208242626-e6e59c9a-2567-4f9f-b61a-9bba1038598e.png)

開発環境はこれで構築完了しました！それでは、早速開発していきましょう

# 開発してみる

## 1. 開発環境の起動

`Lanch`を押す！

![Lightning Experience _ Salesforce (9)](https://user-images.githubusercontent.com/39574826/208243014-332ae50f-a1ba-4ca4-9c4d-a88a84c02bbb.png)

これはVisual Studio Code + SalesforceDXを利用する開発者がよくみる画面ですね。
本当に開発環境でポチポチボタンを押すだけで完了しているのでしょうか？

![](https://user-images.githubusercontent.com/39574826/208243043-3fa415e1-c109-4897-8e97-33182a9c80a1.png)

ファビコンはちょっと別のものに変えて欲しい感はありますね...

![](https://user-images.githubusercontent.com/39574826/208243822-8f970e0e-0056-4785-918f-f882db032d3e.png)


## 2. 開発環境の確認

### Salesforce CLI

Salesforce CLIもJavaもセットアップされていました！

![Code Builder Guide — code-builder — code-server](https://user-images.githubusercontent.com/39574826/208243207-ff9eebd2-1d18-4bf1-881a-3c0c9cb8dbc6.png)

### node、npm

node、npmもOK

![extensions json — code-builder — code-server](https://user-images.githubusercontent.com/39574826/208244169-d11d46a2-34b3-433d-974b-069559b7a08e.png)

### SOQL ビルダー 、LWC ローカル開発サーバー

https://qiita.com/takaHAL/items/5f7e1f247db232ed8655

まだ、Beta版である`SOQL ビルダー `もセットアップされていた。

![](https://user-images.githubusercontent.com/39574826/208243356-6a48696d-ae82-4270-a6ac-af5d7dd2d459.png)

https://qiita.com/takaHAL/items/0a1a57747c7900ad4b0a

LWC ローカル開発サーバーはセットアップされていないみたいだった。
Betaだししかたいない。

![](https://user-images.githubusercontent.com/39574826/208243449-ab5d6e91-6af7-4bef-8471-7b6f496195bf.png)

### Git

ちゃんとGitも使えるようになっていました！

![account soql — code-builder — code-server](https://user-images.githubusercontent.com/39574826/208243567-993421a6-e476-4800-9478-1e2ee4e01c9a.png)

### 拡張機能

入ってたVisual Studio Codeの拡張は以下の通りで、確かに必要最低限のものは入ってる感じ

![](https://user-images.githubusercontent.com/39574826/208243983-2a411ef8-962c-427c-96e3-149a706977d0.png)

![](https://user-images.githubusercontent.com/39574826/208244011-df6d3252-127b-43f7-908e-d248db424127.png)

### メモリとかCPUとかディスクとか

```bash
$ cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 63
model name      : Intel(R) Xeon(R) Processor @ 2.50GHz
stepping        : 2
microcode       : 0x1
cpu MHz         : 2500.016
cache size      : 36608 KB
physical id     : 0
siblings        : 4
core id         : 0
cpu cores       : 2
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid smap xsaveopt arat md_clear arch_capabilities
bugs            : spectre_v1 spectre_v2 spec_store_bypass swapgs mmio_stale_data
bogomips        : 5000.03
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 6
model           : 63
model name      : Intel(R) Xeon(R) Processor @ 2.50GHz
stepping        : 2
microcode       : 0x1
cpu MHz         : 2500.016
cache size      : 36608 KB
physical id     : 0
siblings        : 4
core id         : 0
cpu cores       : 2
apicid          : 1
initial apicid  : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid smap xsaveopt arat md_clear arch_capabilities
bugs            : spectre_v1 spectre_v2 spec_store_bypass swapgs mmio_stale_data
bogomips        : 5000.03
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

processor       : 2
vendor_id       : GenuineIntel
cpu family      : 6
model           : 63
model name      : Intel(R) Xeon(R) Processor @ 2.50GHz
stepping        : 2
microcode       : 0x1
cpu MHz         : 2500.016
cache size      : 36608 KB
physical id     : 0
siblings        : 4
core id         : 1
cpu cores       : 2
apicid          : 2
initial apicid  : 2
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid smap xsaveopt arat md_clear arch_capabilities
bugs            : spectre_v1 spectre_v2 spec_store_bypass swapgs mmio_stale_data
bogomips        : 5000.03
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

processor       : 3
vendor_id       : GenuineIntel
cpu family      : 6
model           : 63
model name      : Intel(R) Xeon(R) Processor @ 2.50GHz
stepping        : 2
microcode       : 0x1
cpu MHz         : 2500.016
cache size      : 36608 KB
physical id     : 0
siblings        : 4
core id         : 1
cpu cores       : 2
apicid          : 3
initial apicid  : 3
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid smap xsaveopt arat md_clear arch_capabilities
bugs            : spectre_v1 spectre_v2 spec_store_bypass swapgs mmio_stale_data
bogomips        : 5000.03
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:
```

```bash
$ free -h
              total        used        free      shared  buff/cache   available
Mem:          8.4Gi       1.6Gi       250Mi       8.0Mi       6.6Gi       6.6Gi
Swap:         488Mi       5.0Mi       483Mi
```

```bash
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          16G  5.8G  9.0G  40% /
tmpfs            64M     0   64M   0% /dev
tmpfs           4.3G     0  4.3G   0% /sys/fs/cgroup
shm              64M     0   64M   0% /dev/shm
/dev/vdh         16G  5.8G  9.0G  40% /projects
/dev/vdg         20G  573M   19G   3% /aws/mde
```

## 3. 他のユーザからみるとどうなる？

1組織1人1環境ですね。
チームで開発する際は、GUIでの環境構築のマニュアルを用意すればよさそうです。

これインストールしてー、環境変数をーより簡潔なので問題なさそう。

![](https://user-images.githubusercontent.com/39574826/208247058-29c65059-dc50-4a9b-b8b9-d2b275ec1ab3.png)

## 4. 組織からmetadataの取得、変更をリリース

おそらく、これだけセットアップされていれば問題なく操作できると思いますが
CLIではなく画面上でmetadataの取得とリリースをやってみます。

画面左のOrg BrowserからAccountをダウンロード

![pre-commit — code-builder — code-server](https://user-images.githubusercontent.com/39574826/208244835-6267442e-a4ed-4a11-acaa-82ff80d43216.png)

取得できました。

![](https://user-images.githubusercontent.com/39574826/208244904-a4986b55-2a4c-4d01-8e58-3ec2c8441336.png)

`CodeBuilderTest__c`という項目を作ってリリースしてみます。

```xml: CodeBuilderTest__c.field-meta.xml
<?xml version="1.0" encoding="UTF-8"?>
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
    <fullName>CodeBuilderTest__c</fullName>
    <externalId>false</externalId>
    <label>CodeBuilder テスト</label>
    <length>255</length>
    <required>false</required>
    <trackFeedHistory>false</trackFeedHistory>
    <type>Text</type>
    <unique>false</unique>
</CustomField>
```

Deploy Source to Orgをクリック

![CodeBuilderTest__c field-meta xml — code-builder — code-server](https://user-images.githubusercontent.com/39574826/208245188-0c18088e-bdab-4585-b7e7-fa58026e0e87.png)

問題なく動作してますね

![](https://user-images.githubusercontent.com/39574826/208245314-85c6a3d2-6587-4887-a887-b649a328294c.png)

# GitHubから既存のプロジェクトをインポートしてみる

いまは、1組織に1つの環境？？
新規作成がないみたいなので一度削除してから試してみます。
一人本番組織に対してプロジェクトは1個でしょ！だと思うのでそれは納得

![](https://user-images.githubusercontent.com/39574826/208245383-c283a914-313c-4402-b939-489919770d90.png)

![](https://user-images.githubusercontent.com/39574826/208245542-dc37a926-226d-4282-a74b-ac549aa9501a.png)

一番気になるのはGitのremote URLだとか usernameが設定されているかですね。

```bash
$ git config -l
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=https://github.com/takaHAL/sfdx
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.main.remote=origin
branch.main.merge=refs/heads/main
```

username とかは設定されていなかったので、そこは設定が別途必要ですね。

![](https://user-images.githubusercontent.com/39574826/208245841-2bc9a355-db86-49a1-9c57-6f7d47dc0cca.png)

CI/CDも！！と思いましたがそれは流石になかったです。

![](https://user-images.githubusercontent.com/39574826/208245997-08c4666f-6707-4b4f-8edd-ba3fcd21b743.png)

# さいごに

Salesforce Code Builder (Beta) どうだったでしょうか？
環境構築するならDockerがあるじゃん！かもしれませんが
メンバー全員が快適に開発できるPCスペックではない場合があるので
快適に開発を行うためにも、Salesforceのクラウド環境に開発環境が用意されているのはいいのではないでしょうか？

Salesforceの開発もモダンになってきて楽しくなってきましたね！
DevOps Center（Beta）についても検証をやろうとおもいます。

# 参考

https://help.salesforce.com/s/articleView?id=release-notes.rn_devops_center_beta.htm&type=5&release=238

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

https://help.salesforce.com/s/articleView?id=release-notes.develop_from_anywhere_using_salesforce_code_builder.htm&language=ja&r=https%3A%2F%2Fwww.google.com%2F&type=5

https://hicglobalsolutions.com/blog/salesforces-development-solutions-code-builder-and-devops-center-are-now-in-beta/