華々しく開催されたDreamforce Conferenceで,クラウド業界のリーダであるSalesforce.comは,同社のプラットフォームにアプリケーションをデプロイするための新しいモデルとしてSalesforce DXを公開した。Salesforce DXにはソースコード管理や継続的インテグレーション,スクリプティブなど,多くのSalesfore開発者にとって馴染みのない概念が取り入れられている。製品担当副社長であるWade Wegner氏に詳細を聞いた。
InfoQ: Salesforce DXの大きな目標について教えてください。Salesforceにフィットするアプリケーション種類の拡大,プラットフォームへの近代的なソフトウェア開発プラクティスの導入などでしょうか?
Wade: Salesforce DXは,開発,デプロイ,アップグレードといったSalesforceアプリのライフサイクル全般について,まったく新しい方法を定義しています。Force.comとHerokuにおける最良の開発者エクスペリエンスを結集し,コードのソース駆動開発,ガバナンスを備えたチームコラボレーション,開発から運用までのシームレスな進行,自動テストを備えた継続的インテグレーション,サードパーティ開発ツールのサポートといったものを,アプリケーションライフサイクルに実現します。Salesforce DXによって開発者は,Salesforceプラットフォーム上のカスタムアプリ開発における新たなアジリティのレベルに到達できるのです。
InfoQ: GitHubリポジトリに格納されるアーティファクトは,具体的にどのようなものなのでしょう?このサービスはApexを書くSalesforce開発者のみを対象としているのですか?
Wade: Salesforce DXはその一環として,Salesforce環境上のソースとメタデータをソースコントロール下のアーティファクトとして完全に外部管理することによる,本当の意味でのソース駆動開発の実現を目指しています。ソースコードやメタデータに加えて,テストコンフィギュレーションやテストデータ,Salesfore独自の生成物(エディションやフィーチャ,プリファランスなど)も対象です。
Salesforce DXが対象とするのは,org内のメタデータやソースだけではありません。最近になって,Salesforceのコードと組み合わせ可能な分散型アプリケーションを,オープンな言語とフレームワークを使ったマイクロサービスとして開発する企業が増えています。Salesforce DXは,このような分散アプリケーション設計をサポートするようにデザインされています。Herokuプラットフォーム上に構築された当社の継続的デリバリと継続的インテグレーションツールは,使用する言語や,これらカスタムアプリの記述に使用された言語には依存しません。Salesforce DXではこれらのツールに,SalesforceアプリやApexに対するサポートが追加されています。
InfoQ: Salesforce DXではHeroku Flowが大きな役割を果たしていますが,このサービスはどのようなものなのか,Salesforceの内外でどのように使用されているのか,説明して頂けますか?
Wade: Heroku Flowには4つのポイントがあります。その中の3つは2016年始めからHerokuプラットフォームでGAとして提供されているものですが,あとひとつは今月,ベータ版としてまったく新規にローンチされます。既存のHeroku Flowサービスに含まれているのは次の3つです。
- Heroku Pipelines: コードベースを共有するHerokuアプリのレビューや開発,ステージング,サポートする運用環境をグループとしてオーガナイズし,継続的デリバリの管理と可視化を行ないます。テスト済コードの次ステージへの移行は自動ないし手動で,コンパイルされたアーティファクトを次のステージに移行することによって,ほぼ瞬間的に行うことができます。
- Review Apps: 変更のコードベースへのマージの可否について,提案,議論,決定を行ないます。Heroku AppsはGitHubと接続されているので,公開されたプルリクエスト(PR)ごとのユニークなURLで,一時的なテストアプリを自動ないし手動でスピンアップすることができます。テストアプリはコミットごとに自動アップデートされるので,レビュアはコードの状態を気にすることなく,ブラウザ上で変更を確認することが可能です。マージとPRはレビューアプリを変更するので,Pipelinesを使用している場合は,コードのステージングが自動的に変更されます。Salesforce DXでは,Review Appsの役割は“Scratch org”が担っています。
- Github Integration: GitHubリポジトリをHerokuアプリに接続して,GitHubのプッシュごとに特定のブランチから自動ないし手動でデプロイすることができます。Heroku DashboardにあるアプリのActivityタブで,各デプロイの現行リリースと前回のコミットとの差異を確認できるので,コードの状態を推測する必要はありません。当社ではこのGitHub IntegrationをSalesforce用に拡張して,Salesforce DXの一部としています。
Heroku Flowの最新機能であるHeroku CIは,新たに統合された継続的インテグレーション機能として,Herokuプラットフォーム用のベータ版,およびSalesforce DXに含まれる開発者プレビュー版としてローンチされています。Heroku FlowはJenkinsなどサードパーティ製ツールにはすでに統合されていますが,Heroku CIはコードの自動テスト実行における主体あるいは補完的な役割を担う,新たな選択肢を提供します。
InfoQ: “Scratch org”はSalesforce DXの新しい概念ですが,その目的は何で,Salesforce開発者の現在のワークフローにどのような影響を与えるものなのでしょう?
Wade: Scratch orgは新しいタイプのSalesforce環境で,Salesforceコードとメタデータのソースコード駆動かつ廃棄可能なデプロイメントです。Scratch orgは完全にコンフィギュレーション可能で,さまざまな機能とプレファランスを持ったSalesforceの各エディションをエミュレーションすることができます。開発プロセスにおいては,開発者の生産性とコラボレーションを推進する上で重要な役割を果たす機能です。開発者が機能開発用のブランチを作成する時,開発プロセスの一環としてScratch orgを立ち上げることで,レビュープロセスのひとつとして協力者や同僚と共有することが可能になります。さらには自動テストの一部として,および完全な継続的インテグレーションスイートの実装としても使用することができます。
InfoQ: プラットフォームを越えて動作するというCLIが新たに追加されていますが,これはカスタムコードのためのものでしょうか,あるいはCLIを使用してSalesforce導入組織を別の面から管理するためのものですか?どのようなユーザを想定してるのでしょう?
Wade: Salesforce DXのコマンドラインインターフェース(CLI)は,Salesforce開発者にとって最もエキサイティングな新機能のひとつです。Heroku CLI上に構築されており,当社のすべてのAPIを使用することが可能です。こういった機能は,これまではいくつかの異なるツールで提供されていました(Salesforce workbench,Force.com CLIなど)。
CLIは開発者がSalesforce orgを操作するための中心的な手段になります。Scratch orgの作成,orgへのソースやメタデータのプッシュとプル,さらにはorg内のメタデータに影響するオペレーション — アプリへの権限の割り当てや匿名Apexの実行など — に使用できます。
CLIはまた,SalesforceでDevOpsを容易に実現する手段でもあります。ソースから環境を構築し,すべてのテストを実行する自動ビルドスクリプトの一部として,CLIを使用することが可能です。
当社が採用しているAPIファーストのアプローチがCLIに拡張されたことで,今後は時間を掛けて,より多くの開発者向け機能がSalesforce DX CLIに追加されていくでしょう。
InfoQ: Salesforce DXに基づいた開発者フローについて確認したいと思います。アプリケーションのブートストラップからデプロイまでには,どのようなステップがあって,どのようなテクノロジが使用されているのでしょうか?
Wade: Salesforce DXの設計で重要な原則のひとつに,開発チームにとって適切な方法論を定義することのできる柔軟性を提供することがあります。しかしながらSalesforceでは,ソース駆動開発アプローチを実装の中心に据えています。これによって成功のための最善の機会をユーザに提供できると考えるからです。
最初はバージョン管理方法を定義することから始めます。Salesforce DXにはさまざまなVCSオプションがありますが,ひとつのVCSを採用して開発プロセスの基本とすることをお勧めします。アプリの真のソースはorgではなく,バージョンコントロールシステムなのです。
次のステップは環境を理解することです。新しいScratch orgによって,アプリの構築や継続的インテグレーションとデリバリの自動化が,CLIを使って簡単に実現できるようになりました。Scratch orgによって開発者は,ローカルソースを使って開発し,すべてのテストを実行することで,VCSにコミットバックする前に確信を持てるようになります。
更新内容がVCSに書き戻されれば,標準的なWebフックを使って,Heroku Pipelineを使ったSalesforceソリューションか,あるいはJenkinsやTeamCityのようなサードパーティツールを使ったビルド自動化や継続的インテグレーションを起動できます。
それと同時に当社は,開発者がツールを自由に選択できるようにもしています。CLIはSalesforce orgの操作に関わる複雑さを取り除く上でも有効です。どういうことかと言うと,コードを記述する上で特別なツールを使う必要がなく — VimやSublime,Visual Studio Code,Atomなど,どのようなテキストエディタでも使用できるのです。
InfoQ: 開発者に対して新たに提供されるEclipseベースのIDEには,どのようなものが追加されているのでしょう?以前のIDEインテグレーションとはどう違うのでしょうか?
Wade: EclipseベースのツールであるForce.com IDEは長い間,当社の代表的なSalesforce開発ツールでした。新しいForce.com IDE 2もこれまでと同様,ApexからWorkflowまで,Salesforceで利用可能なすべてのメタデータタイプを幅広くサポートしています。当社は現在も,言語サービスやLightning開発のフルサポート,宣言型ビルダをIDEに直接ロードする機能など,強力な機能を数多くIDEに導入すべく努力しています。
Salesforce DXではすべてのメタデータがソース管理に外部化されているので,同じソースコントロールからEclipseプロジェクトを直接派生させることで,メタデータの全体像が把握できます。この機能によってすべてのApexクラス,すべてのカスタムオブジェクト,すべてのLightningコンポーネントが分かるため,よりスマートな分析が可能になるのです。これまで,旧バージョンのForce.com IDEでは,Eclipseプロジェクトにインポートするために,メタデータのサブセットのみを選択することが可能でしたし,一般的にもそのようにされていました。このような部分的なビューでは,情報の重要な部分が欠落することによって,IDEの分析能力が制限されてしまいます。
当社にとって本当のイノベーションは,しかし,この新しいEclipseプラグインがCLI上に構築されていることです。これは単に作業速度を高めるだけでなく,CLIで実現したイノベーションがすべてIDEでも利用可能になることを意味しています。当社のツーリングパートナにもこのパターンの採用を推奨していますから,素晴らしい開発者エクスペリエンスをさまざまなツールで簡単に実現できるようになります。
InfoQ: Salesforceを“ポイント・アンド・クリック”開発のみの場所と考えている人たちに,どのようなことを伝えたいですか?
Wade: Salesforce DXの当社のビジョンはプログラム開発者から始まって,低コードの“ポイント・アンド・クリック”モデルでSalesforceアプリを開発しデプロイするSalesforce管理者やビジネスユーザに至るまで,Salesforceプラットフォームの先駆的ユーザ全般にわたっています。Salesforce DXのための適切な基礎を構築して,大規模ISVやSI,企業ユーザの厳しい要件を満足するために,当社はこのような,CLI駆動でハイスケーラブルなカスタムアプリケーション開発を重視したイニシアティブを立ち上げました。Salesforce DXは来年にかけて市場提供されることを受けて,当社はすでに,適切な抽象化レベルの提供方法や,可視化されたフロー,チェンジセットのような馴染みのある構成概念などの提供を通じて,管理者やビジネスユーザがSalesforce DXの中核的アドバンテージに触れることの可能な,ユーザ中心の設計に重点を切り換えています。リリースの時まで,このトピックにどうぞ期待してください。
InfoQ: Salesforce DXについて詳しく知るには,どうすればよいでしょう?
Wade: まずはWebで,当社の開発者向けページをご覧ください — https://developer.salesforce.com/platform/dx。
このページには公開ベータ版と来年のGAまで,最新情報が投稿される予定です。サインアップして興味のある開発者のリストに加われば,さらに詳細な情報をいち早く知ることができます。当社の技術責任者であるSrini TallapragadaによるDreamforce 2016の開発基調講演もぜひご覧ください。
この記事を評価
- 編集者評
- 編集長アクション