Salesforce CLIの提供
しかし、APIだけを提供されても、それを扱うためのクライアントツールがないと非常に扱いづらい上、ツールを自作しなくてはならない。そこで、APIを利用しやすくするためのCLI(Command Line Interface)が開発者向けに提供される。
Salesforce CLIがどういう形でリリースされるかは、今のところ未確定だが、岡本氏によれば「HerokuのCLIのプラグインとして提供されるというのが、開発チームの間で最も有力な流れ」だという。開発者プレビュー版が一部のデベロッパーに開放されているが、そこでは、Herokuコマンドに対してプラグインをインストールするというような形で、Salesforce CLIが実現されているそうだ。
Salesforce CLIでは、Orgの作成と削除、ソースコードのpush、データのインポート、テストの実行など、ひと通りの作業ができるようになっている。このCLIを利用すれば、Jenkinsなどの既存のCIサービスなどとの連携を構築する際にも簡単に行える。
Scratch Orgs――アプリの新規作成/削除が容易に
モダンなソフトウェア開発の要件の中には、ソフトウェアのスクラップアンドビルドが容易であることも条件として含まれていた。たとえ、本番ランタイムとローカルファイルシステムの間でソースコードなどを同期するAPIが提供され、そのAPIを利用するためのCLIが提供されたとしても、実際にコードを動かす開発環境の新規作成や破棄を容易に行えなくては、ライフサイクルは改善されない。一度構築した開発用ランタイムを破棄せずにずっと更新していくという、従来のSalesforceのスタイルは、まず変革したいところだろう。
そこでSalesforce DXで提供されるのが「Scratch Org」である。Scratch Orgは、開発者がSalesforceランタイム環境を自由に作成し、破棄することを可能にする機能だ。コマンドラインからでも、GUIからでも利用できる。
「(スライドには)ソースコードからスピンアップと書いてありますが、これはソースコードからの環境構築が可能だという意味です。Salesforceの環境を構築するときには、Developer EditionでもEnterprise Editionでも、一部の例外を除いて、Webページ上で名前を入力し、サインアップして、組織ができあがったらメールアドレスに通知を受け取る、という手順を踏む必要がありました。Salesforce DXからは、コマンドラインを叩くだけで環境ができあがり、それにアクセスするというイメージになります」(岡本氏)
Scratch Orgは、Salesforceアプリ開発者がこれまで手に入れることのできなかった開発の敏捷性(アジャイル)を提供することになるだろう。
継続的デリバリーと継続的インテグレーション
Herokuには、HerokuパイプラインやHerokuフローなどと呼ばれる機能がある。この機能は、GitHubと連携して効率的に開発のサイクルを管理する。具体的には「Pull Request単位でMerge前に自動ビルドする」「MergeされMaster Branchが更新されたら、ステージング環境を自動ビルドする」といったことをWebHooksを利用して実現する。
このHerokuの機能を使って、Salesforceアプリのコードのライフサイクルを管理しつつ、Salesforce Platformに自動的にデプロイするという機能を実現する計画が進められているという。これにより、Salesforceアプリ開発の世界にも、継続的デリバリーがもたらされる。
また、Salesforceアプリの継続的インテグレーションも実現に向けて作業が進められている。継続的デリバリーは主にリリースの自動化が目的だが、こちらはソフトウェアテストの自動化が主な目的である。
まず、Herokuは「Heroku CI」という独自のCIを今後リリースする予定だという。当然ながら、Heroku CIでは将来的にApex[2]のテストなどをサポートする。一方で、Heroku CIの機能でなく、Jenkinsをはじめとする外部のCIツールを連携する機能も実装される。JenkinsにはApexのテストを実行し、その結果を受け取るためのプラグインがあるので、それによりApexのテストを自動化することも可能となっている。
「こうした環境が整えば、かなりのテストをSalesforceアプリ開発でも自動化できます。それも、Salesforceだけで通用する特殊なやり方ではなく、皆さんがNodeやJava、Rubyなどで開発されているときのコンテキストや作法に沿って、すべてセットアップすることができる。これは重要なことだと思っています」(岡本氏)
注
[2]: ApexはForce.comでのアプリケーション開発に用いられる専用のプログラミング言語。