本稿で紹介するセッションの動画やスライドが閲覧できます
ガラパゴスな開発手法からの脱出
セッションでSalesforce DXの紹介を行ったのは、セールスフォース・ドットコムでプロダクトマーケティング シニアデベロッパーエバンジェリストを務める岡本充洋氏。同氏はSalesforce DXが開発された背景から話を始めた。
Salesforce Platform上で動作するアプリケーション(以下、Salesforceアプリ)の開発は、これまでSalesforce Wayとも呼ばれる独自の方法で行われることが多かったという。これは、いわばガラパゴスな開発手法であり、他のプラットフォーム上で近年行われているモダンなソフトウェア開発からは遠いものだった。米Salesforceは2011年にPaaSベンダの「Heroku」を買収したが、Herokuの創業メンバーであるAdam Wiggins氏が掲げた「12 Factor App[1]」などをはじめとするモダンなソフトウェアデリバリに必要な要件を、Salesforce自身が満たしていなかったのである。
また、Salesforceアプリの開発では「正しいコード」、つまり継続して更新していくべきコードはOrg(ランタイム環境)中にあると考えることが多いのだという。しかし、本来はソースコード管理システムの中にあるものが正しいコードでなくてはならない。
「Salesforce DXはそういったところから変えていくことを目指しています。単一のOrgを開発者が共有するのではではなく、開発者単位でOrgの生成と破棄を自由にコントロールするのです。そのために、チーム開発および継続的デリバリーをサポートするサービスを提供する、開発生産性の向上や他システムとの連携を容易にするCLIツールを提供する、といったことが考えられています」(岡本氏)
ソースコード駆動で素早い開発とデプロイ、オープンで業界標準に準拠した開発フローの取り込みと実現。Salesforce DXのリリースは、ガラパゴスからこうしたモダンな開発への船出となるようだ。
なお、岡本氏が「基本的にはさまざまなツール、さまざまな考え方、サーバサイドのAPIなどをつなぎ合わせた集合体と捉えている」というSalesforce DXの機能群を表しているのが、次のスライドである。
この後には、Salesforce DXが提供する各機能の紹介に話が移っていく。
注
[1]: [https://12factor.net/](https://12factor.net/)。日本語訳はこちら。
ソース駆動開発――コードとメタデータをバージョン管理システムへ
Salesforceアプリの他にない特徴の一つに「エンドユーザーによるカスタマイズ」がある。業務向けが多くを占めるSalesforceアプリならではかもしれないが、設定により業務に合わせて挙動や出力などを変えられる柔軟な仕組みをSalesforce Platformは提供している。ユーザーが行った設定はメタデータとしてサーバーに保管される。
「例えば、開発者がメタデータを使って作成したレポート書式を、ユーザーさんがちょっと変えました。よくある話です。そうなると“正しいソースコード”というのは、ユーザーさんが変更したSalesforce側のレポートのメタデータになるわけです。そうすると、それはバージョン管理システムに取り込まなくてはいけない」(岡本氏)
この状況でソース駆動開発を行うためには、開発者の記述したコードだけでなく、本番環境にあるメタデータもいっしょにバージョン管理しなければならない。そのため、Salesforce DXではTooling APIなどが拡張され、ソースを同期するための「ソースシンクAPI」がリリースされる。これまでは開発者(ローカル)側とSalesforceアプリが稼働するサーバー側とで相互にメタデータなどをやりとりするためのAPIが提供されていたが、これをさらに拡張した形だ。
ソースシンクAPIにより、開発者が提供した初期設定とエンドユーザーがカスタマイズしたメタデータのどちらが最新かを判断し、バージョン管理システムで一括管理することができるようになる。例えば、使い慣れたGitHubでコードを管理し、チーム開発をスムーズに進めるといったことも可能となる。