はじめに
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にログインさえすれば開発環境が手に入るのは魅力ですね。
インストール
AppExchangeからインストール
結論
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)については別途記事を書きます。
セットアップ
1. アプリケーションの起動
Code Builder (Beta)を起動します。
2. プロジェクトの作成
無事アプリケーションを開くことができたら、Get Started
を押します。
SalesforceDXのプロジェクトを作成します。
GitHubからインポートできますが、今回は環境構築してない前提なのでNew Project
を選択します。
Project Name: code-builer
Project Type: Standard
にしました。
3. 開発環境への接続
開発環境組織に接続します。
今回は、Trailheadのハンズオン組織に接続しました。
実際の運用では、sandboxやscratch組織を使うことになると思います。
環境のエイリアスを設定します。
今回は、development
にしました。
開発環境はこれで構築完了しました!それでは、早速開発していきましょう
開発してみる
1. 開発環境の起動
Lanch
を押す!
これはVisual Studio Code + SalesforceDXを利用する開発者がよくみる画面ですね。
本当に開発環境でポチポチボタンを押すだけで完了しているのでしょうか?
ファビコンはちょっと別のものに変えて欲しい感はありますね...
2. 開発環境の確認
Salesforce CLI
Salesforce CLIもJavaもセットアップされていました!
node、npm
node、npmもOK
SOQL ビルダー 、LWC ローカル開発サーバー
まだ、Beta版であるSOQL ビルダー
もセットアップされていた。
LWC ローカル開発サーバーはセットアップされていないみたいだった。
Betaだししかたいない。
Git
ちゃんとGitも使えるようになっていました!
拡張機能
入ってたVisual Studio Codeの拡張は以下の通りで、確かに必要最低限のものは入ってる感じ
メモリとかCPUとかディスクとか
$ 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:
$ 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
$ 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での環境構築のマニュアルを用意すればよさそうです。
これインストールしてー、環境変数をーより簡潔なので問題なさそう。
4. 組織からmetadataの取得、変更をリリース
おそらく、これだけセットアップされていれば問題なく操作できると思いますが
CLIではなく画面上でmetadataの取得とリリースをやってみます。
画面左のOrg BrowserからAccountをダウンロード
取得できました。
CodeBuilderTest__c
という項目を作ってリリースしてみます。
<?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をクリック
問題なく動作してますね
GitHubから既存のプロジェクトをインポートしてみる
いまは、1組織に1つの環境??
新規作成がないみたいなので一度削除してから試してみます。
一人本番組織に対してプロジェクトは1個でしょ!だと思うのでそれは納得
一番気になるのはGitのremote URLだとか usernameが設定されているかですね。
$ 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 とかは設定されていなかったので、そこは設定が別途必要ですね。
CI/CDも!!と思いましたがそれは流石になかったです。
さいごに
Salesforce Code Builder (Beta) どうだったでしょうか?
環境構築するならDockerがあるじゃん!かもしれませんが
メンバー全員が快適に開発できるPCスペックではない場合があるので
快適に開発を行うためにも、Salesforceのクラウド環境に開発環境が用意されているのはいいのではないでしょうか?
Salesforceの開発もモダンになってきて楽しくなってきましたね!
DevOps Center(Beta)についても検証をやろうとおもいます。
参考